From 4e4ec54fc5c1ef354c2971393f6150a167d3e4ed Mon Sep 17 00:00:00 2001 From: Max Richter Date: Thu, 20 Apr 2023 12:53:28 +0200 Subject: [PATCH] @ --- .gitignore | 2 ++ _plug/git.plug.json | 1 - _plug/graphview.plug.json | 1 - _plug/katex.plug.json | 1 - data.db | Bin 389120 -> 0 bytes 5 files changed, 2 insertions(+), 3 deletions(-) delete mode 100644 _plug/git.plug.json delete mode 100644 _plug/graphview.plug.json delete mode 100644 _plug/katex.plug.json delete mode 100644 data.db diff --git a/.gitignore b/.gitignore index 998a537..f575375 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ .obsidian .blend1 .blend +/data.db +/_plug/ diff --git a/_plug/git.plug.json b/_plug/git.plug.json deleted file mode 100644 index a85fe81..0000000 --- a/_plug/git.plug.json +++ /dev/null @@ -1 +0,0 @@ -{"name":"git","imports":["https://get.silverbullet.md/global.plug.json"],"requiredPermissions":["shell"],"functions":{"snapshotCommand":{"env":"client","command":{"name":"Git: Snapshot"},"code":"(() => { var mod=(()=>{var l=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var m=(e,r)=>{for(var o in r)l(e,o,{get:r[o],enumerable:!0})},x=(e,r,o,n)=>{if(r&&typeof r==\"object\"||typeof r==\"function\")for(let s of f(r))!d.call(e,s)&&s!==o&&l(e,s,{get:()=>r[s],enumerable:!(n=p(r,s))||n.enumerable});return e};var P=e=>x(l({},\"__esModule\",{value:!0}),e);var re={};m(re,{default:()=>te});var i=self.syscall;typeof self>\"u\"&&(self={syscall:()=>{throw new Error(\"Not implemented here\")}});var t=self.syscall;var a={};m(a,{dispatch:()=>$,enableReadOnlyMode:()=>H,filterBox:()=>U,flashNotification:()=>R,getCurrentPage:()=>M,getCursor:()=>k,getSelection:()=>T,getText:()=>C,hidePanel:()=>I,insertAtCursor:()=>Q,insertAtPos:()=>O,matchBefore:()=>G,moveCursor:()=>V,navigate:()=>E,openUrl:()=>N,prompt:()=>z,reloadPage:()=>q,replaceRange:()=>K,save:()=>L,setPage:()=>S,setSelection:()=>D,showPanel:()=>B});function M(){return t(\"editor.getCurrentPage\")}function S(e){return t(\"editor.setPage\",e)}function C(){return t(\"editor.getText\")}function k(){return t(\"editor.getCursor\")}function T(){return t(\"editor.getSelection\")}function D(e,r){return t(\"editor.setSelection\",e,r)}function L(){return t(\"editor.save\")}function E(e,r,o=!1){return t(\"editor.navigate\",e,r,o)}function q(){return t(\"editor.reloadPage\")}function N(e){return t(\"editor.openUrl\",e)}function R(e,r=\"info\"){return t(\"editor.flashNotification\",e,r)}function U(e,r,o=\"\",n=\"\"){return t(\"editor.filterBox\",e,r,o,n)}function B(e,r,o,n=\"\"){return t(\"editor.showPanel\",e,r,o,n)}function I(e){return t(\"editor.hidePanel\",e)}function O(e,r){return t(\"editor.insertAtPos\",e,r)}function K(e,r,o){return t(\"editor.replaceRange\",e,r,o)}function V(e){return t(\"editor.moveCursor\",e)}function Q(e){return t(\"editor.insertAtCursor\",e)}function G(e){return t(\"editor.matchBefore\",e)}function $(e){return t(\"editor.dispatch\",e)}function z(e,r=\"\"){return t(\"editor.prompt\",e,r)}function H(e){return t(\"editor.enableReadOnlyMode\",e)}var u={};m(u,{invokeCommand:()=>_,invokeFunction:()=>Z,listCommands:()=>j,reloadPlugs:()=>ee});function Z(e,r,...o){return t(\"system.invokeFunction\",e,r,...o)}function _(e){return t(\"system.invokeCommand\",e)}function j(){return t(\"system.listCommands\")}function ee(){t(\"system.reloadPlugs\")}async function g(){let e=await a.prompt(\"Revision name:\");e||(e=\"Snapshot\"),console.log(\"Revision name\",e),await u.invokeFunction(\"server\",\"commit\",e)}var te=g;return P(re);})();\n return mod;})()"},"syncCommand":{"env":"client","command":{"name":"Git: Sync"},"code":"(() => { var mod=(()=>{var l=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var m=(e,r)=>{for(var o in r)l(e,o,{get:r[o],enumerable:!0})},x=(e,r,o,n)=>{if(r&&typeof r==\"object\"||typeof r==\"function\")for(let s of p(r))!d.call(e,s)&&s!==o&&l(e,s,{get:()=>r[s],enumerable:!(n=f(r,s))||n.enumerable});return e};var P=e=>x(l({},\"__esModule\",{value:!0}),e);var re={};m(re,{default:()=>te});var i=self.syscall;typeof self>\"u\"&&(self={syscall:()=>{throw new Error(\"Not implemented here\")}});var t=self.syscall;var a={};m(a,{dispatch:()=>$,enableReadOnlyMode:()=>H,filterBox:()=>U,flashNotification:()=>R,getCurrentPage:()=>M,getCursor:()=>k,getSelection:()=>T,getText:()=>C,hidePanel:()=>I,insertAtCursor:()=>Q,insertAtPos:()=>O,matchBefore:()=>G,moveCursor:()=>V,navigate:()=>E,openUrl:()=>N,prompt:()=>z,reloadPage:()=>q,replaceRange:()=>K,save:()=>L,setPage:()=>S,setSelection:()=>D,showPanel:()=>B});function M(){return t(\"editor.getCurrentPage\")}function S(e){return t(\"editor.setPage\",e)}function C(){return t(\"editor.getText\")}function k(){return t(\"editor.getCursor\")}function T(){return t(\"editor.getSelection\")}function D(e,r){return t(\"editor.setSelection\",e,r)}function L(){return t(\"editor.save\")}function E(e,r,o=!1){return t(\"editor.navigate\",e,r,o)}function q(){return t(\"editor.reloadPage\")}function N(e){return t(\"editor.openUrl\",e)}function R(e,r=\"info\"){return t(\"editor.flashNotification\",e,r)}function U(e,r,o=\"\",n=\"\"){return t(\"editor.filterBox\",e,r,o,n)}function B(e,r,o,n=\"\"){return t(\"editor.showPanel\",e,r,o,n)}function I(e){return t(\"editor.hidePanel\",e)}function O(e,r){return t(\"editor.insertAtPos\",e,r)}function K(e,r,o){return t(\"editor.replaceRange\",e,r,o)}function V(e){return t(\"editor.moveCursor\",e)}function Q(e){return t(\"editor.insertAtCursor\",e)}function G(e){return t(\"editor.matchBefore\",e)}function $(e){return t(\"editor.dispatch\",e)}function z(e,r=\"\"){return t(\"editor.prompt\",e,r)}function H(e){return t(\"editor.enableReadOnlyMode\",e)}var u={};m(u,{invokeCommand:()=>_,invokeFunction:()=>Z,listCommands:()=>j,reloadPlugs:()=>ee});function Z(e,r,...o){return t(\"system.invokeFunction\",e,r,...o)}function _(e){return t(\"system.invokeCommand\",e)}function j(){return t(\"system.listCommands\")}function ee(){t(\"system.reloadPlugs\")}async function g(){await a.flashNotification(\"Syncing with git\"),await u.invokeFunction(\"server\",\"sync\"),await a.flashNotification(\"Git sync complete!\")}var te=g;return P(re);})();\n return mod;})()"},"commit":{"env":"server","code":"(() => { var mod=(()=>{var a=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var l=(e,t)=>{for(var s in t)a(e,s,{get:t[s],enumerable:!0})},x=(e,t,s,u)=>{if(t&&typeof t==\"object\"||typeof t==\"function\")for(let n of p(t))!d.call(e,n)&&n!==s&&a(e,n,{get:()=>t[n],enumerable:!(u=f(t,n))||u.enumerable});return e};var P=e=>x(a({},\"__esModule\",{value:!0}),e);var L={};l(L,{default:()=>D});var r=self.syscall;var i={};l(i,{run:()=>F});function F(e,t){return r(\"shell.run\",e,t)}typeof self>\"u\"&&(self={syscall:()=>{throw new Error(\"Not implemented here\")}});var o=self.syscall;async function g(e){e||(e=\"Snapshot\"),console.log(\"Snapshotting the current space to git with commit message\",e),await i.run(\"git\",[\"add\",\"./*.md\"]);try{await i.run(\"git\",[\"commit\",\"-a\",\"-m\",e])}catch{}console.log(\"Done!\")}var D=g;return P(L);})();\n return mod;})()"},"sync":{"env":"server","code":"(() => { var mod=(()=>{var a=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var l=(e,t)=>{for(var s in t)a(e,s,{get:t[s],enumerable:!0})},x=(e,t,s,u)=>{if(t&&typeof t==\"object\"||typeof t==\"function\")for(let i of p(t))!d.call(e,i)&&i!==s&&a(e,i,{get:()=>t[i],enumerable:!(u=f(t,i))||u.enumerable});return e};var P=e=>x(a({},\"__esModule\",{value:!0}),e);var E={};l(E,{default:()=>L});var r=self.syscall;var o={};l(o,{run:()=>F});function F(e,t){return r(\"shell.run\",e,t)}typeof self>\"u\"&&(self={syscall:()=>{throw new Error(\"Not implemented here\")}});var n=self.syscall;async function D(e){e||(e=\"Snapshot\"),console.log(\"Snapshotting the current space to git with commit message\",e),await o.run(\"git\",[\"add\",\"./*.md\"]);try{await o.run(\"git\",[\"commit\",\"-a\",\"-m\",e])}catch{}console.log(\"Done!\")}async function g(){console.log(\"Going to sync with git\"),await D(),console.log(\"Then pulling from remote\"),await o.run(\"git\",[\"pull\"]),console.log(\"And then pushing to remote\"),await o.run(\"git\",[\"push\"]),console.log(\"Done!\")}var L=g;return P(E);})();\n return mod;})()"}},"assets":{}} \ No newline at end of file diff --git a/_plug/graphview.plug.json b/_plug/graphview.plug.json deleted file mode 100644 index ffd1745..0000000 --- a/_plug/graphview.plug.json +++ /dev/null @@ -1 +0,0 @@ -{"name":"graphview","imports":["https://get.silverbullet.md/global.plug.json"],"version":0.1,"assets":{"asset/d3-force.js":"data:application/javascript;base64,Ly8gaHR0cHM6Ly9kM2pzLm9yZy9kMy1mb3JjZS8gdjMuMC4wIENvcHlyaWdodCAyMDEwLTIwMjEgTWlrZSBCb3N0b2NrCiFmdW5jdGlvbihuLHQpeyJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGU/dChleHBvcnRzLHJlcXVpcmUoImQzLXF1YWR0cmVlIikscmVxdWlyZSgiZDMtZGlzcGF0Y2giKSxyZXF1aXJlKCJkMy10aW1lciIpKToiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbImV4cG9ydHMiLCJkMy1xdWFkdHJlZSIsImQzLWRpc3BhdGNoIiwiZDMtdGltZXIiXSx0KTp0KChuPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOm58fHNlbGYpLmQzPW4uZDN8fHt9LG4uZDMsbi5kMyxuLmQzKX0odGhpcywoZnVuY3Rpb24obix0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkobil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG59fWZ1bmN0aW9uIHUobil7cmV0dXJuIDFlLTYqKG4oKS0uNSl9ZnVuY3Rpb24gbyhuKXtyZXR1cm4gbi54K24udnh9ZnVuY3Rpb24gZihuKXtyZXR1cm4gbi55K24udnl9ZnVuY3Rpb24gYShuKXtyZXR1cm4gbi5pbmRleH1mdW5jdGlvbiBjKG4sdCl7dmFyIGU9bi5nZXQodCk7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJub2RlIG5vdCBmb3VuZDogIit0KTtyZXR1cm4gZX1jb25zdCBsPTQyOTQ5NjcyOTY7ZnVuY3Rpb24gaChuKXtyZXR1cm4gbi54fWZ1bmN0aW9uIHYobil7cmV0dXJuIG4ueX12YXIgeT1NYXRoLlBJKigzLU1hdGguc3FydCg1KSk7bi5mb3JjZUNlbnRlcj1mdW5jdGlvbihuLHQpe3ZhciBlLHI9MTtmdW5jdGlvbiBpKCl7dmFyIGksdSxvPWUubGVuZ3RoLGY9MCxhPTA7Zm9yKGk9MDtpPG87KytpKWYrPSh1PWVbaV0pLngsYSs9dS55O2ZvcihmPShmL28tbikqcixhPShhL28tdCkqcixpPTA7aTxvOysraSkodT1lW2ldKS54LT1mLHUueS09YX1yZXR1cm4gbnVsbD09biYmKG49MCksbnVsbD09dCYmKHQ9MCksaS5pbml0aWFsaXplPWZ1bmN0aW9uKG4pe2U9bn0saS54PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSt0LGkpOm59LGkueT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0rbixpKTp0fSxpLnN0cmVuZ3RoPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPStuLGkpOnJ9LGl9LG4uZm9yY2VDb2xsaWRlPWZ1bmN0aW9uKG4pe3ZhciBlLHIsYSxjPTEsbD0xO2Z1bmN0aW9uIGgoKXtmb3IodmFyIG4saSxoLHksZCxnLHgscz1lLmxlbmd0aCxwPTA7cDxsOysrcClmb3IoaT10LnF1YWR0cmVlKGUsbyxmKS52aXNpdEFmdGVyKHYpLG49MDtuPHM7KytuKWg9ZVtuXSxnPXJbaC5pbmRleF0seD1nKmcseT1oLngraC52eCxkPWgueStoLnZ5LGkudmlzaXQoTSk7ZnVuY3Rpb24gTShuLHQsZSxyLGkpe3ZhciBvPW4uZGF0YSxmPW4ucixsPWcrZjtpZighbylyZXR1cm4gdD55K2x8fHI8eS1sfHxlPmQrbHx8aTxkLWw7aWYoby5pbmRleD5oLmluZGV4KXt2YXIgdj15LW8ueC1vLnZ4LHM9ZC1vLnktby52eSxwPXYqditzKnM7cDxsKmwmJigwPT09diYmKHArPSh2PXUoYSkpKnYpLDA9PT1zJiYocCs9KHM9dShhKSkqcykscD0obC0ocD1NYXRoLnNxcnQocCkpKS9wKmMsaC52eCs9KHYqPXApKihsPShmKj1mKS8oeCtmKSksaC52eSs9KHMqPXApKmwsby52eC09dioobD0xLWwpLG8udnktPXMqbCl9fX1mdW5jdGlvbiB2KG4pe2lmKG4uZGF0YSlyZXR1cm4gbi5yPXJbbi5kYXRhLmluZGV4XTtmb3IodmFyIHQ9bi5yPTA7dDw0OysrdCluW3RdJiZuW3RdLnI+bi5yJiYobi5yPW5bdF0ucil9ZnVuY3Rpb24geSgpe2lmKGUpe3ZhciB0LGksdT1lLmxlbmd0aDtmb3Iocj1uZXcgQXJyYXkodSksdD0wO3Q8dTsrK3QpaT1lW3RdLHJbaS5pbmRleF09K24oaSx0LGUpfX1yZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgbiYmKG49aShudWxsPT1uPzE6K24pKSxoLmluaXRpYWxpemU9ZnVuY3Rpb24obix0KXtlPW4sYT10LHkoKX0saC5pdGVyYXRpb25zPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPStuLGgpOmx9LGguc3RyZW5ndGg9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9K24saCk6Y30saC5yYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDppKCt0KSx5KCksaCk6bn0saH0sbi5mb3JjZUxpbms9ZnVuY3Rpb24obil7dmFyIHQsZSxyLG8sZixsLGg9YSx2PWZ1bmN0aW9uKG4pe3JldHVybiAxL01hdGgubWluKG9bbi5zb3VyY2UuaW5kZXhdLG9bbi50YXJnZXQuaW5kZXhdKX0seT1pKDMwKSxkPTE7ZnVuY3Rpb24gZyhyKXtmb3IodmFyIGk9MCxvPW4ubGVuZ3RoO2k8ZDsrK2kpZm9yKHZhciBhLGMsaCx2LHksZyx4LHM9MDtzPG87KytzKWM9KGE9bltzXSkuc291cmNlLHY9KGg9YS50YXJnZXQpLngraC52eC1jLngtYy52eHx8dShsKSx5PWgueStoLnZ5LWMueS1jLnZ5fHx1KGwpLHYqPWc9KChnPU1hdGguc3FydCh2KnYreSp5KSktZVtzXSkvZypyKnRbc10seSo9ZyxoLnZ4LT12Kih4PWZbc10pLGgudnktPXkqeCxjLnZ4Kz12Kih4PTEteCksYy52eSs9eSp4fWZ1bmN0aW9uIHgoKXtpZihyKXt2YXIgaSx1LGE9ci5sZW5ndGgsbD1uLmxlbmd0aCx2PW5ldyBNYXAoci5tYXAoKChuLHQpPT5baChuLHQsciksbl0pKSk7Zm9yKGk9MCxvPW5ldyBBcnJheShhKTtpPGw7KytpKSh1PW5baV0pLmluZGV4PWksIm9iamVjdCIhPXR5cGVvZiB1LnNvdXJjZSYmKHUuc291cmNlPWModix1LnNvdXJjZSkpLCJvYmplY3QiIT10eXBlb2YgdS50YXJnZXQmJih1LnRhcmdldD1jKHYsdS50YXJnZXQpKSxvW3Uuc291cmNlLmluZGV4XT0ob1t1LnNvdXJjZS5pbmRleF18fDApKzEsb1t1LnRhcmdldC5pbmRleF09KG9bdS50YXJnZXQuaW5kZXhdfHwwKSsxO2ZvcihpPTAsZj1uZXcgQXJyYXkobCk7aTxsOysraSl1PW5baV0sZltpXT1vW3Uuc291cmNlLmluZGV4XS8ob1t1LnNvdXJjZS5pbmRleF0rb1t1LnRhcmdldC5pbmRleF0pO3Q9bmV3IEFycmF5KGwpLHMoKSxlPW5ldyBBcnJheShsKSxwKCl9fWZ1bmN0aW9uIHMoKXtpZihyKWZvcih2YXIgZT0wLGk9bi5sZW5ndGg7ZTxpOysrZSl0W2VdPSt2KG5bZV0sZSxuKX1mdW5jdGlvbiBwKCl7aWYocilmb3IodmFyIHQ9MCxpPW4ubGVuZ3RoO3Q8aTsrK3QpZVt0XT0reShuW3RdLHQsbil9cmV0dXJuIG51bGw9PW4mJihuPVtdKSxnLmluaXRpYWxpemU9ZnVuY3Rpb24obix0KXtyPW4sbD10LHgoKX0sZy5saW5rcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10LHgoKSxnKTpufSxnLmlkPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPW4sZyk6aH0sZy5pdGVyYXRpb25zPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPStuLGcpOmR9LGcuc3RyZW5ndGg9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHY9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjppKCtuKSxzKCksZyk6dn0sZy5kaXN0YW5jZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeT0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOmkoK24pLHAoKSxnKTp5fSxnfSxuLmZvcmNlTWFueUJvZHk9ZnVuY3Rpb24oKXt2YXIgbixlLHIsbyxmLGE9aSgtMzApLGM9MSxsPTEvMCx5PS44MTtmdW5jdGlvbiBkKHIpe3ZhciBpLHU9bi5sZW5ndGgsZj10LnF1YWR0cmVlKG4saCx2KS52aXNpdEFmdGVyKHgpO2ZvcihvPXIsaT0wO2k8dTsrK2kpZT1uW2ldLGYudmlzaXQocyl9ZnVuY3Rpb24gZygpe2lmKG4pe3ZhciB0LGUscj1uLmxlbmd0aDtmb3IoZj1uZXcgQXJyYXkociksdD0wO3Q8cjsrK3QpZT1uW3RdLGZbZS5pbmRleF09K2EoZSx0LG4pfX1mdW5jdGlvbiB4KG4pe3ZhciB0LGUscixpLHUsbz0wLGE9MDtpZihuLmxlbmd0aCl7Zm9yKHI9aT11PTA7dTw0OysrdSkodD1uW3VdKSYmKGU9TWF0aC5hYnModC52YWx1ZSkpJiYobys9dC52YWx1ZSxhKz1lLHIrPWUqdC54LGkrPWUqdC55KTtuLng9ci9hLG4ueT1pL2F9ZWxzZXsodD1uKS54PXQuZGF0YS54LHQueT10LmRhdGEueTtkb3tvKz1mW3QuZGF0YS5pbmRleF19d2hpbGUodD10Lm5leHQpfW4udmFsdWU9b31mdW5jdGlvbiBzKG4sdCxpLGEpe2lmKCFuLnZhbHVlKXJldHVybiEwO3ZhciBoPW4ueC1lLngsdj1uLnktZS55LGQ9YS10LGc9aCpoK3YqdjtpZihkKmQveTxnKXJldHVybiBnPGwmJigwPT09aCYmKGcrPShoPXUocikpKmgpLDA9PT12JiYoZys9KHY9dShyKSkqdiksZzxjJiYoZz1NYXRoLnNxcnQoYypnKSksZS52eCs9aCpuLnZhbHVlKm8vZyxlLnZ5Kz12Km4udmFsdWUqby9nKSwhMDtpZighKG4ubGVuZ3RofHxnPj1sKSl7KG4uZGF0YSE9PWV8fG4ubmV4dCkmJigwPT09aCYmKGcrPShoPXUocikpKmgpLDA9PT12JiYoZys9KHY9dShyKSkqdiksZzxjJiYoZz1NYXRoLnNxcnQoYypnKSkpO2Rve24uZGF0YSE9PWUmJihkPWZbbi5kYXRhLmluZGV4XSpvL2csZS52eCs9aCpkLGUudnkrPXYqZCl9d2hpbGUobj1uLm5leHQpfX1yZXR1cm4gZC5pbml0aWFsaXplPWZ1bmN0aW9uKHQsZSl7bj10LHI9ZSxnKCl9LGQuc3RyZW5ndGg9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjppKCtuKSxnKCksZCk6YX0sZC5kaXN0YW5jZU1pbj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1uKm4sZCk6TWF0aC5zcXJ0KGMpfSxkLmRpc3RhbmNlTWF4PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPW4qbixkKTpNYXRoLnNxcnQobCl9LGQudGhldGE9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHk9bipuLGQpOk1hdGguc3FydCh5KX0sZH0sbi5mb3JjZVJhZGlhbD1mdW5jdGlvbihuLHQsZSl7dmFyIHIsdSxvLGY9aSguMSk7ZnVuY3Rpb24gYShuKXtmb3IodmFyIGk9MCxmPXIubGVuZ3RoO2k8ZjsrK2kpe3ZhciBhPXJbaV0sYz1hLngtdHx8MWUtNixsPWEueS1lfHwxZS02LGg9TWF0aC5zcXJ0KGMqYytsKmwpLHY9KG9baV0taCkqdVtpXSpuL2g7YS52eCs9Yyp2LGEudnkrPWwqdn19ZnVuY3Rpb24gYygpe2lmKHIpe3ZhciB0LGU9ci5sZW5ndGg7Zm9yKHU9bmV3IEFycmF5KGUpLG89bmV3IEFycmF5KGUpLHQ9MDt0PGU7Kyt0KW9bdF09K24oclt0XSx0LHIpLHVbdF09aXNOYU4ob1t0XSk/MDorZihyW3RdLHQscil9fXJldHVybiJmdW5jdGlvbiIhPXR5cGVvZiBuJiYobj1pKCtuKSksbnVsbD09dCYmKHQ9MCksbnVsbD09ZSYmKGU9MCksYS5pbml0aWFsaXplPWZ1bmN0aW9uKG4pe3I9bixjKCl9LGEuc3RyZW5ndGg9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjppKCtuKSxjKCksYSk6Zn0sYS5yYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDppKCt0KSxjKCksYSk6bn0sYS54PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PStuLGEpOnR9LGEueT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0rbixhKTplfSxhfSxuLmZvcmNlU2ltdWxhdGlvbj1mdW5jdGlvbihuKXt2YXIgdCxpPTEsdT0uMDAxLG89MS1NYXRoLnBvdyh1LDEvMzAwKSxmPTAsYT0uNixjPW5ldyBNYXAsaD1yLnRpbWVyKGcpLHY9ZS5kaXNwYXRjaCgidGljayIsImVuZCIpLGQ9ZnVuY3Rpb24oKXtsZXQgbj0xO3JldHVybigpPT4obj0oMTY2NDUyNSpuKzEwMTM5MDQyMjMpJWwpL2x9KCk7ZnVuY3Rpb24gZygpe3goKSx2LmNhbGwoInRpY2siLHQpLGk8dSYmKGguc3RvcCgpLHYuY2FsbCgiZW5kIix0KSl9ZnVuY3Rpb24geChlKXt2YXIgcix1LGw9bi5sZW5ndGg7dm9pZCAwPT09ZSYmKGU9MSk7Zm9yKHZhciBoPTA7aDxlOysraClmb3IoaSs9KGYtaSkqbyxjLmZvckVhY2goKGZ1bmN0aW9uKG4pe24oaSl9KSkscj0wO3I8bDsrK3IpbnVsbD09KHU9bltyXSkuZng/dS54Kz11LnZ4Kj1hOih1Lng9dS5meCx1LnZ4PTApLG51bGw9PXUuZnk/dS55Kz11LnZ5Kj1hOih1Lnk9dS5meSx1LnZ5PTApO3JldHVybiB0fWZ1bmN0aW9uIHMoKXtmb3IodmFyIHQsZT0wLHI9bi5sZW5ndGg7ZTxyOysrZSl7aWYoKHQ9bltlXSkuaW5kZXg9ZSxudWxsIT10LmZ4JiYodC54PXQuZngpLG51bGwhPXQuZnkmJih0Lnk9dC5meSksaXNOYU4odC54KXx8aXNOYU4odC55KSl7dmFyIGk9MTAqTWF0aC5zcXJ0KC41K2UpLHU9ZSp5O3QueD1pKk1hdGguY29zKHUpLHQueT1pKk1hdGguc2luKHUpfShpc05hTih0LnZ4KXx8aXNOYU4odC52eSkpJiYodC52eD10LnZ5PTApfX1mdW5jdGlvbiBwKHQpe3JldHVybiB0LmluaXRpYWxpemUmJnQuaW5pdGlhbGl6ZShuLGQpLHR9cmV0dXJuIG51bGw9PW4mJihuPVtdKSxzKCksdD17dGljazp4LHJlc3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gaC5yZXN0YXJ0KGcpLHR9LHN0b3A6ZnVuY3Rpb24oKXtyZXR1cm4gaC5zdG9wKCksdH0sbm9kZXM6ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ZSxzKCksYy5mb3JFYWNoKHApLHQpOm59LGFscGhhOmZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPStuLHQpOml9LGFscGhhTWluOmZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PStuLHQpOnV9LGFscGhhRGVjYXk6ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89K24sdCk6K299LGFscGhhVGFyZ2V0OmZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPStuLHQpOmZ9LHZlbG9jaXR5RGVjYXk6ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9MS1uLHQpOjEtYX0scmFuZG9tU291cmNlOmZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPW4sYy5mb3JFYWNoKHApLHQpOmR9LGZvcmNlOmZ1bmN0aW9uKG4sZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT8obnVsbD09ZT9jLmRlbGV0ZShuKTpjLnNldChuLHAoZSkpLHQpOmMuZ2V0KG4pfSxmaW5kOmZ1bmN0aW9uKHQsZSxyKXt2YXIgaSx1LG8sZixhLGM9MCxsPW4ubGVuZ3RoO2ZvcihudWxsPT1yP3I9MS8wOnIqPXIsYz0wO2M8bDsrK2MpKG89KGk9dC0oZj1uW2NdKS54KSppKyh1PWUtZi55KSp1KTxyJiYoYT1mLHI9byk7cmV0dXJuIGF9LG9uOmZ1bmN0aW9uKG4sZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT8odi5vbihuLGUpLHQpOnYub24obil9fX0sbi5mb3JjZVg9ZnVuY3Rpb24obil7dmFyIHQsZSxyLHU9aSguMSk7ZnVuY3Rpb24gbyhuKXtmb3IodmFyIGksdT0wLG89dC5sZW5ndGg7dTxvOysrdSkoaT10W3VdKS52eCs9KHJbdV0taS54KSplW3VdKm59ZnVuY3Rpb24gZigpe2lmKHQpe3ZhciBpLG89dC5sZW5ndGg7Zm9yKGU9bmV3IEFycmF5KG8pLHI9bmV3IEFycmF5KG8pLGk9MDtpPG87KytpKWVbaV09aXNOYU4ocltpXT0rbih0W2ldLGksdCkpPzA6K3UodFtpXSxpLHQpfX1yZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgbiYmKG49aShudWxsPT1uPzA6K24pKSxvLmluaXRpYWxpemU9ZnVuY3Rpb24obil7dD1uLGYoKX0sby5zdHJlbmd0aD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOmkoK24pLGYoKSxvKTp1fSxvLng9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDppKCt0KSxmKCksbyk6bn0sb30sbi5mb3JjZVk9ZnVuY3Rpb24obil7dmFyIHQsZSxyLHU9aSguMSk7ZnVuY3Rpb24gbyhuKXtmb3IodmFyIGksdT0wLG89dC5sZW5ndGg7dTxvOysrdSkoaT10W3VdKS52eSs9KHJbdV0taS55KSplW3VdKm59ZnVuY3Rpb24gZigpe2lmKHQpe3ZhciBpLG89dC5sZW5ndGg7Zm9yKGU9bmV3IEFycmF5KG8pLHI9bmV3IEFycmF5KG8pLGk9MDtpPG87KytpKWVbaV09aXNOYU4ocltpXT0rbih0W2ldLGksdCkpPzA6K3UodFtpXSxpLHQpfX1yZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgbiYmKG49aShudWxsPT1uPzA6K24pKSxvLmluaXRpYWxpemU9ZnVuY3Rpb24obil7dD1uLGYoKX0sby5zdHJlbmd0aD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOmkoK24pLGYoKSxvKTp1fSxvLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDppKCt0KSxmKCksbyk6bn0sb30sT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSkpOw==","asset/d3.js":"data:application/javascript;base64,Ly8gaHR0cHM6Ly9kM2pzLm9yZyB2Ny42LjEgQ29weXJpZ2h0IDIwMTAtMjAyMiBNaWtlIEJvc3RvY2sKIWZ1bmN0aW9uKHQsbil7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZT9uKGV4cG9ydHMpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsiZXhwb3J0cyJdLG4pOm4oKHQ9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6dHx8c2VsZikuZDM9dC5kM3x8e30pfSh0aGlzLChmdW5jdGlvbih0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LG4pe3JldHVybiBudWxsPT10fHxudWxsPT1uP05hTjp0PG4/LTE6dD5uPzE6dD49bj8wOk5hTn1mdW5jdGlvbiBlKHQsbil7cmV0dXJuIG51bGw9PXR8fG51bGw9PW4/TmFOOm48dD8tMTpuPnQ/MTpuPj10PzA6TmFOfWZ1bmN0aW9uIHIodCl7bGV0IHIsbyxhO2Z1bmN0aW9uIHUodCxuLGU9MCxpPXQubGVuZ3RoKXtpZihlPGkpe2lmKDAhPT1yKG4sbikpcmV0dXJuIGk7ZG97Y29uc3Qgcj1lK2k+Pj4xO28odFtyXSxuKTwwP2U9cisxOmk9cn13aGlsZShlPGkpfXJldHVybiBlfXJldHVybiAyIT09dC5sZW5ndGg/KHI9bixvPShlLHIpPT5uKHQoZSksciksYT0obixlKT0+dChuKS1lKToocj10PT09bnx8dD09PWU/dDppLG89dCxhPXQpLHtsZWZ0OnUsY2VudGVyOmZ1bmN0aW9uKHQsbixlPTAscj10Lmxlbmd0aCl7Y29uc3QgaT11KHQsbixlLHItMSk7cmV0dXJuIGk+ZSYmYSh0W2ktMV0sbik+LWEodFtpXSxuKT9pLTE6aX0scmlnaHQ6ZnVuY3Rpb24odCxuLGU9MCxpPXQubGVuZ3RoKXtpZihlPGkpe2lmKDAhPT1yKG4sbikpcmV0dXJuIGk7ZG97Y29uc3Qgcj1lK2k+Pj4xO28odFtyXSxuKTw9MD9lPXIrMTppPXJ9d2hpbGUoZTxpKX1yZXR1cm4gZX19fWZ1bmN0aW9uIGkoKXtyZXR1cm4gMH1mdW5jdGlvbiBvKHQpe3JldHVybiBudWxsPT09dD9OYU46K3R9ZnVuY3Rpb24qYSh0LG4pe2lmKHZvaWQgMD09PW4pZm9yKGxldCBuIG9mIHQpbnVsbCE9biYmKG49K24pPj1uJiYoeWllbGQgbik7ZWxzZXtsZXQgZT0tMTtmb3IobGV0IHIgb2YgdCludWxsIT0ocj1uKHIsKytlLHQpKSYmKHI9K3IpPj1yJiYoeWllbGQgcil9fWNvbnN0IHU9cihuKSxjPXUucmlnaHQsZj11LmxlZnQscz1yKG8pLmNlbnRlcjt2YXIgbD1jO2NvbnN0IGg9cCh2KSxkPXAoKGZ1bmN0aW9uKHQpe2NvbnN0IG49dih0KTtyZXR1cm4odCxlLHIsaSxvKT0+e24odCxlLChyPDw9MikrMCwoaTw8PTIpKzAsbzw8PTIpLG4odCxlLHIrMSxpKzEsbyksbih0LGUscisyLGkrMixvKSxuKHQsZSxyKzMsaSszLG8pfX0pKTtmdW5jdGlvbiBwKHQpe3JldHVybiBmdW5jdGlvbihuLGUscj1lKXtpZighKChlPStlKT49MCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoImludmFsaWQgcngiKTtpZighKChyPStyKT49MCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoImludmFsaWQgcnkiKTtsZXR7ZGF0YTppLHdpZHRoOm8saGVpZ2h0OmF9PW47aWYoISgobz1NYXRoLmZsb29yKG8pKT49MCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoImludmFsaWQgd2lkdGgiKTtpZighKChhPU1hdGguZmxvb3Iodm9pZCAwIT09YT9hOmkubGVuZ3RoL28pKT49MCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoImludmFsaWQgaGVpZ2h0Iik7aWYoIW98fCFhfHwhZSYmIXIpcmV0dXJuIG47Y29uc3QgdT1lJiZ0KGUpLGM9ciYmdChyKSxmPWkuc2xpY2UoKTtyZXR1cm4gdSYmYz8oZyh1LGYsaSxvLGEpLGcodSxpLGYsbyxhKSxnKHUsZixpLG8sYSkseShjLGksZixvLGEpLHkoYyxmLGksbyxhKSx5KGMsaSxmLG8sYSkpOnU/KGcodSxpLGYsbyxhKSxnKHUsZixpLG8sYSksZyh1LGksZixvLGEpKTpjJiYoeShjLGksZixvLGEpLHkoYyxmLGksbyxhKSx5KGMsaSxmLG8sYSkpLG59fWZ1bmN0aW9uIGcodCxuLGUscixpKXtmb3IobGV0IG89MCxhPXIqaTtvPGE7KXQobixlLG8sbys9ciwxKX1mdW5jdGlvbiB5KHQsbixlLHIsaSl7Zm9yKGxldCBvPTAsYT1yKmk7bzxyOysrbyl0KG4sZSxvLG8rYSxyKX1mdW5jdGlvbiB2KHQpe2NvbnN0IG49TWF0aC5mbG9vcih0KTtpZihuPT09dClyZXR1cm4gZnVuY3Rpb24odCl7Y29uc3Qgbj0yKnQrMTtyZXR1cm4oZSxyLGksbyxhKT0+e2lmKCEoKG8tPWEpPj1pKSlyZXR1cm47bGV0IHU9dCpyW2ldO2NvbnN0IGM9YSp0O2ZvcihsZXQgdD1pLG49aStjO3Q8bjt0Kz1hKXUrPXJbTWF0aC5taW4obyx0KV07Zm9yKGxldCB0PWksZj1vO3Q8PWY7dCs9YSl1Kz1yW01hdGgubWluKG8sdCtjKV0sZVt0XT11L24sdS09cltNYXRoLm1heChpLHQtYyldfX0odCk7Y29uc3QgZT10LW4scj0yKnQrMTtyZXR1cm4odCxpLG8sYSx1KT0+e2lmKCEoKGEtPXUpPj1vKSlyZXR1cm47bGV0IGM9bippW29dO2NvbnN0IGY9dSpuLHM9Zit1O2ZvcihsZXQgdD1vLG49bytmO3Q8bjt0Kz11KWMrPWlbTWF0aC5taW4oYSx0KV07Zm9yKGxldCBuPW8sbD1hO248PWw7bis9dSljKz1pW01hdGgubWluKGEsbitmKV0sdFtuXT0oYytlKihpW01hdGgubWF4KG8sbi1zKV0raVtNYXRoLm1pbihhLG4rcyldKSkvcixjLT1pW01hdGgubWF4KG8sbi1mKV19fWZ1bmN0aW9uIF8odCxuKXtsZXQgZT0wO2lmKHZvaWQgMD09PW4pZm9yKGxldCBuIG9mIHQpbnVsbCE9biYmKG49K24pPj1uJiYrK2U7ZWxzZXtsZXQgcj0tMTtmb3IobGV0IGkgb2YgdCludWxsIT0oaT1uKGksKytyLHQpKSYmKGk9K2kpPj1pJiYrK2V9cmV0dXJuIGV9ZnVuY3Rpb24gYih0KXtyZXR1cm4gMHx0Lmxlbmd0aH1mdW5jdGlvbiBtKHQpe3JldHVybiEodD4wKX1mdW5jdGlvbiB4KHQpe3JldHVybiJvYmplY3QiIT10eXBlb2YgdHx8Imxlbmd0aCJpbiB0P3Q6QXJyYXkuZnJvbSh0KX1mdW5jdGlvbiB3KHQsbil7bGV0IGUscj0wLGk9MCxvPTA7aWYodm9pZCAwPT09bilmb3IobGV0IG4gb2YgdCludWxsIT1uJiYobj0rbik+PW4mJihlPW4taSxpKz1lLysrcixvKz1lKihuLWkpKTtlbHNle2xldCBhPS0xO2ZvcihsZXQgdSBvZiB0KW51bGwhPSh1PW4odSwrK2EsdCkpJiYodT0rdSk+PXUmJihlPXUtaSxpKz1lLysrcixvKz1lKih1LWkpKX1pZihyPjEpcmV0dXJuIG8vKHItMSl9ZnVuY3Rpb24gTSh0LG4pe2NvbnN0IGU9dyh0LG4pO3JldHVybiBlP01hdGguc3FydChlKTplfWZ1bmN0aW9uIEEodCxuKXtsZXQgZSxyO2lmKHZvaWQgMD09PW4pZm9yKGNvbnN0IG4gb2YgdCludWxsIT1uJiYodm9pZCAwPT09ZT9uPj1uJiYoZT1yPW4pOihlPm4mJihlPW4pLHI8biYmKHI9bikpKTtlbHNle2xldCBpPS0xO2ZvcihsZXQgbyBvZiB0KW51bGwhPShvPW4obywrK2ksdCkpJiYodm9pZCAwPT09ZT9vPj1vJiYoZT1yPW8pOihlPm8mJihlPW8pLHI8byYmKHI9bykpKX1yZXR1cm5bZSxyXX1jbGFzcyBUe2NvbnN0cnVjdG9yKCl7dGhpcy5fcGFydGlhbHM9bmV3IEZsb2F0NjRBcnJheSgzMiksdGhpcy5fbj0wfWFkZCh0KXtjb25zdCBuPXRoaXMuX3BhcnRpYWxzO2xldCBlPTA7Zm9yKGxldCByPTA7cjx0aGlzLl9uJiZyPDMyO3IrKyl7Y29uc3QgaT1uW3JdLG89dCtpLGE9TWF0aC5hYnModCk8TWF0aC5hYnMoaSk/dC0oby1pKTppLShvLXQpO2EmJihuW2UrK109YSksdD1vfXJldHVybiBuW2VdPXQsdGhpcy5fbj1lKzEsdGhpc312YWx1ZU9mKCl7Y29uc3QgdD10aGlzLl9wYXJ0aWFscztsZXQgbixlLHIsaT10aGlzLl9uLG89MDtpZihpPjApe2ZvcihvPXRbLS1pXTtpPjAmJihuPW8sZT10Wy0taV0sbz1uK2Uscj1lLShvLW4pLCFyKTspO2k+MCYmKHI8MCYmdFtpLTFdPDB8fHI+MCYmdFtpLTFdPjApJiYoZT0yKnIsbj1vK2UsZT09bi1vJiYobz1uKSl9cmV0dXJuIG99fWNsYXNzIEludGVybk1hcCBleHRlbmRzIE1hcHtjb25zdHJ1Y3Rvcih0LG49Til7aWYoc3VwZXIoKSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0aGlzLHtfaW50ZXJuOnt2YWx1ZTpuZXcgTWFwfSxfa2V5Ont2YWx1ZTpufX0pLG51bGwhPXQpZm9yKGNvbnN0W24sZV1vZiB0KXRoaXMuc2V0KG4sZSl9Z2V0KHQpe3JldHVybiBzdXBlci5nZXQoUyh0aGlzLHQpKX1oYXModCl7cmV0dXJuIHN1cGVyLmhhcyhTKHRoaXMsdCkpfXNldCh0LG4pe3JldHVybiBzdXBlci5zZXQoRSh0aGlzLHQpLG4pfWRlbGV0ZSh0KXtyZXR1cm4gc3VwZXIuZGVsZXRlKGsodGhpcyx0KSl9fWNsYXNzIEludGVyblNldCBleHRlbmRzIFNldHtjb25zdHJ1Y3Rvcih0LG49Til7aWYoc3VwZXIoKSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0aGlzLHtfaW50ZXJuOnt2YWx1ZTpuZXcgTWFwfSxfa2V5Ont2YWx1ZTpufX0pLG51bGwhPXQpZm9yKGNvbnN0IG4gb2YgdCl0aGlzLmFkZChuKX1oYXModCl7cmV0dXJuIHN1cGVyLmhhcyhTKHRoaXMsdCkpfWFkZCh0KXtyZXR1cm4gc3VwZXIuYWRkKEUodGhpcyx0KSl9ZGVsZXRlKHQpe3JldHVybiBzdXBlci5kZWxldGUoayh0aGlzLHQpKX19ZnVuY3Rpb24gUyh7X2ludGVybjp0LF9rZXk6bn0sZSl7Y29uc3Qgcj1uKGUpO3JldHVybiB0LmhhcyhyKT90LmdldChyKTplfWZ1bmN0aW9uIEUoe19pbnRlcm46dCxfa2V5Om59LGUpe2NvbnN0IHI9bihlKTtyZXR1cm4gdC5oYXMocik/dC5nZXQocik6KHQuc2V0KHIsZSksZSl9ZnVuY3Rpb24gayh7X2ludGVybjp0LF9rZXk6bn0sZSl7Y29uc3Qgcj1uKGUpO3JldHVybiB0LmhhcyhyKSYmKGU9dC5nZXQociksdC5kZWxldGUocikpLGV9ZnVuY3Rpb24gTih0KXtyZXR1cm4gbnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdD90LnZhbHVlT2YoKTp0fWZ1bmN0aW9uIEModCl7cmV0dXJuIHR9ZnVuY3Rpb24gUCh0LC4uLm4pe3JldHVybiBJKHQsQyxDLG4pfWZ1bmN0aW9uIHoodCwuLi5uKXtyZXR1cm4gSSh0LEFycmF5LmZyb20sQyxuKX1mdW5jdGlvbiBEKHQsbil7Zm9yKGxldCBlPTEscj1uLmxlbmd0aDtlPHI7KytlKXQ9dC5mbGF0TWFwKCh0PT50LnBvcCgpLm1hcCgoKFtuLGVdKT0+Wy4uLnQsbixlXSkpKSk7cmV0dXJuIHR9ZnVuY3Rpb24gUih0LG4sLi4uZSl7cmV0dXJuIEkodCxDLG4sZSl9ZnVuY3Rpb24gRih0LG4sLi4uZSl7cmV0dXJuIEkodCxBcnJheS5mcm9tLG4sZSl9ZnVuY3Rpb24gcSh0KXtpZigxIT09dC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJkdXBsaWNhdGUga2V5Iik7cmV0dXJuIHRbMF19ZnVuY3Rpb24gSSh0LG4sZSxyKXtyZXR1cm4gZnVuY3Rpb24gdChpLG8pe2lmKG8+PXIubGVuZ3RoKXJldHVybiBlKGkpO2NvbnN0IGE9bmV3IEludGVybk1hcCx1PXJbbysrXTtsZXQgYz0tMTtmb3IoY29uc3QgdCBvZiBpKXtjb25zdCBuPXUodCwrK2MsaSksZT1hLmdldChuKTtlP2UucHVzaCh0KTphLnNldChuLFt0XSl9Zm9yKGNvbnN0W24sZV1vZiBhKWEuc2V0KG4sdChlLG8pKTtyZXR1cm4gbihhKX0odCwwKX1mdW5jdGlvbiBPKHQsbil7cmV0dXJuIEFycmF5LmZyb20obiwobj0+dFtuXSkpfWZ1bmN0aW9uIFUodCwuLi5uKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdFtTeW1ib2wuaXRlcmF0b3JdKXRocm93IG5ldyBUeXBlRXJyb3IoInZhbHVlcyBpcyBub3QgaXRlcmFibGUiKTt0PUFycmF5LmZyb20odCk7bGV0W2VdPW47aWYoZSYmMiE9PWUubGVuZ3RofHxuLmxlbmd0aD4xKXtjb25zdCByPVVpbnQzMkFycmF5LmZyb20odCwoKHQsbik9Pm4pKTtyZXR1cm4gbi5sZW5ndGg+MT8obj1uLm1hcCgobj0+dC5tYXAobikpKSxyLnNvcnQoKCh0LGUpPT57Zm9yKGNvbnN0IHIgb2Ygbil7Y29uc3Qgbj1ZKHJbdF0scltlXSk7aWYobilyZXR1cm4gbn19KSkpOihlPXQubWFwKGUpLHIuc29ydCgoKHQsbik9PlkoZVt0XSxlW25dKSkpKSxPKHQscil9cmV0dXJuIHQuc29ydChCKGUpKX1mdW5jdGlvbiBCKHQ9bil7aWYodD09PW4pcmV0dXJuIFk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiY29tcGFyZSBpcyBub3QgYSBmdW5jdGlvbiIpO3JldHVybihuLGUpPT57Y29uc3Qgcj10KG4sZSk7cmV0dXJuIHJ8fDA9PT1yP3I6KDA9PT10KGUsZSkpLSgwPT09dChuLG4pKX19ZnVuY3Rpb24gWSh0LG4pe3JldHVybihudWxsPT10fHwhKHQ+PXQpKS0obnVsbD09bnx8IShuPj1uKSl8fCh0PG4/LTE6dD5uPzE6MCl9dmFyIEw9QXJyYXkucHJvdG90eXBlLnNsaWNlO2Z1bmN0aW9uIGoodCl7cmV0dXJuKCk9PnR9dmFyICQ9TWF0aC5zcXJ0KDUwKSxIPU1hdGguc3FydCgxMCksWD1NYXRoLnNxcnQoMik7ZnVuY3Rpb24gRyh0LG4sZSl7dmFyIHIsaSxvLGEsdT0tMTtpZihlPStlLCh0PSt0KT09PShuPStuKSYmZT4wKXJldHVyblt0XTtpZigocj1uPHQpJiYoaT10LHQ9bixuPWkpLDA9PT0oYT1WKHQsbixlKSl8fCFpc0Zpbml0ZShhKSlyZXR1cm5bXTtpZihhPjApe2xldCBlPU1hdGgucm91bmQodC9hKSxyPU1hdGgucm91bmQobi9hKTtmb3IoZSphPHQmJisrZSxyKmE+biYmLS1yLG89bmV3IEFycmF5KGk9ci1lKzEpOysrdTxpOylvW3VdPShlK3UpKmF9ZWxzZXthPS1hO2xldCBlPU1hdGgucm91bmQodCphKSxyPU1hdGgucm91bmQobiphKTtmb3IoZS9hPHQmJisrZSxyL2E+biYmLS1yLG89bmV3IEFycmF5KGk9ci1lKzEpOysrdTxpOylvW3VdPShlK3UpL2F9cmV0dXJuIHImJm8ucmV2ZXJzZSgpLG99ZnVuY3Rpb24gVih0LG4sZSl7dmFyIHI9KG4tdCkvTWF0aC5tYXgoMCxlKSxpPU1hdGguZmxvb3IoTWF0aC5sb2cocikvTWF0aC5MTjEwKSxvPXIvTWF0aC5wb3coMTAsaSk7cmV0dXJuIGk+PTA/KG8+PSQ/MTA6bz49SD81Om8+PVg/MjoxKSpNYXRoLnBvdygxMCxpKTotTWF0aC5wb3coMTAsLWkpLyhvPj0kPzEwOm8+PUg/NTpvPj1YPzI6MSl9ZnVuY3Rpb24gVyh0LG4sZSl7dmFyIHI9TWF0aC5hYnMobi10KS9NYXRoLm1heCgwLGUpLGk9TWF0aC5wb3coMTAsTWF0aC5mbG9vcihNYXRoLmxvZyhyKS9NYXRoLkxOMTApKSxvPXIvaTtyZXR1cm4gbz49JD9pKj0xMDpvPj1IP2kqPTU6bz49WCYmKGkqPTIpLG48dD8taTppfWZ1bmN0aW9uIFoodCxuLGUpe2xldCByO2Zvcig7Oyl7Y29uc3QgaT1WKHQsbixlKTtpZihpPT09cnx8MD09PWl8fCFpc0Zpbml0ZShpKSlyZXR1cm5bdCxuXTtpPjA/KHQ9TWF0aC5mbG9vcih0L2kpKmksbj1NYXRoLmNlaWwobi9pKSppKTppPDAmJih0PU1hdGguY2VpbCh0KmkpL2ksbj1NYXRoLmZsb29yKG4qaSkvaSkscj1pfX1mdW5jdGlvbiBLKHQpe3JldHVybiBNYXRoLmNlaWwoTWF0aC5sb2coXyh0KSkvTWF0aC5MTjIpKzF9ZnVuY3Rpb24gUSgpe3ZhciB0PUMsbj1BLGU9SztmdW5jdGlvbiByKHIpe0FycmF5LmlzQXJyYXkocil8fChyPUFycmF5LmZyb20ocikpO3ZhciBpLG8sYSx1PXIubGVuZ3RoLGM9bmV3IEFycmF5KHUpO2ZvcihpPTA7aTx1OysraSljW2ldPXQocltpXSxpLHIpO3ZhciBmPW4oYykscz1mWzBdLGg9ZlsxXSxkPWUoYyxzLGgpO2lmKCFBcnJheS5pc0FycmF5KGQpKXtjb25zdCB0PWgsZT0rZDtpZihuPT09QSYmKFtzLGhdPVoocyxoLGUpKSwoZD1HKHMsaCxlKSlbMF08PXMmJihhPVYocyxoLGUpKSxkW2QubGVuZ3RoLTFdPj1oKWlmKHQ+PWgmJm49PT1BKXtjb25zdCB0PVYocyxoLGUpO2lzRmluaXRlKHQpJiYodD4wP2g9KE1hdGguZmxvb3IoaC90KSsxKSp0OnQ8MCYmKGg9KE1hdGguY2VpbChoKi10KSsxKS8tdCkpfWVsc2UgZC5wb3AoKX1mb3IodmFyIHA9ZC5sZW5ndGg7ZFswXTw9czspZC5zaGlmdCgpLC0tcDtmb3IoO2RbcC0xXT5oOylkLnBvcCgpLC0tcDt2YXIgZyx5PW5ldyBBcnJheShwKzEpO2ZvcihpPTA7aTw9cDsrK2kpKGc9eVtpXT1bXSkueDA9aT4wP2RbaS0xXTpzLGcueDE9aTxwP2RbaV06aDtpZihpc0Zpbml0ZShhKSl7aWYoYT4wKWZvcihpPTA7aTx1OysraSludWxsIT0obz1jW2ldKSYmczw9byYmbzw9aCYmeVtNYXRoLm1pbihwLE1hdGguZmxvb3IoKG8tcykvYSkpXS5wdXNoKHJbaV0pO2Vsc2UgaWYoYTwwKWZvcihpPTA7aTx1OysraSlpZihudWxsIT0obz1jW2ldKSYmczw9byYmbzw9aCl7Y29uc3QgdD1NYXRoLmZsb29yKChzLW8pKmEpO3lbTWF0aC5taW4ocCx0KyhkW3RdPD1vKSldLnB1c2gocltpXSl9fWVsc2UgZm9yKGk9MDtpPHU7KytpKW51bGwhPShvPWNbaV0pJiZzPD1vJiZvPD1oJiZ5W2woZCxvLDAscCldLnB1c2gocltpXSk7cmV0dXJuIHl9cmV0dXJuIHIudmFsdWU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpqKG4pLHIpOnR9LHIuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6aihbdFswXSx0WzFdXSkscik6bn0sci50aHJlc2hvbGRzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6QXJyYXkuaXNBcnJheSh0KT9qKEwuY2FsbCh0KSk6aih0KSxyKTplfSxyfWZ1bmN0aW9uIEoodCxuKXtsZXQgZTtpZih2b2lkIDA9PT1uKWZvcihjb25zdCBuIG9mIHQpbnVsbCE9biYmKGU8bnx8dm9pZCAwPT09ZSYmbj49bikmJihlPW4pO2Vsc2V7bGV0IHI9LTE7Zm9yKGxldCBpIG9mIHQpbnVsbCE9KGk9bihpLCsrcix0KSkmJihlPGl8fHZvaWQgMD09PWUmJmk+PWkpJiYoZT1pKX1yZXR1cm4gZX1mdW5jdGlvbiB0dCh0LG4pe2xldCBlLHI9LTEsaT0tMTtpZih2b2lkIDA9PT1uKWZvcihjb25zdCBuIG9mIHQpKytpLG51bGwhPW4mJihlPG58fHZvaWQgMD09PWUmJm4+PW4pJiYoZT1uLHI9aSk7ZWxzZSBmb3IobGV0IG8gb2YgdCludWxsIT0obz1uKG8sKytpLHQpKSYmKGU8b3x8dm9pZCAwPT09ZSYmbz49bykmJihlPW8scj1pKTtyZXR1cm4gcn1mdW5jdGlvbiBudCh0LG4pe2xldCBlO2lmKHZvaWQgMD09PW4pZm9yKGNvbnN0IG4gb2YgdCludWxsIT1uJiYoZT5ufHx2b2lkIDA9PT1lJiZuPj1uKSYmKGU9bik7ZWxzZXtsZXQgcj0tMTtmb3IobGV0IGkgb2YgdCludWxsIT0oaT1uKGksKytyLHQpKSYmKGU+aXx8dm9pZCAwPT09ZSYmaT49aSkmJihlPWkpfXJldHVybiBlfWZ1bmN0aW9uIGV0KHQsbil7bGV0IGUscj0tMSxpPS0xO2lmKHZvaWQgMD09PW4pZm9yKGNvbnN0IG4gb2YgdCkrK2ksbnVsbCE9biYmKGU+bnx8dm9pZCAwPT09ZSYmbj49bikmJihlPW4scj1pKTtlbHNlIGZvcihsZXQgbyBvZiB0KW51bGwhPShvPW4obywrK2ksdCkpJiYoZT5vfHx2b2lkIDA9PT1lJiZvPj1vKSYmKGU9byxyPWkpO3JldHVybiByfWZ1bmN0aW9uIHJ0KHQsbixlPTAscj10Lmxlbmd0aC0xLGkpe2ZvcihpPXZvaWQgMD09PWk/WTpCKGkpO3I+ZTspe2lmKHItZT42MDApe2NvbnN0IG89ci1lKzEsYT1uLWUrMSx1PU1hdGgubG9nKG8pLGM9LjUqTWF0aC5leHAoMip1LzMpLGY9LjUqTWF0aC5zcXJ0KHUqYyooby1jKS9vKSooYS1vLzI8MD8tMToxKTtydCh0LG4sTWF0aC5tYXgoZSxNYXRoLmZsb29yKG4tYSpjL28rZikpLE1hdGgubWluKHIsTWF0aC5mbG9vcihuKyhvLWEpKmMvbytmKSksaSl9Y29uc3Qgbz10W25dO2xldCBhPWUsdT1yO2ZvcihpdCh0LGUsbiksaSh0W3JdLG8pPjAmJml0KHQsZSxyKTthPHU7KXtmb3IoaXQodCxhLHUpLCsrYSwtLXU7aSh0W2FdLG8pPDA7KSsrYTtmb3IoO2kodFt1XSxvKT4wOyktLXV9MD09PWkodFtlXSxvKT9pdCh0LGUsdSk6KCsrdSxpdCh0LHUscikpLHU8PW4mJihlPXUrMSksbjw9dSYmKHI9dS0xKX1yZXR1cm4gdH1mdW5jdGlvbiBpdCh0LG4sZSl7Y29uc3Qgcj10W25dO3Rbbl09dFtlXSx0W2VdPXJ9ZnVuY3Rpb24gb3QodCxlPW4pe2xldCByLGk9ITE7aWYoMT09PWUubGVuZ3RoKXtsZXQgbztmb3IoY29uc3QgYSBvZiB0KXtjb25zdCB0PWUoYSk7KGk/bih0LG8pPjA6MD09PW4odCx0KSkmJihyPWEsbz10LGk9ITApfX1lbHNlIGZvcihjb25zdCBuIG9mIHQpKGk/ZShuLHIpPjA6MD09PWUobixuKSkmJihyPW4saT0hMCk7cmV0dXJuIHJ9ZnVuY3Rpb24gYXQodCxuLGUpe2lmKHI9KHQ9RmxvYXQ2NEFycmF5LmZyb20oYSh0LGUpKSkubGVuZ3RoKXtpZigobj0rbik8PTB8fHI8MilyZXR1cm4gbnQodCk7aWYobj49MSlyZXR1cm4gSih0KTt2YXIgcixpPShyLTEpKm4sbz1NYXRoLmZsb29yKGkpLHU9SihydCh0LG8pLnN1YmFycmF5KDAsbysxKSk7cmV0dXJuIHUrKG50KHQuc3ViYXJyYXkobysxKSktdSkqKGktbyl9fWZ1bmN0aW9uIHV0KHQsbixlPW8pe2lmKHI9dC5sZW5ndGgpe2lmKChuPStuKTw9MHx8cjwyKXJldHVybitlKHRbMF0sMCx0KTtpZihuPj0xKXJldHVybitlKHRbci0xXSxyLTEsdCk7dmFyIHIsaT0oci0xKSpuLGE9TWF0aC5mbG9vcihpKSx1PStlKHRbYV0sYSx0KTtyZXR1cm4gdSsoK2UodFthKzFdLGErMSx0KS11KSooaS1hKX19ZnVuY3Rpb24gY3QodCxuLGUpe2lmKHI9KHQ9RmxvYXQ2NEFycmF5LmZyb20oYSh0LGUpKSkubGVuZ3RoKXtpZigobj0rbik8PTB8fHI8MilyZXR1cm4gZXQodCk7aWYobj49MSlyZXR1cm4gdHQodCk7dmFyIHIsaT1NYXRoLmZsb29yKChyLTEpKm4pLG89cnQoVWludDMyQXJyYXkuZnJvbSh0LCgodCxuKT0+bikpLGksMCxyLTEsKChuLGUpPT5ZKHRbbl0sdFtlXSkpKTtyZXR1cm4gb3Qoby5zdWJhcnJheSgwLGkrMSksKG49PnRbbl0pKX19ZnVuY3Rpb24gZnQodCl7cmV0dXJuIEFycmF5LmZyb20oZnVuY3Rpb24qKHQpe2Zvcihjb25zdCBuIG9mIHQpeWllbGQqbn0odCkpfWZ1bmN0aW9uIHN0KHQsbil7cmV0dXJuW3Qsbl19ZnVuY3Rpb24gbHQodCxuLGUpe3Q9K3Qsbj0rbixlPShpPWFyZ3VtZW50cy5sZW5ndGgpPDI/KG49dCx0PTAsMSk6aTwzPzE6K2U7Zm9yKHZhciByPS0xLGk9MHxNYXRoLm1heCgwLE1hdGguY2VpbCgobi10KS9lKSksbz1uZXcgQXJyYXkoaSk7KytyPGk7KW9bcl09dCtyKmU7cmV0dXJuIG99ZnVuY3Rpb24gaHQodCxlPW4pe2lmKDE9PT1lLmxlbmd0aClyZXR1cm4gZXQodCxlKTtsZXQgcixpPS0xLG89LTE7Zm9yKGNvbnN0IG4gb2YgdCkrK28sKGk8MD8wPT09ZShuLG4pOmUobixyKTwwKSYmKHI9bixpPW8pO3JldHVybiBpfXZhciBkdD1wdChNYXRoLnJhbmRvbSk7ZnVuY3Rpb24gcHQodCl7cmV0dXJuIGZ1bmN0aW9uKG4sZT0wLHI9bi5sZW5ndGgpe2xldCBpPXItKGU9K2UpO2Zvcig7aTspe2NvbnN0IHI9dCgpKmktLXwwLG89bltpK2VdO25baStlXT1uW3IrZV0sbltyK2VdPW99cmV0dXJuIG59fWZ1bmN0aW9uIGd0KHQpe2lmKCEoaT10Lmxlbmd0aCkpcmV0dXJuW107Zm9yKHZhciBuPS0xLGU9bnQodCx5dCkscj1uZXcgQXJyYXkoZSk7KytuPGU7KWZvcih2YXIgaSxvPS0xLGE9cltuXT1uZXcgQXJyYXkoaSk7KytvPGk7KWFbb109dFtvXVtuXTtyZXR1cm4gcn1mdW5jdGlvbiB5dCh0KXtyZXR1cm4gdC5sZW5ndGh9ZnVuY3Rpb24gdnQodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBJbnRlcm5TZXQ/dDpuZXcgSW50ZXJuU2V0KHQpfWZ1bmN0aW9uIF90KHQsbil7Y29uc3QgZT10W1N5bWJvbC5pdGVyYXRvcl0oKSxyPW5ldyBTZXQ7Zm9yKGNvbnN0IHQgb2Ygbil7Y29uc3Qgbj1idCh0KTtpZihyLmhhcyhuKSljb250aW51ZTtsZXQgaSxvO2Zvcig7KHt2YWx1ZTppLGRvbmU6b309ZS5uZXh0KCkpOyl7aWYobylyZXR1cm4hMTtjb25zdCB0PWJ0KGkpO2lmKHIuYWRkKHQpLE9iamVjdC5pcyhuLHQpKWJyZWFrfX1yZXR1cm4hMH1mdW5jdGlvbiBidCh0KXtyZXR1cm4gbnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdD90LnZhbHVlT2YoKTp0fWZ1bmN0aW9uIG10KHQpe3JldHVybiB0fXZhciB4dD0xZS02O2Z1bmN0aW9uIHd0KHQpe3JldHVybiJ0cmFuc2xhdGUoIit0KyIsMCkifWZ1bmN0aW9uIE10KHQpe3JldHVybiJ0cmFuc2xhdGUoMCwiK3QrIikifWZ1bmN0aW9uIEF0KHQpe3JldHVybiBuPT4rdChuKX1mdW5jdGlvbiBUdCh0LG4pe3JldHVybiBuPU1hdGgubWF4KDAsdC5iYW5kd2lkdGgoKS0yKm4pLzIsdC5yb3VuZCgpJiYobj1NYXRoLnJvdW5kKG4pKSxlPT4rdChlKStufWZ1bmN0aW9uIFN0KCl7cmV0dXJuIXRoaXMuX19heGlzfWZ1bmN0aW9uIEV0KHQsbil7dmFyIGU9W10scj1udWxsLGk9bnVsbCxvPTYsYT02LHU9MyxjPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbz4xPzA6LjUsZj0xPT09dHx8ND09PXQ/LTE6MSxzPTQ9PT10fHwyPT09dD8ieCI6InkiLGw9MT09PXR8fDM9PT10P3d0Ok10O2Z1bmN0aW9uIGgoaCl7dmFyIGQ9bnVsbD09cj9uLnRpY2tzP24udGlja3MuYXBwbHkobixlKTpuLmRvbWFpbigpOnIscD1udWxsPT1pP24udGlja0Zvcm1hdD9uLnRpY2tGb3JtYXQuYXBwbHkobixlKTptdDppLGc9TWF0aC5tYXgobywwKSt1LHk9bi5yYW5nZSgpLHY9K3lbMF0rYyxfPSt5W3kubGVuZ3RoLTFdK2MsYj0obi5iYW5kd2lkdGg/VHQ6QXQpKG4uY29weSgpLGMpLG09aC5zZWxlY3Rpb24/aC5zZWxlY3Rpb24oKTpoLHg9bS5zZWxlY3RBbGwoIi5kb21haW4iKS5kYXRhKFtudWxsXSksdz1tLnNlbGVjdEFsbCgiLnRpY2siKS5kYXRhKGQsbikub3JkZXIoKSxNPXcuZXhpdCgpLEE9dy5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwidGljayIpLFQ9dy5zZWxlY3QoImxpbmUiKSxTPXcuc2VsZWN0KCJ0ZXh0Iik7eD14Lm1lcmdlKHguZW50ZXIoKS5pbnNlcnQoInBhdGgiLCIudGljayIpLmF0dHIoImNsYXNzIiwiZG9tYWluIikuYXR0cigic3Ryb2tlIiwiY3VycmVudENvbG9yIikpLHc9dy5tZXJnZShBKSxUPVQubWVyZ2UoQS5hcHBlbmQoImxpbmUiKS5hdHRyKCJzdHJva2UiLCJjdXJyZW50Q29sb3IiKS5hdHRyKHMrIjIiLGYqbykpLFM9Uy5tZXJnZShBLmFwcGVuZCgidGV4dCIpLmF0dHIoImZpbGwiLCJjdXJyZW50Q29sb3IiKS5hdHRyKHMsZipnKS5hdHRyKCJkeSIsMT09PXQ/IjBlbSI6Mz09PXQ/IjAuNzFlbSI6IjAuMzJlbSIpKSxoIT09bSYmKHg9eC50cmFuc2l0aW9uKGgpLHc9dy50cmFuc2l0aW9uKGgpLFQ9VC50cmFuc2l0aW9uKGgpLFM9Uy50cmFuc2l0aW9uKGgpLE09TS50cmFuc2l0aW9uKGgpLmF0dHIoIm9wYWNpdHkiLHh0KS5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbih0KXtyZXR1cm4gaXNGaW5pdGUodD1iKHQpKT9sKHQrYyk6dGhpcy5nZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIpfSkpLEEuYXR0cigib3BhY2l0eSIseHQpLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMucGFyZW50Tm9kZS5fX2F4aXM7cmV0dXJuIGwoKG4mJmlzRmluaXRlKG49bih0KSk/bjpiKHQpKStjKX0pKSksTS5yZW1vdmUoKSx4LmF0dHIoImQiLDQ9PT10fHwyPT09dD9hPyJNIitmKmErIiwiK3YrIkgiK2MrIlYiK18rIkgiK2YqYToiTSIrYysiLCIrdisiViIrXzphPyJNIit2KyIsIitmKmErIlYiK2MrIkgiK18rIlYiK2YqYToiTSIrdisiLCIrYysiSCIrXyksdy5hdHRyKCJvcGFjaXR5IiwxKS5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbih0KXtyZXR1cm4gbChiKHQpK2MpfSkpLFQuYXR0cihzKyIyIixmKm8pLFMuYXR0cihzLGYqZykudGV4dChwKSxtLmZpbHRlcihTdCkuYXR0cigiZmlsbCIsIm5vbmUiKS5hdHRyKCJmb250LXNpemUiLDEwKS5hdHRyKCJmb250LWZhbWlseSIsInNhbnMtc2VyaWYiKS5hdHRyKCJ0ZXh0LWFuY2hvciIsMj09PXQ/InN0YXJ0Ijo0PT09dD8iZW5kIjoibWlkZGxlIiksbS5lYWNoKChmdW5jdGlvbigpe3RoaXMuX19heGlzPWJ9KSl9cmV0dXJuIGguc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCxoKTpufSxoLnRpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIGU9QXJyYXkuZnJvbShhcmd1bWVudHMpLGh9LGgudGlja0FyZ3VtZW50cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1udWxsPT10P1tdOkFycmF5LmZyb20odCksaCk6ZS5zbGljZSgpfSxoLnRpY2tWYWx1ZXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9bnVsbD09dD9udWxsOkFycmF5LmZyb20odCksaCk6ciYmci5zbGljZSgpfSxoLnRpY2tGb3JtYXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9dCxoKTppfSxoLnRpY2tTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPWE9K3QsaCk6b30saC50aWNrU2l6ZUlubmVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSt0LGgpOm99LGgudGlja1NpemVPdXRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0rdCxoKTphfSxoLnRpY2tQYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PSt0LGgpOnV9LGgub2Zmc2V0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPSt0LGgpOmN9LGh9dmFyIGt0PXt2YWx1ZTooKT0+e319O2Z1bmN0aW9uIE50KCl7Zm9yKHZhciB0LG49MCxlPWFyZ3VtZW50cy5sZW5ndGgscj17fTtuPGU7KytuKXtpZighKHQ9YXJndW1lbnRzW25dKyIiKXx8dCBpbiByfHwvW1xzLl0vLnRlc3QodCkpdGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIHR5cGU6ICIrdCk7clt0XT1bXX1yZXR1cm4gbmV3IEN0KHIpfWZ1bmN0aW9uIEN0KHQpe3RoaXMuXz10fWZ1bmN0aW9uIFB0KHQsbil7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9IiIscj10LmluZGV4T2YoIi4iKTtpZihyPj0wJiYoZT10LnNsaWNlKHIrMSksdD10LnNsaWNlKDAscikpLHQmJiFuLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO3JldHVybnt0eXBlOnQsbmFtZTplfX0pKX1mdW5jdGlvbiB6dCh0LG4pe2Zvcih2YXIgZSxyPTAsaT10Lmxlbmd0aDtyPGk7KytyKWlmKChlPXRbcl0pLm5hbWU9PT1uKXJldHVybiBlLnZhbHVlfWZ1bmN0aW9uIER0KHQsbixlKXtmb3IodmFyIHI9MCxpPXQubGVuZ3RoO3I8aTsrK3IpaWYodFtyXS5uYW1lPT09bil7dFtyXT1rdCx0PXQuc2xpY2UoMCxyKS5jb25jYXQodC5zbGljZShyKzEpKTticmVha31yZXR1cm4gbnVsbCE9ZSYmdC5wdXNoKHtuYW1lOm4sdmFsdWU6ZX0pLHR9Q3QucHJvdG90eXBlPU50LnByb3RvdHlwZT17Y29uc3RydWN0b3I6Q3Qsb246ZnVuY3Rpb24odCxuKXt2YXIgZSxyPXRoaXMuXyxpPVB0KHQrIiIsciksbz0tMSxhPWkubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7aWYobnVsbCE9biYmImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNhbGxiYWNrOiAiK24pO2Zvcig7KytvPGE7KWlmKGU9KHQ9aVtvXSkudHlwZSlyW2VdPUR0KHJbZV0sdC5uYW1lLG4pO2Vsc2UgaWYobnVsbD09bilmb3IoZSBpbiByKXJbZV09RHQocltlXSx0Lm5hbWUsbnVsbCk7cmV0dXJuIHRoaXN9Zm9yKDsrK288YTspaWYoKGU9KHQ9aVtvXSkudHlwZSkmJihlPXp0KHJbZV0sdC5uYW1lKSkpcmV0dXJuIGV9LGNvcHk6ZnVuY3Rpb24oKXt2YXIgdD17fSxuPXRoaXMuXztmb3IodmFyIGUgaW4gbil0W2VdPW5bZV0uc2xpY2UoKTtyZXR1cm4gbmV3IEN0KHQpfSxjYWxsOmZ1bmN0aW9uKHQsbil7aWYoKGU9YXJndW1lbnRzLmxlbmd0aC0yKT4wKWZvcih2YXIgZSxyLGk9bmV3IEFycmF5KGUpLG89MDtvPGU7KytvKWlbb109YXJndW1lbnRzW28rMl07aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtmb3Iobz0wLGU9KHI9dGhpcy5fW3RdKS5sZW5ndGg7bzxlOysrbylyW29dLnZhbHVlLmFwcGx5KG4saSl9LGFwcGx5OmZ1bmN0aW9uKHQsbixlKXtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2Zvcih2YXIgcj10aGlzLl9bdF0saT0wLG89ci5sZW5ndGg7aTxvOysraSlyW2ldLnZhbHVlLmFwcGx5KG4sZSl9fTt2YXIgUnQ9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLEZ0PXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDpSdCx4bGluazoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIseG1sOiJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyJ9O2Z1bmN0aW9uIHF0KHQpe3ZhciBuPXQrPSIiLGU9bi5pbmRleE9mKCI6Iik7cmV0dXJuIGU+PTAmJiJ4bWxucyIhPT0obj10LnNsaWNlKDAsZSkpJiYodD10LnNsaWNlKGUrMSkpLEZ0Lmhhc093blByb3BlcnR5KG4pP3tzcGFjZTpGdFtuXSxsb2NhbDp0fTp0fWZ1bmN0aW9uIEl0KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPXRoaXMub3duZXJEb2N1bWVudCxlPXRoaXMubmFtZXNwYWNlVVJJO3JldHVybiBlPT09UnQmJm4uZG9jdW1lbnRFbGVtZW50Lm5hbWVzcGFjZVVSST09PVJ0P24uY3JlYXRlRWxlbWVudCh0KTpuLmNyZWF0ZUVsZW1lbnROUyhlLHQpfX1mdW5jdGlvbiBPdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiBVdCh0KXt2YXIgbj1xdCh0KTtyZXR1cm4obi5sb2NhbD9PdDpJdCkobil9ZnVuY3Rpb24gQnQoKXt9ZnVuY3Rpb24gWXQodCl7cmV0dXJuIG51bGw9PXQ/QnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yKHQpfX1mdW5jdGlvbiBMdCh0KXtyZXR1cm4gbnVsbD09dD9bXTpBcnJheS5pc0FycmF5KHQpP3Q6QXJyYXkuZnJvbSh0KX1mdW5jdGlvbiBqdCgpe3JldHVybltdfWZ1bmN0aW9uICR0KHQpe3JldHVybiBudWxsPT10P2p0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvckFsbCh0KX19ZnVuY3Rpb24gSHQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWF0Y2hlcyh0KX19ZnVuY3Rpb24gWHQodCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBuLm1hdGNoZXModCl9fXZhciBHdD1BcnJheS5wcm90b3R5cGUuZmluZDtmdW5jdGlvbiBWdCgpe3JldHVybiB0aGlzLmZpcnN0RWxlbWVudENoaWxkfXZhciBXdD1BcnJheS5wcm90b3R5cGUuZmlsdGVyO2Z1bmN0aW9uIFp0KCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5jaGlsZHJlbil9ZnVuY3Rpb24gS3QodCl7cmV0dXJuIG5ldyBBcnJheSh0Lmxlbmd0aCl9ZnVuY3Rpb24gUXQodCxuKXt0aGlzLm93bmVyRG9jdW1lbnQ9dC5vd25lckRvY3VtZW50LHRoaXMubmFtZXNwYWNlVVJJPXQubmFtZXNwYWNlVVJJLHRoaXMuX25leHQ9bnVsbCx0aGlzLl9wYXJlbnQ9dCx0aGlzLl9fZGF0YV9fPW59ZnVuY3Rpb24gSnQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIHRuKHQsbixlLHIsaSxvKXtmb3IodmFyIGEsdT0wLGM9bi5sZW5ndGgsZj1vLmxlbmd0aDt1PGY7Kyt1KShhPW5bdV0pPyhhLl9fZGF0YV9fPW9bdV0sclt1XT1hKTplW3VdPW5ldyBRdCh0LG9bdV0pO2Zvcig7dTxjOysrdSkoYT1uW3VdKSYmKGlbdV09YSl9ZnVuY3Rpb24gbm4odCxuLGUscixpLG8sYSl7dmFyIHUsYyxmLHM9bmV3IE1hcCxsPW4ubGVuZ3RoLGg9by5sZW5ndGgsZD1uZXcgQXJyYXkobCk7Zm9yKHU9MDt1PGw7Kyt1KShjPW5bdV0pJiYoZFt1XT1mPWEuY2FsbChjLGMuX19kYXRhX18sdSxuKSsiIixzLmhhcyhmKT9pW3VdPWM6cy5zZXQoZixjKSk7Zm9yKHU9MDt1PGg7Kyt1KWY9YS5jYWxsKHQsb1t1XSx1LG8pKyIiLChjPXMuZ2V0KGYpKT8oclt1XT1jLGMuX19kYXRhX189b1t1XSxzLmRlbGV0ZShmKSk6ZVt1XT1uZXcgUXQodCxvW3VdKTtmb3IodT0wO3U8bDsrK3UpKGM9blt1XSkmJnMuZ2V0KGRbdV0pPT09YyYmKGlbdV09Yyl9ZnVuY3Rpb24gZW4odCl7cmV0dXJuIHQuX19kYXRhX199ZnVuY3Rpb24gcm4odCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0JiYibGVuZ3RoImluIHQ/dDpBcnJheS5mcm9tKHQpfWZ1bmN0aW9uIG9uKHQsbil7cmV0dXJuIHQ8bj8tMTp0Pm4/MTp0Pj1uPzA6TmFOfWZ1bmN0aW9uIGFuKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiB1bih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIGNuKHQsbil7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGUodCxuKX19ZnVuY3Rpb24gZm4odCxuKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxuKX19ZnVuY3Rpb24gc24odCxuKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1lP3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpOnRoaXMuc2V0QXR0cmlidXRlKHQsZSl9fWZ1bmN0aW9uIGxuKHQsbil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09ZT90aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCk6dGhpcy5zZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwsZSl9fWZ1bmN0aW9uIGhuKHQpe3JldHVybiB0Lm93bmVyRG9jdW1lbnQmJnQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld3x8dC5kb2N1bWVudCYmdHx8dC5kZWZhdWx0Vmlld31mdW5jdGlvbiBkbih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfX1mdW5jdGlvbiBwbih0LG4sZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LG4sZSl9fWZ1bmN0aW9uIGduKHQsbixlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1yP3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCk6dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LHIsZSl9fWZ1bmN0aW9uIHluKHQsbil7cmV0dXJuIHQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShuKXx8aG4odCkuZ2V0Q29tcHV0ZWRTdHlsZSh0LG51bGwpLmdldFByb3BlcnR5VmFsdWUobil9ZnVuY3Rpb24gdm4odCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbdF19fWZ1bmN0aW9uIF9uKHQsbil7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpc1t0XT1ufX1mdW5jdGlvbiBibih0LG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PWU/ZGVsZXRlIHRoaXNbdF06dGhpc1t0XT1lfX1mdW5jdGlvbiBtbih0KXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLyl9ZnVuY3Rpb24geG4odCl7cmV0dXJuIHQuY2xhc3NMaXN0fHxuZXcgd24odCl9ZnVuY3Rpb24gd24odCl7dGhpcy5fbm9kZT10LHRoaXMuX25hbWVzPW1uKHQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9ZnVuY3Rpb24gTW4odCxuKXtmb3IodmFyIGU9eG4odCkscj0tMSxpPW4ubGVuZ3RoOysrcjxpOyllLmFkZChuW3JdKX1mdW5jdGlvbiBBbih0LG4pe2Zvcih2YXIgZT14bih0KSxyPS0xLGk9bi5sZW5ndGg7KytyPGk7KWUucmVtb3ZlKG5bcl0pfWZ1bmN0aW9uIFRuKHQpe3JldHVybiBmdW5jdGlvbigpe01uKHRoaXMsdCl9fWZ1bmN0aW9uIFNuKHQpe3JldHVybiBmdW5jdGlvbigpe0FuKHRoaXMsdCl9fWZ1bmN0aW9uIEVuKHQsbil7cmV0dXJuIGZ1bmN0aW9uKCl7KG4uYXBwbHkodGhpcyxhcmd1bWVudHMpP01uOkFuKSh0aGlzLHQpfX1mdW5jdGlvbiBrbigpe3RoaXMudGV4dENvbnRlbnQ9IiJ9ZnVuY3Rpb24gTm4odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD10fX1mdW5jdGlvbiBDbih0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLnRleHRDb250ZW50PW51bGw9PW4/IiI6bn19ZnVuY3Rpb24gUG4oKXt0aGlzLmlubmVySFRNTD0iIn1mdW5jdGlvbiB6bih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLmlubmVySFRNTD10fX1mdW5jdGlvbiBEbih0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLmlubmVySFRNTD1udWxsPT1uPyIiOm59fWZ1bmN0aW9uIFJuKCl7dGhpcy5uZXh0U2libGluZyYmdGhpcy5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRoaXMpfWZ1bmN0aW9uIEZuKCl7dGhpcy5wcmV2aW91c1NpYmxpbmcmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcyx0aGlzLnBhcmVudE5vZGUuZmlyc3RDaGlsZCl9ZnVuY3Rpb24gcW4oKXtyZXR1cm4gbnVsbH1mdW5jdGlvbiBJbigpe3ZhciB0PXRoaXMucGFyZW50Tm9kZTt0JiZ0LnJlbW92ZUNoaWxkKHRoaXMpfWZ1bmN0aW9uIE9uKCl7dmFyIHQ9dGhpcy5jbG9uZU5vZGUoITEpLG49dGhpcy5wYXJlbnROb2RlO3JldHVybiBuP24uaW5zZXJ0QmVmb3JlKHQsdGhpcy5uZXh0U2libGluZyk6dH1mdW5jdGlvbiBVbigpe3ZhciB0PXRoaXMuY2xvbmVOb2RlKCEwKSxuPXRoaXMucGFyZW50Tm9kZTtyZXR1cm4gbj9uLmluc2VydEJlZm9yZSh0LHRoaXMubmV4dFNpYmxpbmcpOnR9ZnVuY3Rpb24gQm4odCl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcCgoZnVuY3Rpb24odCl7dmFyIG49IiIsZT10LmluZGV4T2YoIi4iKTtyZXR1cm4gZT49MCYmKG49dC5zbGljZShlKzEpLHQ9dC5zbGljZSgwLGUpKSx7dHlwZTp0LG5hbWU6bn19KSl9ZnVuY3Rpb24gWW4odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49dGhpcy5fX29uO2lmKG4pe2Zvcih2YXIgZSxyPTAsaT0tMSxvPW4ubGVuZ3RoO3I8bzsrK3IpZT1uW3JdLHQudHlwZSYmZS50eXBlIT09dC50eXBlfHxlLm5hbWUhPT10Lm5hbWU/blsrK2ldPWU6dGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGUudHlwZSxlLmxpc3RlbmVyLGUub3B0aW9ucyk7KytpP24ubGVuZ3RoPWk6ZGVsZXRlIHRoaXMuX19vbn19fWZ1bmN0aW9uIExuKHQsbixlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcixpPXRoaXMuX19vbixvPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihuKXt0LmNhbGwodGhpcyxuLHRoaXMuX19kYXRhX18pfX0obik7aWYoaSlmb3IodmFyIGE9MCx1PWkubGVuZ3RoO2E8dTsrK2EpaWYoKHI9aVthXSkudHlwZT09PXQudHlwZSYmci5uYW1lPT09dC5uYW1lKXJldHVybiB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoci50eXBlLHIubGlzdGVuZXIsci5vcHRpb25zKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoci50eXBlLHIubGlzdGVuZXI9byxyLm9wdGlvbnM9ZSksdm9pZChyLnZhbHVlPW4pO3RoaXMuYWRkRXZlbnRMaXN0ZW5lcih0LnR5cGUsbyxlKSxyPXt0eXBlOnQudHlwZSxuYW1lOnQubmFtZSx2YWx1ZTpuLGxpc3RlbmVyOm8sb3B0aW9uczplfSxpP2kucHVzaChyKTp0aGlzLl9fb249W3JdfX1mdW5jdGlvbiBqbih0LG4sZSl7dmFyIHI9aG4odCksaT1yLkN1c3RvbUV2ZW50OyJmdW5jdGlvbiI9PXR5cGVvZiBpP2k9bmV3IGkobixlKTooaT1yLmRvY3VtZW50LmNyZWF0ZUV2ZW50KCJFdmVudCIpLGU/KGkuaW5pdEV2ZW50KG4sZS5idWJibGVzLGUuY2FuY2VsYWJsZSksaS5kZXRhaWw9ZS5kZXRhaWwpOmkuaW5pdEV2ZW50KG4sITEsITEpKSx0LmRpc3BhdGNoRXZlbnQoaSl9ZnVuY3Rpb24gJG4odCxuKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gam4odGhpcyx0LG4pfX1mdW5jdGlvbiBIbih0LG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBqbih0aGlzLHQsbi5hcHBseSh0aGlzLGFyZ3VtZW50cykpfX1RdC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlF0LGFwcGVuZENoaWxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsdGhpcy5fbmV4dCl9LGluc2VydEJlZm9yZTpmdW5jdGlvbih0LG4pe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsbil9LHF1ZXJ5U2VsZWN0b3I6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yKHQpfSxxdWVyeVNlbGVjdG9yQWxsOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3RvckFsbCh0KX19LHduLnByb3RvdHlwZT17YWRkOmZ1bmN0aW9uKHQpe3RoaXMuX25hbWVzLmluZGV4T2YodCk8MCYmKHRoaXMuX25hbWVzLnB1c2godCksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0scmVtb3ZlOmZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMuX25hbWVzLmluZGV4T2YodCk7bj49MCYmKHRoaXMuX25hbWVzLnNwbGljZShuLDEpLHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsdGhpcy5fbmFtZXMuam9pbigiICIpKSl9LGNvbnRhaW5zOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9uYW1lcy5pbmRleE9mKHQpPj0wfX07dmFyIFhuPVtudWxsXTtmdW5jdGlvbiBHbih0LG4pe3RoaXMuX2dyb3Vwcz10LHRoaXMuX3BhcmVudHM9bn1mdW5jdGlvbiBWbigpe3JldHVybiBuZXcgR24oW1tkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdXSxYbil9ZnVuY3Rpb24gV24odCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P25ldyBHbihbW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodCldXSxbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XSk6bmV3IEduKFtbdF1dLFhuKX1Hbi5wcm90b3R5cGU9Vm4ucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpHbixzZWxlY3Q6ZnVuY3Rpb24odCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PVl0KHQpKTtmb3IodmFyIG49dGhpcy5fZ3JvdXBzLGU9bi5sZW5ndGgscj1uZXcgQXJyYXkoZSksaT0wO2k8ZTsrK2kpZm9yKHZhciBvLGEsdT1uW2ldLGM9dS5sZW5ndGgsZj1yW2ldPW5ldyBBcnJheShjKSxzPTA7czxjOysrcykobz11W3NdKSYmKGE9dC5jYWxsKG8sby5fX2RhdGFfXyxzLHUpKSYmKCJfX2RhdGFfXyJpbiBvJiYoYS5fX2RhdGFfXz1vLl9fZGF0YV9fKSxmW3NdPWEpO3JldHVybiBuZXcgR24ocix0aGlzLl9wYXJlbnRzKX0sc2VsZWN0QWxsOmZ1bmN0aW9uKHQpe3Q9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEx0KHQuYXBwbHkodGhpcyxhcmd1bWVudHMpKX19KHQpOiR0KHQpO2Zvcih2YXIgbj10aGlzLl9ncm91cHMsZT1uLmxlbmd0aCxyPVtdLGk9W10sbz0wO288ZTsrK28pZm9yKHZhciBhLHU9bltvXSxjPXUubGVuZ3RoLGY9MDtmPGM7KytmKShhPXVbZl0pJiYoci5wdXNoKHQuY2FsbChhLGEuX19kYXRhX18sZix1KSksaS5wdXNoKGEpKTtyZXR1cm4gbmV3IEduKHIsaSl9LHNlbGVjdENoaWxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNlbGVjdChudWxsPT10P1Z0OmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBHdC5jYWxsKHRoaXMuY2hpbGRyZW4sdCl9fSgiZnVuY3Rpb24iPT10eXBlb2YgdD90Olh0KHQpKSl9LHNlbGVjdENoaWxkcmVuOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNlbGVjdEFsbChudWxsPT10P1p0OmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBXdC5jYWxsKHRoaXMuY2hpbGRyZW4sdCl9fSgiZnVuY3Rpb24iPT10eXBlb2YgdD90Olh0KHQpKSl9LGZpbHRlcjpmdW5jdGlvbih0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9SHQodCkpO2Zvcih2YXIgbj10aGlzLl9ncm91cHMsZT1uLmxlbmd0aCxyPW5ldyBBcnJheShlKSxpPTA7aTxlOysraSlmb3IodmFyIG8sYT1uW2ldLHU9YS5sZW5ndGgsYz1yW2ldPVtdLGY9MDtmPHU7KytmKShvPWFbZl0pJiZ0LmNhbGwobyxvLl9fZGF0YV9fLGYsYSkmJmMucHVzaChvKTtyZXR1cm4gbmV3IEduKHIsdGhpcy5fcGFyZW50cyl9LGRhdGE6ZnVuY3Rpb24odCxuKXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLGVuKTt2YXIgZT1uP25uOnRuLHI9dGhpcy5fcGFyZW50cyxpPXRoaXMuX2dyb3VwczsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9SnQodCkpO2Zvcih2YXIgbz1pLmxlbmd0aCxhPW5ldyBBcnJheShvKSx1PW5ldyBBcnJheShvKSxjPW5ldyBBcnJheShvKSxmPTA7ZjxvOysrZil7dmFyIHM9cltmXSxsPWlbZl0saD1sLmxlbmd0aCxkPXJuKHQuY2FsbChzLHMmJnMuX19kYXRhX18sZixyKSkscD1kLmxlbmd0aCxnPXVbZl09bmV3IEFycmF5KHApLHk9YVtmXT1uZXcgQXJyYXkocCksdj1jW2ZdPW5ldyBBcnJheShoKTtlKHMsbCxnLHksdixkLG4pO2Zvcih2YXIgXyxiLG09MCx4PTA7bTxwOysrbSlpZihfPWdbbV0pe2ZvcihtPj14JiYoeD1tKzEpOyEoYj15W3hdKSYmKyt4PHA7KTtfLl9uZXh0PWJ8fG51bGx9fXJldHVybihhPW5ldyBHbihhLHIpKS5fZW50ZXI9dSxhLl9leGl0PWMsYX0sZW50ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEduKHRoaXMuX2VudGVyfHx0aGlzLl9ncm91cHMubWFwKEt0KSx0aGlzLl9wYXJlbnRzKX0sZXhpdDpmdW5jdGlvbigpe3JldHVybiBuZXcgR24odGhpcy5fZXhpdHx8dGhpcy5fZ3JvdXBzLm1hcChLdCksdGhpcy5fcGFyZW50cyl9LGpvaW46ZnVuY3Rpb24odCxuLGUpe3ZhciByPXRoaXMuZW50ZXIoKSxpPXRoaXMsbz10aGlzLmV4aXQoKTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD8ocj10KHIpKSYmKHI9ci5zZWxlY3Rpb24oKSk6cj1yLmFwcGVuZCh0KyIiKSxudWxsIT1uJiYoaT1uKGkpKSYmKGk9aS5zZWxlY3Rpb24oKSksbnVsbD09ZT9vLnJlbW92ZSgpOmUobyksciYmaT9yLm1lcmdlKGkpLm9yZGVyKCk6aX0sbWVyZ2U6ZnVuY3Rpb24odCl7Zm9yKHZhciBuPXQuc2VsZWN0aW9uP3Quc2VsZWN0aW9uKCk6dCxlPXRoaXMuX2dyb3VwcyxyPW4uX2dyb3VwcyxpPWUubGVuZ3RoLG89ci5sZW5ndGgsYT1NYXRoLm1pbihpLG8pLHU9bmV3IEFycmF5KGkpLGM9MDtjPGE7KytjKWZvcih2YXIgZixzPWVbY10sbD1yW2NdLGg9cy5sZW5ndGgsZD11W2NdPW5ldyBBcnJheShoKSxwPTA7cDxoOysrcCkoZj1zW3BdfHxsW3BdKSYmKGRbcF09Zik7Zm9yKDtjPGk7KytjKXVbY109ZVtjXTtyZXR1cm4gbmV3IEduKHUsdGhpcy5fcGFyZW50cyl9LHNlbGVjdGlvbjpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxvcmRlcjpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMsbj0tMSxlPXQubGVuZ3RoOysrbjxlOylmb3IodmFyIHIsaT10W25dLG89aS5sZW5ndGgtMSxhPWlbb107LS1vPj0wOykocj1pW29dKSYmKGEmJjReci5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihhKSYmYS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShyLGEpLGE9cik7cmV0dXJuIHRoaXN9LHNvcnQ6ZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihuLGUpe3JldHVybiBuJiZlP3Qobi5fX2RhdGFfXyxlLl9fZGF0YV9fKTohbi0hZX10fHwodD1vbik7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxyPWUubGVuZ3RoLGk9bmV3IEFycmF5KHIpLG89MDtvPHI7KytvKXtmb3IodmFyIGEsdT1lW29dLGM9dS5sZW5ndGgsZj1pW29dPW5ldyBBcnJheShjKSxzPTA7czxjOysrcykoYT11W3NdKSYmKGZbc109YSk7Zi5zb3J0KG4pfXJldHVybiBuZXcgR24oaSx0aGlzLl9wYXJlbnRzKS5vcmRlcigpfSxjYWxsOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzWzBdO3JldHVybiBhcmd1bWVudHNbMF09dGhpcyx0LmFwcGx5KG51bGwsYXJndW1lbnRzKSx0aGlzfSxub2RlczpmdW5jdGlvbigpe3JldHVybiBBcnJheS5mcm9tKHRoaXMpfSxub2RlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxuPTAsZT10Lmxlbmd0aDtuPGU7KytuKWZvcih2YXIgcj10W25dLGk9MCxvPXIubGVuZ3RoO2k8bzsrK2kpe3ZhciBhPXJbaV07aWYoYSlyZXR1cm4gYX1yZXR1cm4gbnVsbH0sc2l6ZTpmdW5jdGlvbigpe2xldCB0PTA7Zm9yKGNvbnN0IG4gb2YgdGhpcykrK3Q7cmV0dXJuIHR9LGVtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMubm9kZSgpfSxlYWNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgbj10aGlzLl9ncm91cHMsZT0wLHI9bi5sZW5ndGg7ZTxyOysrZSlmb3IodmFyIGksbz1uW2VdLGE9MCx1PW8ubGVuZ3RoO2E8dTsrK2EpKGk9b1thXSkmJnQuY2FsbChpLGkuX19kYXRhX18sYSxvKTtyZXR1cm4gdGhpc30sYXR0cjpmdW5jdGlvbih0LG4pe3ZhciBlPXF0KHQpO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7dmFyIHI9dGhpcy5ub2RlKCk7cmV0dXJuIGUubG9jYWw/ci5nZXRBdHRyaWJ1dGVOUyhlLnNwYWNlLGUubG9jYWwpOnIuZ2V0QXR0cmlidXRlKGUpfXJldHVybiB0aGlzLmVhY2goKG51bGw9PW4/ZS5sb2NhbD91bjphbjoiZnVuY3Rpb24iPT10eXBlb2Ygbj9lLmxvY2FsP2xuOnNuOmUubG9jYWw/Zm46Y24pKGUsbikpfSxzdHlsZTpmdW5jdGlvbih0LG4sZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PW4/ZG46ImZ1bmN0aW9uIj09dHlwZW9mIG4/Z246cG4pKHQsbixudWxsPT1lPyIiOmUpKTp5bih0aGlzLm5vZGUoKSx0KX0scHJvcGVydHk6ZnVuY3Rpb24odCxuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgobnVsbD09bj92bjoiZnVuY3Rpb24iPT10eXBlb2Ygbj9ibjpfbikodCxuKSk6dGhpcy5ub2RlKClbdF19LGNsYXNzZWQ6ZnVuY3Rpb24odCxuKXt2YXIgZT1tbih0KyIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgcj14bih0aGlzLm5vZGUoKSksaT0tMSxvPWUubGVuZ3RoOysraTxvOylpZighci5jb250YWlucyhlW2ldKSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4gdGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2Ygbj9FbjpuP1RuOlNuKShlLG4pKX0sdGV4dDpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09dD9rbjooImZ1bmN0aW9uIj09dHlwZW9mIHQ/Q246Tm4pKHQpKTp0aGlzLm5vZGUoKS50ZXh0Q29udGVudH0saHRtbDpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09dD9QbjooImZ1bmN0aW9uIj09dHlwZW9mIHQ/RG46em4pKHQpKTp0aGlzLm5vZGUoKS5pbm5lckhUTUx9LHJhaXNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWFjaChSbil9LGxvd2VyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWFjaChGbil9LGFwcGVuZDpmdW5jdGlvbih0KXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlV0KHQpO3JldHVybiB0aGlzLnNlbGVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcHBlbmRDaGlsZChuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9KSl9LGluc2VydDpmdW5jdGlvbih0LG4pe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6VXQodCkscj1udWxsPT1uP3FuOiJmdW5jdGlvbiI9PXR5cGVvZiBuP246WXQobik7cmV0dXJuIHRoaXMuc2VsZWN0KChmdW5jdGlvbigpe3JldHVybiB0aGlzLmluc2VydEJlZm9yZShlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxyLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8bnVsbCl9KSl9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goSW4pfSxjbG9uZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zZWxlY3QodD9VbjpPbil9LGRhdHVtOmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMucHJvcGVydHkoIl9fZGF0YV9fIix0KTp0aGlzLm5vZGUoKS5fX2RhdGFfX30sb246ZnVuY3Rpb24odCxuLGUpe3ZhciByLGksbz1Cbih0KyIiKSxhPW8ubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7Zm9yKHU9bj9MbjpZbixyPTA7cjxhOysrcil0aGlzLmVhY2godShvW3JdLG4sZSkpO3JldHVybiB0aGlzfXZhciB1PXRoaXMubm9kZSgpLl9fb247aWYodSlmb3IodmFyIGMsZj0wLHM9dS5sZW5ndGg7ZjxzOysrZilmb3Iocj0wLGM9dVtmXTtyPGE7KytyKWlmKChpPW9bcl0pLnR5cGU9PT1jLnR5cGUmJmkubmFtZT09PWMubmFtZSlyZXR1cm4gYy52YWx1ZX0sZGlzcGF0Y2g6ZnVuY3Rpb24odCxuKXtyZXR1cm4gdGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2Ygbj9IbjokbikodCxuKSl9LFtTeW1ib2wuaXRlcmF0b3JdOmZ1bmN0aW9uKigpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMsbj0wLGU9dC5sZW5ndGg7bjxlOysrbilmb3IodmFyIHIsaT10W25dLG89MCxhPWkubGVuZ3RoO288YTsrK28pKHI9aVtvXSkmJih5aWVsZCByKX19O3ZhciBabj0wO2Z1bmN0aW9uIEtuKCl7cmV0dXJuIG5ldyBRbn1mdW5jdGlvbiBRbigpe3RoaXMuXz0iQCIrKCsrWm4pLnRvU3RyaW5nKDM2KX1mdW5jdGlvbiBKbih0KXtsZXQgbjtmb3IoO249dC5zb3VyY2VFdmVudDspdD1uO3JldHVybiB0fWZ1bmN0aW9uIHRlKHQsbil7aWYodD1Kbih0KSx2b2lkIDA9PT1uJiYobj10LmN1cnJlbnRUYXJnZXQpLG4pe3ZhciBlPW4ub3duZXJTVkdFbGVtZW50fHxuO2lmKGUuY3JlYXRlU1ZHUG9pbnQpe3ZhciByPWUuY3JlYXRlU1ZHUG9pbnQoKTtyZXR1cm4gci54PXQuY2xpZW50WCxyLnk9dC5jbGllbnRZLFsocj1yLm1hdHJpeFRyYW5zZm9ybShuLmdldFNjcmVlbkNUTSgpLmludmVyc2UoKSkpLngsci55XX1pZihuLmdldEJvdW5kaW5nQ2xpZW50UmVjdCl7dmFyIGk9bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm5bdC5jbGllbnRYLWkubGVmdC1uLmNsaWVudExlZnQsdC5jbGllbnRZLWkudG9wLW4uY2xpZW50VG9wXX19cmV0dXJuW3QucGFnZVgsdC5wYWdlWV19UW4ucHJvdG90eXBlPUtuLnByb3RvdHlwZT17Y29uc3RydWN0b3I6UW4sZ2V0OmZ1bmN0aW9uKHQpe2Zvcih2YXIgbj10aGlzLl87IShuIGluIHQpOylpZighKHQ9dC5wYXJlbnROb2RlKSlyZXR1cm47cmV0dXJuIHRbbl19LHNldDpmdW5jdGlvbih0LG4pe3JldHVybiB0W3RoaXMuX109bn0scmVtb3ZlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl8gaW4gdCYmZGVsZXRlIHRbdGhpcy5fXX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ffX07Y29uc3QgbmU9e3Bhc3NpdmU6ITF9LGVlPXtjYXB0dXJlOiEwLHBhc3NpdmU6ITF9O2Z1bmN0aW9uIHJlKHQpe3Quc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gaWUodCl7dC5wcmV2ZW50RGVmYXVsdCgpLHQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gb2UodCl7dmFyIG49dC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsZT1Xbih0KS5vbigiZHJhZ3N0YXJ0LmRyYWciLGllLGVlKTsib25zZWxlY3RzdGFydCJpbiBuP2Uub24oInNlbGVjdHN0YXJ0LmRyYWciLGllLGVlKToobi5fX25vc2VsZWN0PW4uc3R5bGUuTW96VXNlclNlbGVjdCxuLnN0eWxlLk1velVzZXJTZWxlY3Q9Im5vbmUiKX1mdW5jdGlvbiBhZSh0LG4pe3ZhciBlPXQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LHI9V24odCkub24oImRyYWdzdGFydC5kcmFnIixudWxsKTtuJiYoci5vbigiY2xpY2suZHJhZyIsaWUsZWUpLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ci5vbigiY2xpY2suZHJhZyIsbnVsbCl9KSwwKSksIm9uc2VsZWN0c3RhcnQiaW4gZT9yLm9uKCJzZWxlY3RzdGFydC5kcmFnIixudWxsKTooZS5zdHlsZS5Nb3pVc2VyU2VsZWN0PWUuX19ub3NlbGVjdCxkZWxldGUgZS5fX25vc2VsZWN0KX12YXIgdWU9dD0+KCk9PnQ7ZnVuY3Rpb24gY2UodCx7c291cmNlRXZlbnQ6bixzdWJqZWN0OmUsdGFyZ2V0OnIsaWRlbnRpZmllcjppLGFjdGl2ZTpvLHg6YSx5OnUsZHg6YyxkeTpmLGRpc3BhdGNoOnN9KXtPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0aGlzLHt0eXBlOnt2YWx1ZTp0LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSxzb3VyY2VFdmVudDp7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0sc3ViamVjdDp7dmFsdWU6ZSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0sdGFyZ2V0Ont2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSxpZGVudGlmaWVyOnt2YWx1ZTppLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSxhY3RpdmU6e3ZhbHVlOm8sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9LHg6e3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9LHk6e3ZhbHVlOnUsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9LGR4Ont2YWx1ZTpjLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSxkeTp7dmFsdWU6ZixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0sXzp7dmFsdWU6c319KX1mdW5jdGlvbiBmZSh0KXtyZXR1cm4hdC5jdHJsS2V5JiYhdC5idXR0b259ZnVuY3Rpb24gc2UoKXtyZXR1cm4gdGhpcy5wYXJlbnROb2RlfWZ1bmN0aW9uIGxlKHQsbil7cmV0dXJuIG51bGw9PW4/e3g6dC54LHk6dC55fTpufWZ1bmN0aW9uIGhlKCl7cmV0dXJuIG5hdmlnYXRvci5tYXhUb3VjaFBvaW50c3x8Im9udG91Y2hzdGFydCJpbiB0aGlzfWZ1bmN0aW9uIGRlKHQsbixlKXt0LnByb3RvdHlwZT1uLnByb3RvdHlwZT1lLGUuY29uc3RydWN0b3I9dH1mdW5jdGlvbiBwZSh0LG4pe3ZhciBlPU9iamVjdC5jcmVhdGUodC5wcm90b3R5cGUpO2Zvcih2YXIgciBpbiBuKWVbcl09bltyXTtyZXR1cm4gZX1mdW5jdGlvbiBnZSgpe31jZS5wcm90b3R5cGUub249ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl8ub24uYXBwbHkodGhpcy5fLGFyZ3VtZW50cyk7cmV0dXJuIHQ9PT10aGlzLl8/dGhpczp0fTt2YXIgeWU9LjcsdmU9MS95ZSxfZT0iXFxzKihbKy1dP1xcZCspXFxzKiIsYmU9IlxccyooWystXT8oPzpcXGQqXFwuKT9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KVxccyoiLG1lPSJcXHMqKFsrLV0/KD86XFxkKlxcLik/XFxkKyg/OltlRV1bKy1dP1xcZCspPyklXFxzKiIseGU9L14jKFswLTlhLWZdezMsOH0pJC8sd2U9bmV3IFJlZ0V4cChgXnJnYlxcKCR7X2V9LCR7X2V9LCR7X2V9XFwpJGApLE1lPW5ldyBSZWdFeHAoYF5yZ2JcXCgke21lfSwke21lfSwke21lfVxcKSRgKSxBZT1uZXcgUmVnRXhwKGBecmdiYVxcKCR7X2V9LCR7X2V9LCR7X2V9LCR7YmV9XFwpJGApLFRlPW5ldyBSZWdFeHAoYF5yZ2JhXFwoJHttZX0sJHttZX0sJHttZX0sJHtiZX1cXCkkYCksU2U9bmV3IFJlZ0V4cChgXmhzbFxcKCR7YmV9LCR7bWV9LCR7bWV9XFwpJGApLEVlPW5ldyBSZWdFeHAoYF5oc2xhXFwoJHtiZX0sJHttZX0sJHttZX0sJHtiZX1cXCkkYCksa2U9e2FsaWNlYmx1ZToxNTc5MjM4MyxhbnRpcXVld2hpdGU6MTY0NDQzNzUsYXF1YTo2NTUzNSxhcXVhbWFyaW5lOjgzODg1NjQsYXp1cmU6MTU3OTQxNzUsYmVpZ2U6MTYxMTkyNjAsYmlzcXVlOjE2NzcwMjQ0LGJsYWNrOjAsYmxhbmNoZWRhbG1vbmQ6MTY3NzIwNDUsYmx1ZToyNTUsYmx1ZXZpb2xldDo5MDU1MjAyLGJyb3duOjEwODI0MjM0LGJ1cmx5d29vZDoxNDU5NjIzMSxjYWRldGJsdWU6NjI2NjUyOCxjaGFydHJldXNlOjgzODgzNTIsY2hvY29sYXRlOjEzNzg5NDcwLGNvcmFsOjE2NzQ0MjcyLGNvcm5mbG93ZXJibHVlOjY1OTE5ODEsY29ybnNpbGs6MTY3NzUzODgsY3JpbXNvbjoxNDQyMzEwMCxjeWFuOjY1NTM1LGRhcmtibHVlOjEzOSxkYXJrY3lhbjozNTcyMyxkYXJrZ29sZGVucm9kOjEyMDkyOTM5LGRhcmtncmF5OjExMTE5MDE3LGRhcmtncmVlbjoyNTYwMCxkYXJrZ3JleToxMTExOTAxNyxkYXJra2hha2k6MTI0MzMyNTksZGFya21hZ2VudGE6OTEwOTY0MyxkYXJrb2xpdmVncmVlbjo1NTk3OTk5LGRhcmtvcmFuZ2U6MTY3NDc1MjAsZGFya29yY2hpZDoxMDA0MDAxMixkYXJrcmVkOjkxMDk1MDQsZGFya3NhbG1vbjoxNTMwODQxMCxkYXJrc2VhZ3JlZW46OTQxOTkxOSxkYXJrc2xhdGVibHVlOjQ3MzQzNDcsZGFya3NsYXRlZ3JheTozMTAwNDk1LGRhcmtzbGF0ZWdyZXk6MzEwMDQ5NSxkYXJrdHVycXVvaXNlOjUyOTQ1LGRhcmt2aW9sZXQ6OTY5OTUzOSxkZWVwcGluazoxNjcxNjk0NyxkZWVwc2t5Ymx1ZTo0OTE1MSxkaW1ncmF5OjY5MDgyNjUsZGltZ3JleTo2OTA4MjY1LGRvZGdlcmJsdWU6MjAwMzE5OSxmaXJlYnJpY2s6MTE2NzQxNDYsZmxvcmFsd2hpdGU6MTY3NzU5MjAsZm9yZXN0Z3JlZW46MjI2Mzg0MixmdWNoc2lhOjE2NzExOTM1LGdhaW5zYm9ybzoxNDQ3NDQ2MCxnaG9zdHdoaXRlOjE2MzE2NjcxLGdvbGQ6MTY3NjY3MjAsZ29sZGVucm9kOjE0MzI5MTIwLGdyYXk6ODQyMTUwNCxncmVlbjozMjc2OCxncmVlbnllbGxvdzoxMTQwMzA1NSxncmV5Ojg0MjE1MDQsaG9uZXlkZXc6MTU3OTQxNjAsaG90cGluazoxNjczODc0MCxpbmRpYW5yZWQ6MTM0NTg1MjQsaW5kaWdvOjQ5MTUzMzAsaXZvcnk6MTY3NzcyMDAsa2hha2k6MTU3ODc2NjAsbGF2ZW5kZXI6MTUxMzI0MTAsbGF2ZW5kZXJibHVzaDoxNjc3MzM2NSxsYXduZ3JlZW46ODE5MDk3NixsZW1vbmNoaWZmb246MTY3NzU4ODUsbGlnaHRibHVlOjExMzkzMjU0LGxpZ2h0Y29yYWw6MTU3NjE1MzYsbGlnaHRjeWFuOjE0NzQ1NTk5LGxpZ2h0Z29sZGVucm9keWVsbG93OjE2NDQ4MjEwLGxpZ2h0Z3JheToxMzg4MjMyMyxsaWdodGdyZWVuOjk0OTgyNTYsbGlnaHRncmV5OjEzODgyMzIzLGxpZ2h0cGluazoxNjc1ODQ2NSxsaWdodHNhbG1vbjoxNjc1Mjc2MixsaWdodHNlYWdyZWVuOjIxNDI4OTAsbGlnaHRza3libHVlOjg5MDAzNDYsbGlnaHRzbGF0ZWdyYXk6NzgzMzc1MyxsaWdodHNsYXRlZ3JleTo3ODMzNzUzLGxpZ2h0c3RlZWxibHVlOjExNTg0NzM0LGxpZ2h0eWVsbG93OjE2Nzc3MTg0LGxpbWU6NjUyODAsbGltZWdyZWVuOjMzMjkzMzAsbGluZW46MTY0NDU2NzAsbWFnZW50YToxNjcxMTkzNSxtYXJvb246ODM4ODYwOCxtZWRpdW1hcXVhbWFyaW5lOjY3MzczMjIsbWVkaXVtYmx1ZToyMDUsbWVkaXVtb3JjaGlkOjEyMjExNjY3LG1lZGl1bXB1cnBsZTo5NjYyNjgzLG1lZGl1bXNlYWdyZWVuOjM5NzgwOTcsbWVkaXVtc2xhdGVibHVlOjgwODc3OTAsbWVkaXVtc3ByaW5nZ3JlZW46NjQxNTQsbWVkaXVtdHVycXVvaXNlOjQ3NzIzMDAsbWVkaXVtdmlvbGV0cmVkOjEzMDQ3MTczLG1pZG5pZ2h0Ymx1ZToxNjQ0OTEyLG1pbnRjcmVhbToxNjEyMTg1MCxtaXN0eXJvc2U6MTY3NzAyNzMsbW9jY2FzaW46MTY3NzAyMjksbmF2YWpvd2hpdGU6MTY3Njg2ODUsbmF2eToxMjgsb2xkbGFjZToxNjY0MzU1OCxvbGl2ZTo4NDIxMzc2LG9saXZlZHJhYjo3MDQ4NzM5LG9yYW5nZToxNjc1MzkyMCxvcmFuZ2VyZWQ6MTY3MjkzNDQsb3JjaGlkOjE0MzE1NzM0LHBhbGVnb2xkZW5yb2Q6MTU2NTcxMzAscGFsZWdyZWVuOjEwMDI1ODgwLHBhbGV0dXJxdW9pc2U6MTE1Mjk5NjYscGFsZXZpb2xldHJlZDoxNDM4MTIwMyxwYXBheWF3aGlwOjE2NzczMDc3LHBlYWNocHVmZjoxNjc2NzY3MyxwZXJ1OjEzNDY4OTkxLHBpbms6MTY3NjEwMzUscGx1bToxNDUyNDYzNyxwb3dkZXJibHVlOjExNTkxOTEwLHB1cnBsZTo4Mzg4NzM2LHJlYmVjY2FwdXJwbGU6NjY5Nzg4MSxyZWQ6MTY3MTE2ODAscm9zeWJyb3duOjEyMzU3NTE5LHJveWFsYmx1ZTo0Mjg2OTQ1LHNhZGRsZWJyb3duOjkxMjcxODcsc2FsbW9uOjE2NDE2ODgyLHNhbmR5YnJvd246MTYwMzI4NjQsc2VhZ3JlZW46MzA1MDMyNyxzZWFzaGVsbDoxNjc3NDYzOCxzaWVubmE6MTA1MDY3OTcsc2lsdmVyOjEyNjMyMjU2LHNreWJsdWU6ODkwMDMzMSxzbGF0ZWJsdWU6Njk3MDA2MSxzbGF0ZWdyYXk6NzM3Mjk0NCxzbGF0ZWdyZXk6NzM3Mjk0NCxzbm93OjE2Nzc1OTMwLHNwcmluZ2dyZWVuOjY1NDA3LHN0ZWVsYmx1ZTo0NjIwOTgwLHRhbjoxMzgwODc4MCx0ZWFsOjMyODk2LHRoaXN0bGU6MTQyMDQ4ODgsdG9tYXRvOjE2NzM3MDk1LHR1cnF1b2lzZTo0MjUxODU2LHZpb2xldDoxNTYzMTA4Nix3aGVhdDoxNjExMzMzMSx3aGl0ZToxNjc3NzIxNSx3aGl0ZXNtb2tlOjE2MTE5Mjg1LHllbGxvdzoxNjc3Njk2MCx5ZWxsb3dncmVlbjoxMDE0NTA3NH07ZnVuY3Rpb24gTmUoKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRIZXgoKX1mdW5jdGlvbiBDZSgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdFJnYigpfWZ1bmN0aW9uIFBlKHQpe3ZhciBuLGU7cmV0dXJuIHQ9KHQrIiIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLChuPXhlLmV4ZWModCkpPyhlPW5bMV0ubGVuZ3RoLG49cGFyc2VJbnQoblsxXSwxNiksNj09PWU/emUobik6Mz09PWU/bmV3IHFlKG4+PjgmMTV8bj4+NCYyNDAsbj4+NCYxNXwyNDAmbiwoMTUmbik8PDR8MTUmbiwxKTo4PT09ZT9EZShuPj4yNCYyNTUsbj4+MTYmMjU1LG4+PjgmMjU1LCgyNTUmbikvMjU1KTo0PT09ZT9EZShuPj4xMiYxNXxuPj44JjI0MCxuPj44JjE1fG4+PjQmMjQwLG4+PjQmMTV8MjQwJm4sKCgxNSZuKTw8NHwxNSZuKS8yNTUpOm51bGwpOihuPXdlLmV4ZWModCkpP25ldyBxZShuWzFdLG5bMl0sblszXSwxKToobj1NZS5leGVjKHQpKT9uZXcgcWUoMjU1Km5bMV0vMTAwLDI1NSpuWzJdLzEwMCwyNTUqblszXS8xMDAsMSk6KG49QWUuZXhlYyh0KSk/RGUoblsxXSxuWzJdLG5bM10sbls0XSk6KG49VGUuZXhlYyh0KSk/RGUoMjU1Km5bMV0vMTAwLDI1NSpuWzJdLzEwMCwyNTUqblszXS8xMDAsbls0XSk6KG49U2UuZXhlYyh0KSk/TGUoblsxXSxuWzJdLzEwMCxuWzNdLzEwMCwxKToobj1FZS5leGVjKHQpKT9MZShuWzFdLG5bMl0vMTAwLG5bM10vMTAwLG5bNF0pOmtlLmhhc093blByb3BlcnR5KHQpP3plKGtlW3RdKToidHJhbnNwYXJlbnQiPT09dD9uZXcgcWUoTmFOLE5hTixOYU4sMCk6bnVsbH1mdW5jdGlvbiB6ZSh0KXtyZXR1cm4gbmV3IHFlKHQ+PjE2JjI1NSx0Pj44JjI1NSwyNTUmdCwxKX1mdW5jdGlvbiBEZSh0LG4sZSxyKXtyZXR1cm4gcjw9MCYmKHQ9bj1lPU5hTiksbmV3IHFlKHQsbixlLHIpfWZ1bmN0aW9uIFJlKHQpe3JldHVybiB0IGluc3RhbmNlb2YgZ2V8fCh0PVBlKHQpKSx0P25ldyBxZSgodD10LnJnYigpKS5yLHQuZyx0LmIsdC5vcGFjaXR5KTpuZXcgcWV9ZnVuY3Rpb24gRmUodCxuLGUscil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP1JlKHQpOm5ldyBxZSh0LG4sZSxudWxsPT1yPzE6cil9ZnVuY3Rpb24gcWUodCxuLGUscil7dGhpcy5yPSt0LHRoaXMuZz0rbix0aGlzLmI9K2UsdGhpcy5vcGFjaXR5PStyfWZ1bmN0aW9uIEllKCl7cmV0dXJuYCMke1llKHRoaXMucil9JHtZZSh0aGlzLmcpfSR7WWUodGhpcy5iKX1gfWZ1bmN0aW9uIE9lKCl7Y29uc3QgdD1VZSh0aGlzLm9wYWNpdHkpO3JldHVybmAkezE9PT10PyJyZ2IoIjoicmdiYSgifSR7QmUodGhpcy5yKX0sICR7QmUodGhpcy5nKX0sICR7QmUodGhpcy5iKX0kezE9PT10PyIpIjpgLCAke3R9KWB9YH1mdW5jdGlvbiBVZSh0KXtyZXR1cm4gaXNOYU4odCk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsdCkpfWZ1bmN0aW9uIEJlKHQpe3JldHVybiBNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHQpfHwwKSl9ZnVuY3Rpb24gWWUodCl7cmV0dXJuKCh0PUJlKHQpKTwxNj8iMCI6IiIpK3QudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIExlKHQsbixlLHIpe3JldHVybiByPD0wP3Q9bj1lPU5hTjplPD0wfHxlPj0xP3Q9bj1OYU46bjw9MCYmKHQ9TmFOKSxuZXcgSGUodCxuLGUscil9ZnVuY3Rpb24gamUodCl7aWYodCBpbnN0YW5jZW9mIEhlKXJldHVybiBuZXcgSGUodC5oLHQucyx0LmwsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2YgZ2V8fCh0PVBlKHQpKSwhdClyZXR1cm4gbmV3IEhlO2lmKHQgaW5zdGFuY2VvZiBIZSlyZXR1cm4gdDt2YXIgbj0odD10LnJnYigpKS5yLzI1NSxlPXQuZy8yNTUscj10LmIvMjU1LGk9TWF0aC5taW4obixlLHIpLG89TWF0aC5tYXgobixlLHIpLGE9TmFOLHU9by1pLGM9KG8raSkvMjtyZXR1cm4gdT8oYT1uPT09bz8oZS1yKS91KzYqKGU8cik6ZT09PW8/KHItbikvdSsyOihuLWUpL3UrNCx1Lz1jPC41P28raToyLW8taSxhKj02MCk6dT1jPjAmJmM8MT8wOmEsbmV3IEhlKGEsdSxjLHQub3BhY2l0eSl9ZnVuY3Rpb24gJGUodCxuLGUscil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2plKHQpOm5ldyBIZSh0LG4sZSxudWxsPT1yPzE6cil9ZnVuY3Rpb24gSGUodCxuLGUscil7dGhpcy5oPSt0LHRoaXMucz0rbix0aGlzLmw9K2UsdGhpcy5vcGFjaXR5PStyfWZ1bmN0aW9uIFhlKHQpe3JldHVybih0PSh0fHwwKSUzNjApPDA/dCszNjA6dH1mdW5jdGlvbiBHZSh0KXtyZXR1cm4gTWF0aC5tYXgoMCxNYXRoLm1pbigxLHR8fDApKX1mdW5jdGlvbiBWZSh0LG4sZSl7cmV0dXJuIDI1NSoodDw2MD9uKyhlLW4pKnQvNjA6dDwxODA/ZTp0PDI0MD9uKyhlLW4pKigyNDAtdCkvNjA6bil9ZGUoZ2UsUGUse2NvcHkodCl7cmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IHRoaXMuY29uc3RydWN0b3IsdGhpcyx0KX0sZGlzcGxheWFibGUoKXtyZXR1cm4gdGhpcy5yZ2IoKS5kaXNwbGF5YWJsZSgpfSxoZXg6TmUsZm9ybWF0SGV4Ok5lLGZvcm1hdEhleDg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRIZXg4KCl9LGZvcm1hdEhzbDpmdW5jdGlvbigpe3JldHVybiBqZSh0aGlzKS5mb3JtYXRIc2woKX0sZm9ybWF0UmdiOkNlLHRvU3RyaW5nOkNlfSksZGUocWUsRmUscGUoZ2Use2JyaWdodGVyKHQpe3JldHVybiB0PW51bGw9PXQ/dmU6TWF0aC5wb3codmUsdCksbmV3IHFlKHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LGRhcmtlcih0KXtyZXR1cm4gdD1udWxsPT10P3llOk1hdGgucG93KHllLHQpLG5ldyBxZSh0aGlzLnIqdCx0aGlzLmcqdCx0aGlzLmIqdCx0aGlzLm9wYWNpdHkpfSxyZ2IoKXtyZXR1cm4gdGhpc30sY2xhbXAoKXtyZXR1cm4gbmV3IHFlKEJlKHRoaXMuciksQmUodGhpcy5nKSxCZSh0aGlzLmIpLFVlKHRoaXMub3BhY2l0eSkpfSxkaXNwbGF5YWJsZSgpe3JldHVybi0uNTw9dGhpcy5yJiZ0aGlzLnI8MjU1LjUmJi0uNTw9dGhpcy5nJiZ0aGlzLmc8MjU1LjUmJi0uNTw9dGhpcy5iJiZ0aGlzLmI8MjU1LjUmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxoZXg6SWUsZm9ybWF0SGV4OkllLGZvcm1hdEhleDg6ZnVuY3Rpb24oKXtyZXR1cm5gIyR7WWUodGhpcy5yKX0ke1llKHRoaXMuZyl9JHtZZSh0aGlzLmIpfSR7WWUoMjU1Kihpc05hTih0aGlzLm9wYWNpdHkpPzE6dGhpcy5vcGFjaXR5KSl9YH0sZm9ybWF0UmdiOk9lLHRvU3RyaW5nOk9lfSkpLGRlKEhlLCRlLHBlKGdlLHticmlnaHRlcih0KXtyZXR1cm4gdD1udWxsPT10P3ZlOk1hdGgucG93KHZlLHQpLG5ldyBIZSh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LGRhcmtlcih0KXtyZXR1cm4gdD1udWxsPT10P3llOk1hdGgucG93KHllLHQpLG5ldyBIZSh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LHJnYigpe3ZhciB0PXRoaXMuaCUzNjArMzYwKih0aGlzLmg8MCksbj1pc05hTih0KXx8aXNOYU4odGhpcy5zKT8wOnRoaXMucyxlPXRoaXMubCxyPWUrKGU8LjU/ZToxLWUpKm4saT0yKmUtcjtyZXR1cm4gbmV3IHFlKFZlKHQ+PTI0MD90LTI0MDp0KzEyMCxpLHIpLFZlKHQsaSxyKSxWZSh0PDEyMD90KzI0MDp0LTEyMCxpLHIpLHRoaXMub3BhY2l0eSl9LGNsYW1wKCl7cmV0dXJuIG5ldyBIZShYZSh0aGlzLmgpLEdlKHRoaXMucyksR2UodGhpcy5sKSxVZSh0aGlzLm9wYWNpdHkpKX0sZGlzcGxheWFibGUoKXtyZXR1cm4oMDw9dGhpcy5zJiZ0aGlzLnM8PTF8fGlzTmFOKHRoaXMucykpJiYwPD10aGlzLmwmJnRoaXMubDw9MSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGZvcm1hdEhzbCgpe2NvbnN0IHQ9VWUodGhpcy5vcGFjaXR5KTtyZXR1cm5gJHsxPT09dD8iaHNsKCI6ImhzbGEoIn0ke1hlKHRoaXMuaCl9LCAkezEwMCpHZSh0aGlzLnMpfSUsICR7MTAwKkdlKHRoaXMubCl9JSR7MT09PXQ/IikiOmAsICR7dH0pYH1gfX0pKTtjb25zdCBXZT1NYXRoLlBJLzE4MCxaZT0xODAvTWF0aC5QSSxLZT0uOTY0MjIsUWU9LjgyNTIxLEplPTQvMjksdHI9Ni8yOSxucj0zKnRyKnRyO2Z1bmN0aW9uIGVyKHQpe2lmKHQgaW5zdGFuY2VvZiBpcilyZXR1cm4gbmV3IGlyKHQubCx0LmEsdC5iLHQub3BhY2l0eSk7aWYodCBpbnN0YW5jZW9mIGxyKXJldHVybiBocih0KTt0IGluc3RhbmNlb2YgcWV8fCh0PVJlKHQpKTt2YXIgbixlLHI9Y3IodC5yKSxpPWNyKHQuZyksbz1jcih0LmIpLGE9b3IoKC4yMjI1MDQ1KnIrLjcxNjg3ODYqaSsuMDYwNjE2OSpvKS8xKTtyZXR1cm4gcj09PWkmJmk9PT1vP249ZT1hOihuPW9yKCguNDM2MDc0NypyKy4zODUwNjQ5KmkrLjE0MzA4MDQqbykvS2UpLGU9b3IoKC4wMTM5MzIyKnIrLjA5NzEwNDUqaSsuNzE0MTczMypvKS9RZSkpLG5ldyBpcigxMTYqYS0xNiw1MDAqKG4tYSksMjAwKihhLWUpLHQub3BhY2l0eSl9ZnVuY3Rpb24gcnIodCxuLGUscil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2VyKHQpOm5ldyBpcih0LG4sZSxudWxsPT1yPzE6cil9ZnVuY3Rpb24gaXIodCxuLGUscil7dGhpcy5sPSt0LHRoaXMuYT0rbix0aGlzLmI9K2UsdGhpcy5vcGFjaXR5PStyfWZ1bmN0aW9uIG9yKHQpe3JldHVybiB0Pi4wMDg4NTY0NTE2NzkwMzU2MzE/TWF0aC5wb3codCwxLzMpOnQvbnIrSmV9ZnVuY3Rpb24gYXIodCl7cmV0dXJuIHQ+dHI/dCp0KnQ6bnIqKHQtSmUpfWZ1bmN0aW9uIHVyKHQpe3JldHVybiAyNTUqKHQ8PS4wMDMxMzA4PzEyLjkyKnQ6MS4wNTUqTWF0aC5wb3codCwxLzIuNCktLjA1NSl9ZnVuY3Rpb24gY3IodCl7cmV0dXJuKHQvPTI1NSk8PS4wNDA0NT90LzEyLjkyOk1hdGgucG93KCh0Ky4wNTUpLzEuMDU1LDIuNCl9ZnVuY3Rpb24gZnIodCl7aWYodCBpbnN0YW5jZW9mIGxyKXJldHVybiBuZXcgbHIodC5oLHQuYyx0LmwsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2YgaXJ8fCh0PWVyKHQpKSwwPT09dC5hJiYwPT09dC5iKXJldHVybiBuZXcgbHIoTmFOLDA8dC5sJiZ0Lmw8MTAwPzA6TmFOLHQubCx0Lm9wYWNpdHkpO3ZhciBuPU1hdGguYXRhbjIodC5iLHQuYSkqWmU7cmV0dXJuIG5ldyBscihuPDA/biszNjA6bixNYXRoLnNxcnQodC5hKnQuYSt0LmIqdC5iKSx0LmwsdC5vcGFjaXR5KX1mdW5jdGlvbiBzcih0LG4sZSxyKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/ZnIodCk6bmV3IGxyKHQsbixlLG51bGw9PXI/MTpyKX1mdW5jdGlvbiBscih0LG4sZSxyKXt0aGlzLmg9K3QsdGhpcy5jPStuLHRoaXMubD0rZSx0aGlzLm9wYWNpdHk9K3J9ZnVuY3Rpb24gaHIodCl7aWYoaXNOYU4odC5oKSlyZXR1cm4gbmV3IGlyKHQubCwwLDAsdC5vcGFjaXR5KTt2YXIgbj10LmgqV2U7cmV0dXJuIG5ldyBpcih0LmwsTWF0aC5jb3MobikqdC5jLE1hdGguc2luKG4pKnQuYyx0Lm9wYWNpdHkpfWRlKGlyLHJyLHBlKGdlLHticmlnaHRlcih0KXtyZXR1cm4gbmV3IGlyKHRoaXMubCsxOCoobnVsbD09dD8xOnQpLHRoaXMuYSx0aGlzLmIsdGhpcy5vcGFjaXR5KX0sZGFya2VyKHQpe3JldHVybiBuZXcgaXIodGhpcy5sLTE4KihudWxsPT10PzE6dCksdGhpcy5hLHRoaXMuYix0aGlzLm9wYWNpdHkpfSxyZ2IoKXt2YXIgdD0odGhpcy5sKzE2KS8xMTYsbj1pc05hTih0aGlzLmEpP3Q6dCt0aGlzLmEvNTAwLGU9aXNOYU4odGhpcy5iKT90OnQtdGhpcy5iLzIwMDtyZXR1cm4gbmV3IHFlKHVyKDMuMTMzODU2MSoobj1LZSphcihuKSktMS42MTY4NjY3Kih0PTEqYXIodCkpLS40OTA2MTQ2KihlPVFlKmFyKGUpKSksdXIoLS45Nzg3Njg0Km4rMS45MTYxNDE1KnQrLjAzMzQ1NCplKSx1ciguMDcxOTQ1MypuLS4yMjg5OTE0KnQrMS40MDUyNDI3KmUpLHRoaXMub3BhY2l0eSl9fSkpLGRlKGxyLHNyLHBlKGdlLHticmlnaHRlcih0KXtyZXR1cm4gbmV3IGxyKHRoaXMuaCx0aGlzLmMsdGhpcy5sKzE4KihudWxsPT10PzE6dCksdGhpcy5vcGFjaXR5KX0sZGFya2VyKHQpe3JldHVybiBuZXcgbHIodGhpcy5oLHRoaXMuYyx0aGlzLmwtMTgqKG51bGw9PXQ/MTp0KSx0aGlzLm9wYWNpdHkpfSxyZ2IoKXtyZXR1cm4gaHIodGhpcykucmdiKCl9fSkpO3ZhciBkcj0tLjE0ODYxLHByPTEuNzgyNzcsZ3I9LS4yOTIyNyx5cj0tLjkwNjQ5LHZyPTEuOTcyOTQsX3I9dnIqeXIsYnI9dnIqcHIsbXI9cHIqZ3IteXIqZHI7ZnVuY3Rpb24geHIodCl7aWYodCBpbnN0YW5jZW9mIE1yKXJldHVybiBuZXcgTXIodC5oLHQucyx0LmwsdC5vcGFjaXR5KTt0IGluc3RhbmNlb2YgcWV8fCh0PVJlKHQpKTt2YXIgbj10LnIvMjU1LGU9dC5nLzI1NSxyPXQuYi8yNTUsaT0obXIqcitfcipuLWJyKmUpLyhtcitfci1iciksbz1yLWksYT0odnIqKGUtaSktZ3IqbykveXIsdT1NYXRoLnNxcnQoYSphK28qbykvKHZyKmkqKDEtaSkpLGM9dT9NYXRoLmF0YW4yKGEsbykqWmUtMTIwOk5hTjtyZXR1cm4gbmV3IE1yKGM8MD9jKzM2MDpjLHUsaSx0Lm9wYWNpdHkpfWZ1bmN0aW9uIHdyKHQsbixlLHIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD94cih0KTpuZXcgTXIodCxuLGUsbnVsbD09cj8xOnIpfWZ1bmN0aW9uIE1yKHQsbixlLHIpe3RoaXMuaD0rdCx0aGlzLnM9K24sdGhpcy5sPStlLHRoaXMub3BhY2l0eT0rcn1mdW5jdGlvbiBBcih0LG4sZSxyLGkpe3ZhciBvPXQqdCxhPW8qdDtyZXR1cm4oKDEtMyp0KzMqby1hKSpuKyg0LTYqbyszKmEpKmUrKDErMyp0KzMqby0zKmEpKnIrYSppKS82fWZ1bmN0aW9uIFRyKHQpe3ZhciBuPXQubGVuZ3RoLTE7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciByPWU8PTA/ZT0wOmU+PTE/KGU9MSxuLTEpOk1hdGguZmxvb3IoZSpuKSxpPXRbcl0sbz10W3IrMV0sYT1yPjA/dFtyLTFdOjIqaS1vLHU9cjxuLTE/dFtyKzJdOjIqby1pO3JldHVybiBBcigoZS1yL24pKm4sYSxpLG8sdSl9fWZ1bmN0aW9uIFNyKHQpe3ZhciBuPXQubGVuZ3RoO3JldHVybiBmdW5jdGlvbihlKXt2YXIgcj1NYXRoLmZsb29yKCgoZSU9MSk8MD8rK2U6ZSkqbiksaT10WyhyK24tMSklbl0sbz10W3Ilbl0sYT10WyhyKzEpJW5dLHU9dFsocisyKSVuXTtyZXR1cm4gQXIoKGUtci9uKSpuLGksbyxhLHUpfX1kZShNcix3cixwZShnZSx7YnJpZ2h0ZXIodCl7cmV0dXJuIHQ9bnVsbD09dD92ZTpNYXRoLnBvdyh2ZSx0KSxuZXcgTXIodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXIodCl7cmV0dXJuIHQ9bnVsbD09dD95ZTpNYXRoLnBvdyh5ZSx0KSxuZXcgTXIodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxyZ2IoKXt2YXIgdD1pc05hTih0aGlzLmgpPzA6KHRoaXMuaCsxMjApKldlLG49K3RoaXMubCxlPWlzTmFOKHRoaXMucyk/MDp0aGlzLnMqbiooMS1uKSxyPU1hdGguY29zKHQpLGk9TWF0aC5zaW4odCk7cmV0dXJuIG5ldyBxZSgyNTUqKG4rZSooZHIqcitwcippKSksMjU1KihuK2UqKGdyKnIreXIqaSkpLDI1NSoobitlKih2cipyKSksdGhpcy5vcGFjaXR5KX19KSk7dmFyIEVyPXQ9PigpPT50O2Z1bmN0aW9uIGtyKHQsbil7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0K2Uqbn19ZnVuY3Rpb24gTnIodCxuKXt2YXIgZT1uLXQ7cmV0dXJuIGU/a3IodCxlPjE4MHx8ZTwtMTgwP2UtMzYwKk1hdGgucm91bmQoZS8zNjApOmUpOkVyKGlzTmFOKHQpP246dCl9ZnVuY3Rpb24gQ3IodCl7cmV0dXJuIDE9PSh0PSt0KT9QcjpmdW5jdGlvbihuLGUpe3JldHVybiBlLW4/ZnVuY3Rpb24odCxuLGUpe3JldHVybiB0PU1hdGgucG93KHQsZSksbj1NYXRoLnBvdyhuLGUpLXQsZT0xL2UsZnVuY3Rpb24ocil7cmV0dXJuIE1hdGgucG93KHQrcipuLGUpfX0obixlLHQpOkVyKGlzTmFOKG4pP2U6bil9fWZ1bmN0aW9uIFByKHQsbil7dmFyIGU9bi10O3JldHVybiBlP2tyKHQsZSk6RXIoaXNOYU4odCk/bjp0KX12YXIgenI9ZnVuY3Rpb24gdChuKXt2YXIgZT1DcihuKTtmdW5jdGlvbiByKHQsbil7dmFyIHI9ZSgodD1GZSh0KSkuciwobj1GZShuKSkuciksaT1lKHQuZyxuLmcpLG89ZSh0LmIsbi5iKSxhPVByKHQub3BhY2l0eSxuLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdC5yPXIobiksdC5nPWkobiksdC5iPW8obiksdC5vcGFjaXR5PWEobiksdCsiIn19cmV0dXJuIHIuZ2FtbWE9dCxyfSgxKTtmdW5jdGlvbiBEcih0KXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGUscixpPW4ubGVuZ3RoLG89bmV3IEFycmF5KGkpLGE9bmV3IEFycmF5KGkpLHU9bmV3IEFycmF5KGkpO2ZvcihlPTA7ZTxpOysrZSlyPUZlKG5bZV0pLG9bZV09ci5yfHwwLGFbZV09ci5nfHwwLHVbZV09ci5ifHwwO3JldHVybiBvPXQobyksYT10KGEpLHU9dCh1KSxyLm9wYWNpdHk9MSxmdW5jdGlvbih0KXtyZXR1cm4gci5yPW8odCksci5nPWEodCksci5iPXUodCkscisiIn19fXZhciBScj1EcihUciksRnI9RHIoU3IpO2Z1bmN0aW9uIHFyKHQsbil7bnx8KG49W10pO3ZhciBlLHI9dD9NYXRoLm1pbihuLmxlbmd0aCx0Lmxlbmd0aCk6MCxpPW4uc2xpY2UoKTtyZXR1cm4gZnVuY3Rpb24obyl7Zm9yKGU9MDtlPHI7KytlKWlbZV09dFtlXSooMS1vKStuW2VdKm87cmV0dXJuIGl9fWZ1bmN0aW9uIElyKHQpe3JldHVybiBBcnJheUJ1ZmZlci5pc1ZpZXcodCkmJiEodCBpbnN0YW5jZW9mIERhdGFWaWV3KX1mdW5jdGlvbiBPcih0LG4pe3ZhciBlLHI9bj9uLmxlbmd0aDowLGk9dD9NYXRoLm1pbihyLHQubGVuZ3RoKTowLG89bmV3IEFycmF5KGkpLGE9bmV3IEFycmF5KHIpO2ZvcihlPTA7ZTxpOysrZSlvW2VdPUhyKHRbZV0sbltlXSk7Zm9yKDtlPHI7KytlKWFbZV09bltlXTtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKGU9MDtlPGk7KytlKWFbZV09b1tlXSh0KTtyZXR1cm4gYX19ZnVuY3Rpb24gVXIodCxuKXt2YXIgZT1uZXcgRGF0ZTtyZXR1cm4gdD0rdCxuPStuLGZ1bmN0aW9uKHIpe3JldHVybiBlLnNldFRpbWUodCooMS1yKStuKnIpLGV9fWZ1bmN0aW9uIEJyKHQsbil7cmV0dXJuIHQ9K3Qsbj0rbixmdW5jdGlvbihlKXtyZXR1cm4gdCooMS1lKStuKmV9fWZ1bmN0aW9uIFlyKHQsbil7dmFyIGUscj17fSxpPXt9O2ZvcihlIGluIG51bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHR8fCh0PXt9KSxudWxsIT09biYmIm9iamVjdCI9PXR5cGVvZiBufHwobj17fSksbillIGluIHQ/cltlXT1Icih0W2VdLG5bZV0pOmlbZV09bltlXTtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKGUgaW4gcilpW2VdPXJbZV0odCk7cmV0dXJuIGl9fXZhciBMcj0vWy0rXT8oPzpcZCtcLj9cZCp8XC4/XGQrKSg/OltlRV1bLStdP1xkKyk/L2csanI9bmV3IFJlZ0V4cChMci5zb3VyY2UsImciKTtmdW5jdGlvbiAkcih0LG4pe3ZhciBlLHIsaSxvPUxyLmxhc3RJbmRleD1qci5sYXN0SW5kZXg9MCxhPS0xLHU9W10sYz1bXTtmb3IodCs9IiIsbis9IiI7KGU9THIuZXhlYyh0KSkmJihyPWpyLmV4ZWMobikpOykoaT1yLmluZGV4KT5vJiYoaT1uLnNsaWNlKG8saSksdVthXT91W2FdKz1pOnVbKythXT1pKSwoZT1lWzBdKT09PShyPXJbMF0pP3VbYV0/dVthXSs9cjp1WysrYV09cjoodVsrK2FdPW51bGwsYy5wdXNoKHtpOmEseDpCcihlLHIpfSkpLG89anIubGFzdEluZGV4O3JldHVybiBvPG4ubGVuZ3RoJiYoaT1uLnNsaWNlKG8pLHVbYV0/dVthXSs9aTp1WysrYV09aSksdS5sZW5ndGg8Mj9jWzBdP2Z1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdChuKSsiIn19KGNbMF0ueCk6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fShuKToobj1jLmxlbmd0aCxmdW5jdGlvbih0KXtmb3IodmFyIGUscj0wO3I8bjsrK3IpdVsoZT1jW3JdKS5pXT1lLngodCk7cmV0dXJuIHUuam9pbigiIil9KX1mdW5jdGlvbiBIcih0LG4pe3ZhciBlLHI9dHlwZW9mIG47cmV0dXJuIG51bGw9PW58fCJib29sZWFuIj09PXI/RXIobik6KCJudW1iZXIiPT09cj9Ccjoic3RyaW5nIj09PXI/KGU9UGUobikpPyhuPWUsenIpOiRyOm4gaW5zdGFuY2VvZiBQZT96cjpuIGluc3RhbmNlb2YgRGF0ZT9VcjpJcihuKT9xcjpBcnJheS5pc0FycmF5KG4pP09yOiJmdW5jdGlvbiIhPXR5cGVvZiBuLnZhbHVlT2YmJiJmdW5jdGlvbiIhPXR5cGVvZiBuLnRvU3RyaW5nfHxpc05hTihuKT9ZcjpCcikodCxuKX1mdW5jdGlvbiBYcih0LG4pe3JldHVybiB0PSt0LG49K24sZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgucm91bmQodCooMS1lKStuKmUpfX12YXIgR3IsVnI9MTgwL01hdGguUEksV3I9e3RyYW5zbGF0ZVg6MCx0cmFuc2xhdGVZOjAscm90YXRlOjAsc2tld1g6MCxzY2FsZVg6MSxzY2FsZVk6MX07ZnVuY3Rpb24gWnIodCxuLGUscixpLG8pe3ZhciBhLHUsYztyZXR1cm4oYT1NYXRoLnNxcnQodCp0K24qbikpJiYodC89YSxuLz1hKSwoYz10KmUrbipyKSYmKGUtPXQqYyxyLT1uKmMpLCh1PU1hdGguc3FydChlKmUrcipyKSkmJihlLz11LHIvPXUsYy89dSksdCpyPG4qZSYmKHQ9LXQsbj0tbixjPS1jLGE9LWEpLHt0cmFuc2xhdGVYOmksdHJhbnNsYXRlWTpvLHJvdGF0ZTpNYXRoLmF0YW4yKG4sdCkqVnIsc2tld1g6TWF0aC5hdGFuKGMpKlZyLHNjYWxlWDphLHNjYWxlWTp1fX1mdW5jdGlvbiBLcih0LG4sZSxyKXtmdW5jdGlvbiBpKHQpe3JldHVybiB0Lmxlbmd0aD90LnBvcCgpKyIgIjoiIn1yZXR1cm4gZnVuY3Rpb24obyxhKXt2YXIgdT1bXSxjPVtdO3JldHVybiBvPXQobyksYT10KGEpLGZ1bmN0aW9uKHQscixpLG8sYSx1KXtpZih0IT09aXx8ciE9PW8pe3ZhciBjPWEucHVzaCgidHJhbnNsYXRlKCIsbnVsbCxuLG51bGwsZSk7dS5wdXNoKHtpOmMtNCx4OkJyKHQsaSl9LHtpOmMtMix4OkJyKHIsbyl9KX1lbHNlKGl8fG8pJiZhLnB1c2goInRyYW5zbGF0ZSgiK2krbitvK2UpfShvLnRyYW5zbGF0ZVgsby50cmFuc2xhdGVZLGEudHJhbnNsYXRlWCxhLnRyYW5zbGF0ZVksdSxjKSxmdW5jdGlvbih0LG4sZSxvKXt0IT09bj8odC1uPjE4MD9uKz0zNjA6bi10PjE4MCYmKHQrPTM2MCksby5wdXNoKHtpOmUucHVzaChpKGUpKyJyb3RhdGUoIixudWxsLHIpLTIseDpCcih0LG4pfSkpOm4mJmUucHVzaChpKGUpKyJyb3RhdGUoIituK3IpfShvLnJvdGF0ZSxhLnJvdGF0ZSx1LGMpLGZ1bmN0aW9uKHQsbixlLG8pe3QhPT1uP28ucHVzaCh7aTplLnB1c2goaShlKSsic2tld1goIixudWxsLHIpLTIseDpCcih0LG4pfSk6biYmZS5wdXNoKGkoZSkrInNrZXdYKCIrbityKX0oby5za2V3WCxhLnNrZXdYLHUsYyksZnVuY3Rpb24odCxuLGUscixvLGEpe2lmKHQhPT1lfHxuIT09cil7dmFyIHU9by5wdXNoKGkobykrInNjYWxlKCIsbnVsbCwiLCIsbnVsbCwiKSIpO2EucHVzaCh7aTp1LTQseDpCcih0LGUpfSx7aTp1LTIseDpCcihuLHIpfSl9ZWxzZSAxPT09ZSYmMT09PXJ8fG8ucHVzaChpKG8pKyJzY2FsZSgiK2UrIiwiK3IrIikiKX0oby5zY2FsZVgsby5zY2FsZVksYS5zY2FsZVgsYS5zY2FsZVksdSxjKSxvPWE9bnVsbCxmdW5jdGlvbih0KXtmb3IodmFyIG4sZT0tMSxyPWMubGVuZ3RoOysrZTxyOyl1WyhuPWNbZV0pLmldPW4ueCh0KTtyZXR1cm4gdS5qb2luKCIiKX19fXZhciBRcj1LcigoZnVuY3Rpb24odCl7Y29uc3Qgbj1uZXcoImZ1bmN0aW9uIj09dHlwZW9mIERPTU1hdHJpeD9ET01NYXRyaXg6V2ViS2l0Q1NTTWF0cml4KSh0KyIiKTtyZXR1cm4gbi5pc0lkZW50aXR5P1dyOlpyKG4uYSxuLmIsbi5jLG4uZCxuLmUsbi5mKX0pLCJweCwgIiwicHgpIiwiZGVnKSIpLEpyPUtyKChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9XcjooR3J8fChHcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiZyIpKSxHci5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsdCksKHQ9R3IudHJhbnNmb3JtLmJhc2VWYWwuY29uc29saWRhdGUoKSk/WnIoKHQ9dC5tYXRyaXgpLmEsdC5iLHQuYyx0LmQsdC5lLHQuZik6V3IpfSksIiwgIiwiKSIsIikiKTtmdW5jdGlvbiB0aSh0KXtyZXR1cm4oKHQ9TWF0aC5leHAodCkpKzEvdCkvMn12YXIgbmk9ZnVuY3Rpb24gdChuLGUscil7ZnVuY3Rpb24gaSh0LGkpe3ZhciBvLGEsdT10WzBdLGM9dFsxXSxmPXRbMl0scz1pWzBdLGw9aVsxXSxoPWlbMl0sZD1zLXUscD1sLWMsZz1kKmQrcCpwO2lmKGc8MWUtMTIpYT1NYXRoLmxvZyhoL2YpL24sbz1mdW5jdGlvbih0KXtyZXR1cm5bdSt0KmQsYyt0KnAsZipNYXRoLmV4cChuKnQqYSldfTtlbHNle3ZhciB5PU1hdGguc3FydChnKSx2PShoKmgtZipmK3IqZykvKDIqZiplKnkpLF89KGgqaC1mKmYtcipnKS8oMipoKmUqeSksYj1NYXRoLmxvZyhNYXRoLnNxcnQodip2KzEpLXYpLG09TWF0aC5sb2coTWF0aC5zcXJ0KF8qXysxKS1fKTthPShtLWIpL24sbz1mdW5jdGlvbih0KXt2YXIgcj10KmEsaT10aShiKSxvPWYvKGUqeSkqKGkqZnVuY3Rpb24odCl7cmV0dXJuKCh0PU1hdGguZXhwKDIqdCkpLTEpLyh0KzEpfShuKnIrYiktZnVuY3Rpb24odCl7cmV0dXJuKCh0PU1hdGguZXhwKHQpKS0xL3QpLzJ9KGIpKTtyZXR1cm5bdStvKmQsYytvKnAsZippL3RpKG4qcitiKV19fXJldHVybiBvLmR1cmF0aW9uPTFlMyphKm4vTWF0aC5TUVJUMixvfXJldHVybiBpLnJobz1mdW5jdGlvbihuKXt2YXIgZT1NYXRoLm1heCguMDAxLCtuKSxyPWUqZTtyZXR1cm4gdChlLHIscipyKX0saX0oTWF0aC5TUVJUMiwyLDQpO2Z1bmN0aW9uIGVpKHQpe3JldHVybiBmdW5jdGlvbihuLGUpe3ZhciByPXQoKG49JGUobikpLmgsKGU9JGUoZSkpLmgpLGk9UHIobi5zLGUucyksbz1QcihuLmwsZS5sKSxhPVByKG4ub3BhY2l0eSxlLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gbi5oPXIodCksbi5zPWkodCksbi5sPW8odCksbi5vcGFjaXR5PWEodCksbisiIn19fXZhciByaT1laShOciksaWk9ZWkoUHIpO2Z1bmN0aW9uIG9pKHQpe3JldHVybiBmdW5jdGlvbihuLGUpe3ZhciByPXQoKG49c3IobikpLmgsKGU9c3IoZSkpLmgpLGk9UHIobi5jLGUuYyksbz1QcihuLmwsZS5sKSxhPVByKG4ub3BhY2l0eSxlLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gbi5oPXIodCksbi5jPWkodCksbi5sPW8odCksbi5vcGFjaXR5PWEodCksbisiIn19fXZhciBhaT1vaShOciksdWk9b2koUHIpO2Z1bmN0aW9uIGNpKHQpe3JldHVybiBmdW5jdGlvbiBuKGUpe2Z1bmN0aW9uIHIobixyKXt2YXIgaT10KChuPXdyKG4pKS5oLChyPXdyKHIpKS5oKSxvPVByKG4ucyxyLnMpLGE9UHIobi5sLHIubCksdT1QcihuLm9wYWNpdHksci5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIG4uaD1pKHQpLG4ucz1vKHQpLG4ubD1hKE1hdGgucG93KHQsZSkpLG4ub3BhY2l0eT11KHQpLG4rIiJ9fXJldHVybiBlPStlLHIuZ2FtbWE9bixyfSgxKX12YXIgZmk9Y2koTnIpLHNpPWNpKFByKTtmdW5jdGlvbiBsaSh0LG4pe3ZvaWQgMD09PW4mJihuPXQsdD1Icik7Zm9yKHZhciBlPTAscj1uLmxlbmd0aC0xLGk9blswXSxvPW5ldyBBcnJheShyPDA/MDpyKTtlPHI7KW9bZV09dChpLGk9blsrK2VdKTtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIG49TWF0aC5tYXgoMCxNYXRoLm1pbihyLTEsTWF0aC5mbG9vcih0Kj1yKSkpO3JldHVybiBvW25dKHQtbil9fXZhciBoaSxkaSxwaT0wLGdpPTAseWk9MCx2aT0wLF9pPTAsYmk9MCxtaT0ib2JqZWN0Ij09dHlwZW9mIHBlcmZvcm1hbmNlJiZwZXJmb3JtYW5jZS5ub3c/cGVyZm9ybWFuY2U6RGF0ZSx4aT0ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZT93aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lLmJpbmQod2luZG93KTpmdW5jdGlvbih0KXtzZXRUaW1lb3V0KHQsMTcpfTtmdW5jdGlvbiB3aSgpe3JldHVybiBfaXx8KHhpKE1pKSxfaT1taS5ub3coKStiaSl9ZnVuY3Rpb24gTWkoKXtfaT0wfWZ1bmN0aW9uIEFpKCl7dGhpcy5fY2FsbD10aGlzLl90aW1lPXRoaXMuX25leHQ9bnVsbH1mdW5jdGlvbiBUaSh0LG4sZSl7dmFyIHI9bmV3IEFpO3JldHVybiByLnJlc3RhcnQodCxuLGUpLHJ9ZnVuY3Rpb24gU2koKXt3aSgpLCsrcGk7Zm9yKHZhciB0LG49aGk7bjspKHQ9X2ktbi5fdGltZSk+PTAmJm4uX2NhbGwuY2FsbCh2b2lkIDAsdCksbj1uLl9uZXh0Oy0tcGl9ZnVuY3Rpb24gRWkoKXtfaT0odmk9bWkubm93KCkpK2JpLHBpPWdpPTA7dHJ5e1NpKCl9ZmluYWxseXtwaT0wLGZ1bmN0aW9uKCl7dmFyIHQsbixlPWhpLHI9MS8wO2Zvcig7ZTspZS5fY2FsbD8ocj5lLl90aW1lJiYocj1lLl90aW1lKSx0PWUsZT1lLl9uZXh0KToobj1lLl9uZXh0LGUuX25leHQ9bnVsbCxlPXQ/dC5fbmV4dD1uOmhpPW4pO2RpPXQsTmkocil9KCksX2k9MH19ZnVuY3Rpb24ga2koKXt2YXIgdD1taS5ub3coKSxuPXQtdmk7bj4xZTMmJihiaS09bix2aT10KX1mdW5jdGlvbiBOaSh0KXtwaXx8KGdpJiYoZ2k9Y2xlYXJUaW1lb3V0KGdpKSksdC1faT4yND8odDwxLzAmJihnaT1zZXRUaW1lb3V0KEVpLHQtbWkubm93KCktYmkpKSx5aSYmKHlpPWNsZWFySW50ZXJ2YWwoeWkpKSk6KHlpfHwodmk9bWkubm93KCkseWk9c2V0SW50ZXJ2YWwoa2ksMWUzKSkscGk9MSx4aShFaSkpKX1mdW5jdGlvbiBDaSh0LG4sZSl7dmFyIHI9bmV3IEFpO3JldHVybiBuPW51bGw9PW4/MDorbixyLnJlc3RhcnQoKGU9PntyLnN0b3AoKSx0KGUrbil9KSxuLGUpLHJ9QWkucHJvdG90eXBlPVRpLnByb3RvdHlwZT17Y29uc3RydWN0b3I6QWkscmVzdGFydDpmdW5jdGlvbih0LG4sZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2FsbGJhY2sgaXMgbm90IGEgZnVuY3Rpb24iKTtlPShudWxsPT1lP3dpKCk6K2UpKyhudWxsPT1uPzA6K24pLHRoaXMuX25leHR8fGRpPT09dGhpc3x8KGRpP2RpLl9uZXh0PXRoaXM6aGk9dGhpcyxkaT10aGlzKSx0aGlzLl9jYWxsPXQsdGhpcy5fdGltZT1lLE5pKCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLl9jYWxsJiYodGhpcy5fY2FsbD1udWxsLHRoaXMuX3RpbWU9MS8wLE5pKCkpfX07dmFyIFBpPU50KCJzdGFydCIsImVuZCIsImNhbmNlbCIsImludGVycnVwdCIpLHppPVtdO2Z1bmN0aW9uIERpKHQsbixlLHIsaSxvKXt2YXIgYT10Ll9fdHJhbnNpdGlvbjtpZihhKXtpZihlIGluIGEpcmV0dXJufWVsc2UgdC5fX3RyYW5zaXRpb249e307IWZ1bmN0aW9uKHQsbixlKXt2YXIgcixpPXQuX190cmFuc2l0aW9uO2Z1bmN0aW9uIG8odCl7ZS5zdGF0ZT0xLGUudGltZXIucmVzdGFydChhLGUuZGVsYXksZS50aW1lKSxlLmRlbGF5PD10JiZhKHQtZS5kZWxheSl9ZnVuY3Rpb24gYShvKXt2YXIgZixzLGwsaDtpZigxIT09ZS5zdGF0ZSlyZXR1cm4gYygpO2ZvcihmIGluIGkpaWYoKGg9aVtmXSkubmFtZT09PWUubmFtZSl7aWYoMz09PWguc3RhdGUpcmV0dXJuIENpKGEpOzQ9PT1oLnN0YXRlPyhoLnN0YXRlPTYsaC50aW1lci5zdG9wKCksaC5vbi5jYWxsKCJpbnRlcnJ1cHQiLHQsdC5fX2RhdGFfXyxoLmluZGV4LGguZ3JvdXApLGRlbGV0ZSBpW2ZdKTorZjxuJiYoaC5zdGF0ZT02LGgudGltZXIuc3RvcCgpLGgub24uY2FsbCgiY2FuY2VsIix0LHQuX19kYXRhX18saC5pbmRleCxoLmdyb3VwKSxkZWxldGUgaVtmXSl9aWYoQ2koKGZ1bmN0aW9uKCl7Mz09PWUuc3RhdGUmJihlLnN0YXRlPTQsZS50aW1lci5yZXN0YXJ0KHUsZS5kZWxheSxlLnRpbWUpLHUobykpfSkpLGUuc3RhdGU9MixlLm9uLmNhbGwoInN0YXJ0Iix0LHQuX19kYXRhX18sZS5pbmRleCxlLmdyb3VwKSwyPT09ZS5zdGF0ZSl7Zm9yKGUuc3RhdGU9MyxyPW5ldyBBcnJheShsPWUudHdlZW4ubGVuZ3RoKSxmPTAscz0tMTtmPGw7KytmKShoPWUudHdlZW5bZl0udmFsdWUuY2FsbCh0LHQuX19kYXRhX18sZS5pbmRleCxlLmdyb3VwKSkmJihyWysrc109aCk7ci5sZW5ndGg9cysxfX1mdW5jdGlvbiB1KG4pe2Zvcih2YXIgaT1uPGUuZHVyYXRpb24/ZS5lYXNlLmNhbGwobnVsbCxuL2UuZHVyYXRpb24pOihlLnRpbWVyLnJlc3RhcnQoYyksZS5zdGF0ZT01LDEpLG89LTEsYT1yLmxlbmd0aDsrK288YTspcltvXS5jYWxsKHQsaSk7NT09PWUuc3RhdGUmJihlLm9uLmNhbGwoImVuZCIsdCx0Ll9fZGF0YV9fLGUuaW5kZXgsZS5ncm91cCksYygpKX1mdW5jdGlvbiBjKCl7Zm9yKHZhciByIGluIGUuc3RhdGU9NixlLnRpbWVyLnN0b3AoKSxkZWxldGUgaVtuXSxpKXJldHVybjtkZWxldGUgdC5fX3RyYW5zaXRpb259aVtuXT1lLGUudGltZXI9VGkobywwLGUudGltZSl9KHQsZSx7bmFtZTpuLGluZGV4OnIsZ3JvdXA6aSxvbjpQaSx0d2Vlbjp6aSx0aW1lOm8udGltZSxkZWxheTpvLmRlbGF5LGR1cmF0aW9uOm8uZHVyYXRpb24sZWFzZTpvLmVhc2UsdGltZXI6bnVsbCxzdGF0ZTowfSl9ZnVuY3Rpb24gUmkodCxuKXt2YXIgZT1xaSh0LG4pO2lmKGUuc3RhdGU+MCl0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHNjaGVkdWxlZCIpO3JldHVybiBlfWZ1bmN0aW9uIEZpKHQsbil7dmFyIGU9cWkodCxuKTtpZihlLnN0YXRlPjMpdGhyb3cgbmV3IEVycm9yKCJ0b28gbGF0ZTsgYWxyZWFkeSBydW5uaW5nIik7cmV0dXJuIGV9ZnVuY3Rpb24gcWkodCxuKXt2YXIgZT10Ll9fdHJhbnNpdGlvbjtpZighZXx8IShlPWVbbl0pKXRocm93IG5ldyBFcnJvcigidHJhbnNpdGlvbiBub3QgZm91bmQiKTtyZXR1cm4gZX1mdW5jdGlvbiBJaSh0LG4pe3ZhciBlLHIsaSxvPXQuX190cmFuc2l0aW9uLGE9ITA7aWYobyl7Zm9yKGkgaW4gbj1udWxsPT1uP251bGw6bisiIixvKShlPW9baV0pLm5hbWU9PT1uPyhyPWUuc3RhdGU+MiYmZS5zdGF0ZTw1LGUuc3RhdGU9NixlLnRpbWVyLnN0b3AoKSxlLm9uLmNhbGwocj8iaW50ZXJydXB0IjoiY2FuY2VsIix0LHQuX19kYXRhX18sZS5pbmRleCxlLmdyb3VwKSxkZWxldGUgb1tpXSk6YT0hMTthJiZkZWxldGUgdC5fX3RyYW5zaXRpb259fWZ1bmN0aW9uIE9pKHQsbil7dmFyIGUscjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgaT1GaSh0aGlzLHQpLG89aS50d2VlbjtpZihvIT09ZSlmb3IodmFyIGE9MCx1PShyPWU9bykubGVuZ3RoO2E8dTsrK2EpaWYoclthXS5uYW1lPT09bil7KHI9ci5zbGljZSgpKS5zcGxpY2UoYSwxKTticmVha31pLnR3ZWVuPXJ9fWZ1bmN0aW9uIFVpKHQsbixlKXt2YXIgcixpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1GaSh0aGlzLHQpLGE9by50d2VlbjtpZihhIT09cil7aT0ocj1hKS5zbGljZSgpO2Zvcih2YXIgdT17bmFtZTpuLHZhbHVlOmV9LGM9MCxmPWkubGVuZ3RoO2M8ZjsrK2MpaWYoaVtjXS5uYW1lPT09bil7aVtjXT11O2JyZWFrfWM9PT1mJiZpLnB1c2godSl9by50d2Vlbj1pfX1mdW5jdGlvbiBCaSh0LG4sZSl7dmFyIHI9dC5faWQ7cmV0dXJuIHQuZWFjaCgoZnVuY3Rpb24oKXt2YXIgdD1GaSh0aGlzLHIpOyh0LnZhbHVlfHwodC52YWx1ZT17fSkpW25dPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpfSkpLGZ1bmN0aW9uKHQpe3JldHVybiBxaSh0LHIpLnZhbHVlW25dfX1mdW5jdGlvbiBZaSh0LG4pe3ZhciBlO3JldHVybigibnVtYmVyIj09dHlwZW9mIG4/QnI6biBpbnN0YW5jZW9mIFBlP3pyOihlPVBlKG4pKT8obj1lLHpyKTokcikodCxuKX1mdW5jdGlvbiBMaSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KX19ZnVuY3Rpb24gamkodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiAkaSh0LG4sZSl7dmFyIHIsaSxvPWUrIiI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZXRBdHRyaWJ1dGUodCk7cmV0dXJuIGE9PT1vP251bGw6YT09PXI/aTppPW4ocj1hLGUpfX1mdW5jdGlvbiBIaSh0LG4sZSl7dmFyIHIsaSxvPWUrIiI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpO3JldHVybiBhPT09bz9udWxsOmE9PT1yP2k6aT1uKHI9YSxlKX19ZnVuY3Rpb24gWGkodCxuLGUpe3ZhciByLGksbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYSx1LGM9ZSh0aGlzKTtpZihudWxsIT1jKXJldHVybihhPXRoaXMuZ2V0QXR0cmlidXRlKHQpKT09PSh1PWMrIiIpP251bGw6YT09PXImJnU9PT1pP286KGk9dSxvPW4ocj1hLGMpKTt0aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KX19ZnVuY3Rpb24gR2kodCxuLGUpe3ZhciByLGksbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYSx1LGM9ZSh0aGlzKTtpZihudWxsIT1jKXJldHVybihhPXRoaXMuZ2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKSk9PT0odT1jKyIiKT9udWxsOmE9PT1yJiZ1PT09aT9vOihpPXUsbz1uKHI9YSxjKSk7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiBWaSh0LG4pe3JldHVybiBmdW5jdGlvbihlKXt0aGlzLnNldEF0dHJpYnV0ZSh0LG4uY2FsbCh0aGlzLGUpKX19ZnVuY3Rpb24gV2kodCxuKXtyZXR1cm4gZnVuY3Rpb24oZSl7dGhpcy5zZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwsbi5jYWxsKHRoaXMsZSkpfX1mdW5jdGlvbiBaaSh0LG4pe3ZhciBlLHI7ZnVuY3Rpb24gaSgpe3ZhciBpPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBpIT09ciYmKGU9KHI9aSkmJldpKHQsaSkpLGV9cmV0dXJuIGkuX3ZhbHVlPW4saX1mdW5jdGlvbiBLaSh0LG4pe3ZhciBlLHI7ZnVuY3Rpb24gaSgpe3ZhciBpPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBpIT09ciYmKGU9KHI9aSkmJlZpKHQsaSkpLGV9cmV0dXJuIGkuX3ZhbHVlPW4saX1mdW5jdGlvbiBRaSh0LG4pe3JldHVybiBmdW5jdGlvbigpe1JpKHRoaXMsdCkuZGVsYXk9K24uYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBKaSh0LG4pe3JldHVybiBuPStuLGZ1bmN0aW9uKCl7UmkodGhpcyx0KS5kZWxheT1ufX1mdW5jdGlvbiB0byh0LG4pe3JldHVybiBmdW5jdGlvbigpe0ZpKHRoaXMsdCkuZHVyYXRpb249K24uYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBubyh0LG4pe3JldHVybiBuPStuLGZ1bmN0aW9uKCl7RmkodGhpcyx0KS5kdXJhdGlvbj1ufX1mdW5jdGlvbiBlbyh0LG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gZnVuY3Rpb24oKXtGaSh0aGlzLHQpLmVhc2U9bn19ZnVuY3Rpb24gcm8odCxuLGUpe3ZhciByLGksbz1mdW5jdGlvbih0KXtyZXR1cm4odCsiIikudHJpbSgpLnNwbGl0KC9efFxzKy8pLmV2ZXJ5KChmdW5jdGlvbih0KXt2YXIgbj10LmluZGV4T2YoIi4iKTtyZXR1cm4gbj49MCYmKHQ9dC5zbGljZSgwLG4pKSwhdHx8InN0YXJ0Ij09PXR9KSl9KG4pP1JpOkZpO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPW8odGhpcyx0KSx1PWEub247dSE9PXImJihpPShyPXUpLmNvcHkoKSkub24obixlKSxhLm9uPWl9fXZhciBpbz1Wbi5wcm90b3R5cGUuY29uc3RydWN0b3I7ZnVuY3Rpb24gb28odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KX19ZnVuY3Rpb24gYW8odCxuLGUpe3JldHVybiBmdW5jdGlvbihyKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsbi5jYWxsKHRoaXMsciksZSl9fWZ1bmN0aW9uIHVvKHQsbixlKXt2YXIgcixpO2Z1bmN0aW9uIG8oKXt2YXIgbz1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gbyE9PWkmJihyPShpPW8pJiZhbyh0LG8sZSkpLHJ9cmV0dXJuIG8uX3ZhbHVlPW4sb31mdW5jdGlvbiBjbyh0KXtyZXR1cm4gZnVuY3Rpb24obil7dGhpcy50ZXh0Q29udGVudD10LmNhbGwodGhpcyxuKX19ZnVuY3Rpb24gZm8odCl7dmFyIG4sZTtmdW5jdGlvbiByKCl7dmFyIHI9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIHIhPT1lJiYobj0oZT1yKSYmY28ocikpLG59cmV0dXJuIHIuX3ZhbHVlPXQscn12YXIgc289MDtmdW5jdGlvbiBsbyh0LG4sZSxyKXt0aGlzLl9ncm91cHM9dCx0aGlzLl9wYXJlbnRzPW4sdGhpcy5fbmFtZT1lLHRoaXMuX2lkPXJ9ZnVuY3Rpb24gaG8odCl7cmV0dXJuIFZuKCkudHJhbnNpdGlvbih0KX1mdW5jdGlvbiBwbygpe3JldHVybisrc299dmFyIGdvPVZuLnByb3RvdHlwZTtsby5wcm90b3R5cGU9aG8ucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpsbyxzZWxlY3Q6ZnVuY3Rpb24odCl7dmFyIG49dGhpcy5fbmFtZSxlPXRoaXMuX2lkOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1ZdCh0KSk7Zm9yKHZhciByPXRoaXMuX2dyb3VwcyxpPXIubGVuZ3RoLG89bmV3IEFycmF5KGkpLGE9MDthPGk7KythKWZvcih2YXIgdSxjLGY9clthXSxzPWYubGVuZ3RoLGw9b1thXT1uZXcgQXJyYXkocyksaD0wO2g8czsrK2gpKHU9ZltoXSkmJihjPXQuY2FsbCh1LHUuX19kYXRhX18saCxmKSkmJigiX19kYXRhX18iaW4gdSYmKGMuX19kYXRhX189dS5fX2RhdGFfXyksbFtoXT1jLERpKGxbaF0sbixlLGgsbCxxaSh1LGUpKSk7cmV0dXJuIG5ldyBsbyhvLHRoaXMuX3BhcmVudHMsbixlKX0sc2VsZWN0QWxsOmZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMuX25hbWUsZT10aGlzLl9pZDsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9JHQodCkpO2Zvcih2YXIgcj10aGlzLl9ncm91cHMsaT1yLmxlbmd0aCxvPVtdLGE9W10sdT0wO3U8aTsrK3UpZm9yKHZhciBjLGY9clt1XSxzPWYubGVuZ3RoLGw9MDtsPHM7KytsKWlmKGM9ZltsXSl7Zm9yKHZhciBoLGQ9dC5jYWxsKGMsYy5fX2RhdGFfXyxsLGYpLHA9cWkoYyxlKSxnPTAseT1kLmxlbmd0aDtnPHk7KytnKShoPWRbZ10pJiZEaShoLG4sZSxnLGQscCk7by5wdXNoKGQpLGEucHVzaChjKX1yZXR1cm4gbmV3IGxvKG8sYSxuLGUpfSxzZWxlY3RDaGlsZDpnby5zZWxlY3RDaGlsZCxzZWxlY3RDaGlsZHJlbjpnby5zZWxlY3RDaGlsZHJlbixmaWx0ZXI6ZnVuY3Rpb24odCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PUh0KHQpKTtmb3IodmFyIG49dGhpcy5fZ3JvdXBzLGU9bi5sZW5ndGgscj1uZXcgQXJyYXkoZSksaT0wO2k8ZTsrK2kpZm9yKHZhciBvLGE9bltpXSx1PWEubGVuZ3RoLGM9cltpXT1bXSxmPTA7Zjx1OysrZikobz1hW2ZdKSYmdC5jYWxsKG8sby5fX2RhdGFfXyxmLGEpJiZjLnB1c2gobyk7cmV0dXJuIG5ldyBsbyhyLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LG1lcmdlOmZ1bmN0aW9uKHQpe2lmKHQuX2lkIT09dGhpcy5faWQpdGhyb3cgbmV3IEVycm9yO2Zvcih2YXIgbj10aGlzLl9ncm91cHMsZT10Ll9ncm91cHMscj1uLmxlbmd0aCxpPWUubGVuZ3RoLG89TWF0aC5taW4ocixpKSxhPW5ldyBBcnJheShyKSx1PTA7dTxvOysrdSlmb3IodmFyIGMsZj1uW3VdLHM9ZVt1XSxsPWYubGVuZ3RoLGg9YVt1XT1uZXcgQXJyYXkobCksZD0wO2Q8bDsrK2QpKGM9ZltkXXx8c1tkXSkmJihoW2RdPWMpO2Zvcig7dTxyOysrdSlhW3VdPW5bdV07cmV0dXJuIG5ldyBsbyhhLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LHNlbGVjdGlvbjpmdW5jdGlvbigpe3JldHVybiBuZXcgaW8odGhpcy5fZ3JvdXBzLHRoaXMuX3BhcmVudHMpfSx0cmFuc2l0aW9uOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuX25hbWUsbj10aGlzLl9pZCxlPXBvKCkscj10aGlzLl9ncm91cHMsaT1yLmxlbmd0aCxvPTA7bzxpOysrbylmb3IodmFyIGEsdT1yW29dLGM9dS5sZW5ndGgsZj0wO2Y8YzsrK2YpaWYoYT11W2ZdKXt2YXIgcz1xaShhLG4pO0RpKGEsdCxlLGYsdSx7dGltZTpzLnRpbWUrcy5kZWxheStzLmR1cmF0aW9uLGRlbGF5OjAsZHVyYXRpb246cy5kdXJhdGlvbixlYXNlOnMuZWFzZX0pfXJldHVybiBuZXcgbG8ocix0aGlzLl9wYXJlbnRzLHQsZSl9LGNhbGw6Z28uY2FsbCxub2Rlczpnby5ub2Rlcyxub2RlOmdvLm5vZGUsc2l6ZTpnby5zaXplLGVtcHR5OmdvLmVtcHR5LGVhY2g6Z28uZWFjaCxvbjpmdW5jdGlvbih0LG4pe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/cWkodGhpcy5ub2RlKCksZSkub24ub24odCk6dGhpcy5lYWNoKHJvKGUsdCxuKSl9LGF0dHI6ZnVuY3Rpb24odCxuKXt2YXIgZT1xdCh0KSxyPSJ0cmFuc2Zvcm0iPT09ZT9KcjpZaTtyZXR1cm4gdGhpcy5hdHRyVHdlZW4odCwiZnVuY3Rpb24iPT10eXBlb2Ygbj8oZS5sb2NhbD9HaTpYaSkoZSxyLEJpKHRoaXMsImF0dHIuIit0LG4pKTpudWxsPT1uPyhlLmxvY2FsP2ppOkxpKShlKTooZS5sb2NhbD9IaTokaSkoZSxyLG4pKX0sYXR0clR3ZWVuOmZ1bmN0aW9uKHQsbil7dmFyIGU9ImF0dHIuIit0O2lmKGFyZ3VtZW50cy5sZW5ndGg8MilyZXR1cm4oZT10aGlzLnR3ZWVuKGUpKSYmZS5fdmFsdWU7aWYobnVsbD09bilyZXR1cm4gdGhpcy50d2VlbihlLG51bGwpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcjt2YXIgcj1xdCh0KTtyZXR1cm4gdGhpcy50d2VlbihlLChyLmxvY2FsP1ppOktpKShyLG4pKX0sc3R5bGU6ZnVuY3Rpb24odCxuLGUpe3ZhciByPSJ0cmFuc2Zvcm0iPT0odCs9IiIpP1FyOllpO3JldHVybiBudWxsPT1uP3RoaXMuc3R5bGVUd2Vlbih0LGZ1bmN0aW9uKHQsbil7dmFyIGUscixpO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPXluKHRoaXMsdCksYT0odGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KSx5bih0aGlzLHQpKTtyZXR1cm4gbz09PWE/bnVsbDpvPT09ZSYmYT09PXI/aTppPW4oZT1vLHI9YSl9fSh0LHIpKS5vbigiZW5kLnN0eWxlLiIrdCxvbyh0KSk6ImZ1bmN0aW9uIj09dHlwZW9mIG4/dGhpcy5zdHlsZVR3ZWVuKHQsZnVuY3Rpb24odCxuLGUpe3ZhciByLGksbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT15bih0aGlzLHQpLHU9ZSh0aGlzKSxjPXUrIiI7cmV0dXJuIG51bGw9PXUmJih0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpLGM9dT15bih0aGlzLHQpKSxhPT09Yz9udWxsOmE9PT1yJiZjPT09aT9vOihpPWMsbz1uKHI9YSx1KSl9fSh0LHIsQmkodGhpcywic3R5bGUuIit0LG4pKSkuZWFjaChmdW5jdGlvbih0LG4pe3ZhciBlLHIsaSxvLGE9InN0eWxlLiIrbix1PSJlbmQuIithO3JldHVybiBmdW5jdGlvbigpe3ZhciBjPUZpKHRoaXMsdCksZj1jLm9uLHM9bnVsbD09Yy52YWx1ZVthXT9vfHwobz1vbyhuKSk6dm9pZCAwO2Y9PT1lJiZpPT09c3x8KHI9KGU9ZikuY29weSgpKS5vbih1LGk9cyksYy5vbj1yfX0odGhpcy5faWQsdCkpOnRoaXMuc3R5bGVUd2Vlbih0LGZ1bmN0aW9uKHQsbixlKXt2YXIgcixpLG89ZSsiIjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT15bih0aGlzLHQpO3JldHVybiBhPT09bz9udWxsOmE9PT1yP2k6aT1uKHI9YSxlKX19KHQscixuKSxlKS5vbigiZW5kLnN0eWxlLiIrdCxudWxsKX0sc3R5bGVUd2VlbjpmdW5jdGlvbih0LG4sZSl7dmFyIHI9InN0eWxlLiIrKHQrPSIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKHI9dGhpcy50d2VlbihyKSkmJnIuX3ZhbHVlO2lmKG51bGw9PW4pcmV0dXJuIHRoaXMudHdlZW4ocixudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4ocix1byh0LG4sbnVsbD09ZT8iIjplKSl9LHRleHQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudHdlZW4oInRleHQiLCJmdW5jdGlvbiI9PXR5cGVvZiB0P2Z1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPXQodGhpcyk7dGhpcy50ZXh0Q29udGVudD1udWxsPT1uPyIiOm59fShCaSh0aGlzLCJ0ZXh0Iix0KSk6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD10fX0obnVsbD09dD8iIjp0KyIiKSl9LHRleHRUd2VlbjpmdW5jdGlvbih0KXt2YXIgbj0idGV4dCI7aWYoYXJndW1lbnRzLmxlbmd0aDwxKXJldHVybihuPXRoaXMudHdlZW4obikpJiZuLl92YWx1ZTtpZihudWxsPT10KXJldHVybiB0aGlzLnR3ZWVuKG4sbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0aGlzLnR3ZWVuKG4sZm8odCkpfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vbigiZW5kLnJlbW92ZSIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49dGhpcy5wYXJlbnROb2RlO2Zvcih2YXIgZSBpbiB0aGlzLl9fdHJhbnNpdGlvbilpZigrZSE9PXQpcmV0dXJuO24mJm4ucmVtb3ZlQ2hpbGQodGhpcyl9fSh0aGlzLl9pZCkpfSx0d2VlbjpmdW5jdGlvbih0LG4pe3ZhciBlPXRoaXMuX2lkO2lmKHQrPSIiLGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKHZhciByLGk9cWkodGhpcy5ub2RlKCksZSkudHdlZW4sbz0wLGE9aS5sZW5ndGg7bzxhOysrbylpZigocj1pW29dKS5uYW1lPT09dClyZXR1cm4gci52YWx1ZTtyZXR1cm4gbnVsbH1yZXR1cm4gdGhpcy5lYWNoKChudWxsPT1uP09pOlVpKShlLHQsbikpfSxkZWxheTpmdW5jdGlvbih0KXt2YXIgbj10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiB0P1FpOkppKShuLHQpKTpxaSh0aGlzLm5vZGUoKSxuKS5kZWxheX0sZHVyYXRpb246ZnVuY3Rpb24odCl7dmFyIG49dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgdD90bzpubykobix0KSk6cWkodGhpcy5ub2RlKCksbikuZHVyYXRpb259LGVhc2U6ZnVuY3Rpb24odCl7dmFyIG49dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKGVvKG4sdCkpOnFpKHRoaXMubm9kZSgpLG4pLmVhc2V9LGVhc2VWYXJ5aW5nOmZ1bmN0aW9uKHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcjtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yO0ZpKHRoaXMsdCkuZWFzZT1lfX0odGhpcy5faWQsdCkpfSxlbmQ6ZnVuY3Rpb24oKXt2YXIgdCxuLGU9dGhpcyxyPWUuX2lkLGk9ZS5zaXplKCk7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihvLGEpe3ZhciB1PXt2YWx1ZTphfSxjPXt2YWx1ZTpmdW5jdGlvbigpezA9PS0taSYmbygpfX07ZS5lYWNoKChmdW5jdGlvbigpe3ZhciBlPUZpKHRoaXMsciksaT1lLm9uO2khPT10JiYoKG49KHQ9aSkuY29weSgpKS5fLmNhbmNlbC5wdXNoKHUpLG4uXy5pbnRlcnJ1cHQucHVzaCh1KSxuLl8uZW5kLnB1c2goYykpLGUub249bn0pKSwwPT09aSYmbygpfSkpfSxbU3ltYm9sLml0ZXJhdG9yXTpnb1tTeW1ib2wuaXRlcmF0b3JdfTtmdW5jdGlvbiB5byh0KXtyZXR1cm4oKHQqPTIpPD0xP3QqdDotLXQqKDItdCkrMSkvMn1mdW5jdGlvbiB2byh0KXtyZXR1cm4oKHQqPTIpPD0xP3QqdCp0Oih0LT0yKSp0KnQrMikvMn12YXIgX289ZnVuY3Rpb24gdChuKXtmdW5jdGlvbiBlKHQpe3JldHVybiBNYXRoLnBvdyh0LG4pfXJldHVybiBuPStuLGUuZXhwb25lbnQ9dCxlfSgzKSxibz1mdW5jdGlvbiB0KG4pe2Z1bmN0aW9uIGUodCl7cmV0dXJuIDEtTWF0aC5wb3coMS10LG4pfXJldHVybiBuPStuLGUuZXhwb25lbnQ9dCxlfSgzKSxtbz1mdW5jdGlvbiB0KG4pe2Z1bmN0aW9uIGUodCl7cmV0dXJuKCh0Kj0yKTw9MT9NYXRoLnBvdyh0LG4pOjItTWF0aC5wb3coMi10LG4pKS8yfXJldHVybiBuPStuLGUuZXhwb25lbnQ9dCxlfSgzKSx4bz1NYXRoLlBJLHdvPXhvLzI7ZnVuY3Rpb24gTW8odCl7cmV0dXJuKDEtTWF0aC5jb3MoeG8qdCkpLzJ9ZnVuY3Rpb24gQW8odCl7cmV0dXJuIDEuMDAwOTc3NTE3MTA2NTQ5NCooTWF0aC5wb3coMiwtMTAqdCktLjAwMDk3NjU2MjUpfWZ1bmN0aW9uIFRvKHQpe3JldHVybigodCo9Mik8PTE/QW8oMS10KToyLUFvKHQtMSkpLzJ9ZnVuY3Rpb24gU28odCl7cmV0dXJuKCh0Kj0yKTw9MT8xLU1hdGguc3FydCgxLXQqdCk6TWF0aC5zcXJ0KDEtKHQtPTIpKnQpKzEpLzJ9dmFyIEVvPTQvMTEsa289Ny41NjI1O2Z1bmN0aW9uIE5vKHQpe3JldHVybih0PSt0KTxFbz9rbyp0KnQ6dDwuNzI3MjcyNzI3MjcyNzI3Mz9rbyoodC09LjU0NTQ1NDU0NTQ1NDU0NTQpKnQrLjc1OnQ8LjkwOTA5MDkwOTA5MDkwOTE/a28qKHQtPS44MTgxODE4MTgxODE4MTgyKSp0Ky45Mzc1OmtvKih0LT0uOTU0NTQ1NDU0NTQ1NDU0NikqdCsuOTg0Mzc1fXZhciBDbz0xLjcwMTU4LFBvPWZ1bmN0aW9uIHQobil7ZnVuY3Rpb24gZSh0KXtyZXR1cm4odD0rdCkqdCoobioodC0xKSt0KX1yZXR1cm4gbj0rbixlLm92ZXJzaG9vdD10LGV9KENvKSx6bz1mdW5jdGlvbiB0KG4pe2Z1bmN0aW9uIGUodCl7cmV0dXJuLS10KnQqKCh0KzEpKm4rdCkrMX1yZXR1cm4gbj0rbixlLm92ZXJzaG9vdD10LGV9KENvKSxEbz1mdW5jdGlvbiB0KG4pe2Z1bmN0aW9uIGUodCl7cmV0dXJuKCh0Kj0yKTwxP3QqdCooKG4rMSkqdC1uKToodC09MikqdCooKG4rMSkqdCtuKSsyKS8yfXJldHVybiBuPStuLGUub3ZlcnNob290PXQsZX0oQ28pLFJvPTIqTWF0aC5QSSxGbz1mdW5jdGlvbiB0KG4sZSl7dmFyIHI9TWF0aC5hc2luKDEvKG49TWF0aC5tYXgoMSxuKSkpKihlLz1Sbyk7ZnVuY3Rpb24gaSh0KXtyZXR1cm4gbipBbygtIC0tdCkqTWF0aC5zaW4oKHItdCkvZSl9cmV0dXJuIGkuYW1wbGl0dWRlPWZ1bmN0aW9uKG4pe3JldHVybiB0KG4sZSpSbyl9LGkucGVyaW9kPWZ1bmN0aW9uKGUpe3JldHVybiB0KG4sZSl9LGl9KDEsLjMpLHFvPWZ1bmN0aW9uIHQobixlKXt2YXIgcj1NYXRoLmFzaW4oMS8obj1NYXRoLm1heCgxLG4pKSkqKGUvPVJvKTtmdW5jdGlvbiBpKHQpe3JldHVybiAxLW4qQW8odD0rdCkqTWF0aC5zaW4oKHQrcikvZSl9cmV0dXJuIGkuYW1wbGl0dWRlPWZ1bmN0aW9uKG4pe3JldHVybiB0KG4sZSpSbyl9LGkucGVyaW9kPWZ1bmN0aW9uKGUpe3JldHVybiB0KG4sZSl9LGl9KDEsLjMpLElvPWZ1bmN0aW9uIHQobixlKXt2YXIgcj1NYXRoLmFzaW4oMS8obj1NYXRoLm1heCgxLG4pKSkqKGUvPVJvKTtmdW5jdGlvbiBpKHQpe3JldHVybigodD0yKnQtMSk8MD9uKkFvKC10KSpNYXRoLnNpbigoci10KS9lKToyLW4qQW8odCkqTWF0aC5zaW4oKHIrdCkvZSkpLzJ9cmV0dXJuIGkuYW1wbGl0dWRlPWZ1bmN0aW9uKG4pe3JldHVybiB0KG4sZSpSbyl9LGkucGVyaW9kPWZ1bmN0aW9uKGUpe3JldHVybiB0KG4sZSl9LGl9KDEsLjMpLE9vPXt0aW1lOm51bGwsZGVsYXk6MCxkdXJhdGlvbjoyNTAsZWFzZTp2b307ZnVuY3Rpb24gVW8odCxuKXtmb3IodmFyIGU7IShlPXQuX190cmFuc2l0aW9uKXx8IShlPWVbbl0pOylpZighKHQ9dC5wYXJlbnROb2RlKSl0aHJvdyBuZXcgRXJyb3IoYHRyYW5zaXRpb24gJHtufSBub3QgZm91bmRgKTtyZXR1cm4gZX1Wbi5wcm90b3R5cGUuaW50ZXJydXB0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7SWkodGhpcyx0KX0pKX0sVm4ucHJvdG90eXBlLnRyYW5zaXRpb249ZnVuY3Rpb24odCl7dmFyIG4sZTt0IGluc3RhbmNlb2YgbG8/KG49dC5faWQsdD10Ll9uYW1lKToobj1wbygpLChlPU9vKS50aW1lPXdpKCksdD1udWxsPT10P251bGw6dCsiIik7Zm9yKHZhciByPXRoaXMuX2dyb3VwcyxpPXIubGVuZ3RoLG89MDtvPGk7KytvKWZvcih2YXIgYSx1PXJbb10sYz11Lmxlbmd0aCxmPTA7ZjxjOysrZikoYT11W2ZdKSYmRGkoYSx0LG4sZix1LGV8fFVvKGEsbikpO3JldHVybiBuZXcgbG8ocix0aGlzLl9wYXJlbnRzLHQsbil9O3ZhciBCbz1bbnVsbF07dmFyIFlvPXQ9PigpPT50O2Z1bmN0aW9uIExvKHQse3NvdXJjZUV2ZW50Om4sdGFyZ2V0OmUsc2VsZWN0aW9uOnIsbW9kZTppLGRpc3BhdGNoOm99KXtPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0aGlzLHt0eXBlOnt2YWx1ZTp0LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSxzb3VyY2VFdmVudDp7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0sdGFyZ2V0Ont2YWx1ZTplLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSxzZWxlY3Rpb246e3ZhbHVlOnIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9LG1vZGU6e3ZhbHVlOmksZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9LF86e3ZhbHVlOm99fSl9ZnVuY3Rpb24gam8odCl7dC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiAkbyh0KXt0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX12YXIgSG89e25hbWU6ImRyYWcifSxYbz17bmFtZToic3BhY2UifSxHbz17bmFtZToiaGFuZGxlIn0sVm89e25hbWU6ImNlbnRlciJ9O2NvbnN0e2FiczpXbyxtYXg6Wm8sbWluOktvfT1NYXRoO2Z1bmN0aW9uIFFvKHQpe3JldHVyblsrdFswXSwrdFsxXV19ZnVuY3Rpb24gSm8odCl7cmV0dXJuW1FvKHRbMF0pLFFvKHRbMV0pXX12YXIgdGE9e25hbWU6IngiLGhhbmRsZXM6WyJ3IiwiZSJdLm1hcChjYSksaW5wdXQ6ZnVuY3Rpb24odCxuKXtyZXR1cm4gbnVsbD09dD9udWxsOltbK3RbMF0sblswXVsxXV0sWyt0WzFdLG5bMV1bMV1dXX0sb3V0cHV0OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZbdFswXVswXSx0WzFdWzBdXX19LG5hPXtuYW1lOiJ5IixoYW5kbGVzOlsibiIsInMiXS5tYXAoY2EpLGlucHV0OmZ1bmN0aW9uKHQsbil7cmV0dXJuIG51bGw9PXQ/bnVsbDpbW25bMF1bMF0sK3RbMF1dLFtuWzFdWzBdLCt0WzFdXV19LG91dHB1dDpmdW5jdGlvbih0KXtyZXR1cm4gdCYmW3RbMF1bMV0sdFsxXVsxXV19fSxlYT17bmFtZToieHkiLGhhbmRsZXM6WyJuIiwidyIsImUiLCJzIiwibnciLCJuZSIsInN3Iiwic2UiXS5tYXAoY2EpLGlucHV0OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P251bGw6Sm8odCl9LG91dHB1dDpmdW5jdGlvbih0KXtyZXR1cm4gdH19LHJhPXtvdmVybGF5OiJjcm9zc2hhaXIiLHNlbGVjdGlvbjoibW92ZSIsbjoibnMtcmVzaXplIixlOiJldy1yZXNpemUiLHM6Im5zLXJlc2l6ZSIsdzoiZXctcmVzaXplIixudzoibndzZS1yZXNpemUiLG5lOiJuZXN3LXJlc2l6ZSIsc2U6Im53c2UtcmVzaXplIixzdzoibmVzdy1yZXNpemUifSxpYT17ZToidyIsdzoiZSIsbnc6Im5lIixuZToibnciLHNlOiJzdyIsc3c6InNlIn0sb2E9e246InMiLHM6Im4iLG53OiJzdyIsbmU6InNlIixzZToibmUiLHN3OiJudyJ9LGFhPXtvdmVybGF5OjEsc2VsZWN0aW9uOjEsbjpudWxsLGU6MSxzOm51bGwsdzotMSxudzotMSxuZToxLHNlOjEsc3c6LTF9LHVhPXtvdmVybGF5OjEsc2VsZWN0aW9uOjEsbjotMSxlOm51bGwsczoxLHc6bnVsbCxudzotMSxuZTotMSxzZToxLHN3OjF9O2Z1bmN0aW9uIGNhKHQpe3JldHVybnt0eXBlOnR9fWZ1bmN0aW9uIGZhKHQpe3JldHVybiF0LmN0cmxLZXkmJiF0LmJ1dHRvbn1mdW5jdGlvbiBzYSgpe3ZhciB0PXRoaXMub3duZXJTVkdFbGVtZW50fHx0aGlzO3JldHVybiB0Lmhhc0F0dHJpYnV0ZSgidmlld0JveCIpP1tbKHQ9dC52aWV3Qm94LmJhc2VWYWwpLngsdC55XSxbdC54K3Qud2lkdGgsdC55K3QuaGVpZ2h0XV06W1swLDBdLFt0LndpZHRoLmJhc2VWYWwudmFsdWUsdC5oZWlnaHQuYmFzZVZhbC52YWx1ZV1dfWZ1bmN0aW9uIGxhKCl7cmV0dXJuIG5hdmlnYXRvci5tYXhUb3VjaFBvaW50c3x8Im9udG91Y2hzdGFydCJpbiB0aGlzfWZ1bmN0aW9uIGhhKHQpe2Zvcig7IXQuX19icnVzaDspaWYoISh0PXQucGFyZW50Tm9kZSkpcmV0dXJuO3JldHVybiB0Ll9fYnJ1c2h9ZnVuY3Rpb24gZGEodCl7cmV0dXJuIHRbMF1bMF09PT10WzFdWzBdfHx0WzBdWzFdPT09dFsxXVsxXX1mdW5jdGlvbiBwYSh0KXt2YXIgbixlPXNhLHI9ZmEsaT1sYSxvPSEwLGE9TnQoInN0YXJ0IiwiYnJ1c2giLCJlbmQiKSx1PTY7ZnVuY3Rpb24gYyhuKXt2YXIgZT1uLnByb3BlcnR5KCJfX2JydXNoIixnKS5zZWxlY3RBbGwoIi5vdmVybGF5IikuZGF0YShbY2EoIm92ZXJsYXkiKV0pO2UuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsIm92ZXJsYXkiKS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLmF0dHIoImN1cnNvciIscmEub3ZlcmxheSkubWVyZ2UoZSkuZWFjaCgoZnVuY3Rpb24oKXt2YXIgdD1oYSh0aGlzKS5leHRlbnQ7V24odGhpcykuYXR0cigieCIsdFswXVswXSkuYXR0cigieSIsdFswXVsxXSkuYXR0cigid2lkdGgiLHRbMV1bMF0tdFswXVswXSkuYXR0cigiaGVpZ2h0Iix0WzFdWzFdLXRbMF1bMV0pfSkpLG4uc2VsZWN0QWxsKCIuc2VsZWN0aW9uIikuZGF0YShbY2EoInNlbGVjdGlvbiIpXSkuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsInNlbGVjdGlvbiIpLmF0dHIoImN1cnNvciIscmEuc2VsZWN0aW9uKS5hdHRyKCJmaWxsIiwiIzc3NyIpLmF0dHIoImZpbGwtb3BhY2l0eSIsLjMpLmF0dHIoInN0cm9rZSIsIiNmZmYiKS5hdHRyKCJzaGFwZS1yZW5kZXJpbmciLCJjcmlzcEVkZ2VzIik7dmFyIHI9bi5zZWxlY3RBbGwoIi5oYW5kbGUiKS5kYXRhKHQuaGFuZGxlcywoZnVuY3Rpb24odCl7cmV0dXJuIHQudHlwZX0pKTtyLmV4aXQoKS5yZW1vdmUoKSxyLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLChmdW5jdGlvbih0KXtyZXR1cm4iaGFuZGxlIGhhbmRsZS0tIit0LnR5cGV9KSkuYXR0cigiY3Vyc29yIiwoZnVuY3Rpb24odCl7cmV0dXJuIHJhW3QudHlwZV19KSksbi5lYWNoKGYpLmF0dHIoImZpbGwiLCJub25lIikuYXR0cigicG9pbnRlci1ldmVudHMiLCJhbGwiKS5vbigibW91c2Vkb3duLmJydXNoIixoKS5maWx0ZXIoaSkub24oInRvdWNoc3RhcnQuYnJ1c2giLGgpLm9uKCJ0b3VjaG1vdmUuYnJ1c2giLGQpLm9uKCJ0b3VjaGVuZC5icnVzaCB0b3VjaGNhbmNlbC5icnVzaCIscCkuc3R5bGUoInRvdWNoLWFjdGlvbiIsIm5vbmUiKS5zdHlsZSgiLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yIiwicmdiYSgwLDAsMCwwKSIpfWZ1bmN0aW9uIGYoKXt2YXIgdD1Xbih0aGlzKSxuPWhhKHRoaXMpLnNlbGVjdGlvbjtuPyh0LnNlbGVjdEFsbCgiLnNlbGVjdGlvbiIpLnN0eWxlKCJkaXNwbGF5IixudWxsKS5hdHRyKCJ4IixuWzBdWzBdKS5hdHRyKCJ5IixuWzBdWzFdKS5hdHRyKCJ3aWR0aCIsblsxXVswXS1uWzBdWzBdKS5hdHRyKCJoZWlnaHQiLG5bMV1bMV0tblswXVsxXSksdC5zZWxlY3RBbGwoIi5oYW5kbGUiKS5zdHlsZSgiZGlzcGxheSIsbnVsbCkuYXR0cigieCIsKGZ1bmN0aW9uKHQpe3JldHVybiJlIj09PXQudHlwZVt0LnR5cGUubGVuZ3RoLTFdP25bMV1bMF0tdS8yOm5bMF1bMF0tdS8yfSkpLmF0dHIoInkiLChmdW5jdGlvbih0KXtyZXR1cm4icyI9PT10LnR5cGVbMF0/blsxXVsxXS11LzI6blswXVsxXS11LzJ9KSkuYXR0cigid2lkdGgiLChmdW5jdGlvbih0KXtyZXR1cm4ibiI9PT10LnR5cGV8fCJzIj09PXQudHlwZT9uWzFdWzBdLW5bMF1bMF0rdTp1fSkpLmF0dHIoImhlaWdodCIsKGZ1bmN0aW9uKHQpe3JldHVybiJlIj09PXQudHlwZXx8InciPT09dC50eXBlP25bMV1bMV0tblswXVsxXSt1OnV9KSkpOnQuc2VsZWN0QWxsKCIuc2VsZWN0aW9uLC5oYW5kbGUiKS5zdHlsZSgiZGlzcGxheSIsIm5vbmUiKS5hdHRyKCJ4IixudWxsKS5hdHRyKCJ5IixudWxsKS5hdHRyKCJ3aWR0aCIsbnVsbCkuYXR0cigiaGVpZ2h0IixudWxsKX1mdW5jdGlvbiBzKHQsbixlKXt2YXIgcj10Ll9fYnJ1c2guZW1pdHRlcjtyZXR1cm4hcnx8ZSYmci5jbGVhbj9uZXcgbCh0LG4sZSk6cn1mdW5jdGlvbiBsKHQsbixlKXt0aGlzLnRoYXQ9dCx0aGlzLmFyZ3M9bix0aGlzLnN0YXRlPXQuX19icnVzaCx0aGlzLmFjdGl2ZT0wLHRoaXMuY2xlYW49ZX1mdW5jdGlvbiBoKGUpe2lmKCghbnx8ZS50b3VjaGVzKSYmci5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciBpLGEsdSxjLGwsaCxkLHAsZyx5LHYsXz10aGlzLGI9ZS50YXJnZXQuX19kYXRhX18udHlwZSxtPSJzZWxlY3Rpb24iPT09KG8mJmUubWV0YUtleT9iPSJvdmVybGF5IjpiKT9IbzpvJiZlLmFsdEtleT9WbzpHbyx4PXQ9PT1uYT9udWxsOmFhW2JdLHc9dD09PXRhP251bGw6dWFbYl0sTT1oYShfKSxBPU0uZXh0ZW50LFQ9TS5zZWxlY3Rpb24sUz1BWzBdWzBdLEU9QVswXVsxXSxrPUFbMV1bMF0sTj1BWzFdWzFdLEM9MCxQPTAsej14JiZ3JiZvJiZlLnNoaWZ0S2V5LEQ9QXJyYXkuZnJvbShlLnRvdWNoZXN8fFtlXSwodD0+e2NvbnN0IG49dC5pZGVudGlmaWVyO3JldHVybih0PXRlKHQsXykpLnBvaW50MD10LnNsaWNlKCksdC5pZGVudGlmaWVyPW4sdH0pKTtJaShfKTt2YXIgUj1zKF8sYXJndW1lbnRzLCEwKS5iZWZvcmVzdGFydCgpO2lmKCJvdmVybGF5Ij09PWIpe1QmJihnPSEwKTtjb25zdCBuPVtEWzBdLERbMV18fERbMF1dO00uc2VsZWN0aW9uPVQ9W1tpPXQ9PT1uYT9TOktvKG5bMF1bMF0sblsxXVswXSksdT10PT09dGE/RTpLbyhuWzBdWzFdLG5bMV1bMV0pXSxbbD10PT09bmE/azpabyhuWzBdWzBdLG5bMV1bMF0pLGQ9dD09PXRhP046Wm8oblswXVsxXSxuWzFdWzFdKV1dLEQubGVuZ3RoPjEmJlUoZSl9ZWxzZSBpPVRbMF1bMF0sdT1UWzBdWzFdLGw9VFsxXVswXSxkPVRbMV1bMV07YT1pLGM9dSxoPWwscD1kO3ZhciBGPVduKF8pLmF0dHIoInBvaW50ZXItZXZlbnRzIiwibm9uZSIpLHE9Ri5zZWxlY3RBbGwoIi5vdmVybGF5IikuYXR0cigiY3Vyc29yIixyYVtiXSk7aWYoZS50b3VjaGVzKVIubW92ZWQ9TyxSLmVuZGVkPUI7ZWxzZXt2YXIgST1XbihlLnZpZXcpLm9uKCJtb3VzZW1vdmUuYnJ1c2giLE8sITApLm9uKCJtb3VzZXVwLmJydXNoIixCLCEwKTtvJiZJLm9uKCJrZXlkb3duLmJydXNoIixZLCEwKS5vbigia2V5dXAuYnJ1c2giLEwsITApLG9lKGUudmlldyl9Zi5jYWxsKF8pLFIuc3RhcnQoZSxtLm5hbWUpfWZ1bmN0aW9uIE8odCl7Zm9yKGNvbnN0IG4gb2YgdC5jaGFuZ2VkVG91Y2hlc3x8W3RdKWZvcihjb25zdCB0IG9mIEQpdC5pZGVudGlmaWVyPT09bi5pZGVudGlmaWVyJiYodC5jdXI9dGUobixfKSk7aWYoeiYmIXkmJiF2JiYxPT09RC5sZW5ndGgpe2NvbnN0IHQ9RFswXTtXbyh0LmN1clswXS10WzBdKT5Xbyh0LmN1clsxXS10WzFdKT92PSEwOnk9ITB9Zm9yKGNvbnN0IHQgb2YgRCl0LmN1ciYmKHRbMF09dC5jdXJbMF0sdFsxXT10LmN1clsxXSk7Zz0hMCwkbyh0KSxVKHQpfWZ1bmN0aW9uIFUodCl7Y29uc3Qgbj1EWzBdLGU9bi5wb2ludDA7dmFyIHI7c3dpdGNoKEM9blswXS1lWzBdLFA9blsxXS1lWzFdLG0pe2Nhc2UgWG86Y2FzZSBIbzp4JiYoQz1abyhTLWksS28oay1sLEMpKSxhPWkrQyxoPWwrQyksdyYmKFA9Wm8oRS11LEtvKE4tZCxQKSksYz11K1AscD1kK1ApO2JyZWFrO2Nhc2UgR286RFsxXT8oeCYmKGE9Wm8oUyxLbyhrLERbMF1bMF0pKSxoPVpvKFMsS28oayxEWzFdWzBdKSkseD0xKSx3JiYoYz1abyhFLEtvKE4sRFswXVsxXSkpLHA9Wm8oRSxLbyhOLERbMV1bMV0pKSx3PTEpKTooeDwwPyhDPVpvKFMtaSxLbyhrLWksQykpLGE9aStDLGg9bCk6eD4wJiYoQz1abyhTLWwsS28oay1sLEMpKSxhPWksaD1sK0MpLHc8MD8oUD1abyhFLXUsS28oTi11LFApKSxjPXUrUCxwPWQpOnc+MCYmKFA9Wm8oRS1kLEtvKE4tZCxQKSksYz11LHA9ZCtQKSk7YnJlYWs7Y2FzZSBWbzp4JiYoYT1abyhTLEtvKGssaS1DKngpKSxoPVpvKFMsS28oayxsK0MqeCkpKSx3JiYoYz1abyhFLEtvKE4sdS1QKncpKSxwPVpvKEUsS28oTixkK1AqdykpKX1oPGEmJih4Kj0tMSxyPWksaT1sLGw9cixyPWEsYT1oLGg9cixiIGluIGlhJiZxLmF0dHIoImN1cnNvciIscmFbYj1pYVtiXV0pKSxwPGMmJih3Kj0tMSxyPXUsdT1kLGQ9cixyPWMsYz1wLHA9cixiIGluIG9hJiZxLmF0dHIoImN1cnNvciIscmFbYj1vYVtiXV0pKSxNLnNlbGVjdGlvbiYmKFQ9TS5zZWxlY3Rpb24pLHkmJihhPVRbMF1bMF0saD1UWzFdWzBdKSx2JiYoYz1UWzBdWzFdLHA9VFsxXVsxXSksVFswXVswXT09PWEmJlRbMF1bMV09PT1jJiZUWzFdWzBdPT09aCYmVFsxXVsxXT09PXB8fChNLnNlbGVjdGlvbj1bW2EsY10sW2gscF1dLGYuY2FsbChfKSxSLmJydXNoKHQsbS5uYW1lKSl9ZnVuY3Rpb24gQih0KXtpZihqbyh0KSx0LnRvdWNoZXMpe2lmKHQudG91Y2hlcy5sZW5ndGgpcmV0dXJuO24mJmNsZWFyVGltZW91dChuKSxuPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7bj1udWxsfSksNTAwKX1lbHNlIGFlKHQudmlldyxnKSxJLm9uKCJrZXlkb3duLmJydXNoIGtleXVwLmJydXNoIG1vdXNlbW92ZS5icnVzaCBtb3VzZXVwLmJydXNoIixudWxsKTtGLmF0dHIoInBvaW50ZXItZXZlbnRzIiwiYWxsIikscS5hdHRyKCJjdXJzb3IiLHJhLm92ZXJsYXkpLE0uc2VsZWN0aW9uJiYoVD1NLnNlbGVjdGlvbiksZGEoVCkmJihNLnNlbGVjdGlvbj1udWxsLGYuY2FsbChfKSksUi5lbmQodCxtLm5hbWUpfWZ1bmN0aW9uIFkodCl7c3dpdGNoKHQua2V5Q29kZSl7Y2FzZSAxNjp6PXgmJnc7YnJlYWs7Y2FzZSAxODptPT09R28mJih4JiYobD1oLUMqeCxpPWErQyp4KSx3JiYoZD1wLVAqdyx1PWMrUCp3KSxtPVZvLFUodCkpO2JyZWFrO2Nhc2UgMzI6bSE9PUdvJiZtIT09Vm98fCh4PDA/bD1oLUM6eD4wJiYoaT1hLUMpLHc8MD9kPXAtUDp3PjAmJih1PWMtUCksbT1YbyxxLmF0dHIoImN1cnNvciIscmEuc2VsZWN0aW9uKSxVKHQpKTticmVhaztkZWZhdWx0OnJldHVybn0kbyh0KX1mdW5jdGlvbiBMKHQpe3N3aXRjaCh0LmtleUNvZGUpe2Nhc2UgMTY6eiYmKHk9dj16PSExLFUodCkpO2JyZWFrO2Nhc2UgMTg6bT09PVZvJiYoeDwwP2w9aDp4PjAmJihpPWEpLHc8MD9kPXA6dz4wJiYodT1jKSxtPUdvLFUodCkpO2JyZWFrO2Nhc2UgMzI6bT09PVhvJiYodC5hbHRLZXk/KHgmJihsPWgtQyp4LGk9YStDKngpLHcmJihkPXAtUCp3LHU9YytQKncpLG09Vm8pOih4PDA/bD1oOng+MCYmKGk9YSksdzwwP2Q9cDp3PjAmJih1PWMpLG09R28pLHEuYXR0cigiY3Vyc29yIixyYVtiXSksVSh0KSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm59JG8odCl9fWZ1bmN0aW9uIGQodCl7cyh0aGlzLGFyZ3VtZW50cykubW92ZWQodCl9ZnVuY3Rpb24gcCh0KXtzKHRoaXMsYXJndW1lbnRzKS5lbmRlZCh0KX1mdW5jdGlvbiBnKCl7dmFyIG49dGhpcy5fX2JydXNofHx7c2VsZWN0aW9uOm51bGx9O3JldHVybiBuLmV4dGVudD1KbyhlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksbi5kaW09dCxufXJldHVybiBjLm1vdmU9ZnVuY3Rpb24obixlLHIpe24udHdlZW4/bi5vbigic3RhcnQuYnJ1c2giLChmdW5jdGlvbih0KXtzKHRoaXMsYXJndW1lbnRzKS5iZWZvcmVzdGFydCgpLnN0YXJ0KHQpfSkpLm9uKCJpbnRlcnJ1cHQuYnJ1c2ggZW5kLmJydXNoIiwoZnVuY3Rpb24odCl7cyh0aGlzLGFyZ3VtZW50cykuZW5kKHQpfSkpLnR3ZWVuKCJicnVzaCIsKGZ1bmN0aW9uKCl7dmFyIG49dGhpcyxyPW4uX19icnVzaCxpPXMobixhcmd1bWVudHMpLG89ci5zZWxlY3Rpb24sYT10LmlucHV0KCJmdW5jdGlvbiI9PXR5cGVvZiBlP2UuYXBwbHkodGhpcyxhcmd1bWVudHMpOmUsci5leHRlbnQpLHU9SHIobyxhKTtmdW5jdGlvbiBjKHQpe3Iuc2VsZWN0aW9uPTE9PT10JiZudWxsPT09YT9udWxsOnUodCksZi5jYWxsKG4pLGkuYnJ1c2goKX1yZXR1cm4gbnVsbCE9PW8mJm51bGwhPT1hP2M6YygxKX0pKTpuLmVhY2goKGZ1bmN0aW9uKCl7dmFyIG49dGhpcyxpPWFyZ3VtZW50cyxvPW4uX19icnVzaCxhPXQuaW5wdXQoImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5hcHBseShuLGkpOmUsby5leHRlbnQpLHU9cyhuLGkpLmJlZm9yZXN0YXJ0KCk7SWkobiksby5zZWxlY3Rpb249bnVsbD09PWE/bnVsbDphLGYuY2FsbChuKSx1LnN0YXJ0KHIpLmJydXNoKHIpLmVuZChyKX0pKX0sYy5jbGVhcj1mdW5jdGlvbih0LG4pe2MubW92ZSh0LG51bGwsbil9LGwucHJvdG90eXBlPXtiZWZvcmVzdGFydDpmdW5jdGlvbigpe3JldHVybiAxPT0rK3RoaXMuYWN0aXZlJiYodGhpcy5zdGF0ZS5lbWl0dGVyPXRoaXMsdGhpcy5zdGFydGluZz0hMCksdGhpc30sc3RhcnQ6ZnVuY3Rpb24odCxuKXtyZXR1cm4gdGhpcy5zdGFydGluZz8odGhpcy5zdGFydGluZz0hMSx0aGlzLmVtaXQoInN0YXJ0Iix0LG4pKTp0aGlzLmVtaXQoImJydXNoIix0KSx0aGlzfSxicnVzaDpmdW5jdGlvbih0LG4pe3JldHVybiB0aGlzLmVtaXQoImJydXNoIix0LG4pLHRoaXN9LGVuZDpmdW5jdGlvbih0LG4pe3JldHVybiAwPT0tLXRoaXMuYWN0aXZlJiYoZGVsZXRlIHRoaXMuc3RhdGUuZW1pdHRlcix0aGlzLmVtaXQoImVuZCIsdCxuKSksdGhpc30sZW1pdDpmdW5jdGlvbihuLGUscil7dmFyIGk9V24odGhpcy50aGF0KS5kYXR1bSgpO2EuY2FsbChuLHRoaXMudGhhdCxuZXcgTG8obix7c291cmNlRXZlbnQ6ZSx0YXJnZXQ6YyxzZWxlY3Rpb246dC5vdXRwdXQodGhpcy5zdGF0ZS5zZWxlY3Rpb24pLG1vZGU6cixkaXNwYXRjaDphfSksaSl9fSxjLmV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OllvKEpvKHQpKSxjKTplfSxjLmZpbHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OllvKCEhdCksYyk6cn0sYy50b3VjaGFibGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpZbyghIXQpLGMpOml9LGMuaGFuZGxlU2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0rdCxjKTp1fSxjLmtleU1vZGlmaWVycz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0hIXQsYyk6b30sYy5vbj1mdW5jdGlvbigpe3ZhciB0PWEub24uYXBwbHkoYSxhcmd1bWVudHMpO3JldHVybiB0PT09YT9jOnR9LGN9dmFyIGdhPU1hdGguYWJzLHlhPU1hdGguY29zLHZhPU1hdGguc2luLF9hPU1hdGguUEksYmE9X2EvMixtYT0yKl9hLHhhPU1hdGgubWF4LHdhPTFlLTEyO2Z1bmN0aW9uIE1hKHQsbil7cmV0dXJuIEFycmF5LmZyb20oe2xlbmd0aDpuLXR9LCgobixlKT0+dCtlKSl9ZnVuY3Rpb24gQWEodCl7cmV0dXJuIGZ1bmN0aW9uKG4sZSl7cmV0dXJuIHQobi5zb3VyY2UudmFsdWUrbi50YXJnZXQudmFsdWUsZS5zb3VyY2UudmFsdWUrZS50YXJnZXQudmFsdWUpfX1mdW5jdGlvbiBUYSh0LG4pe3ZhciBlPTAscj1udWxsLGk9bnVsbCxvPW51bGw7ZnVuY3Rpb24gYShhKXt2YXIgdSxjPWEubGVuZ3RoLGY9bmV3IEFycmF5KGMpLHM9TWEoMCxjKSxsPW5ldyBBcnJheShjKmMpLGg9bmV3IEFycmF5KGMpLGQ9MDthPUZsb2F0NjRBcnJheS5mcm9tKHtsZW5ndGg6YypjfSxuPyh0LG4pPT5hW24lY11bbi9jfDBdOih0LG4pPT5hW24vY3wwXVtuJWNdKTtmb3IobGV0IG49MDtuPGM7KytuKXtsZXQgZT0wO2ZvcihsZXQgcj0wO3I8YzsrK3IpZSs9YVtuKmMrcl0rdCphW3IqYytuXTtkKz1mW25dPWV9dT0oZD14YSgwLG1hLWUqYykvZCk/ZTptYS9jO3tsZXQgbj0wO3ImJnMuc29ydCgoKHQsbik9PnIoZlt0XSxmW25dKSkpO2Zvcihjb25zdCBlIG9mIHMpe2NvbnN0IHI9bjtpZih0KXtjb25zdCB0PU1hKDErfmMsYykuZmlsdGVyKCh0PT50PDA/YVt+dCpjK2VdOmFbZSpjK3RdKSk7aSYmdC5zb3J0KCgodCxuKT0+aSh0PDA/LWFbfnQqYytlXTphW2UqYyt0XSxuPDA/LWFbfm4qYytlXTphW2UqYytuXSkpKTtmb3IoY29uc3QgciBvZiB0KWlmKHI8MCl7KGxbfnIqYytlXXx8KGxbfnIqYytlXT17c291cmNlOm51bGwsdGFyZ2V0Om51bGx9KSkudGFyZ2V0PXtpbmRleDplLHN0YXJ0QW5nbGU6bixlbmRBbmdsZTpuKz1hW35yKmMrZV0qZCx2YWx1ZTphW35yKmMrZV19fWVsc2V7KGxbZSpjK3JdfHwobFtlKmMrcl09e3NvdXJjZTpudWxsLHRhcmdldDpudWxsfSkpLnNvdXJjZT17aW5kZXg6ZSxzdGFydEFuZ2xlOm4sZW5kQW5nbGU6bis9YVtlKmMrcl0qZCx2YWx1ZTphW2UqYytyXX19aFtlXT17aW5kZXg6ZSxzdGFydEFuZ2xlOnIsZW5kQW5nbGU6bix2YWx1ZTpmW2VdfX1lbHNle2NvbnN0IHQ9TWEoMCxjKS5maWx0ZXIoKHQ9PmFbZSpjK3RdfHxhW3QqYytlXSkpO2kmJnQuc29ydCgoKHQsbik9PmkoYVtlKmMrdF0sYVtlKmMrbl0pKSk7Zm9yKGNvbnN0IHIgb2YgdCl7bGV0IHQ7aWYoZTxyPyh0PWxbZSpjK3JdfHwobFtlKmMrcl09e3NvdXJjZTpudWxsLHRhcmdldDpudWxsfSksdC5zb3VyY2U9e2luZGV4OmUsc3RhcnRBbmdsZTpuLGVuZEFuZ2xlOm4rPWFbZSpjK3JdKmQsdmFsdWU6YVtlKmMrcl19KToodD1sW3IqYytlXXx8KGxbcipjK2VdPXtzb3VyY2U6bnVsbCx0YXJnZXQ6bnVsbH0pLHQudGFyZ2V0PXtpbmRleDplLHN0YXJ0QW5nbGU6bixlbmRBbmdsZTpuKz1hW2UqYytyXSpkLHZhbHVlOmFbZSpjK3JdfSxlPT09ciYmKHQuc291cmNlPXQudGFyZ2V0KSksdC5zb3VyY2UmJnQudGFyZ2V0JiZ0LnNvdXJjZS52YWx1ZTx0LnRhcmdldC52YWx1ZSl7Y29uc3Qgbj10LnNvdXJjZTt0LnNvdXJjZT10LnRhcmdldCx0LnRhcmdldD1ufX1oW2VdPXtpbmRleDplLHN0YXJ0QW5nbGU6cixlbmRBbmdsZTpuLHZhbHVlOmZbZV19fW4rPXV9fXJldHVybihsPU9iamVjdC52YWx1ZXMobCkpLmdyb3Vwcz1oLG8/bC5zb3J0KG8pOmx9cmV0dXJuIGEucGFkQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9eGEoMCx0KSxhKTplfSxhLnNvcnRHcm91cHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dCxhKTpyfSxhLnNvcnRTdWJncm91cHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9dCxhKTppfSxhLnNvcnRDaG9yZHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG51bGw9PXQ/bz1udWxsOihvPUFhKHQpKS5fPXQsYSk6byYmby5ffSxhfWNvbnN0IFNhPU1hdGguUEksRWE9MipTYSxrYT0xZS02LE5hPUVhLWthO2Z1bmN0aW9uIENhKCl7dGhpcy5feDA9dGhpcy5feTA9dGhpcy5feDE9dGhpcy5feTE9bnVsbCx0aGlzLl89IiJ9ZnVuY3Rpb24gUGEoKXtyZXR1cm4gbmV3IENhfUNhLnByb3RvdHlwZT1QYS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkNhLG1vdmVUbzpmdW5jdGlvbih0LG4pe3RoaXMuXys9Ik0iKyh0aGlzLl94MD10aGlzLl94MT0rdCkrIiwiKyh0aGlzLl95MD10aGlzLl95MT0rbil9LGNsb3NlUGF0aDpmdW5jdGlvbigpe251bGwhPT10aGlzLl94MSYmKHRoaXMuX3gxPXRoaXMuX3gwLHRoaXMuX3kxPXRoaXMuX3kwLHRoaXMuXys9IloiKX0sbGluZVRvOmZ1bmN0aW9uKHQsbil7dGhpcy5fKz0iTCIrKHRoaXMuX3gxPSt0KSsiLCIrKHRoaXMuX3kxPStuKX0scXVhZHJhdGljQ3VydmVUbzpmdW5jdGlvbih0LG4sZSxyKXt0aGlzLl8rPSJRIisgK3QrIiwiKyArbisiLCIrKHRoaXMuX3gxPStlKSsiLCIrKHRoaXMuX3kxPStyKX0sYmV6aWVyQ3VydmVUbzpmdW5jdGlvbih0LG4sZSxyLGksbyl7dGhpcy5fKz0iQyIrICt0KyIsIisgK24rIiwiKyArZSsiLCIrICtyKyIsIisodGhpcy5feDE9K2kpKyIsIisodGhpcy5feTE9K28pfSxhcmNUbzpmdW5jdGlvbih0LG4sZSxyLGkpe3Q9K3Qsbj0rbixlPStlLHI9K3IsaT0raTt2YXIgbz10aGlzLl94MSxhPXRoaXMuX3kxLHU9ZS10LGM9ci1uLGY9by10LHM9YS1uLGw9ZipmK3MqcztpZihpPDApdGhyb3cgbmV3IEVycm9yKCJuZWdhdGl2ZSByYWRpdXM6ICIraSk7aWYobnVsbD09PXRoaXMuX3gxKXRoaXMuXys9Ik0iKyh0aGlzLl94MT10KSsiLCIrKHRoaXMuX3kxPW4pO2Vsc2UgaWYobD5rYSlpZihNYXRoLmFicyhzKnUtYypmKT5rYSYmaSl7dmFyIGg9ZS1vLGQ9ci1hLHA9dSp1K2MqYyxnPWgqaCtkKmQseT1NYXRoLnNxcnQocCksdj1NYXRoLnNxcnQobCksXz1pKk1hdGgudGFuKChTYS1NYXRoLmFjb3MoKHArbC1nKS8oMip5KnYpKSkvMiksYj1fL3YsbT1fL3k7TWF0aC5hYnMoYi0xKT5rYSYmKHRoaXMuXys9IkwiKyh0K2IqZikrIiwiKyhuK2IqcykpLHRoaXMuXys9IkEiK2krIiwiK2krIiwwLDAsIisgKyhzKmg+ZipkKSsiLCIrKHRoaXMuX3gxPXQrbSp1KSsiLCIrKHRoaXMuX3kxPW4rbSpjKX1lbHNlIHRoaXMuXys9IkwiKyh0aGlzLl94MT10KSsiLCIrKHRoaXMuX3kxPW4pO2Vsc2U7fSxhcmM6ZnVuY3Rpb24odCxuLGUscixpLG8pe3Q9K3Qsbj0rbixvPSEhbzt2YXIgYT0oZT0rZSkqTWF0aC5jb3MociksdT1lKk1hdGguc2luKHIpLGM9dCthLGY9bit1LHM9MV5vLGw9bz9yLWk6aS1yO2lmKGU8MCl0aHJvdyBuZXcgRXJyb3IoIm5lZ2F0aXZlIHJhZGl1czogIitlKTtudWxsPT09dGhpcy5feDE/dGhpcy5fKz0iTSIrYysiLCIrZjooTWF0aC5hYnModGhpcy5feDEtYyk+a2F8fE1hdGguYWJzKHRoaXMuX3kxLWYpPmthKSYmKHRoaXMuXys9IkwiK2MrIiwiK2YpLGUmJihsPDAmJihsPWwlRWErRWEpLGw+TmE/dGhpcy5fKz0iQSIrZSsiLCIrZSsiLDAsMSwiK3MrIiwiKyh0LWEpKyIsIisobi11KSsiQSIrZSsiLCIrZSsiLDAsMSwiK3MrIiwiKyh0aGlzLl94MT1jKSsiLCIrKHRoaXMuX3kxPWYpOmw+a2EmJih0aGlzLl8rPSJBIitlKyIsIitlKyIsMCwiKyArKGw+PVNhKSsiLCIrcysiLCIrKHRoaXMuX3gxPXQrZSpNYXRoLmNvcyhpKSkrIiwiKyh0aGlzLl95MT1uK2UqTWF0aC5zaW4oaSkpKSl9LHJlY3Q6ZnVuY3Rpb24odCxuLGUscil7dGhpcy5fKz0iTSIrKHRoaXMuX3gwPXRoaXMuX3gxPSt0KSsiLCIrKHRoaXMuX3kwPXRoaXMuX3kxPStuKSsiaCIrICtlKyJ2IisgK3IrImgiKy1lKyJaIn0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ffX07dmFyIHphPUFycmF5LnByb3RvdHlwZS5zbGljZTtmdW5jdGlvbiBEYSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gUmEodCl7cmV0dXJuIHQuc291cmNlfWZ1bmN0aW9uIEZhKHQpe3JldHVybiB0LnRhcmdldH1mdW5jdGlvbiBxYSh0KXtyZXR1cm4gdC5yYWRpdXN9ZnVuY3Rpb24gSWEodCl7cmV0dXJuIHQuc3RhcnRBbmdsZX1mdW5jdGlvbiBPYSh0KXtyZXR1cm4gdC5lbmRBbmdsZX1mdW5jdGlvbiBVYSgpe3JldHVybiAwfWZ1bmN0aW9uIEJhKCl7cmV0dXJuIDEwfWZ1bmN0aW9uIFlhKHQpe3ZhciBuPVJhLGU9RmEscj1xYSxpPXFhLG89SWEsYT1PYSx1PVVhLGM9bnVsbDtmdW5jdGlvbiBmKCl7dmFyIGYscz1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxsPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpLGg9dS5hcHBseSh0aGlzLGFyZ3VtZW50cykvMixkPXphLmNhbGwoYXJndW1lbnRzKSxwPStyLmFwcGx5KHRoaXMsKGRbMF09cyxkKSksZz1vLmFwcGx5KHRoaXMsZCktYmEseT1hLmFwcGx5KHRoaXMsZCktYmEsdj0raS5hcHBseSh0aGlzLChkWzBdPWwsZCkpLF89by5hcHBseSh0aGlzLGQpLWJhLGI9YS5hcHBseSh0aGlzLGQpLWJhO2lmKGN8fChjPWY9UGEoKSksaD53YSYmKGdhKHktZyk+MipoK3dhP3k+Zz8oZys9aCx5LT1oKTooZy09aCx5Kz1oKTpnPXk9KGcreSkvMixnYShiLV8pPjIqaCt3YT9iPl8/KF8rPWgsYi09aCk6KF8tPWgsYis9aCk6Xz1iPShfK2IpLzIpLGMubW92ZVRvKHAqeWEoZykscCp2YShnKSksYy5hcmMoMCwwLHAsZyx5KSxnIT09X3x8eSE9PWIpaWYodCl7dmFyIG09K3QuYXBwbHkodGhpcyxhcmd1bWVudHMpLHg9di1tLHc9KF8rYikvMjtjLnF1YWRyYXRpY0N1cnZlVG8oMCwwLHgqeWEoXykseCp2YShfKSksYy5saW5lVG8odip5YSh3KSx2KnZhKHcpKSxjLmxpbmVUbyh4KnlhKGIpLHgqdmEoYikpfWVsc2UgYy5xdWFkcmF0aWNDdXJ2ZVRvKDAsMCx2KnlhKF8pLHYqdmEoXykpLGMuYXJjKDAsMCx2LF8sYik7aWYoYy5xdWFkcmF0aWNDdXJ2ZVRvKDAsMCxwKnlhKGcpLHAqdmEoZykpLGMuY2xvc2VQYXRoKCksZilyZXR1cm4gYz1udWxsLGYrIiJ8fG51bGx9cmV0dXJuIHQmJihmLmhlYWRSYWRpdXM9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpEYSgrbiksZik6dH0pLGYucmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPWk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpEYSgrdCksZik6cn0sZi5zb3VyY2VSYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpEYSgrdCksZik6cn0sZi50YXJnZXRSYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpEYSgrdCksZik6aX0sZi5zdGFydEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6RGEoK3QpLGYpOm99LGYuZW5kQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpEYSgrdCksZik6YX0sZi5wYWRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkRhKCt0KSxmKTp1fSxmLnNvdXJjZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10LGYpOm59LGYudGFyZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXQsZik6ZX0sZi5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPW51bGw9PXQ/bnVsbDp0LGYpOmN9LGZ9dmFyIExhPUFycmF5LnByb3RvdHlwZS5zbGljZTtmdW5jdGlvbiBqYSh0LG4pe3JldHVybiB0LW59dmFyICRhPXQ9PigpPT50O2Z1bmN0aW9uIEhhKHQsbil7Zm9yKHZhciBlLHI9LTEsaT1uLmxlbmd0aDsrK3I8aTspaWYoZT1YYSh0LG5bcl0pKXJldHVybiBlO3JldHVybiAwfWZ1bmN0aW9uIFhhKHQsbil7Zm9yKHZhciBlPW5bMF0scj1uWzFdLGk9LTEsbz0wLGE9dC5sZW5ndGgsdT1hLTE7bzxhO3U9bysrKXt2YXIgYz10W29dLGY9Y1swXSxzPWNbMV0sbD10W3VdLGg9bFswXSxkPWxbMV07aWYoR2EoYyxsLG4pKXJldHVybiAwO3M+ciE9ZD5yJiZlPChoLWYpKihyLXMpLyhkLXMpK2YmJihpPS1pKX1yZXR1cm4gaX1mdW5jdGlvbiBHYSh0LG4sZSl7dmFyIHIsaSxvLGE7cmV0dXJuIGZ1bmN0aW9uKHQsbixlKXtyZXR1cm4oblswXS10WzBdKSooZVsxXS10WzFdKT09KGVbMF0tdFswXSkqKG5bMV0tdFsxXSl9KHQsbixlKSYmKGk9dFtyPSsodFswXT09PW5bMF0pXSxvPWVbcl0sYT1uW3JdLGk8PW8mJm88PWF8fGE8PW8mJm88PWkpfWZ1bmN0aW9uIFZhKCl7fXZhciBXYT1bW10sW1tbMSwxLjVdLFsuNSwxXV1dLFtbWzEuNSwxXSxbMSwxLjVdXV0sW1tbMS41LDFdLFsuNSwxXV1dLFtbWzEsLjVdLFsxLjUsMV1dXSxbW1sxLDEuNV0sWy41LDFdXSxbWzEsLjVdLFsxLjUsMV1dXSxbW1sxLC41XSxbMSwxLjVdXV0sW1tbMSwuNV0sWy41LDFdXV0sW1tbLjUsMV0sWzEsLjVdXV0sW1tbMSwxLjVdLFsxLC41XV1dLFtbWy41LDFdLFsxLC41XV0sW1sxLjUsMV0sWzEsMS41XV1dLFtbWzEuNSwxXSxbMSwuNV1dXSxbW1suNSwxXSxbMS41LDFdXV0sW1tbMSwxLjVdLFsxLjUsMV1dXSxbW1suNSwxXSxbMSwxLjVdXV0sW11dO2Z1bmN0aW9uIFphKCl7dmFyIHQ9MSxuPTEsZT1LLHI9dTtmdW5jdGlvbiBpKHQpe3ZhciBuPWUodCk7aWYoQXJyYXkuaXNBcnJheShuKSluPW4uc2xpY2UoKS5zb3J0KGphKTtlbHNle2NvbnN0IGU9QSh0KSxyPVcoZVswXSxlWzFdLG4pO249RyhNYXRoLmZsb29yKGVbMF0vcikqcixNYXRoLmZsb29yKGVbMV0vci0xKSpyLG4pfXJldHVybiBuLm1hcCgobj0+byh0LG4pKSl9ZnVuY3Rpb24gbyhlLGkpe3ZhciBvPVtdLHU9W107cmV0dXJuIGZ1bmN0aW9uKGUscixpKXt2YXIgbyx1LGMsZixzLGwsaD1uZXcgQXJyYXksZD1uZXcgQXJyYXk7bz11PS0xLGY9ZVswXT49cixXYVtmPDwxXS5mb3JFYWNoKHApO2Zvcig7KytvPHQtMTspYz1mLGY9ZVtvKzFdPj1yLFdhW2N8Zjw8MV0uZm9yRWFjaChwKTtXYVtmPDwwXS5mb3JFYWNoKHApO2Zvcig7Kyt1PG4tMTspe2ZvcihvPS0xLGY9ZVt1KnQrdF0+PXIscz1lW3UqdF0+PXIsV2FbZjw8MXxzPDwyXS5mb3JFYWNoKHApOysrbzx0LTE7KWM9ZixmPWVbdSp0K3QrbysxXT49cixsPXMscz1lW3UqdCtvKzFdPj1yLFdhW2N8Zjw8MXxzPDwyfGw8PDNdLmZvckVhY2gocCk7V2FbZnxzPDwzXS5mb3JFYWNoKHApfW89LTEscz1lW3UqdF0+PXIsV2Fbczw8Ml0uZm9yRWFjaChwKTtmb3IoOysrbzx0LTE7KWw9cyxzPWVbdSp0K28rMV0+PXIsV2Fbczw8MnxsPDwzXS5mb3JFYWNoKHApO2Z1bmN0aW9uIHAodCl7dmFyIG4sZSxyPVt0WzBdWzBdK28sdFswXVsxXSt1XSxjPVt0WzFdWzBdK28sdFsxXVsxXSt1XSxmPWEocikscz1hKGMpOyhuPWRbZl0pPyhlPWhbc10pPyhkZWxldGUgZFtuLmVuZF0sZGVsZXRlIGhbZS5zdGFydF0sbj09PWU/KG4ucmluZy5wdXNoKGMpLGkobi5yaW5nKSk6aFtuLnN0YXJ0XT1kW2UuZW5kXT17c3RhcnQ6bi5zdGFydCxlbmQ6ZS5lbmQscmluZzpuLnJpbmcuY29uY2F0KGUucmluZyl9KTooZGVsZXRlIGRbbi5lbmRdLG4ucmluZy5wdXNoKGMpLGRbbi5lbmQ9c109bik6KG49aFtzXSk/KGU9ZFtmXSk/KGRlbGV0ZSBoW24uc3RhcnRdLGRlbGV0ZSBkW2UuZW5kXSxuPT09ZT8obi5yaW5nLnB1c2goYyksaShuLnJpbmcpKTpoW2Uuc3RhcnRdPWRbbi5lbmRdPXtzdGFydDplLnN0YXJ0LGVuZDpuLmVuZCxyaW5nOmUucmluZy5jb25jYXQobi5yaW5nKX0pOihkZWxldGUgaFtuLnN0YXJ0XSxuLnJpbmcudW5zaGlmdChyKSxoW24uc3RhcnQ9Zl09bik6aFtmXT1kW3NdPXtzdGFydDpmLGVuZDpzLHJpbmc6W3IsY119fVdhW3M8PDNdLmZvckVhY2gocCl9KGUsaSwoZnVuY3Rpb24odCl7cih0LGUsaSksZnVuY3Rpb24odCl7Zm9yKHZhciBuPTAsZT10Lmxlbmd0aCxyPXRbZS0xXVsxXSp0WzBdWzBdLXRbZS0xXVswXSp0WzBdWzFdOysrbjxlOylyKz10W24tMV1bMV0qdFtuXVswXS10W24tMV1bMF0qdFtuXVsxXTtyZXR1cm4gcn0odCk+MD9vLnB1c2goW3RdKTp1LnB1c2godCl9KSksdS5mb3JFYWNoKChmdW5jdGlvbih0KXtmb3IodmFyIG4sZT0wLHI9by5sZW5ndGg7ZTxyOysrZSlpZigtMSE9PUhhKChuPW9bZV0pWzBdLHQpKXJldHVybiB2b2lkIG4ucHVzaCh0KX0pKSx7dHlwZToiTXVsdGlQb2x5Z29uIix2YWx1ZTppLGNvb3JkaW5hdGVzOm99fWZ1bmN0aW9uIGEobil7cmV0dXJuIDIqblswXStuWzFdKih0KzEpKjR9ZnVuY3Rpb24gdShlLHIsaSl7ZS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgbyxhPWVbMF0sdT1lWzFdLGM9MHxhLGY9MHx1LHM9cltmKnQrY107YT4wJiZhPHQmJmM9PT1hJiYobz1yW2YqdCtjLTFdLGVbMF09YSsoaS1vKS8ocy1vKS0uNSksdT4wJiZ1PG4mJmY9PT11JiYobz1yWyhmLTEpKnQrY10sZVsxXT11KyhpLW8pLyhzLW8pLS41KX0pKX1yZXR1cm4gaS5jb250b3VyPW8saS5zaXplPWZ1bmN0aW9uKGUpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVyblt0LG5dO3ZhciByPU1hdGguZmxvb3IoZVswXSksbz1NYXRoLmZsb29yKGVbMV0pO2lmKCEocj49MCYmbz49MCkpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHNpemUiKTtyZXR1cm4gdD1yLG49byxpfSxpLnRocmVzaG9sZHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpBcnJheS5pc0FycmF5KHQpPyRhKExhLmNhbGwodCkpOiRhKHQpLGkpOmV9LGkuc21vb3RoPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQ/dTpWYSxpKTpyPT09dX0saX1mdW5jdGlvbiBLYSh0KXtyZXR1cm4gdFswXX1mdW5jdGlvbiBRYSh0KXtyZXR1cm4gdFsxXX1mdW5jdGlvbiBKYSgpe3JldHVybiAxfWNvbnN0IHR1PTEzNDIxNzcyOTtmdW5jdGlvbiBudSh0LG4sZSxyLGkpe2xldCBvLGEsdSxjLGY9blswXSxzPXJbMF0sbD0wLGg9MDtzPmY9PXM+LWY/KG89ZixmPW5bKytsXSk6KG89cyxzPXJbKytoXSk7bGV0IGQ9MDtpZihsPHQmJmg8ZSlmb3Iocz5mPT1zPi1mPyhhPWYrbyx1PW8tKGEtZiksZj1uWysrbF0pOihhPXMrbyx1PW8tKGEtcykscz1yWysraF0pLG89YSwwIT09dSYmKGlbZCsrXT11KTtsPHQmJmg8ZTspcz5mPT1zPi1mPyhhPW8rZixjPWEtbyx1PW8tKGEtYykrKGYtYyksZj1uWysrbF0pOihhPW8rcyxjPWEtbyx1PW8tKGEtYykrKHMtYykscz1yWysraF0pLG89YSwwIT09dSYmKGlbZCsrXT11KTtmb3IoO2w8dDspYT1vK2YsYz1hLW8sdT1vLShhLWMpKyhmLWMpLGY9blsrK2xdLG89YSwwIT09dSYmKGlbZCsrXT11KTtmb3IoO2g8ZTspYT1vK3MsYz1hLW8sdT1vLShhLWMpKyhzLWMpLHM9clsrK2hdLG89YSwwIT09dSYmKGlbZCsrXT11KTtyZXR1cm4gMD09PW8mJjAhPT1kfHwoaVtkKytdPW8pLGR9ZnVuY3Rpb24gZXUodCl7cmV0dXJuIG5ldyBGbG9hdDY0QXJyYXkodCl9Y29uc3QgcnU9ZXUoNCksaXU9ZXUoOCksb3U9ZXUoMTIpLGF1PWV1KDE2KSx1dT1ldSg0KTtmdW5jdGlvbiBjdSh0LG4sZSxyLGksbyl7Y29uc3QgYT0obi1vKSooZS1pKSx1PSh0LWkpKihyLW8pLGM9YS11O2lmKDA9PT1hfHwwPT09dXx8YT4wIT11PjApcmV0dXJuIGM7Y29uc3QgZj1NYXRoLmFicyhhK3UpO3JldHVybiBNYXRoLmFicyhjKT49MzMzMDY2OTA3Mzg3NTQ3MTZlLTMyKmY/YzotZnVuY3Rpb24odCxuLGUscixpLG8sYSl7bGV0IHUsYyxmLHMsbCxoLGQscCxnLHksdixfLGIsbSx4LHcsTSxBO2NvbnN0IFQ9dC1pLFM9ZS1pLEU9bi1vLGs9ci1vO209VCprLGg9dHUqVCxkPWgtKGgtVCkscD1ULWQsaD10dSprLGc9aC0oaC1rKSx5PWstZyx4PXAqeS0obS1kKmctcCpnLWQqeSksdz1FKlMsaD10dSpFLGQ9aC0oaC1FKSxwPUUtZCxoPXR1KlMsZz1oLShoLVMpLHk9Uy1nLE09cCp5LSh3LWQqZy1wKmctZCp5KSx2PXgtTSxsPXgtdixydVswXT14LSh2K2wpKyhsLU0pLF89bSt2LGw9Xy1tLGI9bS0oXy1sKSsodi1sKSx2PWItdyxsPWItdixydVsxXT1iLSh2K2wpKyhsLXcpLEE9Xyt2LGw9QS1fLHJ1WzJdPV8tKEEtbCkrKHYtbCkscnVbM109QTtsZXQgTj1mdW5jdGlvbih0LG4pe2xldCBlPW5bMF07Zm9yKGxldCByPTE7cjx0O3IrKyllKz1uW3JdO3JldHVybiBlfSg0LHJ1KSxDPTIyMjA0NDYwNDkyNTAzMTQ2ZS0zMiphO2lmKE4+PUN8fC1OPj1DKXJldHVybiBOO2lmKGw9dC1ULHU9dC0oVCtsKSsobC1pKSxsPWUtUyxmPWUtKFMrbCkrKGwtaSksbD1uLUUsYz1uLShFK2wpKyhsLW8pLGw9ci1rLHM9ci0oaytsKSsobC1vKSwwPT09dSYmMD09PWMmJjA9PT1mJiYwPT09cylyZXR1cm4gTjtpZihDPTExMDkzMzU2NDc5NjcwNDg3ZS00NyphKzMzMzA2NjkwNzM4NzU0NzA2ZS0zMipNYXRoLmFicyhOKSxOKz1UKnMrayp1LShFKmYrUypjKSxOPj1DfHwtTj49QylyZXR1cm4gTjttPXUqayxoPXR1KnUsZD1oLShoLXUpLHA9dS1kLGg9dHUqayxnPWgtKGgtaykseT1rLWcseD1wKnktKG0tZCpnLXAqZy1kKnkpLHc9YypTLGg9dHUqYyxkPWgtKGgtYykscD1jLWQsaD10dSpTLGc9aC0oaC1TKSx5PVMtZyxNPXAqeS0ody1kKmctcCpnLWQqeSksdj14LU0sbD14LXYsdXVbMF09eC0oditsKSsobC1NKSxfPW0rdixsPV8tbSxiPW0tKF8tbCkrKHYtbCksdj1iLXcsbD1iLXYsdXVbMV09Yi0oditsKSsobC13KSxBPV8rdixsPUEtXyx1dVsyXT1fLShBLWwpKyh2LWwpLHV1WzNdPUE7Y29uc3QgUD1udSg0LHJ1LDQsdXUsaXUpO209VCpzLGg9dHUqVCxkPWgtKGgtVCkscD1ULWQsaD10dSpzLGc9aC0oaC1zKSx5PXMtZyx4PXAqeS0obS1kKmctcCpnLWQqeSksdz1FKmYsaD10dSpFLGQ9aC0oaC1FKSxwPUUtZCxoPXR1KmYsZz1oLShoLWYpLHk9Zi1nLE09cCp5LSh3LWQqZy1wKmctZCp5KSx2PXgtTSxsPXgtdix1dVswXT14LSh2K2wpKyhsLU0pLF89bSt2LGw9Xy1tLGI9bS0oXy1sKSsodi1sKSx2PWItdyxsPWItdix1dVsxXT1iLSh2K2wpKyhsLXcpLEE9Xyt2LGw9QS1fLHV1WzJdPV8tKEEtbCkrKHYtbCksdXVbM109QTtjb25zdCB6PW51KFAsaXUsNCx1dSxvdSk7bT11KnMsaD10dSp1LGQ9aC0oaC11KSxwPXUtZCxoPXR1KnMsZz1oLShoLXMpLHk9cy1nLHg9cCp5LShtLWQqZy1wKmctZCp5KSx3PWMqZixoPXR1KmMsZD1oLShoLWMpLHA9Yy1kLGg9dHUqZixnPWgtKGgtZikseT1mLWcsTT1wKnktKHctZCpnLXAqZy1kKnkpLHY9eC1NLGw9eC12LHV1WzBdPXgtKHYrbCkrKGwtTSksXz1tK3YsbD1fLW0sYj1tLShfLWwpKyh2LWwpLHY9Yi13LGw9Yi12LHV1WzFdPWItKHYrbCkrKGwtdyksQT1fK3YsbD1BLV8sdXVbMl09Xy0oQS1sKSsodi1sKSx1dVszXT1BO2NvbnN0IEQ9bnUoeixvdSw0LHV1LGF1KTtyZXR1cm4gYXVbRC0xXX0odCxuLGUscixpLG8sZil9Y29uc3QgZnU9TWF0aC5wb3coMiwtNTIpLHN1PW5ldyBVaW50MzJBcnJheSg1MTIpO2NsYXNzIGx1e3N0YXRpYyBmcm9tKHQsbj12dSxlPV91KXtjb25zdCByPXQubGVuZ3RoLGk9bmV3IEZsb2F0NjRBcnJheSgyKnIpO2ZvcihsZXQgbz0wO288cjtvKyspe2NvbnN0IHI9dFtvXTtpWzIqb109bihyKSxpWzIqbysxXT1lKHIpfXJldHVybiBuZXcgbHUoaSl9Y29uc3RydWN0b3IodCl7Y29uc3Qgbj10Lmxlbmd0aD4+MTtpZihuPjAmJiJudW1iZXIiIT10eXBlb2YgdFswXSl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIGNvb3JkcyB0byBjb250YWluIG51bWJlcnMuIik7dGhpcy5jb29yZHM9dDtjb25zdCBlPU1hdGgubWF4KDIqbi01LDApO3RoaXMuX3RyaWFuZ2xlcz1uZXcgVWludDMyQXJyYXkoMyplKSx0aGlzLl9oYWxmZWRnZXM9bmV3IEludDMyQXJyYXkoMyplKSx0aGlzLl9oYXNoU2l6ZT1NYXRoLmNlaWwoTWF0aC5zcXJ0KG4pKSx0aGlzLl9odWxsUHJldj1uZXcgVWludDMyQXJyYXkobiksdGhpcy5faHVsbE5leHQ9bmV3IFVpbnQzMkFycmF5KG4pLHRoaXMuX2h1bGxUcmk9bmV3IFVpbnQzMkFycmF5KG4pLHRoaXMuX2h1bGxIYXNoPW5ldyBJbnQzMkFycmF5KHRoaXMuX2hhc2hTaXplKS5maWxsKC0xKSx0aGlzLl9pZHM9bmV3IFVpbnQzMkFycmF5KG4pLHRoaXMuX2Rpc3RzPW5ldyBGbG9hdDY0QXJyYXkobiksdGhpcy51cGRhdGUoKX11cGRhdGUoKXtjb25zdHtjb29yZHM6dCxfaHVsbFByZXY6bixfaHVsbE5leHQ6ZSxfaHVsbFRyaTpyLF9odWxsSGFzaDppfT10aGlzLG89dC5sZW5ndGg+PjE7bGV0IGE9MS8wLHU9MS8wLGM9LTEvMCxmPS0xLzA7Zm9yKGxldCBuPTA7bjxvO24rKyl7Y29uc3QgZT10WzIqbl0scj10WzIqbisxXTtlPGEmJihhPWUpLHI8dSYmKHU9ciksZT5jJiYoYz1lKSxyPmYmJihmPXIpLHRoaXMuX2lkc1tuXT1ufWNvbnN0IHM9KGErYykvMixsPSh1K2YpLzI7bGV0IGgsZCxwLGc9MS8wO2ZvcihsZXQgbj0wO248bztuKyspe2NvbnN0IGU9aHUocyxsLHRbMipuXSx0WzIqbisxXSk7ZTxnJiYoaD1uLGc9ZSl9Y29uc3QgeT10WzIqaF0sdj10WzIqaCsxXTtnPTEvMDtmb3IobGV0IG49MDtuPG87bisrKXtpZihuPT09aCljb250aW51ZTtjb25zdCBlPWh1KHksdix0WzIqbl0sdFsyKm4rMV0pO2U8ZyYmZT4wJiYoZD1uLGc9ZSl9bGV0IF89dFsyKmRdLGI9dFsyKmQrMV0sbT0xLzA7Zm9yKGxldCBuPTA7bjxvO24rKyl7aWYobj09PWh8fG49PT1kKWNvbnRpbnVlO2NvbnN0IGU9cHUoeSx2LF8sYix0WzIqbl0sdFsyKm4rMV0pO2U8bSYmKHA9bixtPWUpfWxldCB4PXRbMipwXSx3PXRbMipwKzFdO2lmKG09PT0xLzApe2ZvcihsZXQgbj0wO248bztuKyspdGhpcy5fZGlzdHNbbl09dFsyKm5dLXRbMF18fHRbMipuKzFdLXRbMV07Z3UodGhpcy5faWRzLHRoaXMuX2Rpc3RzLDAsby0xKTtjb25zdCBuPW5ldyBVaW50MzJBcnJheShvKTtsZXQgZT0wO2ZvcihsZXQgdD0wLHI9LTEvMDt0PG87dCsrKXtjb25zdCBpPXRoaXMuX2lkc1t0XTt0aGlzLl9kaXN0c1tpXT5yJiYobltlKytdPWkscj10aGlzLl9kaXN0c1tpXSl9cmV0dXJuIHRoaXMuaHVsbD1uLnN1YmFycmF5KDAsZSksdGhpcy50cmlhbmdsZXM9bmV3IFVpbnQzMkFycmF5KDApLHZvaWQodGhpcy5oYWxmZWRnZXM9bmV3IFVpbnQzMkFycmF5KDApKX1pZihjdSh5LHYsXyxiLHgsdyk8MCl7Y29uc3QgdD1kLG49XyxlPWI7ZD1wLF89eCxiPXcscD10LHg9bix3PWV9Y29uc3QgTT1mdW5jdGlvbih0LG4sZSxyLGksbyl7Y29uc3QgYT1lLXQsdT1yLW4sYz1pLXQsZj1vLW4scz1hKmErdSp1LGw9YypjK2YqZixoPS41LyhhKmYtdSpjKTtyZXR1cm57eDp0KyhmKnMtdSpsKSpoLHk6bisoYSpsLWMqcykqaH19KHksdixfLGIseCx3KTt0aGlzLl9jeD1NLngsdGhpcy5fY3k9TS55O2ZvcihsZXQgbj0wO248bztuKyspdGhpcy5fZGlzdHNbbl09aHUodFsyKm5dLHRbMipuKzFdLE0ueCxNLnkpO2d1KHRoaXMuX2lkcyx0aGlzLl9kaXN0cywwLG8tMSksdGhpcy5faHVsbFN0YXJ0PWg7bGV0IEE9MztlW2hdPW5bcF09ZCxlW2RdPW5baF09cCxlW3BdPW5bZF09aCxyW2hdPTAscltkXT0xLHJbcF09MixpLmZpbGwoLTEpLGlbdGhpcy5faGFzaEtleSh5LHYpXT1oLGlbdGhpcy5faGFzaEtleShfLGIpXT1kLGlbdGhpcy5faGFzaEtleSh4LHcpXT1wLHRoaXMudHJpYW5nbGVzTGVuPTAsdGhpcy5fYWRkVHJpYW5nbGUoaCxkLHAsLTEsLTEsLTEpO2ZvcihsZXQgbyxhLHU9MDt1PHRoaXMuX2lkcy5sZW5ndGg7dSsrKXtjb25zdCBjPXRoaXMuX2lkc1t1XSxmPXRbMipjXSxzPXRbMipjKzFdO2lmKHU+MCYmTWF0aC5hYnMoZi1vKTw9ZnUmJk1hdGguYWJzKHMtYSk8PWZ1KWNvbnRpbnVlO2lmKG89ZixhPXMsYz09PWh8fGM9PT1kfHxjPT09cCljb250aW51ZTtsZXQgbD0wO2ZvcihsZXQgdD0wLG49dGhpcy5faGFzaEtleShmLHMpO3Q8dGhpcy5faGFzaFNpemUmJihsPWlbKG4rdCkldGhpcy5faGFzaFNpemVdLC0xPT09bHx8bD09PWVbbF0pO3QrKyk7bD1uW2xdO2xldCBnLHk9bDtmb3IoO2c9ZVt5XSxjdShmLHMsdFsyKnldLHRbMip5KzFdLHRbMipnXSx0WzIqZysxXSk+PTA7KWlmKHk9Zyx5PT09bCl7eT0tMTticmVha31pZigtMT09PXkpY29udGludWU7bGV0IHY9dGhpcy5fYWRkVHJpYW5nbGUoeSxjLGVbeV0sLTEsLTEsclt5XSk7cltjXT10aGlzLl9sZWdhbGl6ZSh2KzIpLHJbeV09dixBKys7bGV0IF89ZVt5XTtmb3IoO2c9ZVtfXSxjdShmLHMsdFsyKl9dLHRbMipfKzFdLHRbMipnXSx0WzIqZysxXSk8MDspdj10aGlzLl9hZGRUcmlhbmdsZShfLGMsZyxyW2NdLC0xLHJbX10pLHJbY109dGhpcy5fbGVnYWxpemUodisyKSxlW19dPV8sQS0tLF89ZztpZih5PT09bClmb3IoO2c9blt5XSxjdShmLHMsdFsyKmddLHRbMipnKzFdLHRbMip5XSx0WzIqeSsxXSk8MDspdj10aGlzLl9hZGRUcmlhbmdsZShnLGMseSwtMSxyW3ldLHJbZ10pLHRoaXMuX2xlZ2FsaXplKHYrMikscltnXT12LGVbeV09eSxBLS0seT1nO3RoaXMuX2h1bGxTdGFydD1uW2NdPXksZVt5XT1uW19dPWMsZVtjXT1fLGlbdGhpcy5faGFzaEtleShmLHMpXT1jLGlbdGhpcy5faGFzaEtleSh0WzIqeV0sdFsyKnkrMV0pXT15fXRoaXMuaHVsbD1uZXcgVWludDMyQXJyYXkoQSk7Zm9yKGxldCB0PTAsbj10aGlzLl9odWxsU3RhcnQ7dDxBO3QrKyl0aGlzLmh1bGxbdF09bixuPWVbbl07dGhpcy50cmlhbmdsZXM9dGhpcy5fdHJpYW5nbGVzLnN1YmFycmF5KDAsdGhpcy50cmlhbmdsZXNMZW4pLHRoaXMuaGFsZmVkZ2VzPXRoaXMuX2hhbGZlZGdlcy5zdWJhcnJheSgwLHRoaXMudHJpYW5nbGVzTGVuKX1faGFzaEtleSh0LG4pe3JldHVybiBNYXRoLmZsb29yKGZ1bmN0aW9uKHQsbil7Y29uc3QgZT10LyhNYXRoLmFicyh0KStNYXRoLmFicyhuKSk7cmV0dXJuKG4+MD8zLWU6MStlKS80fSh0LXRoaXMuX2N4LG4tdGhpcy5fY3kpKnRoaXMuX2hhc2hTaXplKSV0aGlzLl9oYXNoU2l6ZX1fbGVnYWxpemUodCl7Y29uc3R7X3RyaWFuZ2xlczpuLF9oYWxmZWRnZXM6ZSxjb29yZHM6cn09dGhpcztsZXQgaT0wLG89MDtmb3IoOzspe2NvbnN0IGE9ZVt0XSx1PXQtdCUzO2lmKG89dSsodCsyKSUzLC0xPT09YSl7aWYoMD09PWkpYnJlYWs7dD1zdVstLWldO2NvbnRpbnVlfWNvbnN0IGM9YS1hJTMsZj11Kyh0KzEpJTMscz1jKyhhKzIpJTMsbD1uW29dLGg9blt0XSxkPW5bZl0scD1uW3NdO2lmKGR1KHJbMipsXSxyWzIqbCsxXSxyWzIqaF0sclsyKmgrMV0sclsyKmRdLHJbMipkKzFdLHJbMipwXSxyWzIqcCsxXSkpe25bdF09cCxuW2FdPWw7Y29uc3Qgcj1lW3NdO2lmKC0xPT09cil7bGV0IG49dGhpcy5faHVsbFN0YXJ0O2Rve2lmKHRoaXMuX2h1bGxUcmlbbl09PT1zKXt0aGlzLl9odWxsVHJpW25dPXQ7YnJlYWt9bj10aGlzLl9odWxsUHJldltuXX13aGlsZShuIT09dGhpcy5faHVsbFN0YXJ0KX10aGlzLl9saW5rKHQsciksdGhpcy5fbGluayhhLGVbb10pLHRoaXMuX2xpbmsobyxzKTtjb25zdCB1PWMrKGErMSklMztpPHN1Lmxlbmd0aCYmKHN1W2krK109dSl9ZWxzZXtpZigwPT09aSlicmVhazt0PXN1Wy0taV19fXJldHVybiBvfV9saW5rKHQsbil7dGhpcy5faGFsZmVkZ2VzW3RdPW4sLTEhPT1uJiYodGhpcy5faGFsZmVkZ2VzW25dPXQpfV9hZGRUcmlhbmdsZSh0LG4sZSxyLGksbyl7Y29uc3QgYT10aGlzLnRyaWFuZ2xlc0xlbjtyZXR1cm4gdGhpcy5fdHJpYW5nbGVzW2FdPXQsdGhpcy5fdHJpYW5nbGVzW2ErMV09bix0aGlzLl90cmlhbmdsZXNbYSsyXT1lLHRoaXMuX2xpbmsoYSxyKSx0aGlzLl9saW5rKGErMSxpKSx0aGlzLl9saW5rKGErMixvKSx0aGlzLnRyaWFuZ2xlc0xlbis9MyxhfX1mdW5jdGlvbiBodSh0LG4sZSxyKXtjb25zdCBpPXQtZSxvPW4tcjtyZXR1cm4gaSppK28qb31mdW5jdGlvbiBkdSh0LG4sZSxyLGksbyxhLHUpe2NvbnN0IGM9dC1hLGY9bi11LHM9ZS1hLGw9ci11LGg9aS1hLGQ9by11LHA9cypzK2wqbCxnPWgqaCtkKmQ7cmV0dXJuIGMqKGwqZy1wKmQpLWYqKHMqZy1wKmgpKyhjKmMrZipmKSoocypkLWwqaCk8MH1mdW5jdGlvbiBwdSh0LG4sZSxyLGksbyl7Y29uc3QgYT1lLXQsdT1yLW4sYz1pLXQsZj1vLW4scz1hKmErdSp1LGw9YypjK2YqZixoPS41LyhhKmYtdSpjKSxkPShmKnMtdSpsKSpoLHA9KGEqbC1jKnMpKmg7cmV0dXJuIGQqZCtwKnB9ZnVuY3Rpb24gZ3UodCxuLGUscil7aWYoci1lPD0yMClmb3IobGV0IGk9ZSsxO2k8PXI7aSsrKXtjb25zdCByPXRbaV0sbz1uW3JdO2xldCBhPWktMTtmb3IoO2E+PWUmJm5bdFthXV0+bzspdFthKzFdPXRbYS0tXTt0W2ErMV09cn1lbHNle2xldCBpPWUrMSxvPXI7eXUodCxlK3I+PjEsaSksblt0W2VdXT5uW3Rbcl1dJiZ5dSh0LGUsciksblt0W2ldXT5uW3Rbcl1dJiZ5dSh0LGksciksblt0W2VdXT5uW3RbaV1dJiZ5dSh0LGUsaSk7Y29uc3QgYT10W2ldLHU9blthXTtmb3IoOzspe2Rve2krK313aGlsZShuW3RbaV1dPHUpO2Rve28tLX13aGlsZShuW3Rbb11dPnUpO2lmKG88aSlicmVhazt5dSh0LGksbyl9dFtlKzFdPXRbb10sdFtvXT1hLHItaSsxPj1vLWU/KGd1KHQsbixpLHIpLGd1KHQsbixlLG8tMSkpOihndSh0LG4sZSxvLTEpLGd1KHQsbixpLHIpKX19ZnVuY3Rpb24geXUodCxuLGUpe2NvbnN0IHI9dFtuXTt0W25dPXRbZV0sdFtlXT1yfWZ1bmN0aW9uIHZ1KHQpe3JldHVybiB0WzBdfWZ1bmN0aW9uIF91KHQpe3JldHVybiB0WzFdfWNvbnN0IGJ1PTFlLTY7Y2xhc3MgbXV7Y29uc3RydWN0b3IoKXt0aGlzLl94MD10aGlzLl95MD10aGlzLl94MT10aGlzLl95MT1udWxsLHRoaXMuXz0iIn1tb3ZlVG8odCxuKXt0aGlzLl8rPWBNJHt0aGlzLl94MD10aGlzLl94MT0rdH0sJHt0aGlzLl95MD10aGlzLl95MT0rbn1gfWNsb3NlUGF0aCgpe251bGwhPT10aGlzLl94MSYmKHRoaXMuX3gxPXRoaXMuX3gwLHRoaXMuX3kxPXRoaXMuX3kwLHRoaXMuXys9IloiKX1saW5lVG8odCxuKXt0aGlzLl8rPWBMJHt0aGlzLl94MT0rdH0sJHt0aGlzLl95MT0rbn1gfWFyYyh0LG4sZSl7Y29uc3Qgcj0odD0rdCkrKGU9K2UpLGk9bj0rbjtpZihlPDApdGhyb3cgbmV3IEVycm9yKCJuZWdhdGl2ZSByYWRpdXMiKTtudWxsPT09dGhpcy5feDE/dGhpcy5fKz1gTSR7cn0sJHtpfWA6KE1hdGguYWJzKHRoaXMuX3gxLXIpPmJ1fHxNYXRoLmFicyh0aGlzLl95MS1pKT5idSkmJih0aGlzLl8rPSJMIityKyIsIitpKSxlJiYodGhpcy5fKz1gQSR7ZX0sJHtlfSwwLDEsMSwke3QtZX0sJHtufUEke2V9LCR7ZX0sMCwxLDEsJHt0aGlzLl94MT1yfSwke3RoaXMuX3kxPWl9YCl9cmVjdCh0LG4sZSxyKXt0aGlzLl8rPWBNJHt0aGlzLl94MD10aGlzLl94MT0rdH0sJHt0aGlzLl95MD10aGlzLl95MT0rbn1oJHsrZX12JHsrcn1oJHstZX1aYH12YWx1ZSgpe3JldHVybiB0aGlzLl98fG51bGx9fWNsYXNzIHh1e2NvbnN0cnVjdG9yKCl7dGhpcy5fPVtdfW1vdmVUbyh0LG4pe3RoaXMuXy5wdXNoKFt0LG5dKX1jbG9zZVBhdGgoKXt0aGlzLl8ucHVzaCh0aGlzLl9bMF0uc2xpY2UoKSl9bGluZVRvKHQsbil7dGhpcy5fLnB1c2goW3Qsbl0pfXZhbHVlKCl7cmV0dXJuIHRoaXMuXy5sZW5ndGg/dGhpcy5fOm51bGx9fWNsYXNzIHd1e2NvbnN0cnVjdG9yKHQsW24sZSxyLGldPVswLDAsOTYwLDUwMF0pe2lmKCEoKHI9K3IpPj0obj0rbikmJihpPStpKT49KGU9K2UpKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgYm91bmRzIik7dGhpcy5kZWxhdW5heT10LHRoaXMuX2NpcmN1bWNlbnRlcnM9bmV3IEZsb2F0NjRBcnJheSgyKnQucG9pbnRzLmxlbmd0aCksdGhpcy52ZWN0b3JzPW5ldyBGbG9hdDY0QXJyYXkoMip0LnBvaW50cy5sZW5ndGgpLHRoaXMueG1heD1yLHRoaXMueG1pbj1uLHRoaXMueW1heD1pLHRoaXMueW1pbj1lLHRoaXMuX2luaXQoKX11cGRhdGUoKXtyZXR1cm4gdGhpcy5kZWxhdW5heS51cGRhdGUoKSx0aGlzLl9pbml0KCksdGhpc31faW5pdCgpe2NvbnN0e2RlbGF1bmF5Ontwb2ludHM6dCxodWxsOm4sdHJpYW5nbGVzOmV9LHZlY3RvcnM6cn09dGhpcyxpPXRoaXMuY2lyY3VtY2VudGVycz10aGlzLl9jaXJjdW1jZW50ZXJzLnN1YmFycmF5KDAsZS5sZW5ndGgvMyoyKTtmb3IobGV0IG4scixvPTAsYT0wLHU9ZS5sZW5ndGg7bzx1O28rPTMsYSs9Mil7Y29uc3QgdT0yKmVbb10sYz0yKmVbbysxXSxmPTIqZVtvKzJdLHM9dFt1XSxsPXRbdSsxXSxoPXRbY10sZD10W2MrMV0scD10W2ZdLGc9dFtmKzFdLHk9aC1zLHY9ZC1sLF89cC1zLGI9Zy1sLG09MiooeSpiLXYqXyk7aWYoTWF0aC5hYnMobSk8MWUtOSl7bGV0IGk9MWU5O2NvbnN0IG89MiplWzBdO2kqPU1hdGguc2lnbigodFtvXS1zKSpiLSh0W28rMV0tbCkqXyksbj0ocytwKS8yLWkqYixyPShsK2cpLzIraSpffWVsc2V7Y29uc3QgdD0xL20sZT15Knkrdip2LGk9XypfK2IqYjtuPXMrKGIqZS12KmkpKnQscj1sKyh5KmktXyplKSp0fWlbYV09bixpW2ErMV09cn1sZXQgbyxhLHUsYz1uW24ubGVuZ3RoLTFdLGY9NCpjLHM9dFsyKmNdLGw9dFsyKmMrMV07ci5maWxsKDApO2ZvcihsZXQgZT0wO2U8bi5sZW5ndGg7KytlKWM9bltlXSxvPWYsYT1zLHU9bCxmPTQqYyxzPXRbMipjXSxsPXRbMipjKzFdLHJbbysyXT1yW2ZdPXUtbCxyW28rM109cltmKzFdPXMtYX1yZW5kZXIodCl7Y29uc3Qgbj1udWxsPT10P3Q9bmV3IG11OnZvaWQgMCx7ZGVsYXVuYXk6e2hhbGZlZGdlczplLGluZWRnZXM6cixodWxsOml9LGNpcmN1bWNlbnRlcnM6byx2ZWN0b3JzOmF9PXRoaXM7aWYoaS5sZW5ndGg8PTEpcmV0dXJuIG51bGw7Zm9yKGxldCBuPTAscj1lLmxlbmd0aDtuPHI7KytuKXtjb25zdCByPWVbbl07aWYocjxuKWNvbnRpbnVlO2NvbnN0IGk9MipNYXRoLmZsb29yKG4vMyksYT0yKk1hdGguZmxvb3Ioci8zKSx1PW9baV0sYz1vW2krMV0sZj1vW2FdLHM9b1thKzFdO3RoaXMuX3JlbmRlclNlZ21lbnQodSxjLGYscyx0KX1sZXQgdSxjPWlbaS5sZW5ndGgtMV07Zm9yKGxldCBuPTA7bjxpLmxlbmd0aDsrK24pe3U9YyxjPWlbbl07Y29uc3QgZT0yKk1hdGguZmxvb3IocltjXS8zKSxmPW9bZV0scz1vW2UrMV0sbD00KnUsaD10aGlzLl9wcm9qZWN0KGYscyxhW2wrMl0sYVtsKzNdKTtoJiZ0aGlzLl9yZW5kZXJTZWdtZW50KGYscyxoWzBdLGhbMV0sdCl9cmV0dXJuIG4mJm4udmFsdWUoKX1yZW5kZXJCb3VuZHModCl7Y29uc3Qgbj1udWxsPT10P3Q9bmV3IG11OnZvaWQgMDtyZXR1cm4gdC5yZWN0KHRoaXMueG1pbix0aGlzLnltaW4sdGhpcy54bWF4LXRoaXMueG1pbix0aGlzLnltYXgtdGhpcy55bWluKSxuJiZuLnZhbHVlKCl9cmVuZGVyQ2VsbCh0LG4pe2NvbnN0IGU9bnVsbD09bj9uPW5ldyBtdTp2b2lkIDAscj10aGlzLl9jbGlwKHQpO2lmKG51bGw9PT1yfHwhci5sZW5ndGgpcmV0dXJuO24ubW92ZVRvKHJbMF0sclsxXSk7bGV0IGk9ci5sZW5ndGg7Zm9yKDtyWzBdPT09cltpLTJdJiZyWzFdPT09cltpLTFdJiZpPjE7KWktPTI7Zm9yKGxldCB0PTI7dDxpO3QrPTIpclt0XT09PXJbdC0yXSYmclt0KzFdPT09clt0LTFdfHxuLmxpbmVUbyhyW3RdLHJbdCsxXSk7cmV0dXJuIG4uY2xvc2VQYXRoKCksZSYmZS52YWx1ZSgpfSpjZWxsUG9seWdvbnMoKXtjb25zdHtkZWxhdW5heTp7cG9pbnRzOnR9fT10aGlzO2ZvcihsZXQgbj0wLGU9dC5sZW5ndGgvMjtuPGU7KytuKXtjb25zdCB0PXRoaXMuY2VsbFBvbHlnb24obik7dCYmKHQuaW5kZXg9bix5aWVsZCB0KX19Y2VsbFBvbHlnb24odCl7Y29uc3Qgbj1uZXcgeHU7cmV0dXJuIHRoaXMucmVuZGVyQ2VsbCh0LG4pLG4udmFsdWUoKX1fcmVuZGVyU2VnbWVudCh0LG4sZSxyLGkpe2xldCBvO2NvbnN0IGE9dGhpcy5fcmVnaW9uY29kZSh0LG4pLHU9dGhpcy5fcmVnaW9uY29kZShlLHIpOzA9PT1hJiYwPT09dT8oaS5tb3ZlVG8odCxuKSxpLmxpbmVUbyhlLHIpKToobz10aGlzLl9jbGlwU2VnbWVudCh0LG4sZSxyLGEsdSkpJiYoaS5tb3ZlVG8ob1swXSxvWzFdKSxpLmxpbmVUbyhvWzJdLG9bM10pKX1jb250YWlucyh0LG4sZSl7cmV0dXJuKG49K24pPT1uJiYoZT0rZSk9PWUmJnRoaXMuZGVsYXVuYXkuX3N0ZXAodCxuLGUpPT09dH0qbmVpZ2hib3JzKHQpe2NvbnN0IG49dGhpcy5fY2xpcCh0KTtpZihuKWZvcihjb25zdCBlIG9mIHRoaXMuZGVsYXVuYXkubmVpZ2hib3JzKHQpKXtjb25zdCB0PXRoaXMuX2NsaXAoZSk7aWYodCl0OmZvcihsZXQgcj0wLGk9bi5sZW5ndGg7cjxpO3IrPTIpZm9yKGxldCBvPTAsYT10Lmxlbmd0aDtvPGE7bys9MilpZihuW3JdPT10W29dJiZuW3IrMV09PXRbbysxXSYmblsocisyKSVpXT09dFsobythLTIpJWFdJiZuWyhyKzMpJWldPT10WyhvK2EtMSklYV0pe3lpZWxkIGU7YnJlYWsgdH19fV9jZWxsKHQpe2NvbnN0e2NpcmN1bWNlbnRlcnM6bixkZWxhdW5heTp7aW5lZGdlczplLGhhbGZlZGdlczpyLHRyaWFuZ2xlczppfX09dGhpcyxvPWVbdF07aWYoLTE9PT1vKXJldHVybiBudWxsO2NvbnN0IGE9W107bGV0IHU9bztkb3tjb25zdCBlPU1hdGguZmxvb3IodS8zKTtpZihhLnB1c2goblsyKmVdLG5bMiplKzFdKSx1PXUlMz09Mj91LTI6dSsxLGlbdV0hPT10KWJyZWFrO3U9clt1XX13aGlsZSh1IT09byYmLTEhPT11KTtyZXR1cm4gYX1fY2xpcCh0KXtpZigwPT09dCYmMT09PXRoaXMuZGVsYXVuYXkuaHVsbC5sZW5ndGgpcmV0dXJuW3RoaXMueG1heCx0aGlzLnltaW4sdGhpcy54bWF4LHRoaXMueW1heCx0aGlzLnhtaW4sdGhpcy55bWF4LHRoaXMueG1pbix0aGlzLnltaW5dO2NvbnN0IG49dGhpcy5fY2VsbCh0KTtpZihudWxsPT09bilyZXR1cm4gbnVsbDtjb25zdHt2ZWN0b3JzOmV9PXRoaXMscj00KnQ7cmV0dXJuIGVbcl18fGVbcisxXT90aGlzLl9jbGlwSW5maW5pdGUodCxuLGVbcl0sZVtyKzFdLGVbcisyXSxlW3IrM10pOnRoaXMuX2NsaXBGaW5pdGUodCxuKX1fY2xpcEZpbml0ZSh0LG4pe2NvbnN0IGU9bi5sZW5ndGg7bGV0IHIsaSxvLGEsdT1udWxsLGM9bltlLTJdLGY9bltlLTFdLHM9dGhpcy5fcmVnaW9uY29kZShjLGYpLGw9MDtmb3IobGV0IGg9MDtoPGU7aCs9MilpZihyPWMsaT1mLGM9bltoXSxmPW5baCsxXSxvPXMscz10aGlzLl9yZWdpb25jb2RlKGMsZiksMD09PW8mJjA9PT1zKWE9bCxsPTAsdT91LnB1c2goYyxmKTp1PVtjLGZdO2Vsc2V7bGV0IG4sZSxoLGQscDtpZigwPT09byl7aWYobnVsbD09PShuPXRoaXMuX2NsaXBTZWdtZW50KHIsaSxjLGYsbyxzKSkpY29udGludWU7W2UsaCxkLHBdPW59ZWxzZXtpZihudWxsPT09KG49dGhpcy5fY2xpcFNlZ21lbnQoYyxmLHIsaSxzLG8pKSljb250aW51ZTtbZCxwLGUsaF09bixhPWwsbD10aGlzLl9lZGdlY29kZShlLGgpLGEmJmwmJnRoaXMuX2VkZ2UodCxhLGwsdSx1Lmxlbmd0aCksdT91LnB1c2goZSxoKTp1PVtlLGhdfWE9bCxsPXRoaXMuX2VkZ2Vjb2RlKGQscCksYSYmbCYmdGhpcy5fZWRnZSh0LGEsbCx1LHUubGVuZ3RoKSx1P3UucHVzaChkLHApOnU9W2QscF19aWYodSlhPWwsbD10aGlzLl9lZGdlY29kZSh1WzBdLHVbMV0pLGEmJmwmJnRoaXMuX2VkZ2UodCxhLGwsdSx1Lmxlbmd0aCk7ZWxzZSBpZih0aGlzLmNvbnRhaW5zKHQsKHRoaXMueG1pbit0aGlzLnhtYXgpLzIsKHRoaXMueW1pbit0aGlzLnltYXgpLzIpKXJldHVyblt0aGlzLnhtYXgsdGhpcy55bWluLHRoaXMueG1heCx0aGlzLnltYXgsdGhpcy54bWluLHRoaXMueW1heCx0aGlzLnhtaW4sdGhpcy55bWluXTtyZXR1cm4gdX1fY2xpcFNlZ21lbnQodCxuLGUscixpLG8pe2Zvcig7Oyl7aWYoMD09PWkmJjA9PT1vKXJldHVyblt0LG4sZSxyXTtpZihpJm8pcmV0dXJuIG51bGw7bGV0IGEsdSxjPWl8fG87OCZjPyhhPXQrKGUtdCkqKHRoaXMueW1heC1uKS8oci1uKSx1PXRoaXMueW1heCk6NCZjPyhhPXQrKGUtdCkqKHRoaXMueW1pbi1uKS8oci1uKSx1PXRoaXMueW1pbik6MiZjPyh1PW4rKHItbikqKHRoaXMueG1heC10KS8oZS10KSxhPXRoaXMueG1heCk6KHU9bisoci1uKSoodGhpcy54bWluLXQpLyhlLXQpLGE9dGhpcy54bWluKSxpPyh0PWEsbj11LGk9dGhpcy5fcmVnaW9uY29kZSh0LG4pKTooZT1hLHI9dSxvPXRoaXMuX3JlZ2lvbmNvZGUoZSxyKSl9fV9jbGlwSW5maW5pdGUodCxuLGUscixpLG8pe2xldCBhLHU9QXJyYXkuZnJvbShuKTtpZigoYT10aGlzLl9wcm9qZWN0KHVbMF0sdVsxXSxlLHIpKSYmdS51bnNoaWZ0KGFbMF0sYVsxXSksKGE9dGhpcy5fcHJvamVjdCh1W3UubGVuZ3RoLTJdLHVbdS5sZW5ndGgtMV0saSxvKSkmJnUucHVzaChhWzBdLGFbMV0pLHU9dGhpcy5fY2xpcEZpbml0ZSh0LHUpKWZvcihsZXQgbixlPTAscj11Lmxlbmd0aCxpPXRoaXMuX2VkZ2Vjb2RlKHVbci0yXSx1W3ItMV0pO2U8cjtlKz0yKW49aSxpPXRoaXMuX2VkZ2Vjb2RlKHVbZV0sdVtlKzFdKSxuJiZpJiYoZT10aGlzLl9lZGdlKHQsbixpLHUsZSkscj11Lmxlbmd0aCk7ZWxzZSB0aGlzLmNvbnRhaW5zKHQsKHRoaXMueG1pbit0aGlzLnhtYXgpLzIsKHRoaXMueW1pbit0aGlzLnltYXgpLzIpJiYodT1bdGhpcy54bWluLHRoaXMueW1pbix0aGlzLnhtYXgsdGhpcy55bWluLHRoaXMueG1heCx0aGlzLnltYXgsdGhpcy54bWluLHRoaXMueW1heF0pO3JldHVybiB1fV9lZGdlKHQsbixlLHIsaSl7Zm9yKDtuIT09ZTspe2xldCBlLG87c3dpdGNoKG4pe2Nhc2UgNTpuPTQ7Y29udGludWU7Y2FzZSA0Om49NixlPXRoaXMueG1heCxvPXRoaXMueW1pbjticmVhaztjYXNlIDY6bj0yO2NvbnRpbnVlO2Nhc2UgMjpuPTEwLGU9dGhpcy54bWF4LG89dGhpcy55bWF4O2JyZWFrO2Nhc2UgMTA6bj04O2NvbnRpbnVlO2Nhc2UgODpuPTksZT10aGlzLnhtaW4sbz10aGlzLnltYXg7YnJlYWs7Y2FzZSA5Om49MTtjb250aW51ZTtjYXNlIDE6bj01LGU9dGhpcy54bWluLG89dGhpcy55bWlufXJbaV09PT1lJiZyW2krMV09PT1vfHwhdGhpcy5jb250YWlucyh0LGUsbyl8fChyLnNwbGljZShpLDAsZSxvKSxpKz0yKX1pZihyLmxlbmd0aD40KWZvcihsZXQgdD0wO3Q8ci5sZW5ndGg7dCs9Mil7Y29uc3Qgbj0odCsyKSVyLmxlbmd0aCxlPSh0KzQpJXIubGVuZ3RoOyhyW3RdPT09cltuXSYmcltuXT09PXJbZV18fHJbdCsxXT09PXJbbisxXSYmcltuKzFdPT09cltlKzFdKSYmKHIuc3BsaWNlKG4sMiksdC09Mil9cmV0dXJuIGl9X3Byb2plY3QodCxuLGUscil7bGV0IGksbyxhLHU9MS8wO2lmKHI8MCl7aWYobjw9dGhpcy55bWluKXJldHVybiBudWxsOyhpPSh0aGlzLnltaW4tbikvcik8dSYmKGE9dGhpcy55bWluLG89dCsodT1pKSplKX1lbHNlIGlmKHI+MCl7aWYobj49dGhpcy55bWF4KXJldHVybiBudWxsOyhpPSh0aGlzLnltYXgtbikvcik8dSYmKGE9dGhpcy55bWF4LG89dCsodT1pKSplKX1pZihlPjApe2lmKHQ+PXRoaXMueG1heClyZXR1cm4gbnVsbDsoaT0odGhpcy54bWF4LXQpL2UpPHUmJihvPXRoaXMueG1heCxhPW4rKHU9aSkqcil9ZWxzZSBpZihlPDApe2lmKHQ8PXRoaXMueG1pbilyZXR1cm4gbnVsbDsoaT0odGhpcy54bWluLXQpL2UpPHUmJihvPXRoaXMueG1pbixhPW4rKHU9aSkqcil9cmV0dXJuW28sYV19X2VkZ2Vjb2RlKHQsbil7cmV0dXJuKHQ9PT10aGlzLnhtaW4/MTp0PT09dGhpcy54bWF4PzI6MCl8KG49PT10aGlzLnltaW4/NDpuPT09dGhpcy55bWF4Pzg6MCl9X3JlZ2lvbmNvZGUodCxuKXtyZXR1cm4odDx0aGlzLnhtaW4/MTp0PnRoaXMueG1heD8yOjApfChuPHRoaXMueW1pbj80Om4+dGhpcy55bWF4Pzg6MCl9fWNvbnN0IE11PTIqTWF0aC5QSSxBdT1NYXRoLnBvdztmdW5jdGlvbiBUdSh0KXtyZXR1cm4gdFswXX1mdW5jdGlvbiBTdSh0KXtyZXR1cm4gdFsxXX1mdW5jdGlvbiBFdSh0LG4sZSl7cmV0dXJuW3QrTWF0aC5zaW4odCtuKSplLG4rTWF0aC5jb3ModC1uKSplXX1jbGFzcyBrdXtzdGF0aWMgZnJvbSh0LG49VHUsZT1TdSxyKXtyZXR1cm4gbmV3IGt1KCJsZW5ndGgiaW4gdD9mdW5jdGlvbih0LG4sZSxyKXtjb25zdCBpPXQubGVuZ3RoLG89bmV3IEZsb2F0NjRBcnJheSgyKmkpO2ZvcihsZXQgYT0wO2E8aTsrK2Epe2NvbnN0IGk9dFthXTtvWzIqYV09bi5jYWxsKHIsaSxhLHQpLG9bMiphKzFdPWUuY2FsbChyLGksYSx0KX1yZXR1cm4gb30odCxuLGUscik6RmxvYXQ2NEFycmF5LmZyb20oZnVuY3Rpb24qKHQsbixlLHIpe2xldCBpPTA7Zm9yKGNvbnN0IG8gb2YgdCl5aWVsZCBuLmNhbGwocixvLGksdCkseWllbGQgZS5jYWxsKHIsbyxpLHQpLCsraX0odCxuLGUscikpKX1jb25zdHJ1Y3Rvcih0KXt0aGlzLl9kZWxhdW5hdG9yPW5ldyBsdSh0KSx0aGlzLmluZWRnZXM9bmV3IEludDMyQXJyYXkodC5sZW5ndGgvMiksdGhpcy5faHVsbEluZGV4PW5ldyBJbnQzMkFycmF5KHQubGVuZ3RoLzIpLHRoaXMucG9pbnRzPXRoaXMuX2RlbGF1bmF0b3IuY29vcmRzLHRoaXMuX2luaXQoKX11cGRhdGUoKXtyZXR1cm4gdGhpcy5fZGVsYXVuYXRvci51cGRhdGUoKSx0aGlzLl9pbml0KCksdGhpc31faW5pdCgpe2NvbnN0IHQ9dGhpcy5fZGVsYXVuYXRvcixuPXRoaXMucG9pbnRzO2lmKHQuaHVsbCYmdC5odWxsLmxlbmd0aD4yJiZmdW5jdGlvbih0KXtjb25zdHt0cmlhbmdsZXM6bixjb29yZHM6ZX09dDtmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrPTMpe2NvbnN0IHI9MipuW3RdLGk9MipuW3QrMV0sbz0yKm5bdCsyXTtpZigoZVtvXS1lW3JdKSooZVtpKzFdLWVbcisxXSktKGVbaV0tZVtyXSkqKGVbbysxXS1lW3IrMV0pPjFlLTEwKXJldHVybiExfXJldHVybiEwfSh0KSl7dGhpcy5jb2xsaW5lYXI9SW50MzJBcnJheS5mcm9tKHtsZW5ndGg6bi5sZW5ndGgvMn0sKCh0LG4pPT5uKSkuc29ydCgoKHQsZSk9Pm5bMip0XS1uWzIqZV18fG5bMip0KzFdLW5bMiplKzFdKSk7Y29uc3QgdD10aGlzLmNvbGxpbmVhclswXSxlPXRoaXMuY29sbGluZWFyW3RoaXMuY29sbGluZWFyLmxlbmd0aC0xXSxyPVtuWzIqdF0sblsyKnQrMV0sblsyKmVdLG5bMiplKzFdXSxpPTFlLTgqTWF0aC5oeXBvdChyWzNdLXJbMV0sclsyXS1yWzBdKTtmb3IobGV0IHQ9MCxlPW4ubGVuZ3RoLzI7dDxlOysrdCl7Y29uc3QgZT1FdShuWzIqdF0sblsyKnQrMV0saSk7blsyKnRdPWVbMF0sblsyKnQrMV09ZVsxXX10aGlzLl9kZWxhdW5hdG9yPW5ldyBsdShuKX1lbHNlIGRlbGV0ZSB0aGlzLmNvbGxpbmVhcjtjb25zdCBlPXRoaXMuaGFsZmVkZ2VzPXRoaXMuX2RlbGF1bmF0b3IuaGFsZmVkZ2VzLHI9dGhpcy5odWxsPXRoaXMuX2RlbGF1bmF0b3IuaHVsbCxpPXRoaXMudHJpYW5nbGVzPXRoaXMuX2RlbGF1bmF0b3IudHJpYW5nbGVzLG89dGhpcy5pbmVkZ2VzLmZpbGwoLTEpLGE9dGhpcy5faHVsbEluZGV4LmZpbGwoLTEpO2ZvcihsZXQgdD0wLG49ZS5sZW5ndGg7dDxuOysrdCl7Y29uc3Qgbj1pW3QlMz09Mj90LTI6dCsxXTstMSE9PWVbdF0mJi0xIT09b1tuXXx8KG9bbl09dCl9Zm9yKGxldCB0PTAsbj1yLmxlbmd0aDt0PG47Kyt0KWFbclt0XV09dDtyLmxlbmd0aDw9MiYmci5sZW5ndGg+MCYmKHRoaXMudHJpYW5nbGVzPW5ldyBJbnQzMkFycmF5KDMpLmZpbGwoLTEpLHRoaXMuaGFsZmVkZ2VzPW5ldyBJbnQzMkFycmF5KDMpLmZpbGwoLTEpLHRoaXMudHJpYW5nbGVzWzBdPXJbMF0sb1tyWzBdXT0xLDI9PT1yLmxlbmd0aCYmKG9bclsxXV09MCx0aGlzLnRyaWFuZ2xlc1sxXT1yWzFdLHRoaXMudHJpYW5nbGVzWzJdPXJbMV0pKX12b3Jvbm9pKHQpe3JldHVybiBuZXcgd3UodGhpcyx0KX0qbmVpZ2hib3JzKHQpe2NvbnN0e2luZWRnZXM6bixodWxsOmUsX2h1bGxJbmRleDpyLGhhbGZlZGdlczppLHRyaWFuZ2xlczpvLGNvbGxpbmVhcjphfT10aGlzO2lmKGEpe2NvbnN0IG49YS5pbmRleE9mKHQpO3JldHVybiBuPjAmJih5aWVsZCBhW24tMV0pLHZvaWQobjxhLmxlbmd0aC0xJiYoeWllbGQgYVtuKzFdKSl9Y29uc3QgdT1uW3RdO2lmKC0xPT09dSlyZXR1cm47bGV0IGM9dSxmPS0xO2Rve2lmKHlpZWxkIGY9b1tjXSxjPWMlMz09Mj9jLTI6YysxLG9bY10hPT10KXJldHVybjtpZihjPWlbY10sLTE9PT1jKXtjb25zdCBuPWVbKHJbdF0rMSklZS5sZW5ndGhdO3JldHVybiB2b2lkKG4hPT1mJiYoeWllbGQgbikpfX13aGlsZShjIT09dSl9ZmluZCh0LG4sZT0wKXtpZigodD0rdCkhPXR8fChuPStuKSE9bilyZXR1cm4tMTtjb25zdCByPWU7bGV0IGk7Zm9yKDsoaT10aGlzLl9zdGVwKGUsdCxuKSk+PTAmJmkhPT1lJiZpIT09cjspZT1pO3JldHVybiBpfV9zdGVwKHQsbixlKXtjb25zdHtpbmVkZ2VzOnIsaHVsbDppLF9odWxsSW5kZXg6byxoYWxmZWRnZXM6YSx0cmlhbmdsZXM6dSxwb2ludHM6Y309dGhpcztpZigtMT09PXJbdF18fCFjLmxlbmd0aClyZXR1cm4odCsxKSUoYy5sZW5ndGg+PjEpO2xldCBmPXQscz1BdShuLWNbMip0XSwyKStBdShlLWNbMip0KzFdLDIpO2NvbnN0IGw9clt0XTtsZXQgaD1sO2Rve2xldCByPXVbaF07Y29uc3QgbD1BdShuLWNbMipyXSwyKStBdShlLWNbMipyKzFdLDIpO2lmKGw8cyYmKHM9bCxmPXIpLGg9aCUzPT0yP2gtMjpoKzEsdVtoXSE9PXQpYnJlYWs7aWYoaD1hW2hdLC0xPT09aCl7aWYoaD1pWyhvW3RdKzEpJWkubGVuZ3RoXSxoIT09ciYmQXUobi1jWzIqaF0sMikrQXUoZS1jWzIqaCsxXSwyKTxzKXJldHVybiBoO2JyZWFrfX13aGlsZShoIT09bCk7cmV0dXJuIGZ9cmVuZGVyKHQpe2NvbnN0IG49bnVsbD09dD90PW5ldyBtdTp2b2lkIDAse3BvaW50czplLGhhbGZlZGdlczpyLHRyaWFuZ2xlczppfT10aGlzO2ZvcihsZXQgbj0wLG89ci5sZW5ndGg7bjxvOysrbil7Y29uc3Qgbz1yW25dO2lmKG88biljb250aW51ZTtjb25zdCBhPTIqaVtuXSx1PTIqaVtvXTt0Lm1vdmVUbyhlW2FdLGVbYSsxXSksdC5saW5lVG8oZVt1XSxlW3UrMV0pfXJldHVybiB0aGlzLnJlbmRlckh1bGwodCksbiYmbi52YWx1ZSgpfXJlbmRlclBvaW50cyh0LG4pe3ZvaWQgMCE9PW58fHQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0Lm1vdmVUb3x8KG49dCx0PW51bGwpLG49bnVsbD09bj8yOituO2NvbnN0IGU9bnVsbD09dD90PW5ldyBtdTp2b2lkIDAse3BvaW50czpyfT10aGlzO2ZvcihsZXQgZT0wLGk9ci5sZW5ndGg7ZTxpO2UrPTIpe2NvbnN0IGk9cltlXSxvPXJbZSsxXTt0Lm1vdmVUbyhpK24sbyksdC5hcmMoaSxvLG4sMCxNdSl9cmV0dXJuIGUmJmUudmFsdWUoKX1yZW5kZXJIdWxsKHQpe2NvbnN0IG49bnVsbD09dD90PW5ldyBtdTp2b2lkIDAse2h1bGw6ZSxwb2ludHM6cn09dGhpcyxpPTIqZVswXSxvPWUubGVuZ3RoO3QubW92ZVRvKHJbaV0scltpKzFdKTtmb3IobGV0IG49MTtuPG87KytuKXtjb25zdCBpPTIqZVtuXTt0LmxpbmVUbyhyW2ldLHJbaSsxXSl9cmV0dXJuIHQuY2xvc2VQYXRoKCksbiYmbi52YWx1ZSgpfWh1bGxQb2x5Z29uKCl7Y29uc3QgdD1uZXcgeHU7cmV0dXJuIHRoaXMucmVuZGVySHVsbCh0KSx0LnZhbHVlKCl9cmVuZGVyVHJpYW5nbGUodCxuKXtjb25zdCBlPW51bGw9PW4/bj1uZXcgbXU6dm9pZCAwLHtwb2ludHM6cix0cmlhbmdsZXM6aX09dGhpcyxvPTIqaVt0Kj0zXSxhPTIqaVt0KzFdLHU9MippW3QrMl07cmV0dXJuIG4ubW92ZVRvKHJbb10scltvKzFdKSxuLmxpbmVUbyhyW2FdLHJbYSsxXSksbi5saW5lVG8oclt1XSxyW3UrMV0pLG4uY2xvc2VQYXRoKCksZSYmZS52YWx1ZSgpfSp0cmlhbmdsZVBvbHlnb25zKCl7Y29uc3R7dHJpYW5nbGVzOnR9PXRoaXM7Zm9yKGxldCBuPTAsZT10Lmxlbmd0aC8zO248ZTsrK24peWllbGQgdGhpcy50cmlhbmdsZVBvbHlnb24obil9dHJpYW5nbGVQb2x5Z29uKHQpe2NvbnN0IG49bmV3IHh1O3JldHVybiB0aGlzLnJlbmRlclRyaWFuZ2xlKHQsbiksbi52YWx1ZSgpfX12YXIgTnU9e30sQ3U9e307ZnVuY3Rpb24gUHUodCl7cmV0dXJuIG5ldyBGdW5jdGlvbigiZCIsInJldHVybiB7Iit0Lm1hcCgoZnVuY3Rpb24odCxuKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCkrIjogZFsiK24rJ10gfHwgIiInfSkpLmpvaW4oIiwiKSsifSIpfWZ1bmN0aW9uIHp1KHQpe3ZhciBuPU9iamVjdC5jcmVhdGUobnVsbCksZT1bXTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtmb3IodmFyIHIgaW4gdClyIGluIG58fGUucHVzaChuW3JdPXIpfSkpLGV9ZnVuY3Rpb24gRHUodCxuKXt2YXIgZT10KyIiLHI9ZS5sZW5ndGg7cmV0dXJuIHI8bj9uZXcgQXJyYXkobi1yKzEpLmpvaW4oMCkrZTplfWZ1bmN0aW9uIFJ1KHQpe3ZhciBuPXQuZ2V0VVRDSG91cnMoKSxlPXQuZ2V0VVRDTWludXRlcygpLHI9dC5nZXRVVENTZWNvbmRzKCksaT10LmdldFVUQ01pbGxpc2Vjb25kcygpO3JldHVybiBpc05hTih0KT8iSW52YWxpZCBEYXRlIjpmdW5jdGlvbih0KXtyZXR1cm4gdDwwPyItIitEdSgtdCw2KTp0Pjk5OTk/IisiK0R1KHQsNik6RHUodCw0KX0odC5nZXRVVENGdWxsWWVhcigpKSsiLSIrRHUodC5nZXRVVENNb250aCgpKzEsMikrIi0iK0R1KHQuZ2V0VVRDRGF0ZSgpLDIpKyhpPyJUIitEdShuLDIpKyI6IitEdShlLDIpKyI6IitEdShyLDIpKyIuIitEdShpLDMpKyJaIjpyPyJUIitEdShuLDIpKyI6IitEdShlLDIpKyI6IitEdShyLDIpKyJaIjplfHxuPyJUIitEdShuLDIpKyI6IitEdShlLDIpKyJaIjoiIil9ZnVuY3Rpb24gRnUodCl7dmFyIG49bmV3IFJlZ0V4cCgnWyInK3QrIlxuXHJdIiksZT10LmNoYXJDb2RlQXQoMCk7ZnVuY3Rpb24gcih0LG4pe3ZhciByLGk9W10sbz10Lmxlbmd0aCxhPTAsdT0wLGM9bzw9MCxmPSExO2Z1bmN0aW9uIHMoKXtpZihjKXJldHVybiBDdTtpZihmKXJldHVybiBmPSExLE51O3ZhciBuLHIsaT1hO2lmKDM0PT09dC5jaGFyQ29kZUF0KGkpKXtmb3IoO2ErKzxvJiYzNCE9PXQuY2hhckNvZGVBdChhKXx8MzQ9PT10LmNoYXJDb2RlQXQoKythKTspO3JldHVybihuPWEpPj1vP2M9ITA6MTA9PT0ocj10LmNoYXJDb2RlQXQoYSsrKSk/Zj0hMDoxMz09PXImJihmPSEwLDEwPT09dC5jaGFyQ29kZUF0KGEpJiYrK2EpLHQuc2xpY2UoaSsxLG4tMSkucmVwbGFjZSgvIiIvZywnIicpfWZvcig7YTxvOyl7aWYoMTA9PT0ocj10LmNoYXJDb2RlQXQobj1hKyspKSlmPSEwO2Vsc2UgaWYoMTM9PT1yKWY9ITAsMTA9PT10LmNoYXJDb2RlQXQoYSkmJisrYTtlbHNlIGlmKHIhPT1lKWNvbnRpbnVlO3JldHVybiB0LnNsaWNlKGksbil9cmV0dXJuIGM9ITAsdC5zbGljZShpLG8pfWZvcigxMD09PXQuY2hhckNvZGVBdChvLTEpJiYtLW8sMTM9PT10LmNoYXJDb2RlQXQoby0xKSYmLS1vOyhyPXMoKSkhPT1DdTspe2Zvcih2YXIgbD1bXTtyIT09TnUmJnIhPT1DdTspbC5wdXNoKHIpLHI9cygpO24mJm51bGw9PShsPW4obCx1KyspKXx8aS5wdXNoKGwpfXJldHVybiBpfWZ1bmN0aW9uIGkobixlKXtyZXR1cm4gbi5tYXAoKGZ1bmN0aW9uKG4pe3JldHVybiBlLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGEoblt0XSl9KSkuam9pbih0KX0pKX1mdW5jdGlvbiBvKG4pe3JldHVybiBuLm1hcChhKS5qb2luKHQpfWZ1bmN0aW9uIGEodCl7cmV0dXJuIG51bGw9PXQ/IiI6dCBpbnN0YW5jZW9mIERhdGU/UnUodCk6bi50ZXN0KHQrPSIiKT8nIicrdC5yZXBsYWNlKC8iL2csJyIiJykrJyInOnR9cmV0dXJue3BhcnNlOmZ1bmN0aW9uKHQsbil7dmFyIGUsaSxvPXIodCwoZnVuY3Rpb24odCxyKXtpZihlKXJldHVybiBlKHQsci0xKTtpPXQsZT1uP2Z1bmN0aW9uKHQsbil7dmFyIGU9UHUodCk7cmV0dXJuIGZ1bmN0aW9uKHIsaSl7cmV0dXJuIG4oZShyKSxpLHQpfX0odCxuKTpQdSh0KX0pKTtyZXR1cm4gby5jb2x1bW5zPWl8fFtdLG99LHBhcnNlUm93czpyLGZvcm1hdDpmdW5jdGlvbihuLGUpe3JldHVybiBudWxsPT1lJiYoZT16dShuKSksW2UubWFwKGEpLmpvaW4odCldLmNvbmNhdChpKG4sZSkpLmpvaW4oIlxuIil9LGZvcm1hdEJvZHk6ZnVuY3Rpb24odCxuKXtyZXR1cm4gbnVsbD09biYmKG49enUodCkpLGkodCxuKS5qb2luKCJcbiIpfSxmb3JtYXRSb3dzOmZ1bmN0aW9uKHQpe3JldHVybiB0Lm1hcChvKS5qb2luKCJcbiIpfSxmb3JtYXRSb3c6byxmb3JtYXRWYWx1ZTphfX12YXIgcXU9RnUoIiwiKSxJdT1xdS5wYXJzZSxPdT1xdS5wYXJzZVJvd3MsVXU9cXUuZm9ybWF0LEJ1PXF1LmZvcm1hdEJvZHksWXU9cXUuZm9ybWF0Um93cyxMdT1xdS5mb3JtYXRSb3csanU9cXUuZm9ybWF0VmFsdWUsJHU9RnUoIlx0IiksSHU9JHUucGFyc2UsWHU9JHUucGFyc2VSb3dzLEd1PSR1LmZvcm1hdCxWdT0kdS5mb3JtYXRCb2R5LFd1PSR1LmZvcm1hdFJvd3MsWnU9JHUuZm9ybWF0Um93LEt1PSR1LmZvcm1hdFZhbHVlO2NvbnN0IFF1PW5ldyBEYXRlKCIyMDE5LTAxLTAxVDAwOjAwIikuZ2V0SG91cnMoKXx8bmV3IERhdGUoIjIwMTktMDctMDFUMDA6MDAiKS5nZXRIb3VycygpO2Z1bmN0aW9uIEp1KHQpe2lmKCF0Lm9rKXRocm93IG5ldyBFcnJvcih0LnN0YXR1cysiICIrdC5zdGF0dXNUZXh0KTtyZXR1cm4gdC5ibG9iKCl9ZnVuY3Rpb24gdGModCl7aWYoIXQub2spdGhyb3cgbmV3IEVycm9yKHQuc3RhdHVzKyIgIit0LnN0YXR1c1RleHQpO3JldHVybiB0LmFycmF5QnVmZmVyKCl9ZnVuY3Rpb24gbmModCl7aWYoIXQub2spdGhyb3cgbmV3IEVycm9yKHQuc3RhdHVzKyIgIit0LnN0YXR1c1RleHQpO3JldHVybiB0LnRleHQoKX1mdW5jdGlvbiBlYyh0LG4pe3JldHVybiBmZXRjaCh0LG4pLnRoZW4obmMpfWZ1bmN0aW9uIHJjKHQpe3JldHVybiBmdW5jdGlvbihuLGUscil7cmV0dXJuIDI9PT1hcmd1bWVudHMubGVuZ3RoJiYiZnVuY3Rpb24iPT10eXBlb2YgZSYmKHI9ZSxlPXZvaWQgMCksZWMobixlKS50aGVuKChmdW5jdGlvbihuKXtyZXR1cm4gdChuLHIpfSkpfX12YXIgaWM9cmMoSXUpLG9jPXJjKEh1KTtmdW5jdGlvbiBhYyh0KXtpZighdC5vayl0aHJvdyBuZXcgRXJyb3IodC5zdGF0dXMrIiAiK3Quc3RhdHVzVGV4dCk7aWYoMjA0IT09dC5zdGF0dXMmJjIwNSE9PXQuc3RhdHVzKXJldHVybiB0Lmpzb24oKX1mdW5jdGlvbiB1Yyh0KXtyZXR1cm4obixlKT0+ZWMobixlKS50aGVuKChuPT4obmV3IERPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKG4sdCkpKX12YXIgY2M9dWMoImFwcGxpY2F0aW9uL3htbCIpLGZjPXVjKCJ0ZXh0L2h0bWwiKSxzYz11YygiaW1hZ2Uvc3ZnK3htbCIpO2Z1bmN0aW9uIGxjKHQsbixlLHIpe2lmKGlzTmFOKG4pfHxpc05hTihlKSlyZXR1cm4gdDt2YXIgaSxvLGEsdSxjLGYscyxsLGgsZD10Ll9yb290LHA9e2RhdGE6cn0sZz10Ll94MCx5PXQuX3kwLHY9dC5feDEsXz10Ll95MTtpZighZClyZXR1cm4gdC5fcm9vdD1wLHQ7Zm9yKDtkLmxlbmd0aDspaWYoKGY9bj49KG89KGcrdikvMikpP2c9bzp2PW8sKHM9ZT49KGE9KHkrXykvMikpP3k9YTpfPWEsaT1kLCEoZD1kW2w9czw8MXxmXSkpcmV0dXJuIGlbbF09cCx0O2lmKHU9K3QuX3guY2FsbChudWxsLGQuZGF0YSksYz0rdC5feS5jYWxsKG51bGwsZC5kYXRhKSxuPT09dSYmZT09PWMpcmV0dXJuIHAubmV4dD1kLGk/aVtsXT1wOnQuX3Jvb3Q9cCx0O2Rve2k9aT9pW2xdPW5ldyBBcnJheSg0KTp0Ll9yb290PW5ldyBBcnJheSg0KSwoZj1uPj0obz0oZyt2KS8yKSk/Zz1vOnY9bywocz1lPj0oYT0oeStfKS8yKSk/eT1hOl89YX13aGlsZSgobD1zPDwxfGYpPT0oaD0oYz49YSk8PDF8dT49bykpO3JldHVybiBpW2hdPWQsaVtsXT1wLHR9ZnVuY3Rpb24gaGModCxuLGUscixpKXt0aGlzLm5vZGU9dCx0aGlzLngwPW4sdGhpcy55MD1lLHRoaXMueDE9cix0aGlzLnkxPWl9ZnVuY3Rpb24gZGModCl7cmV0dXJuIHRbMF19ZnVuY3Rpb24gcGModCl7cmV0dXJuIHRbMV19ZnVuY3Rpb24gZ2ModCxuLGUpe3ZhciByPW5ldyB5YyhudWxsPT1uP2RjOm4sbnVsbD09ZT9wYzplLE5hTixOYU4sTmFOLE5hTik7cmV0dXJuIG51bGw9PXQ/cjpyLmFkZEFsbCh0KX1mdW5jdGlvbiB5Yyh0LG4sZSxyLGksbyl7dGhpcy5feD10LHRoaXMuX3k9bix0aGlzLl94MD1lLHRoaXMuX3kwPXIsdGhpcy5feDE9aSx0aGlzLl95MT1vLHRoaXMuX3Jvb3Q9dm9pZCAwfWZ1bmN0aW9uIHZjKHQpe2Zvcih2YXIgbj17ZGF0YTp0LmRhdGF9LGU9bjt0PXQubmV4dDspZT1lLm5leHQ9e2RhdGE6dC5kYXRhfTtyZXR1cm4gbn12YXIgX2M9Z2MucHJvdG90eXBlPXljLnByb3RvdHlwZTtmdW5jdGlvbiBiYyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gbWModCl7cmV0dXJuIDFlLTYqKHQoKS0uNSl9ZnVuY3Rpb24geGModCl7cmV0dXJuIHQueCt0LnZ4fWZ1bmN0aW9uIHdjKHQpe3JldHVybiB0LnkrdC52eX1mdW5jdGlvbiBNYyh0KXtyZXR1cm4gdC5pbmRleH1mdW5jdGlvbiBBYyh0LG4pe3ZhciBlPXQuZ2V0KG4pO2lmKCFlKXRocm93IG5ldyBFcnJvcigibm9kZSBub3QgZm91bmQ6ICIrbik7cmV0dXJuIGV9X2MuY29weT1mdW5jdGlvbigpe3ZhciB0LG4sZT1uZXcgeWModGhpcy5feCx0aGlzLl95LHRoaXMuX3gwLHRoaXMuX3kwLHRoaXMuX3gxLHRoaXMuX3kxKSxyPXRoaXMuX3Jvb3Q7aWYoIXIpcmV0dXJuIGU7aWYoIXIubGVuZ3RoKXJldHVybiBlLl9yb290PXZjKHIpLGU7Zm9yKHQ9W3tzb3VyY2U6cix0YXJnZXQ6ZS5fcm9vdD1uZXcgQXJyYXkoNCl9XTtyPXQucG9wKCk7KWZvcih2YXIgaT0wO2k8NDsrK2kpKG49ci5zb3VyY2VbaV0pJiYobi5sZW5ndGg/dC5wdXNoKHtzb3VyY2U6bix0YXJnZXQ6ci50YXJnZXRbaV09bmV3IEFycmF5KDQpfSk6ci50YXJnZXRbaV09dmMobikpO3JldHVybiBlfSxfYy5hZGQ9ZnVuY3Rpb24odCl7Y29uc3Qgbj0rdGhpcy5feC5jYWxsKG51bGwsdCksZT0rdGhpcy5feS5jYWxsKG51bGwsdCk7cmV0dXJuIGxjKHRoaXMuY292ZXIobixlKSxuLGUsdCl9LF9jLmFkZEFsbD1mdW5jdGlvbih0KXt2YXIgbixlLHIsaSxvPXQubGVuZ3RoLGE9bmV3IEFycmF5KG8pLHU9bmV3IEFycmF5KG8pLGM9MS8wLGY9MS8wLHM9LTEvMCxsPS0xLzA7Zm9yKGU9MDtlPG87KytlKWlzTmFOKHI9K3RoaXMuX3guY2FsbChudWxsLG49dFtlXSkpfHxpc05hTihpPSt0aGlzLl95LmNhbGwobnVsbCxuKSl8fChhW2VdPXIsdVtlXT1pLHI8YyYmKGM9cikscj5zJiYocz1yKSxpPGYmJihmPWkpLGk+bCYmKGw9aSkpO2lmKGM+c3x8Zj5sKXJldHVybiB0aGlzO2Zvcih0aGlzLmNvdmVyKGMsZikuY292ZXIocyxsKSxlPTA7ZTxvOysrZSlsYyh0aGlzLGFbZV0sdVtlXSx0W2VdKTtyZXR1cm4gdGhpc30sX2MuY292ZXI9ZnVuY3Rpb24odCxuKXtpZihpc05hTih0PSt0KXx8aXNOYU4obj0rbikpcmV0dXJuIHRoaXM7dmFyIGU9dGhpcy5feDAscj10aGlzLl95MCxpPXRoaXMuX3gxLG89dGhpcy5feTE7aWYoaXNOYU4oZSkpaT0oZT1NYXRoLmZsb29yKHQpKSsxLG89KHI9TWF0aC5mbG9vcihuKSkrMTtlbHNle2Zvcih2YXIgYSx1LGM9aS1lfHwxLGY9dGhpcy5fcm9vdDtlPnR8fHQ+PWl8fHI+bnx8bj49bzspc3dpdGNoKHU9KG48cik8PDF8dDxlLChhPW5ldyBBcnJheSg0KSlbdV09ZixmPWEsYyo9Mix1KXtjYXNlIDA6aT1lK2Msbz1yK2M7YnJlYWs7Y2FzZSAxOmU9aS1jLG89citjO2JyZWFrO2Nhc2UgMjppPWUrYyxyPW8tYzticmVhaztjYXNlIDM6ZT1pLWMscj1vLWN9dGhpcy5fcm9vdCYmdGhpcy5fcm9vdC5sZW5ndGgmJih0aGlzLl9yb290PWYpfXJldHVybiB0aGlzLl94MD1lLHRoaXMuX3kwPXIsdGhpcy5feDE9aSx0aGlzLl95MT1vLHRoaXN9LF9jLmRhdGE9ZnVuY3Rpb24oKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy52aXNpdCgoZnVuY3Rpb24obil7aWYoIW4ubGVuZ3RoKWRve3QucHVzaChuLmRhdGEpfXdoaWxlKG49bi5uZXh0KX0pKSx0fSxfYy5leHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5jb3ZlcigrdFswXVswXSwrdFswXVsxXSkuY292ZXIoK3RbMV1bMF0sK3RbMV1bMV0pOmlzTmFOKHRoaXMuX3gwKT92b2lkIDA6W1t0aGlzLl94MCx0aGlzLl95MF0sW3RoaXMuX3gxLHRoaXMuX3kxXV19LF9jLmZpbmQ9ZnVuY3Rpb24odCxuLGUpe3ZhciByLGksbyxhLHUsYyxmLHM9dGhpcy5feDAsbD10aGlzLl95MCxoPXRoaXMuX3gxLGQ9dGhpcy5feTEscD1bXSxnPXRoaXMuX3Jvb3Q7Zm9yKGcmJnAucHVzaChuZXcgaGMoZyxzLGwsaCxkKSksbnVsbD09ZT9lPTEvMDoocz10LWUsbD1uLWUsaD10K2UsZD1uK2UsZSo9ZSk7Yz1wLnBvcCgpOylpZighKCEoZz1jLm5vZGUpfHwoaT1jLngwKT5ofHwobz1jLnkwKT5kfHwoYT1jLngxKTxzfHwodT1jLnkxKTxsKSlpZihnLmxlbmd0aCl7dmFyIHk9KGkrYSkvMix2PShvK3UpLzI7cC5wdXNoKG5ldyBoYyhnWzNdLHksdixhLHUpLG5ldyBoYyhnWzJdLGksdix5LHUpLG5ldyBoYyhnWzFdLHksbyxhLHYpLG5ldyBoYyhnWzBdLGksbyx5LHYpKSwoZj0obj49dik8PDF8dD49eSkmJihjPXBbcC5sZW5ndGgtMV0scFtwLmxlbmd0aC0xXT1wW3AubGVuZ3RoLTEtZl0scFtwLmxlbmd0aC0xLWZdPWMpfWVsc2V7dmFyIF89dC0rdGhpcy5feC5jYWxsKG51bGwsZy5kYXRhKSxiPW4tK3RoaXMuX3kuY2FsbChudWxsLGcuZGF0YSksbT1fKl8rYipiO2lmKG08ZSl7dmFyIHg9TWF0aC5zcXJ0KGU9bSk7cz10LXgsbD1uLXgsaD10K3gsZD1uK3gscj1nLmRhdGF9fXJldHVybiByfSxfYy5yZW1vdmU9ZnVuY3Rpb24odCl7aWYoaXNOYU4obz0rdGhpcy5feC5jYWxsKG51bGwsdCkpfHxpc05hTihhPSt0aGlzLl95LmNhbGwobnVsbCx0KSkpcmV0dXJuIHRoaXM7dmFyIG4sZSxyLGksbyxhLHUsYyxmLHMsbCxoLGQ9dGhpcy5fcm9vdCxwPXRoaXMuX3gwLGc9dGhpcy5feTAseT10aGlzLl94MSx2PXRoaXMuX3kxO2lmKCFkKXJldHVybiB0aGlzO2lmKGQubGVuZ3RoKWZvcig7Oyl7aWYoKGY9bz49KHU9KHAreSkvMikpP3A9dTp5PXUsKHM9YT49KGM9KGcrdikvMikpP2c9Yzp2PWMsbj1kLCEoZD1kW2w9czw8MXxmXSkpcmV0dXJuIHRoaXM7aWYoIWQubGVuZ3RoKWJyZWFrOyhuW2wrMSYzXXx8bltsKzImM118fG5bbCszJjNdKSYmKGU9bixoPWwpfWZvcig7ZC5kYXRhIT09dDspaWYocj1kLCEoZD1kLm5leHQpKXJldHVybiB0aGlzO3JldHVybihpPWQubmV4dCkmJmRlbGV0ZSBkLm5leHQscj8oaT9yLm5leHQ9aTpkZWxldGUgci5uZXh0LHRoaXMpOm4/KGk/bltsXT1pOmRlbGV0ZSBuW2xdLChkPW5bMF18fG5bMV18fG5bMl18fG5bM10pJiZkPT09KG5bM118fG5bMl18fG5bMV18fG5bMF0pJiYhZC5sZW5ndGgmJihlP2VbaF09ZDp0aGlzLl9yb290PWQpLHRoaXMpOih0aGlzLl9yb290PWksdGhpcyl9LF9jLnJlbW92ZUFsbD1mdW5jdGlvbih0KXtmb3IodmFyIG49MCxlPXQubGVuZ3RoO248ZTsrK24pdGhpcy5yZW1vdmUodFtuXSk7cmV0dXJuIHRoaXN9LF9jLnJvb3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcm9vdH0sX2Muc2l6ZT1mdW5jdGlvbigpe3ZhciB0PTA7cmV0dXJuIHRoaXMudmlzaXQoKGZ1bmN0aW9uKG4pe2lmKCFuLmxlbmd0aClkb3srK3R9d2hpbGUobj1uLm5leHQpfSkpLHR9LF9jLnZpc2l0PWZ1bmN0aW9uKHQpe3ZhciBuLGUscixpLG8sYSx1PVtdLGM9dGhpcy5fcm9vdDtmb3IoYyYmdS5wdXNoKG5ldyBoYyhjLHRoaXMuX3gwLHRoaXMuX3kwLHRoaXMuX3gxLHRoaXMuX3kxKSk7bj11LnBvcCgpOylpZighdChjPW4ubm9kZSxyPW4ueDAsaT1uLnkwLG89bi54MSxhPW4ueTEpJiZjLmxlbmd0aCl7dmFyIGY9KHIrbykvMixzPShpK2EpLzI7KGU9Y1szXSkmJnUucHVzaChuZXcgaGMoZSxmLHMsbyxhKSksKGU9Y1syXSkmJnUucHVzaChuZXcgaGMoZSxyLHMsZixhKSksKGU9Y1sxXSkmJnUucHVzaChuZXcgaGMoZSxmLGksbyxzKSksKGU9Y1swXSkmJnUucHVzaChuZXcgaGMoZSxyLGksZixzKSl9cmV0dXJuIHRoaXN9LF9jLnZpc2l0QWZ0ZXI9ZnVuY3Rpb24odCl7dmFyIG4sZT1bXSxyPVtdO2Zvcih0aGlzLl9yb290JiZlLnB1c2gobmV3IGhjKHRoaXMuX3Jvb3QsdGhpcy5feDAsdGhpcy5feTAsdGhpcy5feDEsdGhpcy5feTEpKTtuPWUucG9wKCk7KXt2YXIgaT1uLm5vZGU7aWYoaS5sZW5ndGgpe3ZhciBvLGE9bi54MCx1PW4ueTAsYz1uLngxLGY9bi55MSxzPShhK2MpLzIsbD0odStmKS8yOyhvPWlbMF0pJiZlLnB1c2gobmV3IGhjKG8sYSx1LHMsbCkpLChvPWlbMV0pJiZlLnB1c2gobmV3IGhjKG8scyx1LGMsbCkpLChvPWlbMl0pJiZlLnB1c2gobmV3IGhjKG8sYSxsLHMsZikpLChvPWlbM10pJiZlLnB1c2gobmV3IGhjKG8scyxsLGMsZikpfXIucHVzaChuKX1mb3IoO249ci5wb3AoKTspdChuLm5vZGUsbi54MCxuLnkwLG4ueDEsbi55MSk7cmV0dXJuIHRoaXN9LF9jLng9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHRoaXMuX3g9dCx0aGlzKTp0aGlzLl94fSxfYy55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0aGlzLl95PXQsdGhpcyk6dGhpcy5feX07Y29uc3QgVGM9NDI5NDk2NzI5NjtmdW5jdGlvbiBTYyh0KXtyZXR1cm4gdC54fWZ1bmN0aW9uIEVjKHQpe3JldHVybiB0Lnl9dmFyIGtjPU1hdGguUEkqKDMtTWF0aC5zcXJ0KDUpKTtmdW5jdGlvbiBOYyh0LG4pe2lmKChlPSh0PW4/dC50b0V4cG9uZW50aWFsKG4tMSk6dC50b0V4cG9uZW50aWFsKCkpLmluZGV4T2YoImUiKSk8MClyZXR1cm4gbnVsbDt2YXIgZSxyPXQuc2xpY2UoMCxlKTtyZXR1cm5bci5sZW5ndGg+MT9yWzBdK3Iuc2xpY2UoMik6ciwrdC5zbGljZShlKzEpXX1mdW5jdGlvbiBDYyh0KXtyZXR1cm4odD1OYyhNYXRoLmFicyh0KSkpP3RbMV06TmFOfXZhciBQYyx6Yz0vXig/OiguKT8oWzw+PV5dKSk/KFsrXC0oIF0pPyhbJCNdKT8oMCk/KFxkKyk/KCwpPyhcLlxkKyk/KH4pPyhbYS16JV0pPyQvaTtmdW5jdGlvbiBEYyh0KXtpZighKG49emMuZXhlYyh0KSkpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGZvcm1hdDogIit0KTt2YXIgbjtyZXR1cm4gbmV3IFJjKHtmaWxsOm5bMV0sYWxpZ246blsyXSxzaWduOm5bM10sc3ltYm9sOm5bNF0semVybzpuWzVdLHdpZHRoOm5bNl0sY29tbWE6bls3XSxwcmVjaXNpb246bls4XSYmbls4XS5zbGljZSgxKSx0cmltOm5bOV0sdHlwZTpuWzEwXX0pfWZ1bmN0aW9uIFJjKHQpe3RoaXMuZmlsbD12b2lkIDA9PT10LmZpbGw/IiAiOnQuZmlsbCsiIix0aGlzLmFsaWduPXZvaWQgMD09PXQuYWxpZ24/Ij4iOnQuYWxpZ24rIiIsdGhpcy5zaWduPXZvaWQgMD09PXQuc2lnbj8iLSI6dC5zaWduKyIiLHRoaXMuc3ltYm9sPXZvaWQgMD09PXQuc3ltYm9sPyIiOnQuc3ltYm9sKyIiLHRoaXMuemVybz0hIXQuemVybyx0aGlzLndpZHRoPXZvaWQgMD09PXQud2lkdGg/dm9pZCAwOit0LndpZHRoLHRoaXMuY29tbWE9ISF0LmNvbW1hLHRoaXMucHJlY2lzaW9uPXZvaWQgMD09PXQucHJlY2lzaW9uP3ZvaWQgMDordC5wcmVjaXNpb24sdGhpcy50cmltPSEhdC50cmltLHRoaXMudHlwZT12b2lkIDA9PT10LnR5cGU/IiI6dC50eXBlKyIifWZ1bmN0aW9uIEZjKHQsbil7dmFyIGU9TmModCxuKTtpZighZSlyZXR1cm4gdCsiIjt2YXIgcj1lWzBdLGk9ZVsxXTtyZXR1cm4gaTwwPyIwLiIrbmV3IEFycmF5KC1pKS5qb2luKCIwIikrcjpyLmxlbmd0aD5pKzE/ci5zbGljZSgwLGkrMSkrIi4iK3Iuc2xpY2UoaSsxKTpyK25ldyBBcnJheShpLXIubGVuZ3RoKzIpLmpvaW4oIjAiKX1EYy5wcm90b3R5cGU9UmMucHJvdG90eXBlLFJjLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbGwrdGhpcy5hbGlnbit0aGlzLnNpZ24rdGhpcy5zeW1ib2wrKHRoaXMuemVybz8iMCI6IiIpKyh2b2lkIDA9PT10aGlzLndpZHRoPyIiOk1hdGgubWF4KDEsMHx0aGlzLndpZHRoKSkrKHRoaXMuY29tbWE/IiwiOiIiKSsodm9pZCAwPT09dGhpcy5wcmVjaXNpb24/IiI6Ii4iK01hdGgubWF4KDAsMHx0aGlzLnByZWNpc2lvbikpKyh0aGlzLnRyaW0/In4iOiIiKSt0aGlzLnR5cGV9O3ZhciBxYz17IiUiOih0LG4pPT4oMTAwKnQpLnRvRml4ZWQobiksYjp0PT5NYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDIpLGM6dD0+dCsiIixkOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmFicyh0PU1hdGgucm91bmQodCkpPj0xZTIxP3QudG9Mb2NhbGVTdHJpbmcoImVuIikucmVwbGFjZSgvLC9nLCIiKTp0LnRvU3RyaW5nKDEwKX0sZToodCxuKT0+dC50b0V4cG9uZW50aWFsKG4pLGY6KHQsbik9PnQudG9GaXhlZChuKSxnOih0LG4pPT50LnRvUHJlY2lzaW9uKG4pLG86dD0+TWF0aC5yb3VuZCh0KS50b1N0cmluZyg4KSxwOih0LG4pPT5GYygxMDAqdCxuKSxyOkZjLHM6ZnVuY3Rpb24odCxuKXt2YXIgZT1OYyh0LG4pO2lmKCFlKXJldHVybiB0KyIiO3ZhciByPWVbMF0saT1lWzFdLG89aS0oUGM9MypNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3IoaS8zKSkpKSsxLGE9ci5sZW5ndGg7cmV0dXJuIG89PT1hP3I6bz5hP3IrbmV3IEFycmF5KG8tYSsxKS5qb2luKCIwIik6bz4wP3Iuc2xpY2UoMCxvKSsiLiIrci5zbGljZShvKToiMC4iK25ldyBBcnJheSgxLW8pLmpvaW4oIjAiKStOYyh0LE1hdGgubWF4KDAsbitvLTEpKVswXX0sWDp0PT5NYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpLHg6dD0+TWF0aC5yb3VuZCh0KS50b1N0cmluZygxNil9O2Z1bmN0aW9uIEljKHQpe3JldHVybiB0fXZhciBPYyxVYz1BcnJheS5wcm90b3R5cGUubWFwLEJjPVsieSIsInoiLCJhIiwiZiIsInAiLCJuIiwiwrUiLCJtIiwiIiwiayIsIk0iLCJHIiwiVCIsIlAiLCJFIiwiWiIsIlkiXTtmdW5jdGlvbiBZYyh0KXt2YXIgbixlLHI9dm9pZCAwPT09dC5ncm91cGluZ3x8dm9pZCAwPT09dC50aG91c2FuZHM/SWM6KG49VWMuY2FsbCh0Lmdyb3VwaW5nLE51bWJlciksZT10LnRob3VzYW5kcysiIixmdW5jdGlvbih0LHIpe2Zvcih2YXIgaT10Lmxlbmd0aCxvPVtdLGE9MCx1PW5bMF0sYz0wO2k+MCYmdT4wJiYoYyt1KzE+ciYmKHU9TWF0aC5tYXgoMSxyLWMpKSxvLnB1c2godC5zdWJzdHJpbmcoaS09dSxpK3UpKSwhKChjKz11KzEpPnIpKTspdT1uW2E9KGErMSklbi5sZW5ndGhdO3JldHVybiBvLnJldmVyc2UoKS5qb2luKGUpfSksaT12b2lkIDA9PT10LmN1cnJlbmN5PyIiOnQuY3VycmVuY3lbMF0rIiIsbz12b2lkIDA9PT10LmN1cnJlbmN5PyIiOnQuY3VycmVuY3lbMV0rIiIsYT12b2lkIDA9PT10LmRlY2ltYWw/Ii4iOnQuZGVjaW1hbCsiIix1PXZvaWQgMD09PXQubnVtZXJhbHM/SWM6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBuLnJlcGxhY2UoL1swLTldL2csKGZ1bmN0aW9uKG4pe3JldHVybiB0WytuXX0pKX19KFVjLmNhbGwodC5udW1lcmFscyxTdHJpbmcpKSxjPXZvaWQgMD09PXQucGVyY2VudD8iJSI6dC5wZXJjZW50KyIiLGY9dm9pZCAwPT09dC5taW51cz8i4oiSIjp0Lm1pbnVzKyIiLHM9dm9pZCAwPT09dC5uYW4/Ik5hTiI6dC5uYW4rIiI7ZnVuY3Rpb24gbCh0KXt2YXIgbj0odD1EYyh0KSkuZmlsbCxlPXQuYWxpZ24sbD10LnNpZ24saD10LnN5bWJvbCxkPXQuemVybyxwPXQud2lkdGgsZz10LmNvbW1hLHk9dC5wcmVjaXNpb24sdj10LnRyaW0sXz10LnR5cGU7Im4iPT09Xz8oZz0hMCxfPSJnIik6cWNbX118fCh2b2lkIDA9PT15JiYoeT0xMiksdj0hMCxfPSJnIiksKGR8fCIwIj09PW4mJiI9Ij09PWUpJiYoZD0hMCxuPSIwIixlPSI9Iik7dmFyIGI9IiQiPT09aD9pOiIjIj09PWgmJi9bYm94WF0vLnRlc3QoXyk/IjAiK18udG9Mb3dlckNhc2UoKToiIixtPSIkIj09PWg/bzovWyVwXS8udGVzdChfKT9jOiIiLHg9cWNbX10sdz0vW2RlZmdwcnMlXS8udGVzdChfKTtmdW5jdGlvbiBNKHQpe3ZhciBpLG8sYyxoPWIsTT1tO2lmKCJjIj09PV8pTT14KHQpK00sdD0iIjtlbHNle3ZhciBBPSh0PSt0KTwwfHwxL3Q8MDtpZih0PWlzTmFOKHQpP3M6eChNYXRoLmFicyh0KSx5KSx2JiYodD1mdW5jdGlvbih0KXt0OmZvcih2YXIgbixlPXQubGVuZ3RoLHI9MSxpPS0xO3I8ZTsrK3Ipc3dpdGNoKHRbcl0pe2Nhc2UiLiI6aT1uPXI7YnJlYWs7Y2FzZSIwIjowPT09aSYmKGk9ciksbj1yO2JyZWFrO2RlZmF1bHQ6aWYoISt0W3JdKWJyZWFrIHQ7aT4wJiYoaT0wKX1yZXR1cm4gaT4wP3Quc2xpY2UoMCxpKSt0LnNsaWNlKG4rMSk6dH0odCkpLEEmJjA9PSt0JiYiKyIhPT1sJiYoQT0hMSksaD0oQT8iKCI9PT1sP2w6ZjoiLSI9PT1sfHwiKCI9PT1sPyIiOmwpK2gsTT0oInMiPT09Xz9CY1s4K1BjLzNdOiIiKStNKyhBJiYiKCI9PT1sPyIpIjoiIiksdylmb3IoaT0tMSxvPXQubGVuZ3RoOysraTxvOylpZig0OD4oYz10LmNoYXJDb2RlQXQoaSkpfHxjPjU3KXtNPSg0Nj09PWM/YSt0LnNsaWNlKGkrMSk6dC5zbGljZShpKSkrTSx0PXQuc2xpY2UoMCxpKTticmVha319ZyYmIWQmJih0PXIodCwxLzApKTt2YXIgVD1oLmxlbmd0aCt0Lmxlbmd0aCtNLmxlbmd0aCxTPVQ8cD9uZXcgQXJyYXkocC1UKzEpLmpvaW4obik6IiI7c3dpdGNoKGcmJmQmJih0PXIoUyt0LFMubGVuZ3RoP3AtTS5sZW5ndGg6MS8wKSxTPSIiKSxlKXtjYXNlIjwiOnQ9aCt0K00rUzticmVhaztjYXNlIj0iOnQ9aCtTK3QrTTticmVhaztjYXNlIl4iOnQ9Uy5zbGljZSgwLFQ9Uy5sZW5ndGg+PjEpK2grdCtNK1Muc2xpY2UoVCk7YnJlYWs7ZGVmYXVsdDp0PVMraCt0K019cmV0dXJuIHUodCl9cmV0dXJuIHk9dm9pZCAwPT09eT82Oi9bZ3Byc10vLnRlc3QoXyk/TWF0aC5tYXgoMSxNYXRoLm1pbigyMSx5KSk6TWF0aC5tYXgoMCxNYXRoLm1pbigyMCx5KSksTS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0KyIifSxNfXJldHVybntmb3JtYXQ6bCxmb3JtYXRQcmVmaXg6ZnVuY3Rpb24odCxuKXt2YXIgZT1sKCgodD1EYyh0KSkudHlwZT0iZiIsdCkpLHI9MypNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3IoQ2MobikvMykpKSxpPU1hdGgucG93KDEwLC1yKSxvPUJjWzgrci8zXTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUoaSp0KStvfX19fWZ1bmN0aW9uIExjKG4pe3JldHVybiBPYz1ZYyhuKSx0LmZvcm1hdD1PYy5mb3JtYXQsdC5mb3JtYXRQcmVmaXg9T2MuZm9ybWF0UHJlZml4LE9jfWZ1bmN0aW9uIGpjKHQpe3JldHVybiBNYXRoLm1heCgwLC1DYyhNYXRoLmFicyh0KSkpfWZ1bmN0aW9uICRjKHQsbil7cmV0dXJuIE1hdGgubWF4KDAsMypNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3IoQ2MobikvMykpKS1DYyhNYXRoLmFicyh0KSkpfWZ1bmN0aW9uIEhjKHQsbil7cmV0dXJuIHQ9TWF0aC5hYnModCksbj1NYXRoLmFicyhuKS10LE1hdGgubWF4KDAsQ2MobiktQ2ModCkpKzF9dC5mb3JtYXQ9dm9pZCAwLHQuZm9ybWF0UHJlZml4PXZvaWQgMCxMYyh7dGhvdXNhbmRzOiIsIixncm91cGluZzpbM10sY3VycmVuY3k6WyIkIiwiIl19KTt2YXIgWGM9MWUtNixHYz0xZS0xMixWYz1NYXRoLlBJLFdjPVZjLzIsWmM9VmMvNCxLYz0yKlZjLFFjPTE4MC9WYyxKYz1WYy8xODAsdGY9TWF0aC5hYnMsbmY9TWF0aC5hdGFuLGVmPU1hdGguYXRhbjIscmY9TWF0aC5jb3Msb2Y9TWF0aC5jZWlsLGFmPU1hdGguZXhwLHVmPU1hdGguaHlwb3QsY2Y9TWF0aC5sb2csZmY9TWF0aC5wb3csc2Y9TWF0aC5zaW4sbGY9TWF0aC5zaWdufHxmdW5jdGlvbih0KXtyZXR1cm4gdD4wPzE6dDwwPy0xOjB9LGhmPU1hdGguc3FydCxkZj1NYXRoLnRhbjtmdW5jdGlvbiBwZih0KXtyZXR1cm4gdD4xPzA6dDwtMT9WYzpNYXRoLmFjb3ModCl9ZnVuY3Rpb24gZ2YodCl7cmV0dXJuIHQ+MT9XYzp0PC0xPy1XYzpNYXRoLmFzaW4odCl9ZnVuY3Rpb24geWYodCl7cmV0dXJuKHQ9c2YodC8yKSkqdH1mdW5jdGlvbiB2Zigpe31mdW5jdGlvbiBfZih0LG4pe3QmJm1mLmhhc093blByb3BlcnR5KHQudHlwZSkmJm1mW3QudHlwZV0odCxuKX12YXIgYmY9e0ZlYXR1cmU6ZnVuY3Rpb24odCxuKXtfZih0Lmdlb21ldHJ5LG4pfSxGZWF0dXJlQ29sbGVjdGlvbjpmdW5jdGlvbih0LG4pe2Zvcih2YXIgZT10LmZlYXR1cmVzLHI9LTEsaT1lLmxlbmd0aDsrK3I8aTspX2YoZVtyXS5nZW9tZXRyeSxuKX19LG1mPXtTcGhlcmU6ZnVuY3Rpb24odCxuKXtuLnNwaGVyZSgpfSxQb2ludDpmdW5jdGlvbih0LG4pe3Q9dC5jb29yZGluYXRlcyxuLnBvaW50KHRbMF0sdFsxXSx0WzJdKX0sTXVsdGlQb2ludDpmdW5jdGlvbih0LG4pe2Zvcih2YXIgZT10LmNvb3JkaW5hdGVzLHI9LTEsaT1lLmxlbmd0aDsrK3I8aTspdD1lW3JdLG4ucG9pbnQodFswXSx0WzFdLHRbMl0pfSxMaW5lU3RyaW5nOmZ1bmN0aW9uKHQsbil7eGYodC5jb29yZGluYXRlcyxuLDApfSxNdWx0aUxpbmVTdHJpbmc6ZnVuY3Rpb24odCxuKXtmb3IodmFyIGU9dC5jb29yZGluYXRlcyxyPS0xLGk9ZS5sZW5ndGg7KytyPGk7KXhmKGVbcl0sbiwwKX0sUG9seWdvbjpmdW5jdGlvbih0LG4pe3dmKHQuY29vcmRpbmF0ZXMsbil9LE11bHRpUG9seWdvbjpmdW5jdGlvbih0LG4pe2Zvcih2YXIgZT10LmNvb3JkaW5hdGVzLHI9LTEsaT1lLmxlbmd0aDsrK3I8aTspd2YoZVtyXSxuKX0sR2VvbWV0cnlDb2xsZWN0aW9uOmZ1bmN0aW9uKHQsbil7Zm9yKHZhciBlPXQuZ2VvbWV0cmllcyxyPS0xLGk9ZS5sZW5ndGg7KytyPGk7KV9mKGVbcl0sbil9fTtmdW5jdGlvbiB4Zih0LG4sZSl7dmFyIHIsaT0tMSxvPXQubGVuZ3RoLWU7Zm9yKG4ubGluZVN0YXJ0KCk7KytpPG87KXI9dFtpXSxuLnBvaW50KHJbMF0sclsxXSxyWzJdKTtuLmxpbmVFbmQoKX1mdW5jdGlvbiB3Zih0LG4pe3ZhciBlPS0xLHI9dC5sZW5ndGg7Zm9yKG4ucG9seWdvblN0YXJ0KCk7KytlPHI7KXhmKHRbZV0sbiwxKTtuLnBvbHlnb25FbmQoKX1mdW5jdGlvbiBNZih0LG4pe3QmJmJmLmhhc093blByb3BlcnR5KHQudHlwZSk/YmZbdC50eXBlXSh0LG4pOl9mKHQsbil9dmFyIEFmLFRmLFNmLEVmLGtmLE5mLENmLFBmLHpmLERmLFJmLEZmLHFmLElmLE9mLFVmLEJmPW5ldyBULFlmPW5ldyBULExmPXtwb2ludDp2ZixsaW5lU3RhcnQ6dmYsbGluZUVuZDp2Zixwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtCZj1uZXcgVCxMZi5saW5lU3RhcnQ9amYsTGYubGluZUVuZD0kZn0scG9seWdvbkVuZDpmdW5jdGlvbigpe3ZhciB0PStCZjtZZi5hZGQodDwwP0tjK3Q6dCksdGhpcy5saW5lU3RhcnQ9dGhpcy5saW5lRW5kPXRoaXMucG9pbnQ9dmZ9LHNwaGVyZTpmdW5jdGlvbigpe1lmLmFkZChLYyl9fTtmdW5jdGlvbiBqZigpe0xmLnBvaW50PUhmfWZ1bmN0aW9uICRmKCl7WGYoQWYsVGYpfWZ1bmN0aW9uIEhmKHQsbil7TGYucG9pbnQ9WGYsQWY9dCxUZj1uLFNmPXQqPUpjLEVmPXJmKG49KG4qPUpjKS8yK1pjKSxrZj1zZihuKX1mdW5jdGlvbiBYZih0LG4pe3ZhciBlPSh0Kj1KYyktU2Yscj1lPj0wPzE6LTEsaT1yKmUsbz1yZihuPShuKj1KYykvMitaYyksYT1zZihuKSx1PWtmKmEsYz1FZipvK3UqcmYoaSksZj11KnIqc2YoaSk7QmYuYWRkKGVmKGYsYykpLFNmPXQsRWY9byxrZj1hfWZ1bmN0aW9uIEdmKHQpe3JldHVybltlZih0WzFdLHRbMF0pLGdmKHRbMl0pXX1mdW5jdGlvbiBWZih0KXt2YXIgbj10WzBdLGU9dFsxXSxyPXJmKGUpO3JldHVybltyKnJmKG4pLHIqc2Yobiksc2YoZSldfWZ1bmN0aW9uIFdmKHQsbil7cmV0dXJuIHRbMF0qblswXSt0WzFdKm5bMV0rdFsyXSpuWzJdfWZ1bmN0aW9uIFpmKHQsbil7cmV0dXJuW3RbMV0qblsyXS10WzJdKm5bMV0sdFsyXSpuWzBdLXRbMF0qblsyXSx0WzBdKm5bMV0tdFsxXSpuWzBdXX1mdW5jdGlvbiBLZih0LG4pe3RbMF0rPW5bMF0sdFsxXSs9blsxXSx0WzJdKz1uWzJdfWZ1bmN0aW9uIFFmKHQsbil7cmV0dXJuW3RbMF0qbix0WzFdKm4sdFsyXSpuXX1mdW5jdGlvbiBKZih0KXt2YXIgbj1oZih0WzBdKnRbMF0rdFsxXSp0WzFdK3RbMl0qdFsyXSk7dFswXS89bix0WzFdLz1uLHRbMl0vPW59dmFyIHRzLG5zLGVzLHJzLGlzLG9zLGFzLHVzLGNzLGZzLHNzLGxzLGhzLGRzLHBzLGdzLHlzPXtwb2ludDp2cyxsaW5lU3RhcnQ6YnMsbGluZUVuZDptcyxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXt5cy5wb2ludD14cyx5cy5saW5lU3RhcnQ9d3MseXMubGluZUVuZD1NcyxJZj1uZXcgVCxMZi5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigpe0xmLnBvbHlnb25FbmQoKSx5cy5wb2ludD12cyx5cy5saW5lU3RhcnQ9YnMseXMubGluZUVuZD1tcyxCZjwwPyhOZj0tKFBmPTE4MCksQ2Y9LSh6Zj05MCkpOklmPlhjP3pmPTkwOklmPC0xZS02JiYoQ2Y9LTkwKSxVZlswXT1OZixVZlsxXT1QZn0sc3BoZXJlOmZ1bmN0aW9uKCl7TmY9LShQZj0xODApLENmPS0oemY9OTApfX07ZnVuY3Rpb24gdnModCxuKXtPZi5wdXNoKFVmPVtOZj10LFBmPXRdKSxuPENmJiYoQ2Y9biksbj56ZiYmKHpmPW4pfWZ1bmN0aW9uIF9zKHQsbil7dmFyIGU9VmYoW3QqSmMsbipKY10pO2lmKHFmKXt2YXIgcj1aZihxZixlKSxpPVpmKFtyWzFdLC1yWzBdLDBdLHIpO0pmKGkpLGk9R2YoaSk7dmFyIG8sYT10LURmLHU9YT4wPzE6LTEsYz1pWzBdKlFjKnUsZj10ZihhKT4xODA7Zl4odSpEZjxjJiZjPHUqdCk/KG89aVsxXSpRYyk+emYmJih6Zj1vKTpmXih1KkRmPChjPShjKzM2MCklMzYwLTE4MCkmJmM8dSp0KT8obz0taVsxXSpRYyk8Q2YmJihDZj1vKToobjxDZiYmKENmPW4pLG4+emYmJih6Zj1uKSksZj90PERmP0FzKE5mLHQpPkFzKE5mLFBmKSYmKFBmPXQpOkFzKHQsUGYpPkFzKE5mLFBmKSYmKE5mPXQpOlBmPj1OZj8odDxOZiYmKE5mPXQpLHQ+UGYmJihQZj10KSk6dD5EZj9BcyhOZix0KT5BcyhOZixQZikmJihQZj10KTpBcyh0LFBmKT5BcyhOZixQZikmJihOZj10KX1lbHNlIE9mLnB1c2goVWY9W05mPXQsUGY9dF0pO248Q2YmJihDZj1uKSxuPnpmJiYoemY9bikscWY9ZSxEZj10fWZ1bmN0aW9uIGJzKCl7eXMucG9pbnQ9X3N9ZnVuY3Rpb24gbXMoKXtVZlswXT1OZixVZlsxXT1QZix5cy5wb2ludD12cyxxZj1udWxsfWZ1bmN0aW9uIHhzKHQsbil7aWYocWYpe3ZhciBlPXQtRGY7SWYuYWRkKHRmKGUpPjE4MD9lKyhlPjA/MzYwOi0zNjApOmUpfWVsc2UgUmY9dCxGZj1uO0xmLnBvaW50KHQsbiksX3ModCxuKX1mdW5jdGlvbiB3cygpe0xmLmxpbmVTdGFydCgpfWZ1bmN0aW9uIE1zKCl7eHMoUmYsRmYpLExmLmxpbmVFbmQoKSx0ZihJZik+WGMmJihOZj0tKFBmPTE4MCkpLFVmWzBdPU5mLFVmWzFdPVBmLHFmPW51bGx9ZnVuY3Rpb24gQXModCxuKXtyZXR1cm4obi09dCk8MD9uKzM2MDpufWZ1bmN0aW9uIFRzKHQsbil7cmV0dXJuIHRbMF0tblswXX1mdW5jdGlvbiBTcyh0LG4pe3JldHVybiB0WzBdPD10WzFdP3RbMF08PW4mJm48PXRbMV06bjx0WzBdfHx0WzFdPG59dmFyIEVzPXtzcGhlcmU6dmYscG9pbnQ6a3MsbGluZVN0YXJ0OkNzLGxpbmVFbmQ6RHMscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7RXMubGluZVN0YXJ0PVJzLEVzLmxpbmVFbmQ9RnN9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtFcy5saW5lU3RhcnQ9Q3MsRXMubGluZUVuZD1Ec319O2Z1bmN0aW9uIGtzKHQsbil7dCo9SmM7dmFyIGU9cmYobio9SmMpO05zKGUqcmYodCksZSpzZih0KSxzZihuKSl9ZnVuY3Rpb24gTnModCxuLGUpeysrdHMsZXMrPSh0LWVzKS90cyxycys9KG4tcnMpL3RzLGlzKz0oZS1pcykvdHN9ZnVuY3Rpb24gQ3MoKXtFcy5wb2ludD1Qc31mdW5jdGlvbiBQcyh0LG4pe3QqPUpjO3ZhciBlPXJmKG4qPUpjKTtkcz1lKnJmKHQpLHBzPWUqc2YodCksZ3M9c2YobiksRXMucG9pbnQ9enMsTnMoZHMscHMsZ3MpfWZ1bmN0aW9uIHpzKHQsbil7dCo9SmM7dmFyIGU9cmYobio9SmMpLHI9ZSpyZih0KSxpPWUqc2YodCksbz1zZihuKSxhPWVmKGhmKChhPXBzKm8tZ3MqaSkqYSsoYT1ncypyLWRzKm8pKmErKGE9ZHMqaS1wcypyKSphKSxkcypyK3BzKmkrZ3Mqbyk7bnMrPWEsb3MrPWEqKGRzKyhkcz1yKSksYXMrPWEqKHBzKyhwcz1pKSksdXMrPWEqKGdzKyhncz1vKSksTnMoZHMscHMsZ3MpfWZ1bmN0aW9uIERzKCl7RXMucG9pbnQ9a3N9ZnVuY3Rpb24gUnMoKXtFcy5wb2ludD1xc31mdW5jdGlvbiBGcygpe0lzKGxzLGhzKSxFcy5wb2ludD1rc31mdW5jdGlvbiBxcyh0LG4pe2xzPXQsaHM9bix0Kj1KYyxuKj1KYyxFcy5wb2ludD1Jczt2YXIgZT1yZihuKTtkcz1lKnJmKHQpLHBzPWUqc2YodCksZ3M9c2YobiksTnMoZHMscHMsZ3MpfWZ1bmN0aW9uIElzKHQsbil7dCo9SmM7dmFyIGU9cmYobio9SmMpLHI9ZSpyZih0KSxpPWUqc2YodCksbz1zZihuKSxhPXBzKm8tZ3MqaSx1PWdzKnItZHMqbyxjPWRzKmktcHMqcixmPXVmKGEsdSxjKSxzPWdmKGYpLGw9ZiYmLXMvZjtjcy5hZGQobCphKSxmcy5hZGQobCp1KSxzcy5hZGQobCpjKSxucys9cyxvcys9cyooZHMrKGRzPXIpKSxhcys9cyoocHMrKHBzPWkpKSx1cys9cyooZ3MrKGdzPW8pKSxOcyhkcyxwcyxncyl9ZnVuY3Rpb24gT3ModCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIFVzKHQsbil7ZnVuY3Rpb24gZShlLHIpe3JldHVybiBlPXQoZSxyKSxuKGVbMF0sZVsxXSl9cmV0dXJuIHQuaW52ZXJ0JiZuLmludmVydCYmKGUuaW52ZXJ0PWZ1bmN0aW9uKGUscil7cmV0dXJuKGU9bi5pbnZlcnQoZSxyKSkmJnQuaW52ZXJ0KGVbMF0sZVsxXSl9KSxlfWZ1bmN0aW9uIEJzKHQsbil7cmV0dXJuW3RmKHQpPlZjP3QrTWF0aC5yb3VuZCgtdC9LYykqS2M6dCxuXX1mdW5jdGlvbiBZcyh0LG4sZSl7cmV0dXJuKHQlPUtjKT9ufHxlP1VzKGpzKHQpLCRzKG4sZSkpOmpzKHQpOm58fGU/JHMobixlKTpCc31mdW5jdGlvbiBMcyh0KXtyZXR1cm4gZnVuY3Rpb24obixlKXtyZXR1cm5bKG4rPXQpPlZjP24tS2M6bjwtVmM/bitLYzpuLGVdfX1mdW5jdGlvbiBqcyh0KXt2YXIgbj1Mcyh0KTtyZXR1cm4gbi5pbnZlcnQ9THMoLXQpLG59ZnVuY3Rpb24gJHModCxuKXt2YXIgZT1yZih0KSxyPXNmKHQpLGk9cmYobiksbz1zZihuKTtmdW5jdGlvbiBhKHQsbil7dmFyIGE9cmYobiksdT1yZih0KSphLGM9c2YodCkqYSxmPXNmKG4pLHM9ZiplK3UqcjtyZXR1cm5bZWYoYyppLXMqbyx1KmUtZipyKSxnZihzKmkrYypvKV19cmV0dXJuIGEuaW52ZXJ0PWZ1bmN0aW9uKHQsbil7dmFyIGE9cmYobiksdT1yZih0KSphLGM9c2YodCkqYSxmPXNmKG4pLHM9ZippLWMqbztyZXR1cm5bZWYoYyppK2Yqbyx1KmUrcypyKSxnZihzKmUtdSpyKV19LGF9ZnVuY3Rpb24gSHModCl7ZnVuY3Rpb24gbihuKXtyZXR1cm4obj10KG5bMF0qSmMsblsxXSpKYykpWzBdKj1RYyxuWzFdKj1RYyxufXJldHVybiB0PVlzKHRbMF0qSmMsdFsxXSpKYyx0Lmxlbmd0aD4yP3RbMl0qSmM6MCksbi5pbnZlcnQ9ZnVuY3Rpb24obil7cmV0dXJuKG49dC5pbnZlcnQoblswXSpKYyxuWzFdKkpjKSlbMF0qPVFjLG5bMV0qPVFjLG59LG59ZnVuY3Rpb24gWHModCxuLGUscixpLG8pe2lmKGUpe3ZhciBhPXJmKG4pLHU9c2YobiksYz1yKmU7bnVsbD09aT8oaT1uK3IqS2Msbz1uLWMvMik6KGk9R3MoYSxpKSxvPUdzKGEsbyksKHI+MD9pPG86aT5vKSYmKGkrPXIqS2MpKTtmb3IodmFyIGYscz1pO3I+MD9zPm86czxvO3MtPWMpZj1HZihbYSwtdSpyZihzKSwtdSpzZihzKV0pLHQucG9pbnQoZlswXSxmWzFdKX19ZnVuY3Rpb24gR3ModCxuKXsobj1WZihuKSlbMF0tPXQsSmYobik7dmFyIGU9cGYoLW5bMV0pO3JldHVybigoLW5bMl08MD8tZTplKStLYy1YYyklS2N9ZnVuY3Rpb24gVnMoKXt2YXIgdCxuPVtdO3JldHVybntwb2ludDpmdW5jdGlvbihuLGUscil7dC5wdXNoKFtuLGUscl0pfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXtuLnB1c2godD1bXSl9LGxpbmVFbmQ6dmYscmVqb2luOmZ1bmN0aW9uKCl7bi5sZW5ndGg+MSYmbi5wdXNoKG4ucG9wKCkuY29uY2F0KG4uc2hpZnQoKSkpfSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgZT1uO3JldHVybiBuPVtdLHQ9bnVsbCxlfX19ZnVuY3Rpb24gV3ModCxuKXtyZXR1cm4gdGYodFswXS1uWzBdKTxYYyYmdGYodFsxXS1uWzFdKTxYY31mdW5jdGlvbiBacyh0LG4sZSxyKXt0aGlzLng9dCx0aGlzLno9bix0aGlzLm89ZSx0aGlzLmU9cix0aGlzLnY9ITEsdGhpcy5uPXRoaXMucD1udWxsfWZ1bmN0aW9uIEtzKHQsbixlLHIsaSl7dmFyIG8sYSx1PVtdLGM9W107aWYodC5mb3JFYWNoKChmdW5jdGlvbih0KXtpZighKChuPXQubGVuZ3RoLTEpPD0wKSl7dmFyIG4sZSxyPXRbMF0sYT10W25dO2lmKFdzKHIsYSkpe2lmKCFyWzJdJiYhYVsyXSl7Zm9yKGkubGluZVN0YXJ0KCksbz0wO288bjsrK28paS5wb2ludCgocj10W29dKVswXSxyWzFdKTtyZXR1cm4gdm9pZCBpLmxpbmVFbmQoKX1hWzBdKz0yZS02fXUucHVzaChlPW5ldyBacyhyLHQsbnVsbCwhMCkpLGMucHVzaChlLm89bmV3IFpzKHIsbnVsbCxlLCExKSksdS5wdXNoKGU9bmV3IFpzKGEsdCxudWxsLCExKSksYy5wdXNoKGUubz1uZXcgWnMoYSxudWxsLGUsITApKX19KSksdS5sZW5ndGgpe2ZvcihjLnNvcnQobiksUXModSksUXMoYyksbz0wLGE9Yy5sZW5ndGg7bzxhOysrbyljW29dLmU9ZT0hZTtmb3IodmFyIGYscyxsPXVbMF07Oyl7Zm9yKHZhciBoPWwsZD0hMDtoLnY7KWlmKChoPWgubik9PT1sKXJldHVybjtmPWgueixpLmxpbmVTdGFydCgpO2Rve2lmKGgudj1oLm8udj0hMCxoLmUpe2lmKGQpZm9yKG89MCxhPWYubGVuZ3RoO288YTsrK28paS5wb2ludCgocz1mW29dKVswXSxzWzFdKTtlbHNlIHIoaC54LGgubi54LDEsaSk7aD1oLm59ZWxzZXtpZihkKWZvcihmPWgucC56LG89Zi5sZW5ndGgtMTtvPj0wOy0tbylpLnBvaW50KChzPWZbb10pWzBdLHNbMV0pO2Vsc2UgcihoLngsaC5wLngsLTEsaSk7aD1oLnB9Zj0oaD1oLm8pLnosZD0hZH13aGlsZSghaC52KTtpLmxpbmVFbmQoKX19fWZ1bmN0aW9uIFFzKHQpe2lmKG49dC5sZW5ndGgpe2Zvcih2YXIgbixlLHI9MCxpPXRbMF07KytyPG47KWkubj1lPXRbcl0sZS5wPWksaT1lO2kubj1lPXRbMF0sZS5wPWl9fWZ1bmN0aW9uIEpzKHQpe3JldHVybiB0Zih0WzBdKTw9VmM/dFswXTpsZih0WzBdKSooKHRmKHRbMF0pK1ZjKSVLYy1WYyl9ZnVuY3Rpb24gdGwodCxuKXt2YXIgZT1KcyhuKSxyPW5bMV0saT1zZihyKSxvPVtzZihlKSwtcmYoZSksMF0sYT0wLHU9MCxjPW5ldyBUOzE9PT1pP3I9V2MrWGM6LTE9PT1pJiYocj0tV2MtWGMpO2Zvcih2YXIgZj0wLHM9dC5sZW5ndGg7ZjxzOysrZilpZihoPShsPXRbZl0pLmxlbmd0aClmb3IodmFyIGwsaCxkPWxbaC0xXSxwPUpzKGQpLGc9ZFsxXS8yK1pjLHk9c2YoZyksdj1yZihnKSxfPTA7XzxoOysrXyxwPW0seT13LHY9TSxkPWIpe3ZhciBiPWxbX10sbT1KcyhiKSx4PWJbMV0vMitaYyx3PXNmKHgpLE09cmYoeCksQT1tLXAsUz1BPj0wPzE6LTEsRT1TKkEsaz1FPlZjLE49eSp3O2lmKGMuYWRkKGVmKE4qUypzZihFKSx2Kk0rTipyZihFKSkpLGErPWs/QStTKktjOkEsa15wPj1lXm0+PWUpe3ZhciBDPVpmKFZmKGQpLFZmKGIpKTtKZihDKTt2YXIgUD1aZihvLEMpO0pmKFApO3ZhciB6PShrXkE+PTA/LTE6MSkqZ2YoUFsyXSk7KHI+enx8cj09PXomJihDWzBdfHxDWzFdKSkmJih1Kz1rXkE+PTA/MTotMSl9fXJldHVybihhPC0xZS02fHxhPFhjJiZjPC0xZS0xMileMSZ1fWZ1bmN0aW9uIG5sKHQsbixlLHIpe3JldHVybiBmdW5jdGlvbihpKXt2YXIgbyxhLHUsYz1uKGkpLGY9VnMoKSxzPW4oZiksbD0hMSxoPXtwb2ludDpkLGxpbmVTdGFydDpnLGxpbmVFbmQ6eSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtoLnBvaW50PXYsaC5saW5lU3RhcnQ9XyxoLmxpbmVFbmQ9YixhPVtdLG89W119LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtoLnBvaW50PWQsaC5saW5lU3RhcnQ9ZyxoLmxpbmVFbmQ9eSxhPWZ0KGEpO3ZhciB0PXRsKG8scik7YS5sZW5ndGg/KGx8fChpLnBvbHlnb25TdGFydCgpLGw9ITApLEtzKGEscmwsdCxlLGkpKTp0JiYobHx8KGkucG9seWdvblN0YXJ0KCksbD0hMCksaS5saW5lU3RhcnQoKSxlKG51bGwsbnVsbCwxLGkpLGkubGluZUVuZCgpKSxsJiYoaS5wb2x5Z29uRW5kKCksbD0hMSksYT1vPW51bGx9LHNwaGVyZTpmdW5jdGlvbigpe2kucG9seWdvblN0YXJ0KCksaS5saW5lU3RhcnQoKSxlKG51bGwsbnVsbCwxLGkpLGkubGluZUVuZCgpLGkucG9seWdvbkVuZCgpfX07ZnVuY3Rpb24gZChuLGUpe3QobixlKSYmaS5wb2ludChuLGUpfWZ1bmN0aW9uIHAodCxuKXtjLnBvaW50KHQsbil9ZnVuY3Rpb24gZygpe2gucG9pbnQ9cCxjLmxpbmVTdGFydCgpfWZ1bmN0aW9uIHkoKXtoLnBvaW50PWQsYy5saW5lRW5kKCl9ZnVuY3Rpb24gdih0LG4pe3UucHVzaChbdCxuXSkscy5wb2ludCh0LG4pfWZ1bmN0aW9uIF8oKXtzLmxpbmVTdGFydCgpLHU9W119ZnVuY3Rpb24gYigpe3YodVswXVswXSx1WzBdWzFdKSxzLmxpbmVFbmQoKTt2YXIgdCxuLGUscixjPXMuY2xlYW4oKSxoPWYucmVzdWx0KCksZD1oLmxlbmd0aDtpZih1LnBvcCgpLG8ucHVzaCh1KSx1PW51bGwsZClpZigxJmMpe2lmKChuPShlPWhbMF0pLmxlbmd0aC0xKT4wKXtmb3IobHx8KGkucG9seWdvblN0YXJ0KCksbD0hMCksaS5saW5lU3RhcnQoKSx0PTA7dDxuOysrdClpLnBvaW50KChyPWVbdF0pWzBdLHJbMV0pO2kubGluZUVuZCgpfX1lbHNlIGQ+MSYmMiZjJiZoLnB1c2goaC5wb3AoKS5jb25jYXQoaC5zaGlmdCgpKSksYS5wdXNoKGguZmlsdGVyKGVsKSl9cmV0dXJuIGh9fWZ1bmN0aW9uIGVsKHQpe3JldHVybiB0Lmxlbmd0aD4xfWZ1bmN0aW9uIHJsKHQsbil7cmV0dXJuKCh0PXQueClbMF08MD90WzFdLVdjLVhjOldjLXRbMV0pLSgobj1uLngpWzBdPDA/blsxXS1XYy1YYzpXYy1uWzFdKX1Ccy5pbnZlcnQ9QnM7dmFyIGlsPW5sKChmdW5jdGlvbigpe3JldHVybiEwfSksKGZ1bmN0aW9uKHQpe3ZhciBuLGU9TmFOLHI9TmFOLGk9TmFOO3JldHVybntsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0LmxpbmVTdGFydCgpLG49MX0scG9pbnQ6ZnVuY3Rpb24obyxhKXt2YXIgdT1vPjA/VmM6LVZjLGM9dGYoby1lKTt0ZihjLVZjKTxYYz8odC5wb2ludChlLHI9KHIrYSkvMj4wP1djOi1XYyksdC5wb2ludChpLHIpLHQubGluZUVuZCgpLHQubGluZVN0YXJ0KCksdC5wb2ludCh1LHIpLHQucG9pbnQobyxyKSxuPTApOmkhPT11JiZjPj1WYyYmKHRmKGUtaSk8WGMmJihlLT1pKlhjKSx0ZihvLXUpPFhjJiYoby09dSpYYykscj1mdW5jdGlvbih0LG4sZSxyKXt2YXIgaSxvLGE9c2YodC1lKTtyZXR1cm4gdGYoYSk+WGM/bmYoKHNmKG4pKihvPXJmKHIpKSpzZihlKS1zZihyKSooaT1yZihuKSkqc2YodCkpLyhpKm8qYSkpOihuK3IpLzJ9KGUscixvLGEpLHQucG9pbnQoaSxyKSx0LmxpbmVFbmQoKSx0LmxpbmVTdGFydCgpLHQucG9pbnQodSxyKSxuPTApLHQucG9pbnQoZT1vLHI9YSksaT11fSxsaW5lRW5kOmZ1bmN0aW9uKCl7dC5saW5lRW5kKCksZT1yPU5hTn0sY2xlYW46ZnVuY3Rpb24oKXtyZXR1cm4gMi1ufX19KSwoZnVuY3Rpb24odCxuLGUscil7dmFyIGk7aWYobnVsbD09dClpPWUqV2Msci5wb2ludCgtVmMsaSksci5wb2ludCgwLGkpLHIucG9pbnQoVmMsaSksci5wb2ludChWYywwKSxyLnBvaW50KFZjLC1pKSxyLnBvaW50KDAsLWkpLHIucG9pbnQoLVZjLC1pKSxyLnBvaW50KC1WYywwKSxyLnBvaW50KC1WYyxpKTtlbHNlIGlmKHRmKHRbMF0tblswXSk+WGMpe3ZhciBvPXRbMF08blswXT9WYzotVmM7aT1lKm8vMixyLnBvaW50KC1vLGkpLHIucG9pbnQoMCxpKSxyLnBvaW50KG8saSl9ZWxzZSByLnBvaW50KG5bMF0sblsxXSl9KSxbLVZjLC1XY10pO2Z1bmN0aW9uIG9sKHQpe3ZhciBuPXJmKHQpLGU9NipKYyxyPW4+MCxpPXRmKG4pPlhjO2Z1bmN0aW9uIG8odCxlKXtyZXR1cm4gcmYodCkqcmYoZSk+bn1mdW5jdGlvbiBhKHQsZSxyKXt2YXIgaT1bMSwwLDBdLG89WmYoVmYodCksVmYoZSkpLGE9V2YobyxvKSx1PW9bMF0sYz1hLXUqdTtpZighYylyZXR1cm4hciYmdDt2YXIgZj1uKmEvYyxzPS1uKnUvYyxsPVpmKGksbyksaD1RZihpLGYpO0tmKGgsUWYobyxzKSk7dmFyIGQ9bCxwPVdmKGgsZCksZz1XZihkLGQpLHk9cCpwLWcqKFdmKGgsaCktMSk7aWYoISh5PDApKXt2YXIgdj1oZih5KSxfPVFmKGQsKC1wLXYpL2cpO2lmKEtmKF8saCksXz1HZihfKSwhcilyZXR1cm4gXzt2YXIgYixtPXRbMF0seD1lWzBdLHc9dFsxXSxNPWVbMV07eDxtJiYoYj1tLG09eCx4PWIpO3ZhciBBPXgtbSxUPXRmKEEtVmMpPFhjO2lmKCFUJiZNPHcmJihiPXcsdz1NLE09YiksVHx8QTxYYz9UP3crTT4wXl9bMV08KHRmKF9bMF0tbSk8WGM/dzpNKTp3PD1fWzFdJiZfWzFdPD1NOkE+VmNeKG08PV9bMF0mJl9bMF08PXgpKXt2YXIgUz1RZihkLCgtcCt2KS9nKTtyZXR1cm4gS2YoUyxoKSxbXyxHZihTKV19fX1mdW5jdGlvbiB1KG4sZSl7dmFyIGk9cj90OlZjLXQsbz0wO3JldHVybiBuPC1pP298PTE6bj5pJiYob3w9MiksZTwtaT9vfD00OmU+aSYmKG98PTgpLG99cmV0dXJuIG5sKG8sKGZ1bmN0aW9uKHQpe3ZhciBuLGUsYyxmLHM7cmV0dXJue2xpbmVTdGFydDpmdW5jdGlvbigpe2Y9Yz0hMSxzPTF9LHBvaW50OmZ1bmN0aW9uKGwsaCl7dmFyIGQscD1bbCxoXSxnPW8obCxoKSx5PXI/Zz8wOnUobCxoKTpnP3UobCsobDwwP1ZjOi1WYyksaCk6MDtpZighbiYmKGY9Yz1nKSYmdC5saW5lU3RhcnQoKSxnIT09YyYmKCEoZD1hKG4scCkpfHxXcyhuLGQpfHxXcyhwLGQpKSYmKHBbMl09MSksZyE9PWMpcz0wLGc/KHQubGluZVN0YXJ0KCksZD1hKHAsbiksdC5wb2ludChkWzBdLGRbMV0pKTooZD1hKG4scCksdC5wb2ludChkWzBdLGRbMV0sMiksdC5saW5lRW5kKCkpLG49ZDtlbHNlIGlmKGkmJm4mJnJeZyl7dmFyIHY7eSZlfHwhKHY9YShwLG4sITApKXx8KHM9MCxyPyh0LmxpbmVTdGFydCgpLHQucG9pbnQodlswXVswXSx2WzBdWzFdKSx0LnBvaW50KHZbMV1bMF0sdlsxXVsxXSksdC5saW5lRW5kKCkpOih0LnBvaW50KHZbMV1bMF0sdlsxXVsxXSksdC5saW5lRW5kKCksdC5saW5lU3RhcnQoKSx0LnBvaW50KHZbMF1bMF0sdlswXVsxXSwzKSkpfSFnfHxuJiZXcyhuLHApfHx0LnBvaW50KHBbMF0scFsxXSksbj1wLGM9ZyxlPXl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtjJiZ0LmxpbmVFbmQoKSxuPW51bGx9LGNsZWFuOmZ1bmN0aW9uKCl7cmV0dXJuIHN8KGYmJmMpPDwxfX19KSwoZnVuY3Rpb24obixyLGksbyl7WHMobyx0LGUsaSxuLHIpfSkscj9bMCwtdF06Wy1WYyx0LVZjXSl9dmFyIGFsLHVsLGNsLGZsLHNsPTFlOSxsbD0tc2w7ZnVuY3Rpb24gaGwodCxuLGUscil7ZnVuY3Rpb24gaShpLG8pe3JldHVybiB0PD1pJiZpPD1lJiZuPD1vJiZvPD1yfWZ1bmN0aW9uIG8oaSxvLHUsZil7dmFyIHM9MCxsPTA7aWYobnVsbD09aXx8KHM9YShpLHUpKSE9PShsPWEobyx1KSl8fGMoaSxvKTwwXnU+MClkb3tmLnBvaW50KDA9PT1zfHwzPT09cz90OmUscz4xP3I6bil9d2hpbGUoKHM9KHMrdSs0KSU0KSE9PWwpO2Vsc2UgZi5wb2ludChvWzBdLG9bMV0pfWZ1bmN0aW9uIGEocixpKXtyZXR1cm4gdGYoclswXS10KTxYYz9pPjA/MDozOnRmKHJbMF0tZSk8WGM/aT4wPzI6MTp0ZihyWzFdLW4pPFhjP2k+MD8xOjA6aT4wPzM6Mn1mdW5jdGlvbiB1KHQsbil7cmV0dXJuIGModC54LG4ueCl9ZnVuY3Rpb24gYyh0LG4pe3ZhciBlPWEodCwxKSxyPWEobiwxKTtyZXR1cm4gZSE9PXI/ZS1yOjA9PT1lP25bMV0tdFsxXToxPT09ZT90WzBdLW5bMF06Mj09PWU/dFsxXS1uWzFdOm5bMF0tdFswXX1yZXR1cm4gZnVuY3Rpb24oYSl7dmFyIGMsZixzLGwsaCxkLHAsZyx5LHYsXyxiPWEsbT1WcygpLHg9e3BvaW50OncsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7eC5wb2ludD1NLGYmJmYucHVzaChzPVtdKTt2PSEwLHk9ITEscD1nPU5hTn0sbGluZUVuZDpmdW5jdGlvbigpe2MmJihNKGwsaCksZCYmeSYmbS5yZWpvaW4oKSxjLnB1c2gobS5yZXN1bHQoKSkpO3gucG9pbnQ9dyx5JiZiLmxpbmVFbmQoKX0scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7Yj1tLGM9W10sZj1bXSxfPSEwfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dmFyIG49ZnVuY3Rpb24oKXtmb3IodmFyIG49MCxlPTAsaT1mLmxlbmd0aDtlPGk7KytlKWZvcih2YXIgbyxhLHU9ZltlXSxjPTEscz11Lmxlbmd0aCxsPXVbMF0saD1sWzBdLGQ9bFsxXTtjPHM7KytjKW89aCxhPWQsaD0obD11W2NdKVswXSxkPWxbMV0sYTw9cj9kPnImJihoLW8pKihyLWEpPihkLWEpKih0LW8pJiYrK246ZDw9ciYmKGgtbykqKHItYSk8KGQtYSkqKHQtbykmJi0tbjtyZXR1cm4gbn0oKSxlPV8mJm4saT0oYz1mdChjKSkubGVuZ3RoOyhlfHxpKSYmKGEucG9seWdvblN0YXJ0KCksZSYmKGEubGluZVN0YXJ0KCksbyhudWxsLG51bGwsMSxhKSxhLmxpbmVFbmQoKSksaSYmS3MoYyx1LG4sbyxhKSxhLnBvbHlnb25FbmQoKSk7Yj1hLGM9Zj1zPW51bGx9fTtmdW5jdGlvbiB3KHQsbil7aSh0LG4pJiZiLnBvaW50KHQsbil9ZnVuY3Rpb24gTShvLGEpe3ZhciB1PWkobyxhKTtpZihmJiZzLnB1c2goW28sYV0pLHYpbD1vLGg9YSxkPXUsdj0hMSx1JiYoYi5saW5lU3RhcnQoKSxiLnBvaW50KG8sYSkpO2Vsc2UgaWYodSYmeSliLnBvaW50KG8sYSk7ZWxzZXt2YXIgYz1bcD1NYXRoLm1heChsbCxNYXRoLm1pbihzbCxwKSksZz1NYXRoLm1heChsbCxNYXRoLm1pbihzbCxnKSldLG09W289TWF0aC5tYXgobGwsTWF0aC5taW4oc2wsbykpLGE9TWF0aC5tYXgobGwsTWF0aC5taW4oc2wsYSkpXTshZnVuY3Rpb24odCxuLGUscixpLG8pe3ZhciBhLHU9dFswXSxjPXRbMV0sZj0wLHM9MSxsPW5bMF0tdSxoPW5bMV0tYztpZihhPWUtdSxsfHwhKGE+MCkpe2lmKGEvPWwsbDwwKXtpZihhPGYpcmV0dXJuO2E8cyYmKHM9YSl9ZWxzZSBpZihsPjApe2lmKGE+cylyZXR1cm47YT5mJiYoZj1hKX1pZihhPWktdSxsfHwhKGE8MCkpe2lmKGEvPWwsbDwwKXtpZihhPnMpcmV0dXJuO2E+ZiYmKGY9YSl9ZWxzZSBpZihsPjApe2lmKGE8ZilyZXR1cm47YTxzJiYocz1hKX1pZihhPXItYyxofHwhKGE+MCkpe2lmKGEvPWgsaDwwKXtpZihhPGYpcmV0dXJuO2E8cyYmKHM9YSl9ZWxzZSBpZihoPjApe2lmKGE+cylyZXR1cm47YT5mJiYoZj1hKX1pZihhPW8tYyxofHwhKGE8MCkpe2lmKGEvPWgsaDwwKXtpZihhPnMpcmV0dXJuO2E+ZiYmKGY9YSl9ZWxzZSBpZihoPjApe2lmKGE8ZilyZXR1cm47YTxzJiYocz1hKX1yZXR1cm4gZj4wJiYodFswXT11K2YqbCx0WzFdPWMrZipoKSxzPDEmJihuWzBdPXUrcypsLG5bMV09YytzKmgpLCEwfX19fX0oYyxtLHQsbixlLHIpP3UmJihiLmxpbmVTdGFydCgpLGIucG9pbnQobyxhKSxfPSExKTooeXx8KGIubGluZVN0YXJ0KCksYi5wb2ludChjWzBdLGNbMV0pKSxiLnBvaW50KG1bMF0sbVsxXSksdXx8Yi5saW5lRW5kKCksXz0hMSl9cD1vLGc9YSx5PXV9cmV0dXJuIHh9fXZhciBkbD17c3BoZXJlOnZmLHBvaW50OnZmLGxpbmVTdGFydDpmdW5jdGlvbigpe2RsLnBvaW50PWdsLGRsLmxpbmVFbmQ9cGx9LGxpbmVFbmQ6dmYscG9seWdvblN0YXJ0OnZmLHBvbHlnb25FbmQ6dmZ9O2Z1bmN0aW9uIHBsKCl7ZGwucG9pbnQ9ZGwubGluZUVuZD12Zn1mdW5jdGlvbiBnbCh0LG4pe3VsPXQqPUpjLGNsPXNmKG4qPUpjKSxmbD1yZihuKSxkbC5wb2ludD15bH1mdW5jdGlvbiB5bCh0LG4pe3QqPUpjO3ZhciBlPXNmKG4qPUpjKSxyPXJmKG4pLGk9dGYodC11bCksbz1yZihpKSxhPXIqc2YoaSksdT1mbCplLWNsKnIqbyxjPWNsKmUrZmwqcipvO2FsLmFkZChlZihoZihhKmErdSp1KSxjKSksdWw9dCxjbD1lLGZsPXJ9ZnVuY3Rpb24gdmwodCl7cmV0dXJuIGFsPW5ldyBULE1mKHQsZGwpLCthbH12YXIgX2w9W251bGwsbnVsbF0sYmw9e3R5cGU6IkxpbmVTdHJpbmciLGNvb3JkaW5hdGVzOl9sfTtmdW5jdGlvbiBtbCh0LG4pe3JldHVybiBfbFswXT10LF9sWzFdPW4sdmwoYmwpfXZhciB4bD17RmVhdHVyZTpmdW5jdGlvbih0LG4pe3JldHVybiBNbCh0Lmdlb21ldHJ5LG4pfSxGZWF0dXJlQ29sbGVjdGlvbjpmdW5jdGlvbih0LG4pe2Zvcih2YXIgZT10LmZlYXR1cmVzLHI9LTEsaT1lLmxlbmd0aDsrK3I8aTspaWYoTWwoZVtyXS5nZW9tZXRyeSxuKSlyZXR1cm4hMDtyZXR1cm4hMX19LHdsPXtTcGhlcmU6ZnVuY3Rpb24oKXtyZXR1cm4hMH0sUG9pbnQ6ZnVuY3Rpb24odCxuKXtyZXR1cm4gQWwodC5jb29yZGluYXRlcyxuKX0sTXVsdGlQb2ludDpmdW5jdGlvbih0LG4pe2Zvcih2YXIgZT10LmNvb3JkaW5hdGVzLHI9LTEsaT1lLmxlbmd0aDsrK3I8aTspaWYoQWwoZVtyXSxuKSlyZXR1cm4hMDtyZXR1cm4hMX0sTGluZVN0cmluZzpmdW5jdGlvbih0LG4pe3JldHVybiBUbCh0LmNvb3JkaW5hdGVzLG4pfSxNdWx0aUxpbmVTdHJpbmc6ZnVuY3Rpb24odCxuKXtmb3IodmFyIGU9dC5jb29yZGluYXRlcyxyPS0xLGk9ZS5sZW5ndGg7KytyPGk7KWlmKFRsKGVbcl0sbikpcmV0dXJuITA7cmV0dXJuITF9LFBvbHlnb246ZnVuY3Rpb24odCxuKXtyZXR1cm4gU2wodC5jb29yZGluYXRlcyxuKX0sTXVsdGlQb2x5Z29uOmZ1bmN0aW9uKHQsbil7Zm9yKHZhciBlPXQuY29vcmRpbmF0ZXMscj0tMSxpPWUubGVuZ3RoOysrcjxpOylpZihTbChlW3JdLG4pKXJldHVybiEwO3JldHVybiExfSxHZW9tZXRyeUNvbGxlY3Rpb246ZnVuY3Rpb24odCxuKXtmb3IodmFyIGU9dC5nZW9tZXRyaWVzLHI9LTEsaT1lLmxlbmd0aDsrK3I8aTspaWYoTWwoZVtyXSxuKSlyZXR1cm4hMDtyZXR1cm4hMX19O2Z1bmN0aW9uIE1sKHQsbil7cmV0dXJuISghdHx8IXdsLmhhc093blByb3BlcnR5KHQudHlwZSkpJiZ3bFt0LnR5cGVdKHQsbil9ZnVuY3Rpb24gQWwodCxuKXtyZXR1cm4gMD09PW1sKHQsbil9ZnVuY3Rpb24gVGwodCxuKXtmb3IodmFyIGUscixpLG89MCxhPXQubGVuZ3RoO288YTtvKyspe2lmKDA9PT0ocj1tbCh0W29dLG4pKSlyZXR1cm4hMDtpZihvPjAmJihpPW1sKHRbb10sdFtvLTFdKSk+MCYmZTw9aSYmcjw9aSYmKGUrci1pKSooMS1NYXRoLnBvdygoZS1yKS9pLDIpKTxHYyppKXJldHVybiEwO2U9cn1yZXR1cm4hMX1mdW5jdGlvbiBTbCh0LG4pe3JldHVybiEhdGwodC5tYXAoRWwpLGtsKG4pKX1mdW5jdGlvbiBFbCh0KXtyZXR1cm4odD10Lm1hcChrbCkpLnBvcCgpLHR9ZnVuY3Rpb24ga2wodCl7cmV0dXJuW3RbMF0qSmMsdFsxXSpKY119ZnVuY3Rpb24gTmwodCxuLGUpe3ZhciByPWx0KHQsbi1YYyxlKS5jb25jYXQobik7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiByLm1hcCgoZnVuY3Rpb24obil7cmV0dXJuW3Qsbl19KSl9fWZ1bmN0aW9uIENsKHQsbixlKXt2YXIgcj1sdCh0LG4tWGMsZSkuY29uY2F0KG4pO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gci5tYXAoKGZ1bmN0aW9uKG4pe3JldHVybltuLHRdfSkpfX1mdW5jdGlvbiBQbCgpe3ZhciB0LG4sZSxyLGksbyxhLHUsYyxmLHMsbCxoPTEwLGQ9aCxwPTkwLGc9MzYwLHk9Mi41O2Z1bmN0aW9uIHYoKXtyZXR1cm57dHlwZToiTXVsdGlMaW5lU3RyaW5nIixjb29yZGluYXRlczpfKCl9fWZ1bmN0aW9uIF8oKXtyZXR1cm4gbHQob2Yoci9wKSpwLGUscCkubWFwKHMpLmNvbmNhdChsdChvZih1L2cpKmcsYSxnKS5tYXAobCkpLmNvbmNhdChsdChvZihuL2gpKmgsdCxoKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0Zih0JXApPlhjfSkpLm1hcChjKSkuY29uY2F0KGx0KG9mKG8vZCkqZCxpLGQpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHRmKHQlZyk+WGN9KSkubWFwKGYpKX1yZXR1cm4gdi5saW5lcz1mdW5jdGlvbigpe3JldHVybiBfKCkubWFwKChmdW5jdGlvbih0KXtyZXR1cm57dHlwZToiTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6dH19KSl9LHYub3V0bGluZT1mdW5jdGlvbigpe3JldHVybnt0eXBlOiJQb2x5Z29uIixjb29yZGluYXRlczpbcyhyKS5jb25jYXQobChhKS5zbGljZSgxKSxzKGUpLnJldmVyc2UoKS5zbGljZSgxKSxsKHUpLnJldmVyc2UoKS5zbGljZSgxKSldfX0sdi5leHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/di5leHRlbnRNYWpvcih0KS5leHRlbnRNaW5vcih0KTp2LmV4dGVudE1pbm9yKCl9LHYuZXh0ZW50TWFqb3I9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9K3RbMF1bMF0sZT0rdFsxXVswXSx1PSt0WzBdWzFdLGE9K3RbMV1bMV0scj5lJiYodD1yLHI9ZSxlPXQpLHU+YSYmKHQ9dSx1PWEsYT10KSx2LnByZWNpc2lvbih5KSk6W1tyLHVdLFtlLGFdXX0sdi5leHRlbnRNaW5vcj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0rZVswXVswXSx0PStlWzFdWzBdLG89K2VbMF1bMV0saT0rZVsxXVsxXSxuPnQmJihlPW4sbj10LHQ9ZSksbz5pJiYoZT1vLG89aSxpPWUpLHYucHJlY2lzaW9uKHkpKTpbW24sb10sW3QsaV1dfSx2LnN0ZXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/di5zdGVwTWFqb3IodCkuc3RlcE1pbm9yKHQpOnYuc3RlcE1pbm9yKCl9LHYuc3RlcE1ham9yPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPSt0WzBdLGc9K3RbMV0sdik6W3AsZ119LHYuc3RlcE1pbm9yPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPSt0WzBdLGQ9K3RbMV0sdik6W2gsZF19LHYucHJlY2lzaW9uPWZ1bmN0aW9uKGgpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh5PStoLGM9TmwobyxpLDkwKSxmPUNsKG4sdCx5KSxzPU5sKHUsYSw5MCksbD1DbChyLGUseSksdik6eX0sdi5leHRlbnRNYWpvcihbWy0xODAsLTg5Ljk5OTk5OV0sWzE4MCw4OS45OTk5OTldXSkuZXh0ZW50TWlub3IoW1stMTgwLC04MC4wMDAwMDFdLFsxODAsODAuMDAwMDAxXV0pfXZhciB6bCxEbCxSbCxGbCxxbD10PT50LElsPW5ldyBULE9sPW5ldyBULFVsPXtwb2ludDp2ZixsaW5lU3RhcnQ6dmYsbGluZUVuZDp2Zixwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtVbC5saW5lU3RhcnQ9QmwsVWwubGluZUVuZD1qbH0scG9seWdvbkVuZDpmdW5jdGlvbigpe1VsLmxpbmVTdGFydD1VbC5saW5lRW5kPVVsLnBvaW50PXZmLElsLmFkZCh0ZihPbCkpLE9sPW5ldyBUfSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgdD1JbC8yO3JldHVybiBJbD1uZXcgVCx0fX07ZnVuY3Rpb24gQmwoKXtVbC5wb2ludD1ZbH1mdW5jdGlvbiBZbCh0LG4pe1VsLnBvaW50PUxsLHpsPVJsPXQsRGw9Rmw9bn1mdW5jdGlvbiBMbCh0LG4pe09sLmFkZChGbCp0LVJsKm4pLFJsPXQsRmw9bn1mdW5jdGlvbiBqbCgpe0xsKHpsLERsKX12YXIgJGw9VWwsSGw9MS8wLFhsPUhsLEdsPS1IbCxWbD1HbCxXbD17cG9pbnQ6ZnVuY3Rpb24odCxuKXt0PEhsJiYoSGw9dCk7dD5HbCYmKEdsPXQpO248WGwmJihYbD1uKTtuPlZsJiYoVmw9bil9LGxpbmVTdGFydDp2ZixsaW5lRW5kOnZmLHBvbHlnb25TdGFydDp2Zixwb2x5Z29uRW5kOnZmLHJlc3VsdDpmdW5jdGlvbigpe3ZhciB0PVtbSGwsWGxdLFtHbCxWbF1dO3JldHVybiBHbD1WbD0tKFhsPUhsPTEvMCksdH19O3ZhciBabCxLbCxRbCxKbCx0aD1XbCxuaD0wLGVoPTAscmg9MCxpaD0wLG9oPTAsYWg9MCx1aD0wLGNoPTAsZmg9MCxzaD17cG9pbnQ6bGgsbGluZVN0YXJ0OmhoLGxpbmVFbmQ6Z2gscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7c2gubGluZVN0YXJ0PXloLHNoLmxpbmVFbmQ9dmh9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtzaC5wb2ludD1saCxzaC5saW5lU3RhcnQ9aGgsc2gubGluZUVuZD1naH0scmVzdWx0OmZ1bmN0aW9uKCl7dmFyIHQ9Zmg/W3VoL2ZoLGNoL2ZoXTphaD9baWgvYWgsb2gvYWhdOnJoP1tuaC9yaCxlaC9yaF06W05hTixOYU5dO3JldHVybiBuaD1laD1yaD1paD1vaD1haD11aD1jaD1maD0wLHR9fTtmdW5jdGlvbiBsaCh0LG4pe25oKz10LGVoKz1uLCsrcmh9ZnVuY3Rpb24gaGgoKXtzaC5wb2ludD1kaH1mdW5jdGlvbiBkaCh0LG4pe3NoLnBvaW50PXBoLGxoKFFsPXQsSmw9bil9ZnVuY3Rpb24gcGgodCxuKXt2YXIgZT10LVFsLHI9bi1KbCxpPWhmKGUqZStyKnIpO2loKz1pKihRbCt0KS8yLG9oKz1pKihKbCtuKS8yLGFoKz1pLGxoKFFsPXQsSmw9bil9ZnVuY3Rpb24gZ2goKXtzaC5wb2ludD1saH1mdW5jdGlvbiB5aCgpe3NoLnBvaW50PV9ofWZ1bmN0aW9uIHZoKCl7YmgoWmwsS2wpfWZ1bmN0aW9uIF9oKHQsbil7c2gucG9pbnQ9YmgsbGgoWmw9UWw9dCxLbD1KbD1uKX1mdW5jdGlvbiBiaCh0LG4pe3ZhciBlPXQtUWwscj1uLUpsLGk9aGYoZSplK3Iqcik7aWgrPWkqKFFsK3QpLzIsb2grPWkqKEpsK24pLzIsYWgrPWksdWgrPShpPUpsKnQtUWwqbikqKFFsK3QpLGNoKz1pKihKbCtuKSxmaCs9MyppLGxoKFFsPXQsSmw9bil9dmFyIG1oPXNoO2Z1bmN0aW9uIHhoKHQpe3RoaXMuX2NvbnRleHQ9dH14aC5wcm90b3R5cGU9e19yYWRpdXM6NC41LHBvaW50UmFkaXVzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yYWRpdXM9dCx0aGlzfSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpezA9PT10aGlzLl9saW5lJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX3BvaW50PU5hTn0scG9pbnQ6ZnVuY3Rpb24odCxuKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LG4pLHRoaXMuX3BvaW50PTE7YnJlYWs7Y2FzZSAxOnRoaXMuX2NvbnRleHQubGluZVRvKHQsbik7YnJlYWs7ZGVmYXVsdDp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0K3RoaXMuX3JhZGl1cyxuKSx0aGlzLl9jb250ZXh0LmFyYyh0LG4sdGhpcy5fcmFkaXVzLDAsS2MpfX0scmVzdWx0OnZmfTt2YXIgd2gsTWgsQWgsVGgsU2gsRWg9bmV3IFQsa2g9e3BvaW50OnZmLGxpbmVTdGFydDpmdW5jdGlvbigpe2toLnBvaW50PU5ofSxsaW5lRW5kOmZ1bmN0aW9uKCl7d2gmJkNoKE1oLEFoKSxraC5wb2ludD12Zn0scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7d2g9ITB9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXt3aD1udWxsfSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgdD0rRWg7cmV0dXJuIEVoPW5ldyBULHR9fTtmdW5jdGlvbiBOaCh0LG4pe2toLnBvaW50PUNoLE1oPVRoPXQsQWg9U2g9bn1mdW5jdGlvbiBDaCh0LG4pe1RoLT10LFNoLT1uLEVoLmFkZChoZihUaCpUaCtTaCpTaCkpLFRoPXQsU2g9bn12YXIgUGg9a2g7ZnVuY3Rpb24gemgoKXt0aGlzLl9zdHJpbmc9W119ZnVuY3Rpb24gRGgodCl7cmV0dXJuIm0wLCIrdCsiYSIrdCsiLCIrdCsiIDAgMSwxIDAsIistMip0KyJhIit0KyIsIit0KyIgMCAxLDEgMCwiKzIqdCsieiJ9ZnVuY3Rpb24gUmgodCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBlPW5ldyBGaDtmb3IodmFyIHIgaW4gdCllW3JdPXRbcl07cmV0dXJuIGUuc3RyZWFtPW4sZX19ZnVuY3Rpb24gRmgoKXt9ZnVuY3Rpb24gcWgodCxuLGUpe3ZhciByPXQuY2xpcEV4dGVudCYmdC5jbGlwRXh0ZW50KCk7cmV0dXJuIHQuc2NhbGUoMTUwKS50cmFuc2xhdGUoWzAsMF0pLG51bGwhPXImJnQuY2xpcEV4dGVudChudWxsKSxNZihlLHQuc3RyZWFtKHRoKSksbih0aC5yZXN1bHQoKSksbnVsbCE9ciYmdC5jbGlwRXh0ZW50KHIpLHR9ZnVuY3Rpb24gSWgodCxuLGUpe3JldHVybiBxaCh0LChmdW5jdGlvbihlKXt2YXIgcj1uWzFdWzBdLW5bMF1bMF0saT1uWzFdWzFdLW5bMF1bMV0sbz1NYXRoLm1pbihyLyhlWzFdWzBdLWVbMF1bMF0pLGkvKGVbMV1bMV0tZVswXVsxXSkpLGE9K25bMF1bMF0rKHItbyooZVsxXVswXStlWzBdWzBdKSkvMix1PStuWzBdWzFdKyhpLW8qKGVbMV1bMV0rZVswXVsxXSkpLzI7dC5zY2FsZSgxNTAqbykudHJhbnNsYXRlKFthLHVdKX0pLGUpfWZ1bmN0aW9uIE9oKHQsbixlKXtyZXR1cm4gSWgodCxbWzAsMF0sbl0sZSl9ZnVuY3Rpb24gVWgodCxuLGUpe3JldHVybiBxaCh0LChmdW5jdGlvbihlKXt2YXIgcj0rbixpPXIvKGVbMV1bMF0tZVswXVswXSksbz0oci1pKihlWzFdWzBdK2VbMF1bMF0pKS8yLGE9LWkqZVswXVsxXTt0LnNjYWxlKDE1MCppKS50cmFuc2xhdGUoW28sYV0pfSksZSl9ZnVuY3Rpb24gQmgodCxuLGUpe3JldHVybiBxaCh0LChmdW5jdGlvbihlKXt2YXIgcj0rbixpPXIvKGVbMV1bMV0tZVswXVsxXSksbz0taSplWzBdWzBdLGE9KHItaSooZVsxXVsxXStlWzBdWzFdKSkvMjt0LnNjYWxlKDE1MCppKS50cmFuc2xhdGUoW28sYV0pfSksZSl9emgucHJvdG90eXBlPXtfcmFkaXVzOjQuNSxfY2lyY2xlOkRoKDQuNSkscG9pbnRSYWRpdXM6ZnVuY3Rpb24odCl7cmV0dXJuKHQ9K3QpIT09dGhpcy5fcmFkaXVzJiYodGhpcy5fcmFkaXVzPXQsdGhpcy5fY2lyY2xlPW51bGwpLHRoaXN9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0scG9seWdvbkVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7MD09PXRoaXMuX2xpbmUmJnRoaXMuX3N0cmluZy5wdXNoKCJaIiksdGhpcy5fcG9pbnQ9TmFOfSxwb2ludDpmdW5jdGlvbih0LG4pe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3N0cmluZy5wdXNoKCJNIix0LCIsIixuKSx0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9zdHJpbmcucHVzaCgiTCIsdCwiLCIsbik7YnJlYWs7ZGVmYXVsdDpudWxsPT10aGlzLl9jaXJjbGUmJih0aGlzLl9jaXJjbGU9RGgodGhpcy5fcmFkaXVzKSksdGhpcy5fc3RyaW5nLnB1c2goIk0iLHQsIiwiLG4sdGhpcy5fY2lyY2xlKX19LHJlc3VsdDpmdW5jdGlvbigpe2lmKHRoaXMuX3N0cmluZy5sZW5ndGgpe3ZhciB0PXRoaXMuX3N0cmluZy5qb2luKCIiKTtyZXR1cm4gdGhpcy5fc3RyaW5nPVtdLHR9cmV0dXJuIG51bGx9fSxGaC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkZoLHBvaW50OmZ1bmN0aW9uKHQsbil7dGhpcy5zdHJlYW0ucG9pbnQodCxuKX0sc3BoZXJlOmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0uc3BoZXJlKCl9LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuc3RyZWFtLmxpbmVTdGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ubGluZUVuZCgpfSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigpe3RoaXMuc3RyZWFtLnBvbHlnb25FbmQoKX19O3ZhciBZaD1yZigzMCpKYyk7ZnVuY3Rpb24gTGgodCxuKXtyZXR1cm4rbj9mdW5jdGlvbih0LG4pe2Z1bmN0aW9uIGUocixpLG8sYSx1LGMsZixzLGwsaCxkLHAsZyx5KXt2YXIgdj1mLXIsXz1zLWksYj12KnYrXypfO2lmKGI+NCpuJiZnLS0pe3ZhciBtPWEraCx4PXUrZCx3PWMrcCxNPWhmKG0qbSt4Kngrdyp3KSxBPWdmKHcvPU0pLFQ9dGYodGYodyktMSk8WGN8fHRmKG8tbCk8WGM/KG8rbCkvMjplZih4LG0pLFM9dChULEEpLEU9U1swXSxrPVNbMV0sTj1FLXIsQz1rLWksUD1fKk4tdipDOyhQKlAvYj5ufHx0ZigodipOK18qQykvYi0uNSk+LjN8fGEqaCt1KmQrYypwPFloKSYmKGUocixpLG8sYSx1LGMsRSxrLFQsbS89TSx4Lz1NLHcsZyx5KSx5LnBvaW50KEUsayksZShFLGssVCxtLHgsdyxmLHMsbCxoLGQscCxnLHkpKX19cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciByLGksbyxhLHUsYyxmLHMsbCxoLGQscCxnPXtwb2ludDp5LGxpbmVTdGFydDp2LGxpbmVFbmQ6Yixwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtuLnBvbHlnb25TdGFydCgpLGcubGluZVN0YXJ0PW19LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtuLnBvbHlnb25FbmQoKSxnLmxpbmVTdGFydD12fX07ZnVuY3Rpb24geShlLHIpe2U9dChlLHIpLG4ucG9pbnQoZVswXSxlWzFdKX1mdW5jdGlvbiB2KCl7cz1OYU4sZy5wb2ludD1fLG4ubGluZVN0YXJ0KCl9ZnVuY3Rpb24gXyhyLGkpe3ZhciBvPVZmKFtyLGldKSxhPXQocixpKTtlKHMsbCxmLGgsZCxwLHM9YVswXSxsPWFbMV0sZj1yLGg9b1swXSxkPW9bMV0scD1vWzJdLDE2LG4pLG4ucG9pbnQocyxsKX1mdW5jdGlvbiBiKCl7Zy5wb2ludD15LG4ubGluZUVuZCgpfWZ1bmN0aW9uIG0oKXt2KCksZy5wb2ludD14LGcubGluZUVuZD13fWZ1bmN0aW9uIHgodCxuKXtfKHI9dCxuKSxpPXMsbz1sLGE9aCx1PWQsYz1wLGcucG9pbnQ9X31mdW5jdGlvbiB3KCl7ZShzLGwsZixoLGQscCxpLG8scixhLHUsYywxNixuKSxnLmxpbmVFbmQ9YixiKCl9cmV0dXJuIGd9fSh0LG4pOmZ1bmN0aW9uKHQpe3JldHVybiBSaCh7cG9pbnQ6ZnVuY3Rpb24obixlKXtuPXQobixlKSx0aGlzLnN0cmVhbS5wb2ludChuWzBdLG5bMV0pfX0pfSh0KX12YXIgamg9Umgoe3BvaW50OmZ1bmN0aW9uKHQsbil7dGhpcy5zdHJlYW0ucG9pbnQodCpKYyxuKkpjKX19KTtmdW5jdGlvbiAkaCh0LG4sZSxyLGksbyl7aWYoIW8pcmV0dXJuIGZ1bmN0aW9uKHQsbixlLHIsaSl7ZnVuY3Rpb24gbyhvLGEpe3JldHVybltuK3QqKG8qPXIpLGUtdCooYSo9aSldfXJldHVybiBvLmludmVydD1mdW5jdGlvbihvLGEpe3JldHVyblsoby1uKS90KnIsKGUtYSkvdCppXX0sb30odCxuLGUscixpKTt2YXIgYT1yZihvKSx1PXNmKG8pLGM9YSp0LGY9dSp0LHM9YS90LGw9dS90LGg9KHUqZS1hKm4pL3QsZD0odSpuK2EqZSkvdDtmdW5jdGlvbiBwKHQsbyl7cmV0dXJuW2MqKHQqPXIpLWYqKG8qPWkpK24sZS1mKnQtYypvXX1yZXR1cm4gcC5pbnZlcnQ9ZnVuY3Rpb24odCxuKXtyZXR1cm5bcioocyp0LWwqbitoKSxpKihkLWwqdC1zKm4pXX0scH1mdW5jdGlvbiBIaCh0KXtyZXR1cm4gWGgoKGZ1bmN0aW9uKCl7cmV0dXJuIHR9KSkoKX1mdW5jdGlvbiBYaCh0KXt2YXIgbixlLHIsaSxvLGEsdSxjLGYscyxsPTE1MCxoPTQ4MCxkPTI1MCxwPTAsZz0wLHk9MCx2PTAsXz0wLGI9MCxtPTEseD0xLHc9bnVsbCxNPWlsLEE9bnVsbCxUPXFsLFM9LjU7ZnVuY3Rpb24gRSh0KXtyZXR1cm4gYyh0WzBdKkpjLHRbMV0qSmMpfWZ1bmN0aW9uIGsodCl7cmV0dXJuKHQ9Yy5pbnZlcnQodFswXSx0WzFdKSkmJlt0WzBdKlFjLHRbMV0qUWNdfWZ1bmN0aW9uIE4oKXt2YXIgdD0kaChsLDAsMCxtLHgsYikuYXBwbHkobnVsbCxuKHAsZykpLHI9JGgobCxoLXRbMF0sZC10WzFdLG0seCxiKTtyZXR1cm4gZT1Zcyh5LHYsXyksdT1VcyhuLHIpLGM9VXMoZSx1KSxhPUxoKHUsUyksQygpfWZ1bmN0aW9uIEMoKXtyZXR1cm4gZj1zPW51bGwsRX1yZXR1cm4gRS5zdHJlYW09ZnVuY3Rpb24odCl7cmV0dXJuIGYmJnM9PT10P2Y6Zj1qaChmdW5jdGlvbih0KXtyZXR1cm4gUmgoe3BvaW50OmZ1bmN0aW9uKG4sZSl7dmFyIHI9dChuLGUpO3JldHVybiB0aGlzLnN0cmVhbS5wb2ludChyWzBdLHJbMV0pfX0pfShlKShNKGEoVChzPXQpKSkpKX0sRS5wcmVjbGlwPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhNPXQsdz12b2lkIDAsQygpKTpNfSxFLnBvc3RjbGlwPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhUPXQsQT1yPWk9bz1udWxsLEMoKSk6VH0sRS5jbGlwQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KE09K3Q/b2wodz10KkpjKToodz1udWxsLGlsKSxDKCkpOncqUWN9LEUuY2xpcEV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oVD1udWxsPT10PyhBPXI9aT1vPW51bGwscWwpOmhsKEE9K3RbMF1bMF0scj0rdFswXVsxXSxpPSt0WzFdWzBdLG89K3RbMV1bMV0pLEMoKSk6bnVsbD09QT9udWxsOltbQSxyXSxbaSxvXV19LEUuc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9K3QsTigpKTpsfSxFLnRyYW5zbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0rdFswXSxkPSt0WzFdLE4oKSk6W2gsZF19LEUuY2VudGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPXRbMF0lMzYwKkpjLGc9dFsxXSUzNjAqSmMsTigpKTpbcCpRYyxnKlFjXX0sRS5yb3RhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHk9dFswXSUzNjAqSmMsdj10WzFdJTM2MCpKYyxfPXQubGVuZ3RoPjI/dFsyXSUzNjAqSmM6MCxOKCkpOlt5KlFjLHYqUWMsXypRY119LEUuYW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGI9dCUzNjAqSmMsTigpKTpiKlFjfSxFLnJlZmxlY3RYPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhtPXQ/LTE6MSxOKCkpOm08MH0sRS5yZWZsZWN0WT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeD10Py0xOjEsTigpKTp4PDB9LEUucHJlY2lzaW9uPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPUxoKHUsUz10KnQpLEMoKSk6aGYoUyl9LEUuZml0RXh0ZW50PWZ1bmN0aW9uKHQsbil7cmV0dXJuIEloKEUsdCxuKX0sRS5maXRTaXplPWZ1bmN0aW9uKHQsbil7cmV0dXJuIE9oKEUsdCxuKX0sRS5maXRXaWR0aD1mdW5jdGlvbih0LG4pe3JldHVybiBVaChFLHQsbil9LEUuZml0SGVpZ2h0PWZ1bmN0aW9uKHQsbil7cmV0dXJuIEJoKEUsdCxuKX0sZnVuY3Rpb24oKXtyZXR1cm4gbj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSxFLmludmVydD1uLmludmVydCYmayxOKCl9fWZ1bmN0aW9uIEdoKHQpe3ZhciBuPTAsZT1WYy8zLHI9WGgodCksaT1yKG4sZSk7cmV0dXJuIGkucGFyYWxsZWxzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3Iobj10WzBdKkpjLGU9dFsxXSpKYyk6W24qUWMsZSpRY119LGl9ZnVuY3Rpb24gVmgodCxuKXt2YXIgZT1zZih0KSxyPShlK3NmKG4pKS8yO2lmKHRmKHIpPFhjKXJldHVybiBmdW5jdGlvbih0KXt2YXIgbj1yZih0KTtmdW5jdGlvbiBlKHQsZSl7cmV0dXJuW3QqbixzZihlKS9uXX1yZXR1cm4gZS5pbnZlcnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm5bdC9uLGdmKGUqbildfSxlfSh0KTt2YXIgaT0xK2UqKDIqci1lKSxvPWhmKGkpL3I7ZnVuY3Rpb24gYSh0LG4pe3ZhciBlPWhmKGktMipyKnNmKG4pKS9yO3JldHVybltlKnNmKHQqPXIpLG8tZSpyZih0KV19cmV0dXJuIGEuaW52ZXJ0PWZ1bmN0aW9uKHQsbil7dmFyIGU9by1uLGE9ZWYodCx0ZihlKSkqbGYoZSk7cmV0dXJuIGUqcjwwJiYoYS09VmMqbGYodCkqbGYoZSkpLFthL3IsZ2YoKGktKHQqdCtlKmUpKnIqcikvKDIqcikpXX0sYX1mdW5jdGlvbiBXaCgpe3JldHVybiBHaChWaCkuc2NhbGUoMTU1LjQyNCkuY2VudGVyKFswLDMzLjY0NDJdKX1mdW5jdGlvbiBaaCgpe3JldHVybiBXaCgpLnBhcmFsbGVscyhbMjkuNSw0NS41XSkuc2NhbGUoMTA3MCkudHJhbnNsYXRlKFs0ODAsMjUwXSkucm90YXRlKFs5NiwwXSkuY2VudGVyKFstLjYsMzguN10pfWZ1bmN0aW9uIEtoKHQpe3JldHVybiBmdW5jdGlvbihuLGUpe3ZhciByPXJmKG4pLGk9cmYoZSksbz10KHIqaSk7cmV0dXJuIG89PT0xLzA/WzIsMF06W28qaSpzZihuKSxvKnNmKGUpXX19ZnVuY3Rpb24gUWgodCl7cmV0dXJuIGZ1bmN0aW9uKG4sZSl7dmFyIHI9aGYobipuK2UqZSksaT10KHIpLG89c2YoaSksYT1yZihpKTtyZXR1cm5bZWYobipvLHIqYSksZ2YociYmZSpvL3IpXX19dmFyIEpoPUtoKChmdW5jdGlvbih0KXtyZXR1cm4gaGYoMi8oMSt0KSl9KSk7SmguaW52ZXJ0PVFoKChmdW5jdGlvbih0KXtyZXR1cm4gMipnZih0LzIpfSkpO3ZhciB0ZD1LaCgoZnVuY3Rpb24odCl7cmV0dXJuKHQ9cGYodCkpJiZ0L3NmKHQpfSkpO2Z1bmN0aW9uIG5kKHQsbil7cmV0dXJuW3QsY2YoZGYoKFdjK24pLzIpKV19ZnVuY3Rpb24gZWQodCl7dmFyIG4sZSxyLGk9SGgodCksbz1pLmNlbnRlcixhPWkuc2NhbGUsdT1pLnRyYW5zbGF0ZSxjPWkuY2xpcEV4dGVudCxmPW51bGw7ZnVuY3Rpb24gcygpe3ZhciBvPVZjKmEoKSx1PWkoSHMoaS5yb3RhdGUoKSkuaW52ZXJ0KFswLDBdKSk7cmV0dXJuIGMobnVsbD09Zj9bW3VbMF0tbyx1WzFdLW9dLFt1WzBdK28sdVsxXStvXV06dD09PW5kP1tbTWF0aC5tYXgodVswXS1vLGYpLG5dLFtNYXRoLm1pbih1WzBdK28sZSkscl1dOltbZixNYXRoLm1heCh1WzFdLW8sbildLFtlLE1hdGgubWluKHVbMV0rbyxyKV1dKX1yZXR1cm4gaS5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYSh0KSxzKCkpOmEoKX0saS50cmFuc2xhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHUodCkscygpKTp1KCl9LGkuY2VudGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvKHQpLHMoKSk6bygpfSxpLmNsaXBFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG51bGw9PXQ/Zj1uPWU9cj1udWxsOihmPSt0WzBdWzBdLG49K3RbMF1bMV0sZT0rdFsxXVswXSxyPSt0WzFdWzFdKSxzKCkpOm51bGw9PWY/bnVsbDpbW2Ysbl0sW2Uscl1dfSxzKCl9ZnVuY3Rpb24gcmQodCl7cmV0dXJuIGRmKChXYyt0KS8yKX1mdW5jdGlvbiBpZCh0LG4pe3ZhciBlPXJmKHQpLHI9dD09PW4/c2YodCk6Y2YoZS9yZihuKSkvY2YocmQobikvcmQodCkpLGk9ZSpmZihyZCh0KSxyKS9yO2lmKCFyKXJldHVybiBuZDtmdW5jdGlvbiBvKHQsbil7aT4wP248LVdjK1hjJiYobj0tV2MrWGMpOm4+V2MtWGMmJihuPVdjLVhjKTt2YXIgZT1pL2ZmKHJkKG4pLHIpO3JldHVybltlKnNmKHIqdCksaS1lKnJmKHIqdCldfXJldHVybiBvLmludmVydD1mdW5jdGlvbih0LG4pe3ZhciBlPWktbixvPWxmKHIpKmhmKHQqdCtlKmUpLGE9ZWYodCx0ZihlKSkqbGYoZSk7cmV0dXJuIGUqcjwwJiYoYS09VmMqbGYodCkqbGYoZSkpLFthL3IsMipuZihmZihpL28sMS9yKSktV2NdfSxvfWZ1bmN0aW9uIG9kKHQsbil7cmV0dXJuW3Qsbl19ZnVuY3Rpb24gYWQodCxuKXt2YXIgZT1yZih0KSxyPXQ9PT1uP3NmKHQpOihlLXJmKG4pKS8obi10KSxpPWUvcit0O2lmKHRmKHIpPFhjKXJldHVybiBvZDtmdW5jdGlvbiBvKHQsbil7dmFyIGU9aS1uLG89cip0O3JldHVybltlKnNmKG8pLGktZSpyZihvKV19cmV0dXJuIG8uaW52ZXJ0PWZ1bmN0aW9uKHQsbil7dmFyIGU9aS1uLG89ZWYodCx0ZihlKSkqbGYoZSk7cmV0dXJuIGUqcjwwJiYoby09VmMqbGYodCkqbGYoZSkpLFtvL3IsaS1sZihyKSpoZih0KnQrZSplKV19LG99dGQuaW52ZXJ0PVFoKChmdW5jdGlvbih0KXtyZXR1cm4gdH0pKSxuZC5pbnZlcnQ9ZnVuY3Rpb24odCxuKXtyZXR1cm5bdCwyKm5mKGFmKG4pKS1XY119LG9kLmludmVydD1vZDt2YXIgdWQ9MS4zNDAyNjQsY2Q9LS4wODExMDYsZmQ9ODkzZS02LHNkPS4wMDM3OTYsbGQ9aGYoMykvMjtmdW5jdGlvbiBoZCh0LG4pe3ZhciBlPWdmKGxkKnNmKG4pKSxyPWUqZSxpPXIqcipyO3JldHVyblt0KnJmKGUpLyhsZCoodWQrMypjZCpyK2kqKDcqZmQrOSpzZCpyKSkpLGUqKHVkK2NkKnIraSooZmQrc2QqcikpXX1mdW5jdGlvbiBkZCh0LG4pe3ZhciBlPXJmKG4pLHI9cmYodCkqZTtyZXR1cm5bZSpzZih0KS9yLHNmKG4pL3JdfWZ1bmN0aW9uIHBkKHQsbil7dmFyIGU9bipuLHI9ZSplO3JldHVyblt0KiguODcwNy0uMTMxOTc5KmUrcioociooLjAwMzk3MSplLS4wMDE1MjkqciktLjAxMzc5MSkpLG4qKDEuMDA3MjI2K2UqKC4wMTUwODUrciooLjAyODg3NCplLS4wNDQ0NzUtLjAwNTkxNipyKSkpXX1mdW5jdGlvbiBnZCh0LG4pe3JldHVybltyZihuKSpzZih0KSxzZihuKV19ZnVuY3Rpb24geWQodCxuKXt2YXIgZT1yZihuKSxyPTErcmYodCkqZTtyZXR1cm5bZSpzZih0KS9yLHNmKG4pL3JdfWZ1bmN0aW9uIHZkKHQsbil7cmV0dXJuW2NmKGRmKChXYytuKS8yKSksLXRdfWZ1bmN0aW9uIF9kKHQsbil7cmV0dXJuIHQucGFyZW50PT09bi5wYXJlbnQ/MToyfWZ1bmN0aW9uIGJkKHQsbil7cmV0dXJuIHQrbi54fWZ1bmN0aW9uIG1kKHQsbil7cmV0dXJuIE1hdGgubWF4KHQsbi55KX1mdW5jdGlvbiB4ZCh0KXt2YXIgbj0wLGU9dC5jaGlsZHJlbixyPWUmJmUubGVuZ3RoO2lmKHIpZm9yKDstLXI+PTA7KW4rPWVbcl0udmFsdWU7ZWxzZSBuPTE7dC52YWx1ZT1ufWZ1bmN0aW9uIHdkKHQsbil7dCBpbnN0YW5jZW9mIE1hcD8odD1bdm9pZCAwLHRdLHZvaWQgMD09PW4mJihuPUFkKSk6dm9pZCAwPT09biYmKG49TWQpO2Zvcih2YXIgZSxyLGksbyxhLHU9bmV3IEVkKHQpLGM9W3VdO2U9Yy5wb3AoKTspaWYoKGk9bihlLmRhdGEpKSYmKGE9KGk9QXJyYXkuZnJvbShpKSkubGVuZ3RoKSlmb3IoZS5jaGlsZHJlbj1pLG89YS0xO28+PTA7LS1vKWMucHVzaChyPWlbb109bmV3IEVkKGlbb10pKSxyLnBhcmVudD1lLHIuZGVwdGg9ZS5kZXB0aCsxO3JldHVybiB1LmVhY2hCZWZvcmUoU2QpfWZ1bmN0aW9uIE1kKHQpe3JldHVybiB0LmNoaWxkcmVufWZ1bmN0aW9uIEFkKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP3RbMV06bnVsbH1mdW5jdGlvbiBUZCh0KXt2b2lkIDAhPT10LmRhdGEudmFsdWUmJih0LnZhbHVlPXQuZGF0YS52YWx1ZSksdC5kYXRhPXQuZGF0YS5kYXRhfWZ1bmN0aW9uIFNkKHQpe3ZhciBuPTA7ZG97dC5oZWlnaHQ9bn13aGlsZSgodD10LnBhcmVudCkmJnQuaGVpZ2h0PCsrbil9ZnVuY3Rpb24gRWQodCl7dGhpcy5kYXRhPXQsdGhpcy5kZXB0aD10aGlzLmhlaWdodD0wLHRoaXMucGFyZW50PW51bGx9ZnVuY3Rpb24ga2QodCl7cmV0dXJuIG51bGw9PXQ/bnVsbDpOZCh0KX1mdW5jdGlvbiBOZCh0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHR9ZnVuY3Rpb24gQ2QoKXtyZXR1cm4gMH1mdW5jdGlvbiBQZCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19aGQuaW52ZXJ0PWZ1bmN0aW9uKHQsbil7Zm9yKHZhciBlLHI9bixpPXIqcixvPWkqaSppLGE9MDthPDEyJiYobz0oaT0oci09ZT0ocioodWQrY2QqaStvKihmZCtzZCppKSktbikvKHVkKzMqY2QqaStvKig3KmZkKzkqc2QqaSkpKSpyKSppKmksISh0ZihlKTxHYykpOysrYSk7cmV0dXJuW2xkKnQqKHVkKzMqY2QqaStvKig3KmZkKzkqc2QqaSkpL3JmKHIpLGdmKHNmKHIpL2xkKV19LGRkLmludmVydD1RaChuZikscGQuaW52ZXJ0PWZ1bmN0aW9uKHQsbil7dmFyIGUscj1uLGk9MjU7ZG97dmFyIG89cipyLGE9bypvO3ItPWU9KHIqKDEuMDA3MjI2K28qKC4wMTUwODUrYSooLjAyODg3NCpvLS4wNDQ0NzUtLjAwNTkxNiphKSkpLW4pLygxLjAwNzIyNitvKiguMDQ1MjU1K2EqKC4yNTk4NjYqby0uMzExMzI1LS4wMDU5MTYqMTEqYSkpKX13aGlsZSh0ZihlKT5YYyYmLS1pPjApO3JldHVyblt0LyguODcwNysobz1yKnIpKihvKihvKm8qbyooLjAwMzk3MS0uMDAxNTI5Km8pLS4wMTM3OTEpLS4xMzE5NzkpKSxyXX0sZ2QuaW52ZXJ0PVFoKGdmKSx5ZC5pbnZlcnQ9UWgoKGZ1bmN0aW9uKHQpe3JldHVybiAyKm5mKHQpfSkpLHZkLmludmVydD1mdW5jdGlvbih0LG4pe3JldHVyblstbiwyKm5mKGFmKHQpKS1XY119LEVkLnByb3RvdHlwZT13ZC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkVkLGNvdW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWFjaEFmdGVyKHhkKX0sZWFjaDpmdW5jdGlvbih0LG4pe2xldCBlPS0xO2Zvcihjb25zdCByIG9mIHRoaXMpdC5jYWxsKG4sciwrK2UsdGhpcyk7cmV0dXJuIHRoaXN9LGVhY2hBZnRlcjpmdW5jdGlvbih0LG4pe2Zvcih2YXIgZSxyLGksbz10aGlzLGE9W29dLHU9W10sYz0tMTtvPWEucG9wKCk7KWlmKHUucHVzaChvKSxlPW8uY2hpbGRyZW4pZm9yKHI9MCxpPWUubGVuZ3RoO3I8aTsrK3IpYS5wdXNoKGVbcl0pO2Zvcig7bz11LnBvcCgpOyl0LmNhbGwobixvLCsrYyx0aGlzKTtyZXR1cm4gdGhpc30sZWFjaEJlZm9yZTpmdW5jdGlvbih0LG4pe2Zvcih2YXIgZSxyLGk9dGhpcyxvPVtpXSxhPS0xO2k9by5wb3AoKTspaWYodC5jYWxsKG4saSwrK2EsdGhpcyksZT1pLmNoaWxkcmVuKWZvcihyPWUubGVuZ3RoLTE7cj49MDstLXIpby5wdXNoKGVbcl0pO3JldHVybiB0aGlzfSxmaW5kOmZ1bmN0aW9uKHQsbil7bGV0IGU9LTE7Zm9yKGNvbnN0IHIgb2YgdGhpcylpZih0LmNhbGwobixyLCsrZSx0aGlzKSlyZXR1cm4gcn0sc3VtOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmVhY2hBZnRlcigoZnVuY3Rpb24obil7Zm9yKHZhciBlPSt0KG4uZGF0YSl8fDAscj1uLmNoaWxkcmVuLGk9ciYmci5sZW5ndGg7LS1pPj0wOyllKz1yW2ldLnZhbHVlO24udmFsdWU9ZX0pKX0sc29ydDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5lYWNoQmVmb3JlKChmdW5jdGlvbihuKXtuLmNoaWxkcmVuJiZuLmNoaWxkcmVuLnNvcnQodCl9KSl9LHBhdGg6ZnVuY3Rpb24odCl7Zm9yKHZhciBuPXRoaXMsZT1mdW5jdGlvbih0LG4pe2lmKHQ9PT1uKXJldHVybiB0O3ZhciBlPXQuYW5jZXN0b3JzKCkscj1uLmFuY2VzdG9ycygpLGk9bnVsbDt0PWUucG9wKCksbj1yLnBvcCgpO2Zvcig7dD09PW47KWk9dCx0PWUucG9wKCksbj1yLnBvcCgpO3JldHVybiBpfShuLHQpLHI9W25dO24hPT1lOyluPW4ucGFyZW50LHIucHVzaChuKTtmb3IodmFyIGk9ci5sZW5ndGg7dCE9PWU7KXIuc3BsaWNlKGksMCx0KSx0PXQucGFyZW50O3JldHVybiByfSxhbmNlc3RvcnM6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcyxuPVt0XTt0PXQucGFyZW50OyluLnB1c2godCk7cmV0dXJuIG59LGRlc2NlbmRhbnRzOmZ1bmN0aW9uKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcyl9LGxlYXZlczpmdW5jdGlvbigpe3ZhciB0PVtdO3JldHVybiB0aGlzLmVhY2hCZWZvcmUoKGZ1bmN0aW9uKG4pe24uY2hpbGRyZW58fHQucHVzaChuKX0pKSx0fSxsaW5rczpmdW5jdGlvbigpe3ZhciB0PXRoaXMsbj1bXTtyZXR1cm4gdC5lYWNoKChmdW5jdGlvbihlKXtlIT09dCYmbi5wdXNoKHtzb3VyY2U6ZS5wYXJlbnQsdGFyZ2V0OmV9KX0pKSxufSxjb3B5OmZ1bmN0aW9uKCl7cmV0dXJuIHdkKHRoaXMpLmVhY2hCZWZvcmUoVGQpfSxbU3ltYm9sLml0ZXJhdG9yXTpmdW5jdGlvbiooKXt2YXIgdCxuLGUscixpPXRoaXMsbz1baV07ZG97Zm9yKHQ9by5yZXZlcnNlKCksbz1bXTtpPXQucG9wKCk7KWlmKHlpZWxkIGksbj1pLmNoaWxkcmVuKWZvcihlPTAscj1uLmxlbmd0aDtlPHI7KytlKW8ucHVzaChuW2VdKX13aGlsZShvLmxlbmd0aCl9fTtjb25zdCB6ZD00Mjk0OTY3Mjk2O2Z1bmN0aW9uIERkKCl7bGV0IHQ9MTtyZXR1cm4oKT0+KHQ9KDE2NjQ1MjUqdCsxMDEzOTA0MjIzKSV6ZCkvemR9ZnVuY3Rpb24gUmQodCxuKXtmb3IodmFyIGUscixpPTAsbz0odD1mdW5jdGlvbih0LG4pe2xldCBlLHIsaT10Lmxlbmd0aDtmb3IoO2k7KXI9bigpKmktLXwwLGU9dFtpXSx0W2ldPXRbcl0sdFtyXT1lO3JldHVybiB0fShBcnJheS5mcm9tKHQpLG4pKS5sZW5ndGgsYT1bXTtpPG87KWU9dFtpXSxyJiZJZChyLGUpPysraToocj1VZChhPUZkKGEsZSkpLGk9MCk7cmV0dXJuIHJ9ZnVuY3Rpb24gRmQodCxuKXt2YXIgZSxyO2lmKE9kKG4sdCkpcmV0dXJuW25dO2ZvcihlPTA7ZTx0Lmxlbmd0aDsrK2UpaWYocWQobix0W2VdKSYmT2QoQmQodFtlXSxuKSx0KSlyZXR1cm5bdFtlXSxuXTtmb3IoZT0wO2U8dC5sZW5ndGgtMTsrK2UpZm9yKHI9ZSsxO3I8dC5sZW5ndGg7KytyKWlmKHFkKEJkKHRbZV0sdFtyXSksbikmJnFkKEJkKHRbZV0sbiksdFtyXSkmJnFkKEJkKHRbcl0sbiksdFtlXSkmJk9kKFlkKHRbZV0sdFtyXSxuKSx0KSlyZXR1cm5bdFtlXSx0W3JdLG5dO3Rocm93IG5ldyBFcnJvcn1mdW5jdGlvbiBxZCh0LG4pe3ZhciBlPXQuci1uLnIscj1uLngtdC54LGk9bi55LXQueTtyZXR1cm4gZTwwfHxlKmU8cipyK2kqaX1mdW5jdGlvbiBJZCh0LG4pe3ZhciBlPXQuci1uLnIrMWUtOSpNYXRoLm1heCh0LnIsbi5yLDEpLHI9bi54LXQueCxpPW4ueS10Lnk7cmV0dXJuIGU+MCYmZSplPnIqcitpKml9ZnVuY3Rpb24gT2QodCxuKXtmb3IodmFyIGU9MDtlPG4ubGVuZ3RoOysrZSlpZighSWQodCxuW2VdKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBVZCh0KXtzd2l0Y2godC5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJue3g6dC54LHk6dC55LHI6dC5yfX0odFswXSk7Y2FzZSAyOnJldHVybiBCZCh0WzBdLHRbMV0pO2Nhc2UgMzpyZXR1cm4gWWQodFswXSx0WzFdLHRbMl0pfX1mdW5jdGlvbiBCZCh0LG4pe3ZhciBlPXQueCxyPXQueSxpPXQucixvPW4ueCxhPW4ueSx1PW4ucixjPW8tZSxmPWEtcixzPXUtaSxsPU1hdGguc3FydChjKmMrZipmKTtyZXR1cm57eDooZStvK2MvbCpzKS8yLHk6KHIrYStmL2wqcykvMixyOihsK2krdSkvMn19ZnVuY3Rpb24gWWQodCxuLGUpe3ZhciByPXQueCxpPXQueSxvPXQucixhPW4ueCx1PW4ueSxjPW4ucixmPWUueCxzPWUueSxsPWUucixoPXItYSxkPXItZixwPWktdSxnPWktcyx5PWMtbyx2PWwtbyxfPXIqcitpKmktbypvLGI9Xy1hKmEtdSp1K2MqYyxtPV8tZipmLXMqcytsKmwseD1kKnAtaCpnLHc9KHAqbS1nKmIpLygyKngpLXIsTT0oZyp5LXAqdikveCxBPShkKmItaCptKS8oMip4KS1pLFQ9KGgqdi1kKnkpL3gsUz1NKk0rVCpULTEsRT0yKihvK3cqTStBKlQpLGs9dyp3K0EqQS1vKm8sTj0tKE1hdGguYWJzKFMpPjFlLTY/KEUrTWF0aC5zcXJ0KEUqRS00KlMqaykpLygyKlMpOmsvRSk7cmV0dXJue3g6cit3K00qTix5OmkrQStUKk4scjpOfX1mdW5jdGlvbiBMZCh0LG4sZSl7dmFyIHIsaSxvLGEsdT10Lngtbi54LGM9dC55LW4ueSxmPXUqdStjKmM7Zj8oaT1uLnIrZS5yLGkqPWksYT10LnIrZS5yLGk+KGEqPWEpPyhyPShmK2EtaSkvKDIqZiksbz1NYXRoLnNxcnQoTWF0aC5tYXgoMCxhL2YtcipyKSksZS54PXQueC1yKnUtbypjLGUueT10LnktcipjK28qdSk6KHI9KGYraS1hKS8oMipmKSxvPU1hdGguc3FydChNYXRoLm1heCgwLGkvZi1yKnIpKSxlLng9bi54K3IqdS1vKmMsZS55PW4ueStyKmMrbyp1KSk6KGUueD1uLngrZS5yLGUueT1uLnkpfWZ1bmN0aW9uIGpkKHQsbil7dmFyIGU9dC5yK24uci0xZS02LHI9bi54LXQueCxpPW4ueS10Lnk7cmV0dXJuIGU+MCYmZSplPnIqcitpKml9ZnVuY3Rpb24gJGQodCl7dmFyIG49dC5fLGU9dC5uZXh0Ll8scj1uLnIrZS5yLGk9KG4ueCplLnIrZS54Km4ucikvcixvPShuLnkqZS5yK2UueSpuLnIpL3I7cmV0dXJuIGkqaStvKm99ZnVuY3Rpb24gSGQodCl7dGhpcy5fPXQsdGhpcy5uZXh0PW51bGwsdGhpcy5wcmV2aW91cz1udWxsfWZ1bmN0aW9uIFhkKHQsbil7aWYoIShvPSh0PWZ1bmN0aW9uKHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgdCYmImxlbmd0aCJpbiB0P3Q6QXJyYXkuZnJvbSh0KX0odCkpLmxlbmd0aCkpcmV0dXJuIDA7dmFyIGUscixpLG8sYSx1LGMsZixzLGwsaDtpZigoZT10WzBdKS54PTAsZS55PTAsIShvPjEpKXJldHVybiBlLnI7aWYocj10WzFdLGUueD0tci5yLHIueD1lLnIsci55PTAsIShvPjIpKXJldHVybiBlLnIrci5yO0xkKHIsZSxpPXRbMl0pLGU9bmV3IEhkKGUpLHI9bmV3IEhkKHIpLGk9bmV3IEhkKGkpLGUubmV4dD1pLnByZXZpb3VzPXIsci5uZXh0PWUucHJldmlvdXM9aSxpLm5leHQ9ci5wcmV2aW91cz1lO3Q6Zm9yKGM9MztjPG87KytjKXtMZChlLl8sci5fLGk9dFtjXSksaT1uZXcgSGQoaSksZj1yLm5leHQscz1lLnByZXZpb3VzLGw9ci5fLnIsaD1lLl8ucjtkb3tpZihsPD1oKXtpZihqZChmLl8saS5fKSl7cj1mLGUubmV4dD1yLHIucHJldmlvdXM9ZSwtLWM7Y29udGludWUgdH1sKz1mLl8ucixmPWYubmV4dH1lbHNle2lmKGpkKHMuXyxpLl8pKXsoZT1zKS5uZXh0PXIsci5wcmV2aW91cz1lLC0tYztjb250aW51ZSB0fWgrPXMuXy5yLHM9cy5wcmV2aW91c319d2hpbGUoZiE9PXMubmV4dCk7Zm9yKGkucHJldmlvdXM9ZSxpLm5leHQ9cixlLm5leHQ9ci5wcmV2aW91cz1yPWksYT0kZChlKTsoaT1pLm5leHQpIT09cjspKHU9JGQoaSkpPGEmJihlPWksYT11KTtyPWUubmV4dH1mb3IoZT1bci5fXSxpPXI7KGk9aS5uZXh0KSE9PXI7KWUucHVzaChpLl8pO2ZvcihpPVJkKGUsbiksYz0wO2M8bzsrK2MpKGU9dFtjXSkueC09aS54LGUueS09aS55O3JldHVybiBpLnJ9ZnVuY3Rpb24gR2QodCl7cmV0dXJuIE1hdGguc3FydCh0LnZhbHVlKX1mdW5jdGlvbiBWZCh0KXtyZXR1cm4gZnVuY3Rpb24obil7bi5jaGlsZHJlbnx8KG4ucj1NYXRoLm1heCgwLCt0KG4pfHwwKSl9fWZ1bmN0aW9uIFdkKHQsbixlKXtyZXR1cm4gZnVuY3Rpb24ocil7aWYoaT1yLmNoaWxkcmVuKXt2YXIgaSxvLGEsdT1pLmxlbmd0aCxjPXQocikqbnx8MDtpZihjKWZvcihvPTA7bzx1OysrbylpW29dLnIrPWM7aWYoYT1YZChpLGUpLGMpZm9yKG89MDtvPHU7KytvKWlbb10uci09YztyLnI9YStjfX19ZnVuY3Rpb24gWmQodCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBlPW4ucGFyZW50O24ucio9dCxlJiYobi54PWUueCt0Km4ueCxuLnk9ZS55K3Qqbi55KX19ZnVuY3Rpb24gS2QodCl7dC54MD1NYXRoLnJvdW5kKHQueDApLHQueTA9TWF0aC5yb3VuZCh0LnkwKSx0LngxPU1hdGgucm91bmQodC54MSksdC55MT1NYXRoLnJvdW5kKHQueTEpfWZ1bmN0aW9uIFFkKHQsbixlLHIsaSl7Zm9yKHZhciBvLGE9dC5jaGlsZHJlbix1PS0xLGM9YS5sZW5ndGgsZj10LnZhbHVlJiYoci1uKS90LnZhbHVlOysrdTxjOykobz1hW3VdKS55MD1lLG8ueTE9aSxvLngwPW4sby54MT1uKz1vLnZhbHVlKmZ9dmFyIEpkPXtkZXB0aDotMX0sdHA9e30sbnA9e307ZnVuY3Rpb24gZXAodCl7cmV0dXJuIHQuaWR9ZnVuY3Rpb24gcnAodCl7cmV0dXJuIHQucGFyZW50SWR9ZnVuY3Rpb24gaXAodCl7bGV0IG49dC5sZW5ndGg7aWYobjwyKXJldHVybiIiO2Zvcig7LS1uPjEmJiFvcCh0LG4pOyk7cmV0dXJuIHQuc2xpY2UoMCxuKX1mdW5jdGlvbiBvcCh0LG4pe2lmKCIvIj09PXRbbl0pe2xldCBlPTA7Zm9yKDtuPjAmJiJcXCI9PT10Wy0tbl07KSsrZTtpZigwPT0oMSZlKSlyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBhcCh0LG4pe3JldHVybiB0LnBhcmVudD09PW4ucGFyZW50PzE6Mn1mdW5jdGlvbiB1cCh0KXt2YXIgbj10LmNoaWxkcmVuO3JldHVybiBuP25bMF06dC50fWZ1bmN0aW9uIGNwKHQpe3ZhciBuPXQuY2hpbGRyZW47cmV0dXJuIG4/bltuLmxlbmd0aC0xXTp0LnR9ZnVuY3Rpb24gZnAodCxuLGUpe3ZhciByPWUvKG4uaS10LmkpO24uYy09cixuLnMrPWUsdC5jKz1yLG4ueis9ZSxuLm0rPWV9ZnVuY3Rpb24gc3AodCxuLGUpe3JldHVybiB0LmEucGFyZW50PT09bi5wYXJlbnQ/dC5hOmV9ZnVuY3Rpb24gbHAodCxuKXt0aGlzLl89dCx0aGlzLnBhcmVudD1udWxsLHRoaXMuY2hpbGRyZW49bnVsbCx0aGlzLkE9bnVsbCx0aGlzLmE9dGhpcyx0aGlzLno9MCx0aGlzLm09MCx0aGlzLmM9MCx0aGlzLnM9MCx0aGlzLnQ9bnVsbCx0aGlzLmk9bn1mdW5jdGlvbiBocCh0LG4sZSxyLGkpe2Zvcih2YXIgbyxhPXQuY2hpbGRyZW4sdT0tMSxjPWEubGVuZ3RoLGY9dC52YWx1ZSYmKGktZSkvdC52YWx1ZTsrK3U8YzspKG89YVt1XSkueDA9bixvLngxPXIsby55MD1lLG8ueTE9ZSs9by52YWx1ZSpmfWxwLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEVkLnByb3RvdHlwZSk7dmFyIGRwPSgxK01hdGguc3FydCg1KSkvMjtmdW5jdGlvbiBwcCh0LG4sZSxyLGksbyl7Zm9yKHZhciBhLHUsYyxmLHMsbCxoLGQscCxnLHksdj1bXSxfPW4uY2hpbGRyZW4sYj0wLG09MCx4PV8ubGVuZ3RoLHc9bi52YWx1ZTtiPHg7KXtjPWktZSxmPW8tcjtkb3tzPV9bbSsrXS52YWx1ZX13aGlsZSghcyYmbTx4KTtmb3IobD1oPXMseT1zKnMqKGc9TWF0aC5tYXgoZi9jLGMvZikvKHcqdCkpLHA9TWF0aC5tYXgoaC95LHkvbCk7bTx4OysrbSl7aWYocys9dT1fW21dLnZhbHVlLHU8bCYmKGw9dSksdT5oJiYoaD11KSx5PXMqcypnLChkPU1hdGgubWF4KGgveSx5L2wpKT5wKXtzLT11O2JyZWFrfXA9ZH12LnB1c2goYT17dmFsdWU6cyxkaWNlOmM8ZixjaGlsZHJlbjpfLnNsaWNlKGIsbSl9KSxhLmRpY2U/UWQoYSxlLHIsaSx3P3IrPWYqcy93Om8pOmhwKGEsZSxyLHc/ZSs9YypzL3c6aSxvKSx3LT1zLGI9bX1yZXR1cm4gdn12YXIgZ3A9ZnVuY3Rpb24gdChuKXtmdW5jdGlvbiBlKHQsZSxyLGksbyl7cHAobix0LGUscixpLG8pfXJldHVybiBlLnJhdGlvPWZ1bmN0aW9uKG4pe3JldHVybiB0KChuPStuKT4xP246MSl9LGV9KGRwKTt2YXIgeXA9ZnVuY3Rpb24gdChuKXtmdW5jdGlvbiBlKHQsZSxyLGksbyl7aWYoKGE9dC5fc3F1YXJpZnkpJiZhLnJhdGlvPT09bilmb3IodmFyIGEsdSxjLGYscyxsPS0xLGg9YS5sZW5ndGgsZD10LnZhbHVlOysrbDxoOyl7Zm9yKGM9KHU9YVtsXSkuY2hpbGRyZW4sZj11LnZhbHVlPTAscz1jLmxlbmd0aDtmPHM7KytmKXUudmFsdWUrPWNbZl0udmFsdWU7dS5kaWNlP1FkKHUsZSxyLGksZD9yKz0oby1yKSp1LnZhbHVlL2Q6byk6aHAodSxlLHIsZD9lKz0oaS1lKSp1LnZhbHVlL2Q6aSxvKSxkLT11LnZhbHVlfWVsc2UgdC5fc3F1YXJpZnk9YT1wcChuLHQsZSxyLGksbyksYS5yYXRpbz1ufXJldHVybiBlLnJhdGlvPWZ1bmN0aW9uKG4pe3JldHVybiB0KChuPStuKT4xP246MSl9LGV9KGRwKTtmdW5jdGlvbiB2cCh0LG4sZSl7cmV0dXJuKG5bMF0tdFswXSkqKGVbMV0tdFsxXSktKG5bMV0tdFsxXSkqKGVbMF0tdFswXSl9ZnVuY3Rpb24gX3AodCxuKXtyZXR1cm4gdFswXS1uWzBdfHx0WzFdLW5bMV19ZnVuY3Rpb24gYnAodCl7Y29uc3Qgbj10Lmxlbmd0aCxlPVswLDFdO2xldCByLGk9Mjtmb3Iocj0yO3I8bjsrK3Ipe2Zvcig7aT4xJiZ2cCh0W2VbaS0yXV0sdFtlW2ktMV1dLHRbcl0pPD0wOyktLWk7ZVtpKytdPXJ9cmV0dXJuIGUuc2xpY2UoMCxpKX12YXIgbXA9TWF0aC5yYW5kb20seHA9ZnVuY3Rpb24gdChuKXtmdW5jdGlvbiBlKHQsZSl7cmV0dXJuIHQ9bnVsbD09dD8wOit0LGU9bnVsbD09ZT8xOitlLDE9PT1hcmd1bWVudHMubGVuZ3RoPyhlPXQsdD0wKTplLT10LGZ1bmN0aW9uKCl7cmV0dXJuIG4oKSplK3R9fXJldHVybiBlLnNvdXJjZT10LGV9KG1wKSx3cD1mdW5jdGlvbiB0KG4pe2Z1bmN0aW9uIGUodCxlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyJiYoZT10LHQ9MCksdD1NYXRoLmZsb29yKHQpLGU9TWF0aC5mbG9vcihlKS10LGZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguZmxvb3IobigpKmUrdCl9fXJldHVybiBlLnNvdXJjZT10LGV9KG1wKSxNcD1mdW5jdGlvbiB0KG4pe2Z1bmN0aW9uIGUodCxlKXt2YXIgcixpO3JldHVybiB0PW51bGw9PXQ/MDordCxlPW51bGw9PWU/MTorZSxmdW5jdGlvbigpe3ZhciBvO2lmKG51bGwhPXIpbz1yLHI9bnVsbDtlbHNlIGRve3I9MipuKCktMSxvPTIqbigpLTEsaT1yKnIrbypvfXdoaWxlKCFpfHxpPjEpO3JldHVybiB0K2UqbypNYXRoLnNxcnQoLTIqTWF0aC5sb2coaSkvaSl9fXJldHVybiBlLnNvdXJjZT10LGV9KG1wKSxBcD1mdW5jdGlvbiB0KG4pe3ZhciBlPU1wLnNvdXJjZShuKTtmdW5jdGlvbiByKCl7dmFyIHQ9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguZXhwKHQoKSl9fXJldHVybiByLnNvdXJjZT10LHJ9KG1wKSxUcD1mdW5jdGlvbiB0KG4pe2Z1bmN0aW9uIGUodCl7cmV0dXJuKHQ9K3QpPD0wPygpPT4wOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPTAscj10O3I+MTstLXIpZSs9bigpO3JldHVybiBlK3IqbigpfX1yZXR1cm4gZS5zb3VyY2U9dCxlfShtcCksU3A9ZnVuY3Rpb24gdChuKXt2YXIgZT1UcC5zb3VyY2Uobik7ZnVuY3Rpb24gcih0KXtpZigwPT0odD0rdCkpcmV0dXJuIG47dmFyIHI9ZSh0KTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gcigpL3R9fXJldHVybiByLnNvdXJjZT10LHJ9KG1wKSxFcD1mdW5jdGlvbiB0KG4pe2Z1bmN0aW9uIGUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuLU1hdGgubG9nMXAoLW4oKSkvdH19cmV0dXJuIGUuc291cmNlPXQsZX0obXApLGtwPWZ1bmN0aW9uIHQobil7ZnVuY3Rpb24gZSh0KXtpZigodD0rdCk8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiaW52YWxpZCBhbHBoYSIpO3JldHVybiB0PTEvLXQsZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5wb3coMS1uKCksdCl9fXJldHVybiBlLnNvdXJjZT10LGV9KG1wKSxOcD1mdW5jdGlvbiB0KG4pe2Z1bmN0aW9uIGUodCl7aWYoKHQ9K3QpPDB8fHQ+MSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiaW52YWxpZCBwIik7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguZmxvb3IobigpK3QpfX1yZXR1cm4gZS5zb3VyY2U9dCxlfShtcCksQ3A9ZnVuY3Rpb24gdChuKXtmdW5jdGlvbiBlKHQpe2lmKCh0PSt0KTwwfHx0PjEpdGhyb3cgbmV3IFJhbmdlRXJyb3IoImludmFsaWQgcCIpO3JldHVybiAwPT09dD8oKT0+MS8wOjE9PT10PygpPT4xOih0PU1hdGgubG9nMXAoLXQpLGZ1bmN0aW9uKCl7cmV0dXJuIDErTWF0aC5mbG9vcihNYXRoLmxvZzFwKC1uKCkpL3QpfSl9cmV0dXJuIGUuc291cmNlPXQsZX0obXApLFBwPWZ1bmN0aW9uIHQobil7dmFyIGU9TXAuc291cmNlKG4pKCk7ZnVuY3Rpb24gcih0LHIpe2lmKCh0PSt0KTwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJpbnZhbGlkIGsiKTtpZigwPT09dClyZXR1cm4oKT0+MDtpZihyPW51bGw9PXI/MTorciwxPT09dClyZXR1cm4oKT0+LU1hdGgubG9nMXAoLW4oKSkqcjt2YXIgaT0odDwxP3QrMTp0KS0xLzMsbz0xLygzKk1hdGguc3FydChpKSksYT10PDE/KCk9Pk1hdGgucG93KG4oKSwxL3QpOigpPT4xO3JldHVybiBmdW5jdGlvbigpe2Rve2Rve3ZhciB0PWUoKSx1PTErbyp0fXdoaWxlKHU8PTApO3UqPXUqdTt2YXIgYz0xLW4oKX13aGlsZShjPj0xLS4wMzMxKnQqdCp0KnQmJk1hdGgubG9nKGMpPj0uNSp0KnQraSooMS11K01hdGgubG9nKHUpKSk7cmV0dXJuIGkqdSphKCkqcn19cmV0dXJuIHIuc291cmNlPXQscn0obXApLHpwPWZ1bmN0aW9uIHQobil7dmFyIGU9UHAuc291cmNlKG4pO2Z1bmN0aW9uIHIodCxuKXt2YXIgcj1lKHQpLGk9ZShuKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD1yKCk7cmV0dXJuIDA9PT10PzA6dC8odCtpKCkpfX1yZXR1cm4gci5zb3VyY2U9dCxyfShtcCksRHA9ZnVuY3Rpb24gdChuKXt2YXIgZT1DcC5zb3VyY2Uobikscj16cC5zb3VyY2Uobik7ZnVuY3Rpb24gaSh0LG4pe3JldHVybiB0PSt0LChuPStuKT49MT8oKT0+dDpuPD0wPygpPT4wOmZ1bmN0aW9uKCl7Zm9yKHZhciBpPTAsbz10LGE9bjtvKmE+MTYmJm8qKDEtYSk+MTY7KXt2YXIgdT1NYXRoLmZsb29yKChvKzEpKmEpLGM9cih1LG8tdSsxKSgpO2M8PWE/KGkrPXUsby09dSxhPShhLWMpLygxLWMpKToobz11LTEsYS89Yyl9Zm9yKHZhciBmPWE8LjUscz1lKGY/YToxLWEpLGw9cygpLGg9MDtsPD1vOysraClsKz1zKCk7cmV0dXJuIGkrKGY/aDpvLWgpfX1yZXR1cm4gaS5zb3VyY2U9dCxpfShtcCksUnA9ZnVuY3Rpb24gdChuKXtmdW5jdGlvbiBlKHQsZSxyKXt2YXIgaTtyZXR1cm4gMD09KHQ9K3QpP2k9dD0+LU1hdGgubG9nKHQpOih0PTEvdCxpPW49Pk1hdGgucG93KG4sdCkpLGU9bnVsbD09ZT8wOitlLHI9bnVsbD09cj8xOityLGZ1bmN0aW9uKCl7cmV0dXJuIGUrcippKC1NYXRoLmxvZzFwKC1uKCkpKX19cmV0dXJuIGUuc291cmNlPXQsZX0obXApLEZwPWZ1bmN0aW9uIHQobil7ZnVuY3Rpb24gZSh0LGUpe3JldHVybiB0PW51bGw9PXQ/MDordCxlPW51bGw9PWU/MTorZSxmdW5jdGlvbigpe3JldHVybiB0K2UqTWF0aC50YW4oTWF0aC5QSSpuKCkpfX1yZXR1cm4gZS5zb3VyY2U9dCxlfShtcCkscXA9ZnVuY3Rpb24gdChuKXtmdW5jdGlvbiBlKHQsZSl7cmV0dXJuIHQ9bnVsbD09dD8wOit0LGU9bnVsbD09ZT8xOitlLGZ1bmN0aW9uKCl7dmFyIHI9bigpO3JldHVybiB0K2UqTWF0aC5sb2coci8oMS1yKSl9fXJldHVybiBlLnNvdXJjZT10LGV9KG1wKSxJcD1mdW5jdGlvbiB0KG4pe3ZhciBlPVBwLnNvdXJjZShuKSxyPURwLnNvdXJjZShuKTtmdW5jdGlvbiBpKHQpe3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgaT0wLG89dDtvPjE2Oyl7dmFyIGE9TWF0aC5mbG9vciguODc1Km8pLHU9ZShhKSgpO2lmKHU+bylyZXR1cm4gaStyKGEtMSxvL3UpKCk7aSs9YSxvLT11fWZvcih2YXIgYz0tTWF0aC5sb2cxcCgtbigpKSxmPTA7Yzw9bzsrK2YpYy09TWF0aC5sb2cxcCgtbigpKTtyZXR1cm4gaStmfX1yZXR1cm4gaS5zb3VyY2U9dCxpfShtcCk7Y29uc3QgT3A9MS80Mjk0OTY3Mjk2O2Z1bmN0aW9uIFVwKHQsbil7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMDpicmVhaztjYXNlIDE6dGhpcy5yYW5nZSh0KTticmVhaztkZWZhdWx0OnRoaXMucmFuZ2UobikuZG9tYWluKHQpfXJldHVybiB0aGlzfWZ1bmN0aW9uIEJwKHQsbil7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMDpicmVhaztjYXNlIDE6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dGhpcy5pbnRlcnBvbGF0b3IodCk6dGhpcy5yYW5nZSh0KTticmVhaztkZWZhdWx0OnRoaXMuZG9tYWluKHQpLCJmdW5jdGlvbiI9PXR5cGVvZiBuP3RoaXMuaW50ZXJwb2xhdG9yKG4pOnRoaXMucmFuZ2Uobil9cmV0dXJuIHRoaXN9Y29uc3QgWXA9U3ltYm9sKCJpbXBsaWNpdCIpO2Z1bmN0aW9uIExwKCl7dmFyIHQ9bmV3IEludGVybk1hcCxuPVtdLGU9W10scj1ZcDtmdW5jdGlvbiBpKGkpe2xldCBvPXQuZ2V0KGkpO2lmKHZvaWQgMD09PW8pe2lmKHIhPT1ZcClyZXR1cm4gcjt0LnNldChpLG89bi5wdXNoKGkpLTEpfXJldHVybiBlW28lZS5sZW5ndGhdfXJldHVybiBpLmRvbWFpbj1mdW5jdGlvbihlKXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gbi5zbGljZSgpO249W10sdD1uZXcgSW50ZXJuTWFwO2Zvcihjb25zdCByIG9mIGUpdC5oYXMocil8fHQuc2V0KHIsbi5wdXNoKHIpLTEpO3JldHVybiBpfSxpLnJhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPUFycmF5LmZyb20odCksaSk6ZS5zbGljZSgpfSxpLnVua25vd249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dCxpKTpyfSxpLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gTHAobixlKS51bmtub3duKHIpfSxVcC5hcHBseShpLGFyZ3VtZW50cyksaX1mdW5jdGlvbiBqcCgpe3ZhciB0LG4sZT1McCgpLnVua25vd24odm9pZCAwKSxyPWUuZG9tYWluLGk9ZS5yYW5nZSxvPTAsYT0xLHU9ITEsYz0wLGY9MCxzPS41O2Z1bmN0aW9uIGwoKXt2YXIgZT1yKCkubGVuZ3RoLGw9YTxvLGg9bD9hOm8sZD1sP286YTt0PShkLWgpL01hdGgubWF4KDEsZS1jKzIqZiksdSYmKHQ9TWF0aC5mbG9vcih0KSksaCs9KGQtaC10KihlLWMpKSpzLG49dCooMS1jKSx1JiYoaD1NYXRoLnJvdW5kKGgpLG49TWF0aC5yb3VuZChuKSk7dmFyIHA9bHQoZSkubWFwKChmdW5jdGlvbihuKXtyZXR1cm4gaCt0Km59KSk7cmV0dXJuIGkobD9wLnJldmVyc2UoKTpwKX1yZXR1cm4gZGVsZXRlIGUudW5rbm93bixlLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocih0KSxsKCkpOnIoKX0sZS5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oW28sYV09dCxvPStvLGE9K2EsbCgpKTpbbyxhXX0sZS5yYW5nZVJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybltvLGFdPXQsbz0rbyxhPSthLHU9ITAsbCgpfSxlLmJhbmR3aWR0aD1mdW5jdGlvbigpe3JldHVybiBufSxlLnN0ZXA9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sZS5yb3VuZD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0hIXQsbCgpKTp1fSxlLnBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9TWF0aC5taW4oMSxmPSt0KSxsKCkpOmN9LGUucGFkZGluZ0lubmVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPU1hdGgubWluKDEsdCksbCgpKTpjfSxlLnBhZGRpbmdPdXRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0rdCxsKCkpOmZ9LGUuYWxpZ249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKSxsKCkpOnN9LGUuY29weT1mdW5jdGlvbigpe3JldHVybiBqcChyKCksW28sYV0pLnJvdW5kKHUpLnBhZGRpbmdJbm5lcihjKS5wYWRkaW5nT3V0ZXIoZikuYWxpZ24ocyl9LFVwLmFwcGx5KGwoKSxhcmd1bWVudHMpfWZ1bmN0aW9uICRwKHQpe3ZhciBuPXQuY29weTtyZXR1cm4gdC5wYWRkaW5nPXQucGFkZGluZ091dGVyLGRlbGV0ZSB0LnBhZGRpbmdJbm5lcixkZWxldGUgdC5wYWRkaW5nT3V0ZXIsdC5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuICRwKG4oKSl9LHR9ZnVuY3Rpb24gSHAodCl7cmV0dXJuK3R9dmFyIFhwPVswLDFdO2Z1bmN0aW9uIEdwKHQpe3JldHVybiB0fWZ1bmN0aW9uIFZwKHQsbil7cmV0dXJuKG4tPXQ9K3QpP2Z1bmN0aW9uKGUpe3JldHVybihlLXQpL259OmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX0oaXNOYU4obik/TmFOOi41KX1mdW5jdGlvbiBXcCh0LG4sZSl7dmFyIHI9dFswXSxpPXRbMV0sbz1uWzBdLGE9blsxXTtyZXR1cm4gaTxyPyhyPVZwKGksciksbz1lKGEsbykpOihyPVZwKHIsaSksbz1lKG8sYSkpLGZ1bmN0aW9uKHQpe3JldHVybiBvKHIodCkpfX1mdW5jdGlvbiBacCh0LG4sZSl7dmFyIHI9TWF0aC5taW4odC5sZW5ndGgsbi5sZW5ndGgpLTEsaT1uZXcgQXJyYXkociksbz1uZXcgQXJyYXkociksYT0tMTtmb3IodFtyXTx0WzBdJiYodD10LnNsaWNlKCkucmV2ZXJzZSgpLG49bi5zbGljZSgpLnJldmVyc2UoKSk7KythPHI7KWlbYV09VnAodFthXSx0W2ErMV0pLG9bYV09ZShuW2FdLG5bYSsxXSk7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBlPWwodCxuLDEsciktMTtyZXR1cm4gb1tlXShpW2VdKG4pKX19ZnVuY3Rpb24gS3AodCxuKXtyZXR1cm4gbi5kb21haW4odC5kb21haW4oKSkucmFuZ2UodC5yYW5nZSgpKS5pbnRlcnBvbGF0ZSh0LmludGVycG9sYXRlKCkpLmNsYW1wKHQuY2xhbXAoKSkudW5rbm93bih0LnVua25vd24oKSl9ZnVuY3Rpb24gUXAoKXt2YXIgdCxuLGUscixpLG8sYT1YcCx1PVhwLGM9SHIsZj1HcDtmdW5jdGlvbiBzKCl7dmFyIHQ9TWF0aC5taW4oYS5sZW5ndGgsdS5sZW5ndGgpO3JldHVybiBmIT09R3AmJihmPWZ1bmN0aW9uKHQsbil7dmFyIGU7cmV0dXJuIHQ+biYmKGU9dCx0PW4sbj1lKSxmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5tYXgodCxNYXRoLm1pbihuLGUpKX19KGFbMF0sYVt0LTFdKSkscj10PjI/WnA6V3AsaT1vPW51bGwsbH1mdW5jdGlvbiBsKG4pe3JldHVybiBudWxsPT1ufHxpc05hTihuPStuKT9lOihpfHwoaT1yKGEubWFwKHQpLHUsYykpKSh0KGYobikpKX1yZXR1cm4gbC5pbnZlcnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGYobigob3x8KG89cih1LGEubWFwKHQpLEJyKSkpKGUpKSl9LGwuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPUFycmF5LmZyb20odCxIcCkscygpKTphLnNsaWNlKCl9LGwucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9QXJyYXkuZnJvbSh0KSxzKCkpOnUuc2xpY2UoKX0sbC5yYW5nZVJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiB1PUFycmF5LmZyb20odCksYz1YcixzKCl9LGwuY2xhbXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9ISF0fHxHcCxzKCkpOmYhPT1HcH0sbC5pbnRlcnBvbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz10LHMoKSk6Y30sbC51bmtub3duPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXQsbCk6ZX0sZnVuY3Rpb24oZSxyKXtyZXR1cm4gdD1lLG49cixzKCl9fWZ1bmN0aW9uIEpwKCl7cmV0dXJuIFFwKCkoR3AsR3ApfWZ1bmN0aW9uIHRnKG4sZSxyLGkpe3ZhciBvLGE9VyhuLGUscik7c3dpdGNoKChpPURjKG51bGw9PWk/IixmIjppKSkudHlwZSl7Y2FzZSJzIjp2YXIgdT1NYXRoLm1heChNYXRoLmFicyhuKSxNYXRoLmFicyhlKSk7cmV0dXJuIG51bGwhPWkucHJlY2lzaW9ufHxpc05hTihvPSRjKGEsdSkpfHwoaS5wcmVjaXNpb249byksdC5mb3JtYXRQcmVmaXgoaSx1KTtjYXNlIiI6Y2FzZSJlIjpjYXNlImciOmNhc2UicCI6Y2FzZSJyIjpudWxsIT1pLnByZWNpc2lvbnx8aXNOYU4obz1IYyhhLE1hdGgubWF4KE1hdGguYWJzKG4pLE1hdGguYWJzKGUpKSkpfHwoaS5wcmVjaXNpb249by0oImUiPT09aS50eXBlKSk7YnJlYWs7Y2FzZSJmIjpjYXNlIiUiOm51bGwhPWkucHJlY2lzaW9ufHxpc05hTihvPWpjKGEpKXx8KGkucHJlY2lzaW9uPW8tMiooIiUiPT09aS50eXBlKSl9cmV0dXJuIHQuZm9ybWF0KGkpfWZ1bmN0aW9uIG5nKHQpe3ZhciBuPXQuZG9tYWluO3JldHVybiB0LnRpY2tzPWZ1bmN0aW9uKHQpe3ZhciBlPW4oKTtyZXR1cm4gRyhlWzBdLGVbZS5sZW5ndGgtMV0sbnVsbD09dD8xMDp0KX0sdC50aWNrRm9ybWF0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9bigpO3JldHVybiB0ZyhyWzBdLHJbci5sZW5ndGgtMV0sbnVsbD09dD8xMDp0LGUpfSx0Lm5pY2U9ZnVuY3Rpb24oZSl7bnVsbD09ZSYmKGU9MTApO3ZhciByLGksbz1uKCksYT0wLHU9by5sZW5ndGgtMSxjPW9bYV0sZj1vW3VdLHM9MTA7Zm9yKGY8YyYmKGk9YyxjPWYsZj1pLGk9YSxhPXUsdT1pKTtzLS0gPjA7KXtpZigoaT1WKGMsZixlKSk9PT1yKXJldHVybiBvW2FdPWMsb1t1XT1mLG4obyk7aWYoaT4wKWM9TWF0aC5mbG9vcihjL2kpKmksZj1NYXRoLmNlaWwoZi9pKSppO2Vsc2V7aWYoIShpPDApKWJyZWFrO2M9TWF0aC5jZWlsKGMqaSkvaSxmPU1hdGguZmxvb3IoZippKS9pfXI9aX1yZXR1cm4gdH0sdH1mdW5jdGlvbiBlZyh0LG4pe3ZhciBlLHI9MCxpPSh0PXQuc2xpY2UoKSkubGVuZ3RoLTEsbz10W3JdLGE9dFtpXTtyZXR1cm4gYTxvJiYoZT1yLHI9aSxpPWUsZT1vLG89YSxhPWUpLHRbcl09bi5mbG9vcihvKSx0W2ldPW4uY2VpbChhKSx0fWZ1bmN0aW9uIHJnKHQpe3JldHVybiBNYXRoLmxvZyh0KX1mdW5jdGlvbiBpZyh0KXtyZXR1cm4gTWF0aC5leHAodCl9ZnVuY3Rpb24gb2codCl7cmV0dXJuLU1hdGgubG9nKC10KX1mdW5jdGlvbiBhZyh0KXtyZXR1cm4tTWF0aC5leHAoLXQpfWZ1bmN0aW9uIHVnKHQpe3JldHVybiBpc0Zpbml0ZSh0KT8rKCIxZSIrdCk6dDwwPzA6dH1mdW5jdGlvbiBjZyh0KXtyZXR1cm4obixlKT0+LXQoLW4sZSl9ZnVuY3Rpb24gZmcobil7Y29uc3QgZT1uKHJnLGlnKSxyPWUuZG9tYWluO2xldCBpLG8sYT0xMDtmdW5jdGlvbiB1KCl7cmV0dXJuIGk9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1NYXRoLkU/TWF0aC5sb2c6MTA9PT10JiZNYXRoLmxvZzEwfHwyPT09dCYmTWF0aC5sb2cyfHwodD1NYXRoLmxvZyh0KSxuPT5NYXRoLmxvZyhuKS90KX0oYSksbz1mdW5jdGlvbih0KXtyZXR1cm4gMTA9PT10P3VnOnQ9PT1NYXRoLkU/TWF0aC5leHA6bj0+TWF0aC5wb3codCxuKX0oYSkscigpWzBdPDA/KGk9Y2coaSksbz1jZyhvKSxuKG9nLGFnKSk6bihyZyxpZyksZX1yZXR1cm4gZS5iYXNlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSt0LHUoKSk6YX0sZS5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHIodCksdSgpKTpyKCl9LGUudGlja3M9dD0+e2NvbnN0IG49cigpO2xldCBlPW5bMF0sdT1uW24ubGVuZ3RoLTFdO2NvbnN0IGM9dTxlO2MmJihbZSx1XT1bdSxlXSk7bGV0IGYscyxsPWkoZSksaD1pKHUpO2NvbnN0IGQ9bnVsbD09dD8xMDordDtsZXQgcD1bXTtpZighKGElMSkmJmgtbDxkKXtpZihsPU1hdGguZmxvb3IobCksaD1NYXRoLmNlaWwoaCksZT4wKXtmb3IoO2w8PWg7KytsKWZvcihmPTE7ZjxhOysrZilpZihzPWw8MD9mL28oLWwpOmYqbyhsKSwhKHM8ZSkpe2lmKHM+dSlicmVhaztwLnB1c2gocyl9fWVsc2UgZm9yKDtsPD1oOysrbClmb3IoZj1hLTE7Zj49MTstLWYpaWYocz1sPjA/Zi9vKC1sKTpmKm8obCksIShzPGUpKXtpZihzPnUpYnJlYWs7cC5wdXNoKHMpfTIqcC5sZW5ndGg8ZCYmKHA9RyhlLHUsZCkpfWVsc2UgcD1HKGwsaCxNYXRoLm1pbihoLWwsZCkpLm1hcChvKTtyZXR1cm4gYz9wLnJldmVyc2UoKTpwfSxlLnRpY2tGb3JtYXQ9KG4scik9PntpZihudWxsPT1uJiYobj0xMCksbnVsbD09ciYmKHI9MTA9PT1hPyJzIjoiLCIpLCJmdW5jdGlvbiIhPXR5cGVvZiByJiYoYSUxfHxudWxsIT0ocj1EYyhyKSkucHJlY2lzaW9ufHwoci50cmltPSEwKSxyPXQuZm9ybWF0KHIpKSxuPT09MS8wKXJldHVybiByO2NvbnN0IHU9TWF0aC5tYXgoMSxhKm4vZS50aWNrcygpLmxlbmd0aCk7cmV0dXJuIHQ9PntsZXQgbj10L28oTWF0aC5yb3VuZChpKHQpKSk7cmV0dXJuIG4qYTxhLS41JiYobio9YSksbjw9dT9yKHQpOiIifX0sZS5uaWNlPSgpPT5yKGVnKHIoKSx7Zmxvb3I6dD0+byhNYXRoLmZsb29yKGkodCkpKSxjZWlsOnQ9Pm8oTWF0aC5jZWlsKGkodCkpKX0pKSxlfWZ1bmN0aW9uIHNnKHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gTWF0aC5zaWduKG4pKk1hdGgubG9nMXAoTWF0aC5hYnMobi90KSl9fWZ1bmN0aW9uIGxnKHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gTWF0aC5zaWduKG4pKk1hdGguZXhwbTEoTWF0aC5hYnMobikpKnR9fWZ1bmN0aW9uIGhnKHQpe3ZhciBuPTEsZT10KHNnKG4pLGxnKG4pKTtyZXR1cm4gZS5jb25zdGFudD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90KHNnKG49K2UpLGxnKG4pKTpufSxuZyhlKX1mdW5jdGlvbiBkZyh0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIG48MD8tTWF0aC5wb3coLW4sdCk6TWF0aC5wb3cobix0KX19ZnVuY3Rpb24gcGcodCl7cmV0dXJuIHQ8MD8tTWF0aC5zcXJ0KC10KTpNYXRoLnNxcnQodCl9ZnVuY3Rpb24gZ2codCl7cmV0dXJuIHQ8MD8tdCp0OnQqdH1mdW5jdGlvbiB5Zyh0KXt2YXIgbj10KEdwLEdwKSxlPTE7ZnVuY3Rpb24gcigpe3JldHVybiAxPT09ZT90KEdwLEdwKTouNT09PWU/dChwZyxnZyk6dChkZyhlKSxkZygxL2UpKX1yZXR1cm4gbi5leHBvbmVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0rdCxyKCkpOmV9LG5nKG4pfWZ1bmN0aW9uIHZnKCl7dmFyIHQ9eWcoUXAoKSk7cmV0dXJuIHQuY29weT1mdW5jdGlvbigpe3JldHVybiBLcCh0LHZnKCkpLmV4cG9uZW50KHQuZXhwb25lbnQoKSl9LFVwLmFwcGx5KHQsYXJndW1lbnRzKSx0fWZ1bmN0aW9uIF9nKHQpe3JldHVybiBNYXRoLnNpZ24odCkqdCp0fWZ1bmN0aW9uIGJnKHQpe3JldHVybiBNYXRoLnNpZ24odCkqTWF0aC5zcXJ0KE1hdGguYWJzKHQpKX12YXIgbWc9bmV3IERhdGUseGc9bmV3IERhdGU7ZnVuY3Rpb24gd2codCxuLGUscil7ZnVuY3Rpb24gaShuKXtyZXR1cm4gdChuPTA9PT1hcmd1bWVudHMubGVuZ3RoP25ldyBEYXRlOm5ldyBEYXRlKCtuKSksbn1yZXR1cm4gaS5mbG9vcj1mdW5jdGlvbihuKXtyZXR1cm4gdChuPW5ldyBEYXRlKCtuKSksbn0saS5jZWlsPWZ1bmN0aW9uKGUpe3JldHVybiB0KGU9bmV3IERhdGUoZS0xKSksbihlLDEpLHQoZSksZX0saS5yb3VuZD1mdW5jdGlvbih0KXt2YXIgbj1pKHQpLGU9aS5jZWlsKHQpO3JldHVybiB0LW48ZS10P246ZX0saS5vZmZzZXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbih0PW5ldyBEYXRlKCt0KSxudWxsPT1lPzE6TWF0aC5mbG9vcihlKSksdH0saS5yYW5nZT1mdW5jdGlvbihlLHIsbyl7dmFyIGEsdT1bXTtpZihlPWkuY2VpbChlKSxvPW51bGw9PW8/MTpNYXRoLmZsb29yKG8pLCEoZTxyJiZvPjApKXJldHVybiB1O2Rve3UucHVzaChhPW5ldyBEYXRlKCtlKSksbihlLG8pLHQoZSl9d2hpbGUoYTxlJiZlPHIpO3JldHVybiB1fSxpLmZpbHRlcj1mdW5jdGlvbihlKXtyZXR1cm4gd2coKGZ1bmN0aW9uKG4pe2lmKG4+PW4pZm9yKDt0KG4pLCFlKG4pOyluLnNldFRpbWUobi0xKX0pLChmdW5jdGlvbih0LHIpe2lmKHQ+PXQpaWYocjwwKWZvcig7KytyPD0wOylmb3IoO24odCwtMSksIWUodCk7KTtlbHNlIGZvcig7LS1yPj0wOylmb3IoO24odCwxKSwhZSh0KTspO30pKX0sZSYmKGkuY291bnQ9ZnVuY3Rpb24obixyKXtyZXR1cm4gbWcuc2V0VGltZSgrbikseGcuc2V0VGltZSgrciksdChtZyksdCh4ZyksTWF0aC5mbG9vcihlKG1nLHhnKSl9LGkuZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9TWF0aC5mbG9vcih0KSxpc0Zpbml0ZSh0KSYmdD4wP3Q+MT9pLmZpbHRlcihyP2Z1bmN0aW9uKG4pe3JldHVybiByKG4pJXQ9PTB9OmZ1bmN0aW9uKG4pe3JldHVybiBpLmNvdW50KDAsbikldD09MH0pOmk6bnVsbH0pLGl9dmFyIE1nPXdnKChmdW5jdGlvbigpe30pLChmdW5jdGlvbih0LG4pe3Quc2V0VGltZSgrdCtuKX0pLChmdW5jdGlvbih0LG4pe3JldHVybiBuLXR9KSk7TWcuZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9TWF0aC5mbG9vcih0KSxpc0Zpbml0ZSh0KSYmdD4wP3Q+MT93ZygoZnVuY3Rpb24obil7bi5zZXRUaW1lKE1hdGguZmxvb3Iobi90KSp0KX0pLChmdW5jdGlvbihuLGUpe24uc2V0VGltZSgrbitlKnQpfSksKGZ1bmN0aW9uKG4sZSl7cmV0dXJuKGUtbikvdH0pKTpNZzpudWxsfTt2YXIgQWc9TWcsVGc9TWcucmFuZ2U7Y29uc3QgU2c9MWUzLEVnPTZlNCxrZz0zNmU1LE5nPTg2NGU1LENnPTYwNDhlNSxQZz0yNTkyZTYsemc9MzE1MzZlNjt2YXIgRGc9d2coKGZ1bmN0aW9uKHQpe3Quc2V0VGltZSh0LXQuZ2V0TWlsbGlzZWNvbmRzKCkpfSksKGZ1bmN0aW9uKHQsbil7dC5zZXRUaW1lKCt0K24qU2cpfSksKGZ1bmN0aW9uKHQsbil7cmV0dXJuKG4tdCkvU2d9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDU2Vjb25kcygpfSkpLFJnPURnLEZnPURnLnJhbmdlLHFnPXdnKChmdW5jdGlvbih0KXt0LnNldFRpbWUodC10LmdldE1pbGxpc2Vjb25kcygpLXQuZ2V0U2Vjb25kcygpKlNnKX0pLChmdW5jdGlvbih0LG4pe3Quc2V0VGltZSgrdCtuKkVnKX0pLChmdW5jdGlvbih0LG4pe3JldHVybihuLXQpL0VnfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldE1pbnV0ZXMoKX0pKSxJZz1xZyxPZz1xZy5yYW5nZSxVZz13ZygoZnVuY3Rpb24odCl7dC5zZXRUaW1lKHQtdC5nZXRNaWxsaXNlY29uZHMoKS10LmdldFNlY29uZHMoKSpTZy10LmdldE1pbnV0ZXMoKSpFZyl9KSwoZnVuY3Rpb24odCxuKXt0LnNldFRpbWUoK3QrbiprZyl9KSwoZnVuY3Rpb24odCxuKXtyZXR1cm4obi10KS9rZ30pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRIb3VycygpfSkpLEJnPVVnLFlnPVVnLnJhbmdlLExnPXdnKCh0PT50LnNldEhvdXJzKDAsMCwwLDApKSwoKHQsbik9PnQuc2V0RGF0ZSh0LmdldERhdGUoKStuKSksKCh0LG4pPT4obi10LShuLmdldFRpbWV6b25lT2Zmc2V0KCktdC5nZXRUaW1lem9uZU9mZnNldCgpKSpFZykvTmcpLCh0PT50LmdldERhdGUoKS0xKSksamc9TGcsJGc9TGcucmFuZ2U7ZnVuY3Rpb24gSGcodCl7cmV0dXJuIHdnKChmdW5jdGlvbihuKXtuLnNldERhdGUobi5nZXREYXRlKCktKG4uZ2V0RGF5KCkrNy10KSU3KSxuLnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsbil7dC5zZXREYXRlKHQuZ2V0RGF0ZSgpKzcqbil9KSwoZnVuY3Rpb24odCxuKXtyZXR1cm4obi10LShuLmdldFRpbWV6b25lT2Zmc2V0KCktdC5nZXRUaW1lem9uZU9mZnNldCgpKSpFZykvQ2d9KSl9dmFyIFhnPUhnKDApLEdnPUhnKDEpLFZnPUhnKDIpLFdnPUhnKDMpLFpnPUhnKDQpLEtnPUhnKDUpLFFnPUhnKDYpLEpnPVhnLnJhbmdlLHR5PUdnLnJhbmdlLG55PVZnLnJhbmdlLGV5PVdnLnJhbmdlLHJ5PVpnLnJhbmdlLGl5PUtnLnJhbmdlLG95PVFnLnJhbmdlLGF5PXdnKChmdW5jdGlvbih0KXt0LnNldERhdGUoMSksdC5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LG4pe3Quc2V0TW9udGgodC5nZXRNb250aCgpK24pfSksKGZ1bmN0aW9uKHQsbil7cmV0dXJuIG4uZ2V0TW9udGgoKS10LmdldE1vbnRoKCkrMTIqKG4uZ2V0RnVsbFllYXIoKS10LmdldEZ1bGxZZWFyKCkpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldE1vbnRoKCl9KSksdXk9YXksY3k9YXkucmFuZ2UsZnk9d2coKGZ1bmN0aW9uKHQpe3Quc2V0TW9udGgoMCwxKSx0LnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsbil7dC5zZXRGdWxsWWVhcih0LmdldEZ1bGxZZWFyKCkrbil9KSwoZnVuY3Rpb24odCxuKXtyZXR1cm4gbi5nZXRGdWxsWWVhcigpLXQuZ2V0RnVsbFllYXIoKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRGdWxsWWVhcigpfSkpO2Z5LmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiBpc0Zpbml0ZSh0PU1hdGguZmxvb3IodCkpJiZ0PjA/d2coKGZ1bmN0aW9uKG4pe24uc2V0RnVsbFllYXIoTWF0aC5mbG9vcihuLmdldEZ1bGxZZWFyKCkvdCkqdCksbi5zZXRNb250aCgwLDEpLG4uc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24obixlKXtuLnNldEZ1bGxZZWFyKG4uZ2V0RnVsbFllYXIoKStlKnQpfSkpOm51bGx9O3ZhciBzeT1meSxseT1meS5yYW5nZSxoeT13ZygoZnVuY3Rpb24odCl7dC5zZXRVVENTZWNvbmRzKDAsMCl9KSwoZnVuY3Rpb24odCxuKXt0LnNldFRpbWUoK3QrbipFZyl9KSwoZnVuY3Rpb24odCxuKXtyZXR1cm4obi10KS9FZ30pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENNaW51dGVzKCl9KSksZHk9aHkscHk9aHkucmFuZ2UsZ3k9d2coKGZ1bmN0aW9uKHQpe3Quc2V0VVRDTWludXRlcygwLDAsMCl9KSwoZnVuY3Rpb24odCxuKXt0LnNldFRpbWUoK3QrbiprZyl9KSwoZnVuY3Rpb24odCxuKXtyZXR1cm4obi10KS9rZ30pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENIb3VycygpfSkpLHl5PWd5LHZ5PWd5LnJhbmdlLF95PXdnKChmdW5jdGlvbih0KXt0LnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsbil7dC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpK24pfSksKGZ1bmN0aW9uKHQsbil7cmV0dXJuKG4tdCkvTmd9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDRGF0ZSgpLTF9KSksYnk9X3ksbXk9X3kucmFuZ2U7ZnVuY3Rpb24geHkodCl7cmV0dXJuIHdnKChmdW5jdGlvbihuKXtuLnNldFVUQ0RhdGUobi5nZXRVVENEYXRlKCktKG4uZ2V0VVRDRGF5KCkrNy10KSU3KSxuLnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsbil7dC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpKzcqbil9KSwoZnVuY3Rpb24odCxuKXtyZXR1cm4obi10KS9DZ30pKX12YXIgd3k9eHkoMCksTXk9eHkoMSksQXk9eHkoMiksVHk9eHkoMyksU3k9eHkoNCksRXk9eHkoNSksa3k9eHkoNiksTnk9d3kucmFuZ2UsQ3k9TXkucmFuZ2UsUHk9QXkucmFuZ2Usenk9VHkucmFuZ2UsRHk9U3kucmFuZ2UsUnk9RXkucmFuZ2UsRnk9a3kucmFuZ2UscXk9d2coKGZ1bmN0aW9uKHQpe3Quc2V0VVRDRGF0ZSgxKSx0LnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsbil7dC5zZXRVVENNb250aCh0LmdldFVUQ01vbnRoKCkrbil9KSwoZnVuY3Rpb24odCxuKXtyZXR1cm4gbi5nZXRVVENNb250aCgpLXQuZ2V0VVRDTW9udGgoKSsxMioobi5nZXRVVENGdWxsWWVhcigpLXQuZ2V0VVRDRnVsbFllYXIoKSl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDTW9udGgoKX0pKSxJeT1xeSxPeT1xeS5yYW5nZSxVeT13ZygoZnVuY3Rpb24odCl7dC5zZXRVVENNb250aCgwLDEpLHQuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxuKXt0LnNldFVUQ0Z1bGxZZWFyKHQuZ2V0VVRDRnVsbFllYXIoKStuKX0pLChmdW5jdGlvbih0LG4pe3JldHVybiBuLmdldFVUQ0Z1bGxZZWFyKCktdC5nZXRVVENGdWxsWWVhcigpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0Z1bGxZZWFyKCl9KSk7VXkuZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIGlzRmluaXRlKHQ9TWF0aC5mbG9vcih0KSkmJnQ+MD93ZygoZnVuY3Rpb24obil7bi5zZXRVVENGdWxsWWVhcihNYXRoLmZsb29yKG4uZ2V0VVRDRnVsbFllYXIoKS90KSp0KSxuLnNldFVUQ01vbnRoKDAsMSksbi5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbihuLGUpe24uc2V0VVRDRnVsbFllYXIobi5nZXRVVENGdWxsWWVhcigpK2UqdCl9KSk6bnVsbH07dmFyIEJ5PVV5LFl5PVV5LnJhbmdlO2Z1bmN0aW9uIEx5KHQsbixlLGksbyxhKXtjb25zdCB1PVtbUmcsMSxTZ10sW1JnLDUsNWUzXSxbUmcsMTUsMTVlM10sW1JnLDMwLDNlNF0sW2EsMSxFZ10sW2EsNSwzZTVdLFthLDE1LDllNV0sW2EsMzAsMThlNV0sW28sMSxrZ10sW28sMywxMDhlNV0sW28sNiwyMTZlNV0sW28sMTIsNDMyZTVdLFtpLDEsTmddLFtpLDIsMTcyOGU1XSxbZSwxLENnXSxbbiwxLFBnXSxbbiwzLDc3NzZlNl0sW3QsMSx6Z11dO2Z1bmN0aW9uIGMobixlLGkpe2NvbnN0IG89TWF0aC5hYnMoZS1uKS9pLGE9cigoKFssLHRdKT0+dCkpLnJpZ2h0KHUsbyk7aWYoYT09PXUubGVuZ3RoKXJldHVybiB0LmV2ZXJ5KFcobi96ZyxlL3pnLGkpKTtpZigwPT09YSlyZXR1cm4gQWcuZXZlcnkoTWF0aC5tYXgoVyhuLGUsaSksMSkpO2NvbnN0W2MsZl09dVtvL3VbYS0xXVsyXTx1W2FdWzJdL28/YS0xOmFdO3JldHVybiBjLmV2ZXJ5KGYpfXJldHVybltmdW5jdGlvbih0LG4sZSl7Y29uc3Qgcj1uPHQ7ciYmKFt0LG5dPVtuLHRdKTtjb25zdCBpPWUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnJhbmdlP2U6Yyh0LG4sZSksbz1pP2kucmFuZ2UodCwrbisxKTpbXTtyZXR1cm4gcj9vLnJldmVyc2UoKTpvfSxjXX1jb25zdFtqeSwkeV09THkoQnksSXksd3ksYnkseXksZHkpLFtIeSxYeV09THkoc3ksdXksWGcsamcsQmcsSWcpO2Z1bmN0aW9uIEd5KHQpe2lmKDA8PXQueSYmdC55PDEwMCl7dmFyIG49bmV3IERhdGUoLTEsdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpO3JldHVybiBuLnNldEZ1bGxZZWFyKHQueSksbn1yZXR1cm4gbmV3IERhdGUodC55LHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKX1mdW5jdGlvbiBWeSh0KXtpZigwPD10LnkmJnQueTwxMDApe3ZhciBuPW5ldyBEYXRlKERhdGUuVVRDKC0xLHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKSk7cmV0dXJuIG4uc2V0VVRDRnVsbFllYXIodC55KSxufXJldHVybiBuZXcgRGF0ZShEYXRlLlVUQyh0LnksdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpKX1mdW5jdGlvbiBXeSh0LG4sZSl7cmV0dXJue3k6dCxtOm4sZDplLEg6MCxNOjAsUzowLEw6MH19ZnVuY3Rpb24gWnkodCl7dmFyIG49dC5kYXRlVGltZSxlPXQuZGF0ZSxyPXQudGltZSxpPXQucGVyaW9kcyxvPXQuZGF5cyxhPXQuc2hvcnREYXlzLHU9dC5tb250aHMsYz10LnNob3J0TW9udGhzLGY9aXYoaSkscz1vdihpKSxsPWl2KG8pLGg9b3YobyksZD1pdihhKSxwPW92KGEpLGc9aXYodSkseT1vdih1KSx2PWl2KGMpLF89b3YoYyksYj17YTpmdW5jdGlvbih0KXtyZXR1cm4gYVt0LmdldERheSgpXX0sQTpmdW5jdGlvbih0KXtyZXR1cm4gb1t0LmdldERheSgpXX0sYjpmdW5jdGlvbih0KXtyZXR1cm4gY1t0LmdldE1vbnRoKCldfSxCOmZ1bmN0aW9uKHQpe3JldHVybiB1W3QuZ2V0TW9udGgoKV19LGM6bnVsbCxkOlN2LGU6U3YsZjpQdixnOkx2LEc6JHYsSDpFdixJOmt2LGo6TnYsTDpDdixtOnp2LE06RHYscDpmdW5jdGlvbih0KXtyZXR1cm4gaVsrKHQuZ2V0SG91cnMoKT49MTIpXX0scTpmdW5jdGlvbih0KXtyZXR1cm4gMSt+fih0LmdldE1vbnRoKCkvMyl9LFE6ZF8sczpwXyxTOlJ2LHU6RnYsVTpxdixWOk92LHc6VXYsVzpCdix4Om51bGwsWDpudWxsLHk6WXYsWTpqdixaOkh2LCIlIjpoX30sbT17YTpmdW5jdGlvbih0KXtyZXR1cm4gYVt0LmdldFVUQ0RheSgpXX0sQTpmdW5jdGlvbih0KXtyZXR1cm4gb1t0LmdldFVUQ0RheSgpXX0sYjpmdW5jdGlvbih0KXtyZXR1cm4gY1t0LmdldFVUQ01vbnRoKCldfSxCOmZ1bmN0aW9uKHQpe3JldHVybiB1W3QuZ2V0VVRDTW9udGgoKV19LGM6bnVsbCxkOlh2LGU6WHYsZjpLdixnOmNfLEc6c18sSDpHdixJOlZ2LGo6V3YsTDpadixtOlF2LE06SnYscDpmdW5jdGlvbih0KXtyZXR1cm4gaVsrKHQuZ2V0VVRDSG91cnMoKT49MTIpXX0scTpmdW5jdGlvbih0KXtyZXR1cm4gMSt+fih0LmdldFVUQ01vbnRoKCkvMyl9LFE6ZF8sczpwXyxTOnRfLHU6bl8sVTplXyxWOmlfLHc6b18sVzphXyx4Om51bGwsWDpudWxsLHk6dV8sWTpmXyxaOmxfLCIlIjpoX30seD17YTpmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZC5leGVjKG4uc2xpY2UoZSkpO3JldHVybiByPyh0Lnc9cC5nZXQoclswXS50b0xvd2VyQ2FzZSgpKSxlK3JbMF0ubGVuZ3RoKTotMX0sQTpmdW5jdGlvbih0LG4sZSl7dmFyIHI9bC5leGVjKG4uc2xpY2UoZSkpO3JldHVybiByPyh0Lnc9aC5nZXQoclswXS50b0xvd2VyQ2FzZSgpKSxlK3JbMF0ubGVuZ3RoKTotMX0sYjpmdW5jdGlvbih0LG4sZSl7dmFyIHI9di5leGVjKG4uc2xpY2UoZSkpO3JldHVybiByPyh0Lm09Xy5nZXQoclswXS50b0xvd2VyQ2FzZSgpKSxlK3JbMF0ubGVuZ3RoKTotMX0sQjpmdW5jdGlvbih0LG4sZSl7dmFyIHI9Zy5leGVjKG4uc2xpY2UoZSkpO3JldHVybiByPyh0Lm09eS5nZXQoclswXS50b0xvd2VyQ2FzZSgpKSxlK3JbMF0ubGVuZ3RoKTotMX0sYzpmdW5jdGlvbih0LGUscil7cmV0dXJuIEEodCxuLGUscil9LGQ6eXYsZTp5dixmOnd2LGc6aHYsRzpsdixIOl92LEk6X3Ysajp2dixMOnh2LG06Z3YsTTpidixwOmZ1bmN0aW9uKHQsbixlKXt2YXIgcj1mLmV4ZWMobi5zbGljZShlKSk7cmV0dXJuIHI/KHQucD1zLmdldChyWzBdLnRvTG93ZXJDYXNlKCkpLGUrclswXS5sZW5ndGgpOi0xfSxxOnB2LFE6QXYsczpUdixTOm12LHU6dXYsVTpjdixWOmZ2LHc6YXYsVzpzdix4OmZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gQSh0LGUsbixyKX0sWDpmdW5jdGlvbih0LG4sZSl7cmV0dXJuIEEodCxyLG4sZSl9LHk6aHYsWTpsdixaOmR2LCIlIjpNdn07ZnVuY3Rpb24gdyh0LG4pe3JldHVybiBmdW5jdGlvbihlKXt2YXIgcixpLG8sYT1bXSx1PS0xLGM9MCxmPXQubGVuZ3RoO2ZvcihlIGluc3RhbmNlb2YgRGF0ZXx8KGU9bmV3IERhdGUoK2UpKTsrK3U8ZjspMzc9PT10LmNoYXJDb2RlQXQodSkmJihhLnB1c2godC5zbGljZShjLHUpKSxudWxsIT0oaT1ReVtyPXQuY2hhckF0KCsrdSldKT9yPXQuY2hhckF0KCsrdSk6aT0iZSI9PT1yPyIgIjoiMCIsKG89bltyXSkmJihyPW8oZSxpKSksYS5wdXNoKHIpLGM9dSsxKTtyZXR1cm4gYS5wdXNoKHQuc2xpY2UoYyx1KSksYS5qb2luKCIiKX19ZnVuY3Rpb24gTSh0LG4pe3JldHVybiBmdW5jdGlvbihlKXt2YXIgcixpLG89V3koMTkwMCx2b2lkIDAsMSk7aWYoQShvLHQsZSs9IiIsMCkhPWUubGVuZ3RoKXJldHVybiBudWxsO2lmKCJRImluIG8pcmV0dXJuIG5ldyBEYXRlKG8uUSk7aWYoInMiaW4gbylyZXR1cm4gbmV3IERhdGUoMWUzKm8ucysoIkwiaW4gbz9vLkw6MCkpO2lmKG4mJiEoIloiaW4gbykmJihvLlo9MCksInAiaW4gbyYmKG8uSD1vLkglMTIrMTIqby5wKSx2b2lkIDA9PT1vLm0mJihvLm09InEiaW4gbz9vLnE6MCksIlYiaW4gbyl7aWYoby5WPDF8fG8uVj41MylyZXR1cm4gbnVsbDsidyJpbiBvfHwoby53PTEpLCJaImluIG8/KGk9KHI9VnkoV3koby55LDAsMSkpKS5nZXRVVENEYXkoKSxyPWk+NHx8MD09PWk/TXkuY2VpbChyKTpNeShyKSxyPWJ5Lm9mZnNldChyLDcqKG8uVi0xKSksby55PXIuZ2V0VVRDRnVsbFllYXIoKSxvLm09ci5nZXRVVENNb250aCgpLG8uZD1yLmdldFVUQ0RhdGUoKSsoby53KzYpJTcpOihpPShyPUd5KFd5KG8ueSwwLDEpKSkuZ2V0RGF5KCkscj1pPjR8fDA9PT1pP0dnLmNlaWwocik6R2cocikscj1qZy5vZmZzZXQociw3KihvLlYtMSkpLG8ueT1yLmdldEZ1bGxZZWFyKCksby5tPXIuZ2V0TW9udGgoKSxvLmQ9ci5nZXREYXRlKCkrKG8udys2KSU3KX1lbHNlKCJXImluIG98fCJVImluIG8pJiYoInciaW4gb3x8KG8udz0idSJpbiBvP28udSU3OiJXImluIG8/MTowKSxpPSJaImluIG8/VnkoV3koby55LDAsMSkpLmdldFVUQ0RheSgpOkd5KFd5KG8ueSwwLDEpKS5nZXREYXkoKSxvLm09MCxvLmQ9IlciaW4gbz8oby53KzYpJTcrNypvLlctKGkrNSklNzpvLncrNypvLlUtKGkrNiklNyk7cmV0dXJuIloiaW4gbz8oby5IKz1vLlovMTAwfDAsby5NKz1vLlolMTAwLFZ5KG8pKTpHeShvKX19ZnVuY3Rpb24gQSh0LG4sZSxyKXtmb3IodmFyIGksbyxhPTAsdT1uLmxlbmd0aCxjPWUubGVuZ3RoO2E8dTspe2lmKHI+PWMpcmV0dXJuLTE7aWYoMzc9PT0oaT1uLmNoYXJDb2RlQXQoYSsrKSkpe2lmKGk9bi5jaGFyQXQoYSsrKSwhKG89eFtpIGluIFF5P24uY2hhckF0KGErKyk6aV0pfHwocj1vKHQsZSxyKSk8MClyZXR1cm4tMX1lbHNlIGlmKGkhPWUuY2hhckNvZGVBdChyKyspKXJldHVybi0xfXJldHVybiByfXJldHVybiBiLng9dyhlLGIpLGIuWD13KHIsYiksYi5jPXcobixiKSxtLng9dyhlLG0pLG0uWD13KHIsbSksbS5jPXcobixtKSx7Zm9ybWF0OmZ1bmN0aW9uKHQpe3ZhciBuPXcodCs9IiIsYik7cmV0dXJuIG4udG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sbn0scGFyc2U6ZnVuY3Rpb24odCl7dmFyIG49TSh0Kz0iIiwhMSk7cmV0dXJuIG4udG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sbn0sdXRjRm9ybWF0OmZ1bmN0aW9uKHQpe3ZhciBuPXcodCs9IiIsbSk7cmV0dXJuIG4udG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sbn0sdXRjUGFyc2U6ZnVuY3Rpb24odCl7dmFyIG49TSh0Kz0iIiwhMCk7cmV0dXJuIG4udG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sbn19fXZhciBLeSxReT17Ii0iOiIiLF86IiAiLDA6IjAifSxKeT0vXlxzKlxkKy8sdHY9L14lLyxudj0vW1xcXiQqKz98W1xdKCkue31dL2c7ZnVuY3Rpb24gZXYodCxuLGUpe3ZhciByPXQ8MD8iLSI6IiIsaT0ocj8tdDp0KSsiIixvPWkubGVuZ3RoO3JldHVybiByKyhvPGU/bmV3IEFycmF5KGUtbysxKS5qb2luKG4pK2k6aSl9ZnVuY3Rpb24gcnYodCl7cmV0dXJuIHQucmVwbGFjZShudiwiXFwkJiIpfWZ1bmN0aW9uIGl2KHQpe3JldHVybiBuZXcgUmVnRXhwKCJeKD86Iit0Lm1hcChydikuam9pbigifCIpKyIpIiwiaSIpfWZ1bmN0aW9uIG92KHQpe3JldHVybiBuZXcgTWFwKHQubWFwKCgodCxuKT0+W3QudG9Mb3dlckNhc2UoKSxuXSkpKX1mdW5jdGlvbiBhdih0LG4sZSl7dmFyIHI9SnkuZXhlYyhuLnNsaWNlKGUsZSsxKSk7cmV0dXJuIHI/KHQudz0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB1dih0LG4sZSl7dmFyIHI9SnkuZXhlYyhuLnNsaWNlKGUsZSsxKSk7cmV0dXJuIHI/KHQudT0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBjdih0LG4sZSl7dmFyIHI9SnkuZXhlYyhuLnNsaWNlKGUsZSsyKSk7cmV0dXJuIHI/KHQuVT0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBmdih0LG4sZSl7dmFyIHI9SnkuZXhlYyhuLnNsaWNlKGUsZSsyKSk7cmV0dXJuIHI/KHQuVj0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBzdih0LG4sZSl7dmFyIHI9SnkuZXhlYyhuLnNsaWNlKGUsZSsyKSk7cmV0dXJuIHI/KHQuVz0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBsdih0LG4sZSl7dmFyIHI9SnkuZXhlYyhuLnNsaWNlKGUsZSs0KSk7cmV0dXJuIHI/KHQueT0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBodih0LG4sZSl7dmFyIHI9SnkuZXhlYyhuLnNsaWNlKGUsZSsyKSk7cmV0dXJuIHI/KHQueT0rclswXSsoK3JbMF0+Njg/MTkwMDoyZTMpLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGR2KHQsbixlKXt2YXIgcj0vXihaKXwoWystXVxkXGQpKD86Oj8oXGRcZCkpPy8uZXhlYyhuLnNsaWNlKGUsZSs2KSk7cmV0dXJuIHI/KHQuWj1yWzFdPzA6LShyWzJdKyhyWzNdfHwiMDAiKSksZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gcHYodCxuLGUpe3ZhciByPUp5LmV4ZWMobi5zbGljZShlLGUrMSkpO3JldHVybiByPyh0LnE9MypyWzBdLTMsZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gZ3YodCxuLGUpe3ZhciByPUp5LmV4ZWMobi5zbGljZShlLGUrMikpO3JldHVybiByPyh0Lm09clswXS0xLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHl2KHQsbixlKXt2YXIgcj1KeS5leGVjKG4uc2xpY2UoZSxlKzIpKTtyZXR1cm4gcj8odC5kPStyWzBdLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHZ2KHQsbixlKXt2YXIgcj1KeS5leGVjKG4uc2xpY2UoZSxlKzMpKTtyZXR1cm4gcj8odC5tPTAsdC5kPStyWzBdLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIF92KHQsbixlKXt2YXIgcj1KeS5leGVjKG4uc2xpY2UoZSxlKzIpKTtyZXR1cm4gcj8odC5IPStyWzBdLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGJ2KHQsbixlKXt2YXIgcj1KeS5leGVjKG4uc2xpY2UoZSxlKzIpKTtyZXR1cm4gcj8odC5NPStyWzBdLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIG12KHQsbixlKXt2YXIgcj1KeS5leGVjKG4uc2xpY2UoZSxlKzIpKTtyZXR1cm4gcj8odC5TPStyWzBdLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHh2KHQsbixlKXt2YXIgcj1KeS5leGVjKG4uc2xpY2UoZSxlKzMpKTtyZXR1cm4gcj8odC5MPStyWzBdLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHd2KHQsbixlKXt2YXIgcj1KeS5leGVjKG4uc2xpY2UoZSxlKzYpKTtyZXR1cm4gcj8odC5MPU1hdGguZmxvb3IoclswXS8xZTMpLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIE12KHQsbixlKXt2YXIgcj10di5leGVjKG4uc2xpY2UoZSxlKzEpKTtyZXR1cm4gcj9lK3JbMF0ubGVuZ3RoOi0xfWZ1bmN0aW9uIEF2KHQsbixlKXt2YXIgcj1KeS5leGVjKG4uc2xpY2UoZSkpO3JldHVybiByPyh0LlE9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gVHYodCxuLGUpe3ZhciByPUp5LmV4ZWMobi5zbGljZShlKSk7cmV0dXJuIHI/KHQucz0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBTdih0LG4pe3JldHVybiBldih0LmdldERhdGUoKSxuLDIpfWZ1bmN0aW9uIEV2KHQsbil7cmV0dXJuIGV2KHQuZ2V0SG91cnMoKSxuLDIpfWZ1bmN0aW9uIGt2KHQsbil7cmV0dXJuIGV2KHQuZ2V0SG91cnMoKSUxMnx8MTIsbiwyKX1mdW5jdGlvbiBOdih0LG4pe3JldHVybiBldigxK2pnLmNvdW50KHN5KHQpLHQpLG4sMyl9ZnVuY3Rpb24gQ3YodCxuKXtyZXR1cm4gZXYodC5nZXRNaWxsaXNlY29uZHMoKSxuLDMpfWZ1bmN0aW9uIFB2KHQsbil7cmV0dXJuIEN2KHQsbikrIjAwMCJ9ZnVuY3Rpb24genYodCxuKXtyZXR1cm4gZXYodC5nZXRNb250aCgpKzEsbiwyKX1mdW5jdGlvbiBEdih0LG4pe3JldHVybiBldih0LmdldE1pbnV0ZXMoKSxuLDIpfWZ1bmN0aW9uIFJ2KHQsbil7cmV0dXJuIGV2KHQuZ2V0U2Vjb25kcygpLG4sMil9ZnVuY3Rpb24gRnYodCl7dmFyIG49dC5nZXREYXkoKTtyZXR1cm4gMD09PW4/NzpufWZ1bmN0aW9uIHF2KHQsbil7cmV0dXJuIGV2KFhnLmNvdW50KHN5KHQpLTEsdCksbiwyKX1mdW5jdGlvbiBJdih0KXt2YXIgbj10LmdldERheSgpO3JldHVybiBuPj00fHwwPT09bj9aZyh0KTpaZy5jZWlsKHQpfWZ1bmN0aW9uIE92KHQsbil7cmV0dXJuIHQ9SXYodCksZXYoWmcuY291bnQoc3kodCksdCkrKDQ9PT1zeSh0KS5nZXREYXkoKSksbiwyKX1mdW5jdGlvbiBVdih0KXtyZXR1cm4gdC5nZXREYXkoKX1mdW5jdGlvbiBCdih0LG4pe3JldHVybiBldihHZy5jb3VudChzeSh0KS0xLHQpLG4sMil9ZnVuY3Rpb24gWXYodCxuKXtyZXR1cm4gZXYodC5nZXRGdWxsWWVhcigpJTEwMCxuLDIpfWZ1bmN0aW9uIEx2KHQsbil7cmV0dXJuIGV2KCh0PUl2KHQpKS5nZXRGdWxsWWVhcigpJTEwMCxuLDIpfWZ1bmN0aW9uIGp2KHQsbil7cmV0dXJuIGV2KHQuZ2V0RnVsbFllYXIoKSUxZTQsbiw0KX1mdW5jdGlvbiAkdih0LG4pe3ZhciBlPXQuZ2V0RGF5KCk7cmV0dXJuIGV2KCh0PWU+PTR8fDA9PT1lP1pnKHQpOlpnLmNlaWwodCkpLmdldEZ1bGxZZWFyKCklMWU0LG4sNCl9ZnVuY3Rpb24gSHYodCl7dmFyIG49dC5nZXRUaW1lem9uZU9mZnNldCgpO3JldHVybihuPjA/Ii0iOihuKj0tMSwiKyIpKStldihuLzYwfDAsIjAiLDIpK2V2KG4lNjAsIjAiLDIpfWZ1bmN0aW9uIFh2KHQsbil7cmV0dXJuIGV2KHQuZ2V0VVRDRGF0ZSgpLG4sMil9ZnVuY3Rpb24gR3YodCxuKXtyZXR1cm4gZXYodC5nZXRVVENIb3VycygpLG4sMil9ZnVuY3Rpb24gVnYodCxuKXtyZXR1cm4gZXYodC5nZXRVVENIb3VycygpJTEyfHwxMixuLDIpfWZ1bmN0aW9uIFd2KHQsbil7cmV0dXJuIGV2KDErYnkuY291bnQoQnkodCksdCksbiwzKX1mdW5jdGlvbiBadih0LG4pe3JldHVybiBldih0LmdldFVUQ01pbGxpc2Vjb25kcygpLG4sMyl9ZnVuY3Rpb24gS3YodCxuKXtyZXR1cm4gWnYodCxuKSsiMDAwIn1mdW5jdGlvbiBRdih0LG4pe3JldHVybiBldih0LmdldFVUQ01vbnRoKCkrMSxuLDIpfWZ1bmN0aW9uIEp2KHQsbil7cmV0dXJuIGV2KHQuZ2V0VVRDTWludXRlcygpLG4sMil9ZnVuY3Rpb24gdF8odCxuKXtyZXR1cm4gZXYodC5nZXRVVENTZWNvbmRzKCksbiwyKX1mdW5jdGlvbiBuXyh0KXt2YXIgbj10LmdldFVUQ0RheSgpO3JldHVybiAwPT09bj83Om59ZnVuY3Rpb24gZV8odCxuKXtyZXR1cm4gZXYod3kuY291bnQoQnkodCktMSx0KSxuLDIpfWZ1bmN0aW9uIHJfKHQpe3ZhciBuPXQuZ2V0VVRDRGF5KCk7cmV0dXJuIG4+PTR8fDA9PT1uP1N5KHQpOlN5LmNlaWwodCl9ZnVuY3Rpb24gaV8odCxuKXtyZXR1cm4gdD1yXyh0KSxldihTeS5jb3VudChCeSh0KSx0KSsoND09PUJ5KHQpLmdldFVUQ0RheSgpKSxuLDIpfWZ1bmN0aW9uIG9fKHQpe3JldHVybiB0LmdldFVUQ0RheSgpfWZ1bmN0aW9uIGFfKHQsbil7cmV0dXJuIGV2KE15LmNvdW50KEJ5KHQpLTEsdCksbiwyKX1mdW5jdGlvbiB1Xyh0LG4pe3JldHVybiBldih0LmdldFVUQ0Z1bGxZZWFyKCklMTAwLG4sMil9ZnVuY3Rpb24gY18odCxuKXtyZXR1cm4gZXYoKHQ9cl8odCkpLmdldFVUQ0Z1bGxZZWFyKCklMTAwLG4sMil9ZnVuY3Rpb24gZl8odCxuKXtyZXR1cm4gZXYodC5nZXRVVENGdWxsWWVhcigpJTFlNCxuLDQpfWZ1bmN0aW9uIHNfKHQsbil7dmFyIGU9dC5nZXRVVENEYXkoKTtyZXR1cm4gZXYoKHQ9ZT49NHx8MD09PWU/U3kodCk6U3kuY2VpbCh0KSkuZ2V0VVRDRnVsbFllYXIoKSUxZTQsbiw0KX1mdW5jdGlvbiBsXygpe3JldHVybiIrMDAwMCJ9ZnVuY3Rpb24gaF8oKXtyZXR1cm4iJSJ9ZnVuY3Rpb24gZF8odCl7cmV0dXJuK3R9ZnVuY3Rpb24gcF8odCl7cmV0dXJuIE1hdGguZmxvb3IoK3QvMWUzKX1mdW5jdGlvbiBnXyhuKXtyZXR1cm4gS3k9WnkobiksdC50aW1lRm9ybWF0PUt5LmZvcm1hdCx0LnRpbWVQYXJzZT1LeS5wYXJzZSx0LnV0Y0Zvcm1hdD1LeS51dGNGb3JtYXQsdC51dGNQYXJzZT1LeS51dGNQYXJzZSxLeX10LnRpbWVGb3JtYXQ9dm9pZCAwLHQudGltZVBhcnNlPXZvaWQgMCx0LnV0Y0Zvcm1hdD12b2lkIDAsdC51dGNQYXJzZT12b2lkIDAsZ18oe2RhdGVUaW1lOiIleCwgJVgiLGRhdGU6IiUtbS8lLWQvJVkiLHRpbWU6IiUtSTolTTolUyAlcCIscGVyaW9kczpbIkFNIiwiUE0iXSxkYXlzOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxzaG9ydERheXM6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSxtb250aHM6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLHNob3J0TW9udGhzOlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl19KTt2YXIgeV89IiVZLSVtLSVkVCVIOiVNOiVTLiVMWiI7dmFyIHZfPURhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nP2Z1bmN0aW9uKHQpe3JldHVybiB0LnRvSVNPU3RyaW5nKCl9OnQudXRjRm9ybWF0KHlfKSxfXz12Xzt2YXIgYl89K25ldyBEYXRlKCIyMDAwLTAxLTAxVDAwOjAwOjAwLjAwMFoiKT9mdW5jdGlvbih0KXt2YXIgbj1uZXcgRGF0ZSh0KTtyZXR1cm4gaXNOYU4obik/bnVsbDpufTp0LnV0Y1BhcnNlKHlfKSxtXz1iXztmdW5jdGlvbiB4Xyh0KXtyZXR1cm4gbmV3IERhdGUodCl9ZnVuY3Rpb24gd18odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBEYXRlPyt0OituZXcgRGF0ZSgrdCl9ZnVuY3Rpb24gTV8odCxuLGUscixpLG8sYSx1LGMsZil7dmFyIHM9SnAoKSxsPXMuaW52ZXJ0LGg9cy5kb21haW4sZD1mKCIuJUwiKSxwPWYoIjolUyIpLGc9ZigiJUk6JU0iKSx5PWYoIiVJICVwIiksdj1mKCIlYSAlZCIpLF89ZigiJWIgJWQiKSxiPWYoIiVCIiksbT1mKCIlWSIpO2Z1bmN0aW9uIHgodCl7cmV0dXJuKGModCk8dD9kOnUodCk8dD9wOmEodCk8dD9nOm8odCk8dD95OnIodCk8dD9pKHQpPHQ/djpfOmUodCk8dD9iOm0pKHQpfXJldHVybiBzLmludmVydD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IERhdGUobCh0KSl9LHMuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP2goQXJyYXkuZnJvbSh0LHdfKSk6aCgpLm1hcCh4Xyl9LHMudGlja3M9ZnVuY3Rpb24obil7dmFyIGU9aCgpO3JldHVybiB0KGVbMF0sZVtlLmxlbmd0aC0xXSxudWxsPT1uPzEwOm4pfSxzLnRpY2tGb3JtYXQ9ZnVuY3Rpb24odCxuKXtyZXR1cm4gbnVsbD09bj94OmYobil9LHMubmljZT1mdW5jdGlvbih0KXt2YXIgZT1oKCk7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnJhbmdlfHwodD1uKGVbMF0sZVtlLmxlbmd0aC0xXSxudWxsPT10PzEwOnQpKSx0P2goZWcoZSx0KSk6c30scy5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIEtwKHMsTV8odCxuLGUscixpLG8sYSx1LGMsZikpfSxzfWZ1bmN0aW9uIEFfKCl7dmFyIHQsbixlLHIsaSxvPTAsYT0xLHU9R3AsYz0hMTtmdW5jdGlvbiBmKG4pe3JldHVybiBudWxsPT1ufHxpc05hTihuPStuKT9pOnUoMD09PWU/LjU6KG49KHIobiktdCkqZSxjP01hdGgubWF4KDAsTWF0aC5taW4oMSxuKSk6bikpfWZ1bmN0aW9uIHModCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBlLHI7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KFtlLHJdPW4sdT10KGUsciksZik6W3UoMCksdSgxKV19fXJldHVybiBmLmRvbWFpbj1mdW5jdGlvbihpKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oW28sYV09aSx0PXIobz0rbyksbj1yKGE9K2EpLGU9dD09PW4/MDoxLyhuLXQpLGYpOltvLGFdfSxmLmNsYW1wPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPSEhdCxmKTpjfSxmLmludGVycG9sYXRvcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT10LGYpOnV9LGYucmFuZ2U9cyhIciksZi5yYW5nZVJvdW5kPXMoWHIpLGYudW5rbm93bj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10LGYpOml9LGZ1bmN0aW9uKGkpe3JldHVybiByPWksdD1pKG8pLG49aShhKSxlPXQ9PT1uPzA6MS8obi10KSxmfX1mdW5jdGlvbiBUXyh0LG4pe3JldHVybiBuLmRvbWFpbih0LmRvbWFpbigpKS5pbnRlcnBvbGF0b3IodC5pbnRlcnBvbGF0b3IoKSkuY2xhbXAodC5jbGFtcCgpKS51bmtub3duKHQudW5rbm93bigpKX1mdW5jdGlvbiBTXygpe3ZhciB0PXlnKEFfKCkpO3JldHVybiB0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gVF8odCxTXygpKS5leHBvbmVudCh0LmV4cG9uZW50KCkpfSxCcC5hcHBseSh0LGFyZ3VtZW50cyl9ZnVuY3Rpb24gRV8oKXt2YXIgdCxuLGUscixpLG8sYSx1PTAsYz0uNSxmPTEscz0xLGw9R3AsaD0hMTtmdW5jdGlvbiBkKHQpe3JldHVybiBpc05hTih0PSt0KT9hOih0PS41KygodD0rbyh0KSktbikqKHMqdDxzKm4/cjppKSxsKGg/TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKTp0KSl9ZnVuY3Rpb24gcCh0KXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGUscixpO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhbZSxyLGldPW4sbD1saSh0LFtlLHIsaV0pLGQpOltsKDApLGwoLjUpLGwoMSldfX1yZXR1cm4gZC5kb21haW49ZnVuY3Rpb24oYSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KFt1LGMsZl09YSx0PW8odT0rdSksbj1vKGM9K2MpLGU9byhmPStmKSxyPXQ9PT1uPzA6LjUvKG4tdCksaT1uPT09ZT8wOi41LyhlLW4pLHM9bjx0Py0xOjEsZCk6W3UsYyxmXX0sZC5jbGFtcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0hIXQsZCk6aH0sZC5pbnRlcnBvbGF0b3I9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9dCxkKTpsfSxkLnJhbmdlPXAoSHIpLGQucmFuZ2VSb3VuZD1wKFhyKSxkLnVua25vd249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9dCxkKTphfSxmdW5jdGlvbihhKXtyZXR1cm4gbz1hLHQ9YSh1KSxuPWEoYyksZT1hKGYpLHI9dD09PW4/MDouNS8obi10KSxpPW49PT1lPzA6LjUvKGUtbikscz1uPHQ/LTE6MSxkfX1mdW5jdGlvbiBrXygpe3ZhciB0PXlnKEVfKCkpO3JldHVybiB0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gVF8odCxrXygpKS5leHBvbmVudCh0LmV4cG9uZW50KCkpfSxCcC5hcHBseSh0LGFyZ3VtZW50cyl9ZnVuY3Rpb24gTl8odCl7Zm9yKHZhciBuPXQubGVuZ3RoLzZ8MCxlPW5ldyBBcnJheShuKSxyPTA7cjxuOyllW3JdPSIjIit0LnNsaWNlKDYqciw2Kisrcik7cmV0dXJuIGV9dmFyIENfPU5fKCIxZjc3YjRmZjdmMGUyY2EwMmNkNjI3Mjg5NDY3YmQ4YzU2NGJlMzc3YzI3ZjdmN2ZiY2JkMjIxN2JlY2YiKSxQXz1OXygiN2ZjOTdmYmVhZWQ0ZmRjMDg2ZmZmZjk5Mzg2Y2IwZjAwMjdmYmY1YjE3NjY2NjY2Iiksel89Tl8oIjFiOWU3N2Q5NWYwMjc1NzBiM2U3Mjk4YTY2YTYxZWU2YWIwMmE2NzYxZDY2NjY2NiIpLERfPU5fKCJhNmNlZTMxZjc4YjRiMmRmOGEzM2EwMmNmYjlhOTllMzFhMWNmZGJmNmZmZjdmMDBjYWIyZDY2YTNkOWFmZmZmOTliMTU5MjgiKSxSXz1OXygiZmJiNGFlYjNjZGUzY2NlYmM1ZGVjYmU0ZmVkOWE2ZmZmZmNjZTVkOGJkZmRkYWVjZjJmMmYyIiksRl89Tl8oImIzZTJjZGZkY2RhY2NiZDVlOGY0Y2FlNGU2ZjVjOWZmZjJhZWYxZTJjY2NjY2NjYyIpLHFfPU5fKCJlNDFhMWMzNzdlYjg0ZGFmNGE5ODRlYTNmZjdmMDBmZmZmMzNhNjU2MjhmNzgxYmY5OTk5OTkiKSxJXz1OXygiNjZjMmE1ZmM4ZDYyOGRhMGNiZTc4YWMzYTZkODU0ZmZkOTJmZTVjNDk0YjNiM2IzIiksT189Tl8oIjhkZDNjN2ZmZmZiM2JlYmFkYWZiODA3MjgwYjFkM2ZkYjQ2MmIzZGU2OWZjY2RlNWQ5ZDlkOWJjODBiZGNjZWJjNWZmZWQ2ZiIpLFVfPU5fKCI0ZTc5YTdmMjhlMmNlMTU3NTk3NmI3YjI1OWExNGZlZGM5NDlhZjdhYTFmZjlkYTc5Yzc1NWZiYWIwYWIiKSxCXz10PT5Scih0W3QubGVuZ3RoLTFdKSxZXz1uZXcgQXJyYXkoMykuY29uY2F0KCJkOGIzNjVmNWY1ZjU1YWI0YWMiLCJhNjYxMWFkZmMyN2Q4MGNkYzEwMTg1NzEiLCJhNjYxMWFkZmMyN2RmNWY1ZjU4MGNkYzEwMTg1NzEiLCI4YzUxMGFkOGIzNjVmNmU4YzNjN2VhZTU1YWI0YWMwMTY2NWUiLCI4YzUxMGFkOGIzNjVmNmU4YzNmNWY1ZjVjN2VhZTU1YWI0YWMwMTY2NWUiLCI4YzUxMGFiZjgxMmRkZmMyN2RmNmU4YzNjN2VhZTU4MGNkYzEzNTk3OGYwMTY2NWUiLCI4YzUxMGFiZjgxMmRkZmMyN2RmNmU4YzNmNWY1ZjVjN2VhZTU4MGNkYzEzNTk3OGYwMTY2NWUiLCI1NDMwMDU4YzUxMGFiZjgxMmRkZmMyN2RmNmU4YzNjN2VhZTU4MGNkYzEzNTk3OGYwMTY2NWUwMDNjMzAiLCI1NDMwMDU4YzUxMGFiZjgxMmRkZmMyN2RmNmU4YzNmNWY1ZjVjN2VhZTU4MGNkYzEzNTk3OGYwMTY2NWUwMDNjMzAiKS5tYXAoTl8pLExfPUJfKFlfKSxqXz1uZXcgQXJyYXkoMykuY29uY2F0KCJhZjhkYzNmN2Y3Zjc3ZmJmN2IiLCI3YjMyOTRjMmE1Y2ZhNmRiYTAwMDg4MzciLCI3YjMyOTRjMmE1Y2ZmN2Y3ZjdhNmRiYTAwMDg4MzciLCI3NjJhODNhZjhkYzNlN2Q0ZThkOWYwZDM3ZmJmN2IxYjc4MzciLCI3NjJhODNhZjhkYzNlN2Q0ZThmN2Y3ZjdkOWYwZDM3ZmJmN2IxYjc4MzciLCI3NjJhODM5OTcwYWJjMmE1Y2ZlN2Q0ZThkOWYwZDNhNmRiYTA1YWFlNjExYjc4MzciLCI3NjJhODM5OTcwYWJjMmE1Y2ZlN2Q0ZThmN2Y3ZjdkOWYwZDNhNmRiYTA1YWFlNjExYjc4MzciLCI0MDAwNGI3NjJhODM5OTcwYWJjMmE1Y2ZlN2Q0ZThkOWYwZDNhNmRiYTA1YWFlNjExYjc4MzcwMDQ0MWIiLCI0MDAwNGI3NjJhODM5OTcwYWJjMmE1Y2ZlN2Q0ZThmN2Y3ZjdkOWYwZDNhNmRiYTA1YWFlNjExYjc4MzcwMDQ0MWIiKS5tYXAoTl8pLCRfPUJfKGpfKSxIXz1uZXcgQXJyYXkoMykuY29uY2F0KCJlOWEzYzlmN2Y3ZjdhMWQ3NmEiLCJkMDFjOGJmMWI2ZGFiOGUxODY0ZGFjMjYiLCJkMDFjOGJmMWI2ZGFmN2Y3ZjdiOGUxODY0ZGFjMjYiLCJjNTFiN2RlOWEzYzlmZGUwZWZlNmY1ZDBhMWQ3NmE0ZDkyMjEiLCJjNTFiN2RlOWEzYzlmZGUwZWZmN2Y3ZjdlNmY1ZDBhMWQ3NmE0ZDkyMjEiLCJjNTFiN2RkZTc3YWVmMWI2ZGFmZGUwZWZlNmY1ZDBiOGUxODY3ZmJjNDE0ZDkyMjEiLCJjNTFiN2RkZTc3YWVmMWI2ZGFmZGUwZWZmN2Y3ZjdlNmY1ZDBiOGUxODY3ZmJjNDE0ZDkyMjEiLCI4ZTAxNTJjNTFiN2RkZTc3YWVmMWI2ZGFmZGUwZWZlNmY1ZDBiOGUxODY3ZmJjNDE0ZDkyMjEyNzY0MTkiLCI4ZTAxNTJjNTFiN2RkZTc3YWVmMWI2ZGFmZGUwZWZmN2Y3ZjdlNmY1ZDBiOGUxODY3ZmJjNDE0ZDkyMjEyNzY0MTkiKS5tYXAoTl8pLFhfPUJfKEhfKSxHXz1uZXcgQXJyYXkoMykuY29uY2F0KCI5OThlYzNmN2Y3ZjdmMWEzNDAiLCI1ZTNjOTliMmFiZDJmZGI4NjNlNjYxMDEiLCI1ZTNjOTliMmFiZDJmN2Y3ZjdmZGI4NjNlNjYxMDEiLCI1NDI3ODg5OThlYzNkOGRhZWJmZWUwYjZmMWEzNDBiMzU4MDYiLCI1NDI3ODg5OThlYzNkOGRhZWJmN2Y3ZjdmZWUwYjZmMWEzNDBiMzU4MDYiLCI1NDI3ODg4MDczYWNiMmFiZDJkOGRhZWJmZWUwYjZmZGI4NjNlMDgyMTRiMzU4MDYiLCI1NDI3ODg4MDczYWNiMmFiZDJkOGRhZWJmN2Y3ZjdmZWUwYjZmZGI4NjNlMDgyMTRiMzU4MDYiLCIyZDAwNGI1NDI3ODg4MDczYWNiMmFiZDJkOGRhZWJmZWUwYjZmZGI4NjNlMDgyMTRiMzU4MDY3ZjNiMDgiLCIyZDAwNGI1NDI3ODg4MDczYWNiMmFiZDJkOGRhZWJmN2Y3ZjdmZWUwYjZmZGI4NjNlMDgyMTRiMzU4MDY3ZjNiMDgiKS5tYXAoTl8pLFZfPUJfKEdfKSxXXz1uZXcgQXJyYXkoMykuY29uY2F0KCJlZjhhNjJmN2Y3Zjc2N2E5Y2YiLCJjYTAwMjBmNGE1ODI5MmM1ZGUwNTcxYjAiLCJjYTAwMjBmNGE1ODJmN2Y3Zjc5MmM1ZGUwNTcxYjAiLCJiMjE4MmJlZjhhNjJmZGRiYzdkMWU1ZjA2N2E5Y2YyMTY2YWMiLCJiMjE4MmJlZjhhNjJmZGRiYzdmN2Y3ZjdkMWU1ZjA2N2E5Y2YyMTY2YWMiLCJiMjE4MmJkNjYwNGRmNGE1ODJmZGRiYzdkMWU1ZjA5MmM1ZGU0MzkzYzMyMTY2YWMiLCJiMjE4MmJkNjYwNGRmNGE1ODJmZGRiYzdmN2Y3ZjdkMWU1ZjA5MmM1ZGU0MzkzYzMyMTY2YWMiLCI2NzAwMWZiMjE4MmJkNjYwNGRmNGE1ODJmZGRiYzdkMWU1ZjA5MmM1ZGU0MzkzYzMyMTY2YWMwNTMwNjEiLCI2NzAwMWZiMjE4MmJkNjYwNGRmNGE1ODJmZGRiYzdmN2Y3ZjdkMWU1ZjA5MmM1ZGU0MzkzYzMyMTY2YWMwNTMwNjEiKS5tYXAoTl8pLFpfPUJfKFdfKSxLXz1uZXcgQXJyYXkoMykuY29uY2F0KCJlZjhhNjJmZmZmZmY5OTk5OTkiLCJjYTAwMjBmNGE1ODJiYWJhYmE0MDQwNDAiLCJjYTAwMjBmNGE1ODJmZmZmZmZiYWJhYmE0MDQwNDAiLCJiMjE4MmJlZjhhNjJmZGRiYzdlMGUwZTA5OTk5OTk0ZDRkNGQiLCJiMjE4MmJlZjhhNjJmZGRiYzdmZmZmZmZlMGUwZTA5OTk5OTk0ZDRkNGQiLCJiMjE4MmJkNjYwNGRmNGE1ODJmZGRiYzdlMGUwZTBiYWJhYmE4Nzg3ODc0ZDRkNGQiLCJiMjE4MmJkNjYwNGRmNGE1ODJmZGRiYzdmZmZmZmZlMGUwZTBiYWJhYmE4Nzg3ODc0ZDRkNGQiLCI2NzAwMWZiMjE4MmJkNjYwNGRmNGE1ODJmZGRiYzdlMGUwZTBiYWJhYmE4Nzg3ODc0ZDRkNGQxYTFhMWEiLCI2NzAwMWZiMjE4MmJkNjYwNGRmNGE1ODJmZGRiYzdmZmZmZmZlMGUwZTBiYWJhYmE4Nzg3ODc0ZDRkNGQxYTFhMWEiKS5tYXAoTl8pLFFfPUJfKEtfKSxKXz1uZXcgQXJyYXkoMykuY29uY2F0KCJmYzhkNTlmZmZmYmY5MWJmZGIiLCJkNzE5MWNmZGFlNjFhYmQ5ZTkyYzdiYjYiLCJkNzE5MWNmZGFlNjFmZmZmYmZhYmQ5ZTkyYzdiYjYiLCJkNzMwMjdmYzhkNTlmZWUwOTBlMGYzZjg5MWJmZGI0NTc1YjQiLCJkNzMwMjdmYzhkNTlmZWUwOTBmZmZmYmZlMGYzZjg5MWJmZGI0NTc1YjQiLCJkNzMwMjdmNDZkNDNmZGFlNjFmZWUwOTBlMGYzZjhhYmQ5ZTk3NGFkZDE0NTc1YjQiLCJkNzMwMjdmNDZkNDNmZGFlNjFmZWUwOTBmZmZmYmZlMGYzZjhhYmQ5ZTk3NGFkZDE0NTc1YjQiLCJhNTAwMjZkNzMwMjdmNDZkNDNmZGFlNjFmZWUwOTBlMGYzZjhhYmQ5ZTk3NGFkZDE0NTc1YjQzMTM2OTUiLCJhNTAwMjZkNzMwMjdmNDZkNDNmZGFlNjFmZWUwOTBmZmZmYmZlMGYzZjhhYmQ5ZTk3NGFkZDE0NTc1YjQzMTM2OTUiKS5tYXAoTl8pLHRiPUJfKEpfKSxuYj1uZXcgQXJyYXkoMykuY29uY2F0KCJmYzhkNTlmZmZmYmY5MWNmNjAiLCJkNzE5MWNmZGFlNjFhNmQ5NmExYTk2NDEiLCJkNzE5MWNmZGFlNjFmZmZmYmZhNmQ5NmExYTk2NDEiLCJkNzMwMjdmYzhkNTlmZWUwOGJkOWVmOGI5MWNmNjAxYTk4NTAiLCJkNzMwMjdmYzhkNTlmZWUwOGJmZmZmYmZkOWVmOGI5MWNmNjAxYTk4NTAiLCJkNzMwMjdmNDZkNDNmZGFlNjFmZWUwOGJkOWVmOGJhNmQ5NmE2NmJkNjMxYTk4NTAiLCJkNzMwMjdmNDZkNDNmZGFlNjFmZWUwOGJmZmZmYmZkOWVmOGJhNmQ5NmE2NmJkNjMxYTk4NTAiLCJhNTAwMjZkNzMwMjdmNDZkNDNmZGFlNjFmZWUwOGJkOWVmOGJhNmQ5NmE2NmJkNjMxYTk4NTAwMDY4MzciLCJhNTAwMjZkNzMwMjdmNDZkNDNmZGFlNjFmZWUwOGJmZmZmYmZkOWVmOGJhNmQ5NmE2NmJkNjMxYTk4NTAwMDY4MzciKS5tYXAoTl8pLGViPUJfKG5iKSxyYj1uZXcgQXJyYXkoMykuY29uY2F0KCJmYzhkNTlmZmZmYmY5OWQ1OTQiLCJkNzE5MWNmZGFlNjFhYmRkYTQyYjgzYmEiLCJkNzE5MWNmZGFlNjFmZmZmYmZhYmRkYTQyYjgzYmEiLCJkNTNlNGZmYzhkNTlmZWUwOGJlNmY1OTg5OWQ1OTQzMjg4YmQiLCJkNTNlNGZmYzhkNTlmZWUwOGJmZmZmYmZlNmY1OTg5OWQ1OTQzMjg4YmQiLCJkNTNlNGZmNDZkNDNmZGFlNjFmZWUwOGJlNmY1OThhYmRkYTQ2NmMyYTUzMjg4YmQiLCJkNTNlNGZmNDZkNDNmZGFlNjFmZWUwOGJmZmZmYmZlNmY1OThhYmRkYTQ2NmMyYTUzMjg4YmQiLCI5ZTAxNDJkNTNlNGZmNDZkNDNmZGFlNjFmZWUwOGJlNmY1OThhYmRkYTQ2NmMyYTUzMjg4YmQ1ZTRmYTIiLCI5ZTAxNDJkNTNlNGZmNDZkNDNmZGFlNjFmZWUwOGJmZmZmYmZlNmY1OThhYmRkYTQ2NmMyYTUzMjg4YmQ1ZTRmYTIiKS5tYXAoTl8pLGliPUJfKHJiKSxvYj1uZXcgQXJyYXkoMykuY29uY2F0KCJlNWY1Zjk5OWQ4YzkyY2EyNWYiLCJlZGY4ZmJiMmUyZTI2NmMyYTQyMzhiNDUiLCJlZGY4ZmJiMmUyZTI2NmMyYTQyY2EyNWYwMDZkMmMiLCJlZGY4ZmJjY2VjZTY5OWQ4Yzk2NmMyYTQyY2EyNWYwMDZkMmMiLCJlZGY4ZmJjY2VjZTY5OWQ4Yzk2NmMyYTQ0MWFlNzYyMzhiNDUwMDU4MjQiLCJmN2ZjZmRlNWY1ZjljY2VjZTY5OWQ4Yzk2NmMyYTQ0MWFlNzYyMzhiNDUwMDU4MjQiLCJmN2ZjZmRlNWY1ZjljY2VjZTY5OWQ4Yzk2NmMyYTQ0MWFlNzYyMzhiNDUwMDZkMmMwMDQ0MWIiKS5tYXAoTl8pLGFiPUJfKG9iKSx1Yj1uZXcgQXJyYXkoMykuY29uY2F0KCJlMGVjZjQ5ZWJjZGE4ODU2YTciLCJlZGY4ZmJiM2NkZTM4Yzk2YzY4ODQxOWQiLCJlZGY4ZmJiM2NkZTM4Yzk2YzY4ODU2YTc4MTBmN2MiLCJlZGY4ZmJiZmQzZTY5ZWJjZGE4Yzk2YzY4ODU2YTc4MTBmN2MiLCJlZGY4ZmJiZmQzZTY5ZWJjZGE4Yzk2YzY4YzZiYjE4ODQxOWQ2ZTAxNmIiLCJmN2ZjZmRlMGVjZjRiZmQzZTY5ZWJjZGE4Yzk2YzY4YzZiYjE4ODQxOWQ2ZTAxNmIiLCJmN2ZjZmRlMGVjZjRiZmQzZTY5ZWJjZGE4Yzk2YzY4YzZiYjE4ODQxOWQ4MTBmN2M0ZDAwNGIiKS5tYXAoTl8pLGNiPUJfKHViKSxmYj1uZXcgQXJyYXkoMykuY29uY2F0KCJlMGYzZGJhOGRkYjU0M2EyY2EiLCJmMGY5ZThiYWU0YmM3YmNjYzQyYjhjYmUiLCJmMGY5ZThiYWU0YmM3YmNjYzQ0M2EyY2EwODY4YWMiLCJmMGY5ZThjY2ViYzVhOGRkYjU3YmNjYzQ0M2EyY2EwODY4YWMiLCJmMGY5ZThjY2ViYzVhOGRkYjU3YmNjYzQ0ZWIzZDMyYjhjYmUwODU4OWUiLCJmN2ZjZjBlMGYzZGJjY2ViYzVhOGRkYjU3YmNjYzQ0ZWIzZDMyYjhjYmUwODU4OWUiLCJmN2ZjZjBlMGYzZGJjY2ViYzVhOGRkYjU3YmNjYzQ0ZWIzZDMyYjhjYmUwODY4YWMwODQwODEiKS5tYXAoTl8pLHNiPUJfKGZiKSxsYj1uZXcgQXJyYXkoMykuY29uY2F0KCJmZWU4YzhmZGJiODRlMzRhMzMiLCJmZWYwZDlmZGNjOGFmYzhkNTlkNzMwMWYiLCJmZWYwZDlmZGNjOGFmYzhkNTllMzRhMzNiMzAwMDAiLCJmZWYwZDlmZGQ0OWVmZGJiODRmYzhkNTllMzRhMzNiMzAwMDAiLCJmZWYwZDlmZGQ0OWVmZGJiODRmYzhkNTllZjY1NDhkNzMwMWY5OTAwMDAiLCJmZmY3ZWNmZWU4YzhmZGQ0OWVmZGJiODRmYzhkNTllZjY1NDhkNzMwMWY5OTAwMDAiLCJmZmY3ZWNmZWU4YzhmZGQ0OWVmZGJiODRmYzhkNTllZjY1NDhkNzMwMWZiMzAwMDA3ZjAwMDAiKS5tYXAoTl8pLGhiPUJfKGxiKSxkYj1uZXcgQXJyYXkoMykuY29uY2F0KCJlY2UyZjBhNmJkZGIxYzkwOTkiLCJmNmVmZjdiZGM5ZTE2N2E5Y2YwMjgxOGEiLCJmNmVmZjdiZGM5ZTE2N2E5Y2YxYzkwOTkwMTZjNTkiLCJmNmVmZjdkMGQxZTZhNmJkZGI2N2E5Y2YxYzkwOTkwMTZjNTkiLCJmNmVmZjdkMGQxZTZhNmJkZGI2N2E5Y2YzNjkwYzAwMjgxOGEwMTY0NTAiLCJmZmY3ZmJlY2UyZjBkMGQxZTZhNmJkZGI2N2E5Y2YzNjkwYzAwMjgxOGEwMTY0NTAiLCJmZmY3ZmJlY2UyZjBkMGQxZTZhNmJkZGI2N2E5Y2YzNjkwYzAwMjgxOGEwMTZjNTkwMTQ2MzYiKS5tYXAoTl8pLHBiPUJfKGRiKSxnYj1uZXcgQXJyYXkoMykuY29uY2F0KCJlY2U3ZjJhNmJkZGIyYjhjYmUiLCJmMWVlZjZiZGM5ZTE3NGE5Y2YwNTcwYjAiLCJmMWVlZjZiZGM5ZTE3NGE5Y2YyYjhjYmUwNDVhOGQiLCJmMWVlZjZkMGQxZTZhNmJkZGI3NGE5Y2YyYjhjYmUwNDVhOGQiLCJmMWVlZjZkMGQxZTZhNmJkZGI3NGE5Y2YzNjkwYzAwNTcwYjAwMzRlN2IiLCJmZmY3ZmJlY2U3ZjJkMGQxZTZhNmJkZGI3NGE5Y2YzNjkwYzAwNTcwYjAwMzRlN2IiLCJmZmY3ZmJlY2U3ZjJkMGQxZTZhNmJkZGI3NGE5Y2YzNjkwYzAwNTcwYjAwNDVhOGQwMjM4NTgiKS5tYXAoTl8pLHliPUJfKGdiKSx2Yj1uZXcgQXJyYXkoMykuY29uY2F0KCJlN2UxZWZjOTk0YzdkZDFjNzciLCJmMWVlZjZkN2I1ZDhkZjY1YjBjZTEyNTYiLCJmMWVlZjZkN2I1ZDhkZjY1YjBkZDFjNzc5ODAwNDMiLCJmMWVlZjZkNGI5ZGFjOTk0YzdkZjY1YjBkZDFjNzc5ODAwNDMiLCJmMWVlZjZkNGI5ZGFjOTk0YzdkZjY1YjBlNzI5OGFjZTEyNTY5MTAwM2YiLCJmN2Y0ZjllN2UxZWZkNGI5ZGFjOTk0YzdkZjY1YjBlNzI5OGFjZTEyNTY5MTAwM2YiLCJmN2Y0ZjllN2UxZWZkNGI5ZGFjOTk0YzdkZjY1YjBlNzI5OGFjZTEyNTY5ODAwNDM2NzAwMWYiKS5tYXAoTl8pLF9iPUJfKHZiKSxiYj1uZXcgQXJyYXkoMykuY29uY2F0KCJmZGUwZGRmYTlmYjVjNTFiOGEiLCJmZWViZTJmYmI0YjlmNzY4YTFhZTAxN2UiLCJmZWViZTJmYmI0YjlmNzY4YTFjNTFiOGE3YTAxNzciLCJmZWViZTJmY2M1YzBmYTlmYjVmNzY4YTFjNTFiOGE3YTAxNzciLCJmZWViZTJmY2M1YzBmYTlmYjVmNzY4YTFkZDM0OTdhZTAxN2U3YTAxNzciLCJmZmY3ZjNmZGUwZGRmY2M1YzBmYTlmYjVmNzY4YTFkZDM0OTdhZTAxN2U3YTAxNzciLCJmZmY3ZjNmZGUwZGRmY2M1YzBmYTlmYjVmNzY4YTFkZDM0OTdhZTAxN2U3YTAxNzc0OTAwNmEiKS5tYXAoTl8pLG1iPUJfKGJiKSx4Yj1uZXcgQXJyYXkoMykuY29uY2F0KCJlZGY4YjE3ZmNkYmIyYzdmYjgiLCJmZmZmY2NhMWRhYjQ0MWI2YzQyMjVlYTgiLCJmZmZmY2NhMWRhYjQ0MWI2YzQyYzdmYjgyNTM0OTQiLCJmZmZmY2NjN2U5YjQ3ZmNkYmI0MWI2YzQyYzdmYjgyNTM0OTQiLCJmZmZmY2NjN2U5YjQ3ZmNkYmI0MWI2YzQxZDkxYzAyMjVlYTgwYzJjODQiLCJmZmZmZDllZGY4YjFjN2U5YjQ3ZmNkYmI0MWI2YzQxZDkxYzAyMjVlYTgwYzJjODQiLCJmZmZmZDllZGY4YjFjN2U5YjQ3ZmNkYmI0MWI2YzQxZDkxYzAyMjVlYTgyNTM0OTQwODFkNTgiKS5tYXAoTl8pLHdiPUJfKHhiKSxNYj1uZXcgQXJyYXkoMykuY29uY2F0KCJmN2ZjYjlhZGRkOGUzMWEzNTQiLCJmZmZmY2NjMmU2OTk3OGM2NzkyMzg0NDMiLCJmZmZmY2NjMmU2OTk3OGM2NzkzMWEzNTQwMDY4MzciLCJmZmZmY2NkOWYwYTNhZGRkOGU3OGM2NzkzMWEzNTQwMDY4MzciLCJmZmZmY2NkOWYwYTNhZGRkOGU3OGM2Nzk0MWFiNWQyMzg0NDMwMDVhMzIiLCJmZmZmZTVmN2ZjYjlkOWYwYTNhZGRkOGU3OGM2Nzk0MWFiNWQyMzg0NDMwMDVhMzIiLCJmZmZmZTVmN2ZjYjlkOWYwYTNhZGRkOGU3OGM2Nzk0MWFiNWQyMzg0NDMwMDY4MzcwMDQ1MjkiKS5tYXAoTl8pLEFiPUJfKE1iKSxUYj1uZXcgQXJyYXkoMykuY29uY2F0KCJmZmY3YmNmZWM0NGZkOTVmMGUiLCJmZmZmZDRmZWQ5OGVmZTk5MjljYzRjMDIiLCJmZmZmZDRmZWQ5OGVmZTk5MjlkOTVmMGU5OTM0MDQiLCJmZmZmZDRmZWUzOTFmZWM0NGZmZTk5MjlkOTVmMGU5OTM0MDQiLCJmZmZmZDRmZWUzOTFmZWM0NGZmZTk5MjllYzcwMTRjYzRjMDI4YzJkMDQiLCJmZmZmZTVmZmY3YmNmZWUzOTFmZWM0NGZmZTk5MjllYzcwMTRjYzRjMDI4YzJkMDQiLCJmZmZmZTVmZmY3YmNmZWUzOTFmZWM0NGZmZTk5MjllYzcwMTRjYzRjMDI5OTM0MDQ2NjI1MDYiKS5tYXAoTl8pLFNiPUJfKFRiKSxFYj1uZXcgQXJyYXkoMykuY29uY2F0KCJmZmVkYTBmZWIyNGNmMDNiMjAiLCJmZmZmYjJmZWNjNWNmZDhkM2NlMzFhMWMiLCJmZmZmYjJmZWNjNWNmZDhkM2NmMDNiMjBiZDAwMjYiLCJmZmZmYjJmZWQ5NzZmZWIyNGNmZDhkM2NmMDNiMjBiZDAwMjYiLCJmZmZmYjJmZWQ5NzZmZWIyNGNmZDhkM2NmYzRlMmFlMzFhMWNiMTAwMjYiLCJmZmZmY2NmZmVkYTBmZWQ5NzZmZWIyNGNmZDhkM2NmYzRlMmFlMzFhMWNiMTAwMjYiLCJmZmZmY2NmZmVkYTBmZWQ5NzZmZWIyNGNmZDhkM2NmYzRlMmFlMzFhMWNiZDAwMjY4MDAwMjYiKS5tYXAoTl8pLGtiPUJfKEViKSxOYj1uZXcgQXJyYXkoMykuY29uY2F0KCJkZWViZjc5ZWNhZTEzMTgyYmQiLCJlZmYzZmZiZGQ3ZTc2YmFlZDYyMTcxYjUiLCJlZmYzZmZiZGQ3ZTc2YmFlZDYzMTgyYmQwODUxOWMiLCJlZmYzZmZjNmRiZWY5ZWNhZTE2YmFlZDYzMTgyYmQwODUxOWMiLCJlZmYzZmZjNmRiZWY5ZWNhZTE2YmFlZDY0MjkyYzYyMTcxYjUwODQ1OTQiLCJmN2ZiZmZkZWViZjdjNmRiZWY5ZWNhZTE2YmFlZDY0MjkyYzYyMTcxYjUwODQ1OTQiLCJmN2ZiZmZkZWViZjdjNmRiZWY5ZWNhZTE2YmFlZDY0MjkyYzYyMTcxYjUwODUxOWMwODMwNmIiKS5tYXAoTl8pLENiPUJfKE5iKSxQYj1uZXcgQXJyYXkoMykuY29uY2F0KCJlNWY1ZTBhMWQ5OWIzMWEzNTQiLCJlZGY4ZTliYWU0YjM3NGM0NzYyMzhiNDUiLCJlZGY4ZTliYWU0YjM3NGM0NzYzMWEzNTQwMDZkMmMiLCJlZGY4ZTljN2U5YzBhMWQ5OWI3NGM0NzYzMWEzNTQwMDZkMmMiLCJlZGY4ZTljN2U5YzBhMWQ5OWI3NGM0NzY0MWFiNWQyMzhiNDUwMDVhMzIiLCJmN2ZjZjVlNWY1ZTBjN2U5YzBhMWQ5OWI3NGM0NzY0MWFiNWQyMzhiNDUwMDVhMzIiLCJmN2ZjZjVlNWY1ZTBjN2U5YzBhMWQ5OWI3NGM0NzY0MWFiNWQyMzhiNDUwMDZkMmMwMDQ0MWIiKS5tYXAoTl8pLHpiPUJfKFBiKSxEYj1uZXcgQXJyYXkoMykuY29uY2F0KCJmMGYwZjBiZGJkYmQ2MzYzNjMiLCJmN2Y3ZjdjY2NjY2M5Njk2OTY1MjUyNTIiLCJmN2Y3ZjdjY2NjY2M5Njk2OTY2MzYzNjMyNTI1MjUiLCJmN2Y3ZjdkOWQ5ZDliZGJkYmQ5Njk2OTY2MzYzNjMyNTI1MjUiLCJmN2Y3ZjdkOWQ5ZDliZGJkYmQ5Njk2OTY3MzczNzM1MjUyNTIyNTI1MjUiLCJmZmZmZmZmMGYwZjBkOWQ5ZDliZGJkYmQ5Njk2OTY3MzczNzM1MjUyNTIyNTI1MjUiLCJmZmZmZmZmMGYwZjBkOWQ5ZDliZGJkYmQ5Njk2OTY3MzczNzM1MjUyNTIyNTI1MjUwMDAwMDAiKS5tYXAoTl8pLFJiPUJfKERiKSxGYj1uZXcgQXJyYXkoMykuY29uY2F0KCJlZmVkZjViY2JkZGM3NTZiYjEiLCJmMmYwZjdjYmM5ZTI5ZTlhYzg2YTUxYTMiLCJmMmYwZjdjYmM5ZTI5ZTlhYzg3NTZiYjE1NDI3OGYiLCJmMmYwZjdkYWRhZWJiY2JkZGM5ZTlhYzg3NTZiYjE1NDI3OGYiLCJmMmYwZjdkYWRhZWJiY2JkZGM5ZTlhYzg4MDdkYmE2YTUxYTM0YTE0ODYiLCJmY2ZiZmRlZmVkZjVkYWRhZWJiY2JkZGM5ZTlhYzg4MDdkYmE2YTUxYTM0YTE0ODYiLCJmY2ZiZmRlZmVkZjVkYWRhZWJiY2JkZGM5ZTlhYzg4MDdkYmE2YTUxYTM1NDI3OGYzZjAwN2QiKS5tYXAoTl8pLHFiPUJfKEZiKSxJYj1uZXcgQXJyYXkoMykuY29uY2F0KCJmZWUwZDJmYzkyNzJkZTJkMjYiLCJmZWU1ZDlmY2FlOTFmYjZhNGFjYjE4MWQiLCJmZWU1ZDlmY2FlOTFmYjZhNGFkZTJkMjZhNTBmMTUiLCJmZWU1ZDlmY2JiYTFmYzkyNzJmYjZhNGFkZTJkMjZhNTBmMTUiLCJmZWU1ZDlmY2JiYTFmYzkyNzJmYjZhNGFlZjNiMmNjYjE4MWQ5OTAwMGQiLCJmZmY1ZjBmZWUwZDJmY2JiYTFmYzkyNzJmYjZhNGFlZjNiMmNjYjE4MWQ5OTAwMGQiLCJmZmY1ZjBmZWUwZDJmY2JiYTFmYzkyNzJmYjZhNGFlZjNiMmNjYjE4MWRhNTBmMTU2NzAwMGQiKS5tYXAoTl8pLE9iPUJfKEliKSxVYj1uZXcgQXJyYXkoMykuY29uY2F0KCJmZWU2Y2VmZGFlNmJlNjU1MGQiLCJmZWVkZGVmZGJlODVmZDhkM2NkOTQ3MDEiLCJmZWVkZGVmZGJlODVmZDhkM2NlNjU1MGRhNjM2MDMiLCJmZWVkZGVmZGQwYTJmZGFlNmJmZDhkM2NlNjU1MGRhNjM2MDMiLCJmZWVkZGVmZGQwYTJmZGFlNmJmZDhkM2NmMTY5MTNkOTQ4MDE4YzJkMDQiLCJmZmY1ZWJmZWU2Y2VmZGQwYTJmZGFlNmJmZDhkM2NmMTY5MTNkOTQ4MDE4YzJkMDQiLCJmZmY1ZWJmZWU2Y2VmZGQwYTJmZGFlNmJmZDhkM2NmMTY5MTNkOTQ4MDFhNjM2MDM3ZjI3MDQiKS5tYXAoTl8pLEJiPUJfKFViKTt2YXIgWWI9c2kod3IoMzAwLC41LDApLHdyKC0yNDAsLjUsMSkpLExiPXNpKHdyKC0xMDAsLjc1LC4zNSksd3IoODAsMS41LC44KSksamI9c2kod3IoMjYwLC43NSwuMzUpLHdyKDgwLDEuNSwuOCkpLCRiPXdyKCk7dmFyIEhiPUZlKCksWGI9TWF0aC5QSS8zLEdiPTIqTWF0aC5QSS8zO2Z1bmN0aW9uIFZiKHQpe3ZhciBuPXQubGVuZ3RoO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdFtNYXRoLm1heCgwLE1hdGgubWluKG4tMSxNYXRoLmZsb29yKGUqbikpKV19fXZhciBXYj1WYihOXygiNDQwMTU0NDQwMjU2NDUwNDU3NDUwNTU5NDYwNzVhNDYwODVjNDYwYTVkNDYwYjVlNDcwZDYwNDcwZTYxNDcxMDYzNDcxMTY0NDcxMzY1NDgxNDY3NDgxNjY4NDgxNzY5NDgxODZhNDgxYTZjNDgxYjZkNDgxYzZlNDgxZDZmNDgxZjcwNDgyMDcxNDgyMTczNDgyMzc0NDgyNDc1NDgyNTc2NDgyNjc3NDgyODc4NDgyOTc5NDcyYTdhNDcyYzdhNDcyZDdiNDcyZTdjNDcyZjdkNDYzMDdlNDYzMjdlNDYzMzdmNDYzNDgwNDUzNTgxNDUzNzgxNDUzODgyNDQzOTgzNDQzYTgzNDQzYjg0NDMzZDg0NDMzZTg1NDIzZjg1NDI0MDg2NDI0MTg2NDE0Mjg3NDE0NDg3NDA0NTg4NDA0Njg4M2Y0Nzg4M2Y0ODg5M2U0OTg5M2U0YTg5M2U0YzhhM2Q0ZDhhM2Q0ZThhM2M0ZjhhM2M1MDhiM2I1MThiM2I1MjhiM2E1MzhiM2E1NDhjMzk1NThjMzk1NjhjMzg1ODhjMzg1OThjMzc1YThjMzc1YjhkMzY1YzhkMzY1ZDhkMzU1ZThkMzU1ZjhkMzQ2MDhkMzQ2MThkMzM2MjhkMzM2MzhkMzI2NDhlMzI2NThlMzE2NjhlMzE2NzhlMzE2ODhlMzA2OThlMzA2YThlMmY2YjhlMmY2YzhlMmU2ZDhlMmU2ZThlMmU2ZjhlMmQ3MDhlMmQ3MThlMmM3MThlMmM3MjhlMmM3MzhlMmI3NDhlMmI3NThlMmE3NjhlMmE3NzhlMmE3ODhlMjk3OThlMjk3YThlMjk3YjhlMjg3YzhlMjg3ZDhlMjc3ZThlMjc3ZjhlMjc4MDhlMjY4MThlMjY4MjhlMjY4MjhlMjU4MzhlMjU4NDhlMjU4NThlMjQ4NjhlMjQ4NzhlMjM4ODhlMjM4OThlMjM4YThkMjI4YjhkMjI4YzhkMjI4ZDhkMjE4ZThkMjE4ZjhkMjE5MDhkMjE5MThjMjA5MjhjMjA5MjhjMjA5MzhjMWY5NDhjMWY5NThiMWY5NjhiMWY5NzhiMWY5ODhiMWY5OThhMWY5YThhMWU5YjhhMWU5Yzg5MWU5ZDg5MWY5ZTg5MWY5Zjg4MWZhMDg4MWZhMTg4MWZhMTg3MWZhMjg3MjBhMzg2MjBhNDg2MjFhNTg1MjFhNjg1MjJhNzg1MjJhODg0MjNhOTgzMjRhYTgzMjVhYjgyMjVhYzgyMjZhZDgxMjdhZDgxMjhhZTgwMjlhZjdmMmFiMDdmMmNiMTdlMmRiMjdkMmViMzdjMmZiNDdjMzFiNTdiMzJiNjdhMzRiNjc5MzViNzc5MzdiODc4MzhiOTc3M2FiYTc2M2JiYjc1M2RiYzc0M2ZiYzczNDBiZDcyNDJiZTcxNDRiZjcwNDZjMDZmNDhjMTZlNGFjMTZkNGNjMjZjNGVjMzZiNTBjNDZhNTJjNTY5NTRjNTY4NTZjNjY3NThjNzY1NWFjODY0NWNjODYzNWVjOTYyNjBjYTYwNjNjYjVmNjVjYjVlNjdjYzVjNjljZDViNmNjZDVhNmVjZTU4NzBjZjU3NzNkMDU2NzVkMDU0NzdkMTUzN2FkMTUxN2NkMjUwN2ZkMzRlODFkMzRkODRkNDRiODZkNTQ5ODlkNTQ4OGJkNjQ2OGVkNjQ1OTBkNzQzOTNkNzQxOTVkODQwOThkODNlOWJkOTNjOWRkOTNiYTBkYTM5YTJkYTM3YTVkYjM2YThkYjM0YWFkYzMyYWRkYzMwYjBkZDJmYjJkZDJkYjVkZTJiYjhkZTI5YmFkZTI4YmRkZjI2YzBkZjI1YzJkZjIzYzVlMDIxYzhlMDIwY2FlMTFmY2RlMTFkZDBlMTFjZDJlMjFiZDVlMjFhZDhlMjE5ZGFlMzE5ZGRlMzE4ZGZlMzE4ZTJlNDE4ZTVlNDE5ZTdlNDE5ZWFlNTFhZWNlNTFiZWZlNTFjZjFlNTFkZjRlNjFlZjZlNjIwZjhlNjIxZmJlNzIzZmRlNzI1IikpLFpiPVZiKE5fKCIwMDAwMDQwMTAwMDUwMTAxMDYwMTAxMDgwMjAxMDkwMjAyMGIwMjAyMGQwMzAzMGYwMzAzMTIwNDA0MTQwNTA0MTYwNjA1MTgwNjA1MWEwNzA2MWMwODA3MWUwOTA3MjAwYTA4MjIwYjA5MjQwYzA5MjYwZDBhMjkwZTBiMmIxMDBiMmQxMTBjMmYxMjBkMzExMzBkMzQxNDBlMzYxNTBlMzgxNjBmM2IxODBmM2QxOTEwM2YxYTEwNDIxYzEwNDQxZDExNDcxZTExNDkyMDExNGIyMTExNGUyMjExNTAyNDEyNTMyNTEyNTUyNzEyNTgyOTExNWEyYTExNWMyYzExNWYyZDExNjEyZjExNjMzMTExNjUzMzEwNjczNDEwNjkzNjEwNmIzODEwNmMzOTBmNmUzYjBmNzAzZDBmNzEzZjBmNzI0MDBmNzQ0MjBmNzU0NDBmNzY0NTEwNzc0NzEwNzg0OTEwNzg0YTEwNzk0YzExN2E0ZTExN2I0ZjEyN2I1MTEyN2M1MjEzN2M1NDEzN2Q1NjE0N2Q1NzE1N2U1OTE1N2U1YTE2N2U1YzE2N2Y1ZDE3N2Y1ZjE4N2Y2MDE4ODA2MjE5ODA2NDFhODA2NTFhODA2NzFiODA2ODFjODE2YTFjODE2YjFkODE2ZDFkODE2ZTFlODE3MDFmODE3MjFmODE3MzIwODE3NTIxODE3NjIxODE3ODIyODE3OTIyODI3YjIzODI3YzIzODI3ZTI0ODI4MDI1ODI4MTI1ODE4MzI2ODE4NDI2ODE4NjI3ODE4ODI3ODE4OTI4ODE4YjI5ODE4YzI5ODE4ZTJhODE5MDJhODE5MTJiODE5MzJiODA5NDJjODA5NjJjODA5ODJkODA5OTJkODA5YjJlN2Y5YzJlN2Y5ZTJmN2ZhMDJmN2ZhMTMwN2VhMzMwN2VhNTMxN2VhNjMxN2RhODMyN2RhYTMzN2RhYjMzN2NhZDM0N2NhZTM0N2JiMDM1N2JiMjM1N2JiMzM2N2FiNTM2N2FiNzM3NzliODM3NzliYTM4NzhiYzM5NzhiZDM5NzdiZjNhNzdjMDNhNzZjMjNiNzVjNDNjNzVjNTNjNzRjNzNkNzNjODNlNzNjYTNlNzJjYzNmNzFjZDQwNzFjZjQwNzBkMDQxNmZkMjQyNmZkMzQzNmVkNTQ0NmRkNjQ1NmNkODQ1NmNkOTQ2NmJkYjQ3NmFkYzQ4NjlkZTQ5NjhkZjRhNjhlMDRjNjdlMjRkNjZlMzRlNjVlNDRmNjRlNTUwNjRlNzUyNjNlODUzNjJlOTU0NjJlYTU2NjFlYjU3NjBlYzU4NjBlZDVhNWZlZTViNWVlZjVkNWVmMDVmNWVmMTYwNWRmMjYyNWRmMjY0NWNmMzY1NWNmNDY3NWNmNDY5NWNmNTZiNWNmNjZjNWNmNjZlNWNmNzcwNWNmNzcyNWNmODc0NWNmODc2NWNmOTc4NWRmOTc5NWRmOTdiNWRmYTdkNWVmYTdmNWVmYTgxNWZmYjgzNWZmYjg1NjBmYjg3NjFmYzg5NjFmYzhhNjJmYzhjNjNmYzhlNjRmYzkwNjVmZDkyNjZmZDk0NjdmZDk2NjhmZDk4NjlmZDlhNmFmZDliNmJmZTlkNmNmZTlmNmRmZWExNmVmZWEzNmZmZWE1NzFmZWE3NzJmZWE5NzNmZWFhNzRmZWFjNzZmZWFlNzdmZWIwNzhmZWIyN2FmZWI0N2JmZWI2N2NmZWI3N2VmZWI5N2ZmZWJiODFmZWJkODJmZWJmODRmZWMxODVmZWMyODdmZWM0ODhmZWM2OGFmZWM4OGNmZWNhOGRmZWNjOGZmZWNkOTBmZWNmOTJmZWQxOTRmZWQzOTVmZWQ1OTdmZWQ3OTlmZWQ4OWFmZGRhOWNmZGRjOWVmZGRlYTBmZGUwYTFmZGUyYTNmZGUzYTVmZGU1YTdmZGU3YTlmZGU5YWFmZGViYWNmY2VjYWVmY2VlYjBmY2YwYjJmY2YyYjRmY2Y0YjZmY2Y2YjhmY2Y3YjlmY2Y5YmJmY2ZiYmRmY2ZkYmYiKSksS2I9VmIoTl8oIjAwMDAwNDAxMDAwNTAxMDEwNjAxMDEwODAyMDEwYTAyMDIwYzAyMDIwZTAzMDIxMDA0MDMxMjA0MDMxNDA1MDQxNzA2MDQxOTA3MDUxYjA4MDUxZDA5MDYxZjBhMDcyMjBiMDcyNDBjMDgyNjBkMDgyOTBlMDkyYjEwMDkyZDExMGEzMDEyMGEzMjE0MGIzNDE1MGIzNzE2MGIzOTE4MGMzYzE5MGMzZTFiMGM0MTFjMGM0MzFlMGM0NTFmMGM0ODIxMGM0YTIzMGM0YzI0MGM0ZjI2MGM1MTI4MGI1MzI5MGI1NTJiMGI1NzJkMGI1OTJmMGE1YjMxMGE1YzMyMGE1ZTM0MGE1ZjM2MDk2MTM4MDk2MjM5MDk2MzNiMDk2NDNkMDk2NTNlMDk2NjQwMGE2NzQyMGE2ODQ0MGE2ODQ1MGE2OTQ3MGI2YTQ5MGI2YTRhMGM2YjRjMGM2YjRkMGQ2YzRmMGQ2YzUxMGU2YzUyMGU2ZDU0MGY2ZDU1MGY2ZDU3MTA2ZTU5MTA2ZTVhMTE2ZTVjMTI2ZTVkMTI2ZTVmMTM2ZTYxMTM2ZTYyMTQ2ZTY0MTU2ZTY1MTU2ZTY3MTY2ZTY5MTY2ZTZhMTc2ZTZjMTg2ZTZkMTg2ZTZmMTk2ZTcxMTk2ZTcyMWE2ZTc0MWE2ZTc1MWI2ZTc3MWM2ZDc4MWM2ZDdhMWQ2ZDdjMWQ2ZDdkMWU2ZDdmMWU2YzgwMWY2YzgyMjA2Yzg0MjA2Yjg1MjE2Yjg3MjE2Yjg4MjI2YThhMjI2YThjMjM2OThkMjM2OThmMjQ2OTkwMjU2ODkyMjU2ODkzMjY2Nzk1MjY2Nzk3Mjc2Njk4Mjc2NjlhMjg2NTliMjk2NDlkMjk2NDlmMmE2M2EwMmE2M2EyMmI2MmEzMmM2MWE1MmM2MGE2MmQ2MGE4MmU1ZmE5MmU1ZWFiMmY1ZWFkMzA1ZGFlMzA1Y2IwMzE1YmIxMzI1YWIzMzI1YWI0MzM1OWI2MzQ1OGI3MzU1N2I5MzU1NmJhMzY1NWJjMzc1NGJkMzg1M2JmMzk1MmMwM2E1MWMxM2E1MGMzM2I0ZmM0M2M0ZWM2M2Q0ZGM3M2U0Y2M4M2Y0YmNhNDA0YWNiNDE0OWNjNDI0OGNlNDM0N2NmNDQ0NmQwNDU0NWQyNDY0NGQzNDc0M2Q0NDg0MmQ1NGE0MWQ3NGIzZmQ4NGMzZWQ5NGQzZGRhNGUzY2RiNTAzYmRkNTEzYWRlNTIzOGRmNTMzN2UwNTUzNmUxNTYzNWUyNTczNGUzNTkzM2U0NWEzMWU1NWMzMGU2NWQyZmU3NWUyZWU4NjAyZGU5NjEyYmVhNjMyYWViNjQyOWViNjYyOGVjNjcyNmVkNjkyNWVlNmEyNGVmNmMyM2VmNmUyMWYwNmYyMGYxNzExZmYxNzMxZGYyNzQxY2YzNzYxYmYzNzgxOWY0NzkxOGY1N2IxN2Y1N2QxNWY2N2UxNGY2ODAxM2Y3ODIxMmY3ODQxMGY4ODUwZmY4ODcwZWY4ODkwY2Y5OGIwYmY5OGMwYWY5OGUwOWZhOTAwOGZhOTIwN2ZhOTQwN2ZiOTYwNmZiOTcwNmZiOTkwNmZiOWIwNmZiOWQwN2ZjOWYwN2ZjYTEwOGZjYTMwOWZjYTUwYWZjYTYwY2ZjYTgwZGZjYWEwZmZjYWMxMWZjYWUxMmZjYjAxNGZjYjIxNmZjYjQxOGZiYjYxYWZiYjgxZGZiYmExZmZiYmMyMWZiYmUyM2ZhYzAyNmZhYzIyOGZhYzQyYWZhYzYyZGY5YzcyZmY5YzkzMmY5Y2IzNWY4Y2QzN2Y4Y2YzYWY3ZDEzZGY3ZDM0MGY2ZDU0M2Y2ZDc0NmY1ZDk0OWY1ZGI0Y2Y0ZGQ0ZmY0ZGY1M2Y0ZTE1NmYzZTM1YWYzZTU1ZGYyZTY2MWYyZTg2NWYyZWE2OWYxZWM2ZGYxZWQ3MWYxZWY3NWYxZjE3OWYyZjI3ZGYyZjQ4MmYzZjU4NmYzZjY4YWY0Zjg4ZWY1Zjk5MmY2ZmE5NmY4ZmI5YWY5ZmM5ZGZhZmRhMWZjZmZhNCIpKSxRYj1WYihOXygiMGQwODg3MTAwNzg4MTMwNzg5MTYwNzhhMTkwNjhjMWIwNjhkMWQwNjhlMjAwNjhmMjIwNjkwMjQwNjkxMjYwNTkxMjgwNTkyMmEwNTkzMmMwNTk0MmUwNTk1MmYwNTk2MzEwNTk3MzMwNTk3MzUwNDk4MzcwNDk5MzgwNDlhM2EwNDlhM2MwNDliM2UwNDljM2YwNDljNDEwNDlkNDMwMzllNDQwMzllNDYwMzlmNDgwMzlmNDkwM2EwNGIwM2ExNGMwMmExNGUwMmEyNTAwMmEyNTEwMmEzNTMwMmEzNTUwMmE0NTYwMWE0NTgwMWE0NTkwMWE1NWIwMWE1NWMwMWE2NWUwMWE2NjAwMWE2NjEwMGE3NjMwMGE3NjQwMGE3NjYwMGE3NjcwMGE4NjkwMGE4NmEwMGE4NmMwMGE4NmUwMGE4NmYwMGE4NzEwMGE4NzIwMWE4NzQwMWE4NzUwMWE4NzcwMWE4NzgwMWE4N2EwMmE4N2IwMmE4N2QwM2E4N2UwM2E4ODAwNGE4ODEwNGE3ODMwNWE3ODQwNWE3ODYwNmE2ODcwN2E2ODgwOGE2OGEwOWE1OGIwYWE1OGQwYmE1OGUwY2E0OGYwZGE0OTEwZWEzOTIwZmEzOTQxMGEyOTUxMWExOTYxM2ExOTgxNGEwOTkxNTlmOWExNjlmOWMxNzllOWQxODlkOWUxOTlkYTAxYTljYTExYjliYTIxZDlhYTMxZTlhYTUxZjk5YTYyMDk4YTcyMTk3YTgyMjk2YWEyMzk1YWIyNDk0YWMyNjk0YWQyNzkzYWUyODkyYjAyOTkxYjEyYTkwYjIyYjhmYjMyYzhlYjQyZThkYjUyZjhjYjYzMDhiYjczMThhYjgzMjg5YmEzMzg4YmIzNDg4YmMzNTg3YmQzNzg2YmUzODg1YmYzOTg0YzAzYTgzYzEzYjgyYzIzYzgxYzMzZDgwYzQzZTdmYzU0MDdlYzY0MTdkYzc0MjdjYzg0MzdiYzk0NDdhY2E0NTdhY2I0Njc5Y2M0Nzc4Y2M0OTc3Y2Q0YTc2Y2U0Yjc1Y2Y0Yzc0ZDA0ZDczZDE0ZTcyZDI0ZjcxZDM1MTcxZDQ1MjcwZDU1MzZmZDU1NDZlZDY1NTZkZDc1NjZjZDg1NzZiZDk1ODZhZGE1YTZhZGE1YjY5ZGI1YzY4ZGM1ZDY3ZGQ1ZTY2ZGU1ZjY1ZGU2MTY0ZGY2MjYzZTA2MzYzZTE2NDYyZTI2NTYxZTI2NjYwZTM2ODVmZTQ2OTVlZTU2YTVkZTU2YjVkZTY2YzVjZTc2ZTViZTc2ZjVhZTg3MDU5ZTk3MTU4ZTk3MjU3ZWE3NDU3ZWI3NTU2ZWI3NjU1ZWM3NzU0ZWQ3OTUzZWQ3YTUyZWU3YjUxZWY3YzUxZWY3ZTUwZjA3ZjRmZjA4MDRlZjE4MTRkZjE4MzRjZjI4NDRiZjM4NTRiZjM4NzRhZjQ4ODQ5ZjQ4OTQ4ZjU4YjQ3ZjU4YzQ2ZjY4ZDQ1ZjY4ZjQ0Zjc5MDQ0Zjc5MTQzZjc5MzQyZjg5NDQxZjg5NTQwZjk5NzNmZjk5ODNlZjk5YTNlZmE5YjNkZmE5YzNjZmE5ZTNiZmI5ZjNhZmJhMTM5ZmJhMjM4ZmNhMzM4ZmNhNTM3ZmNhNjM2ZmNhODM1ZmNhOTM0ZmRhYjMzZmRhYzMzZmRhZTMyZmRhZjMxZmRiMTMwZmRiMjJmZmRiNDJmZmRiNTJlZmViNzJkZmViODJjZmViYTJjZmViYjJiZmViZDJhZmViZTJhZmVjMDI5ZmRjMjI5ZmRjMzI4ZmRjNTI3ZmRjNjI3ZmRjODI3ZmRjYTI2ZmRjYjI2ZmNjZDI1ZmNjZTI1ZmNkMDI1ZmNkMjI1ZmJkMzI0ZmJkNTI0ZmJkNzI0ZmFkODI0ZmFkYTI0ZjlkYzI0ZjlkZDI1ZjhkZjI1ZjhlMTI1ZjdlMjI1ZjdlNDI1ZjZlNjI2ZjZlODI2ZjVlOTI2ZjVlYjI3ZjRlZDI3ZjNlZTI3ZjNmMDI3ZjJmMjI3ZjFmNDI2ZjFmNTI1ZjBmNzI0ZjBmOTIxIikpO2Z1bmN0aW9uIEpiKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1jb25zdCB0bT1NYXRoLmFicyxubT1NYXRoLmF0YW4yLGVtPU1hdGguY29zLHJtPU1hdGgubWF4LGltPU1hdGgubWluLG9tPU1hdGguc2luLGFtPU1hdGguc3FydCx1bT0xZS0xMixjbT1NYXRoLlBJLGZtPWNtLzIsc209MipjbTtmdW5jdGlvbiBsbSh0KXtyZXR1cm4gdD4xPzA6dDwtMT9jbTpNYXRoLmFjb3ModCl9ZnVuY3Rpb24gaG0odCl7cmV0dXJuIHQ+PTE/Zm06dDw9LTE/LWZtOk1hdGguYXNpbih0KX1mdW5jdGlvbiBkbSh0KXtyZXR1cm4gdC5pbm5lclJhZGl1c31mdW5jdGlvbiBwbSh0KXtyZXR1cm4gdC5vdXRlclJhZGl1c31mdW5jdGlvbiBnbSh0KXtyZXR1cm4gdC5zdGFydEFuZ2xlfWZ1bmN0aW9uIHltKHQpe3JldHVybiB0LmVuZEFuZ2xlfWZ1bmN0aW9uIHZtKHQpe3JldHVybiB0JiZ0LnBhZEFuZ2xlfWZ1bmN0aW9uIF9tKHQsbixlLHIsaSxvLGEsdSl7dmFyIGM9ZS10LGY9ci1uLHM9YS1pLGw9dS1vLGg9bCpjLXMqZjtpZighKGgqaDx1bSkpcmV0dXJuW3QrKGg9KHMqKG4tbyktbCoodC1pKSkvaCkqYyxuK2gqZl19ZnVuY3Rpb24gYm0odCxuLGUscixpLG8sYSl7dmFyIHU9dC1lLGM9bi1yLGY9KGE/bzotbykvYW0odSp1K2MqYykscz1mKmMsbD0tZip1LGg9dCtzLGQ9bitsLHA9ZStzLGc9citsLHk9KGgrcCkvMix2PShkK2cpLzIsXz1wLWgsYj1nLWQsbT1fKl8rYipiLHg9aS1vLHc9aCpnLXAqZCxNPShiPDA/LTE6MSkqYW0ocm0oMCx4KngqbS13KncpKSxBPSh3KmItXypNKS9tLFQ9KC13Kl8tYipNKS9tLFM9KHcqYitfKk0pL20sRT0oLXcqXytiKk0pL20saz1BLXksTj1ULXYsQz1TLXksUD1FLXY7cmV0dXJuIGsqaytOKk4+QypDK1AqUCYmKEE9UyxUPUUpLHtjeDpBLGN5OlQseDAxOi1zLHkwMTotbCx4MTE6QSooaS94LTEpLHkxMTpUKihpL3gtMSl9fXZhciBtbT1BcnJheS5wcm90b3R5cGUuc2xpY2U7ZnVuY3Rpb24geG0odCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0JiYibGVuZ3RoImluIHQ/dDpBcnJheS5mcm9tKHQpfWZ1bmN0aW9uIHdtKHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBNbSh0KXtyZXR1cm4gbmV3IHdtKHQpfWZ1bmN0aW9uIEFtKHQpe3JldHVybiB0WzBdfWZ1bmN0aW9uIFRtKHQpe3JldHVybiB0WzFdfWZ1bmN0aW9uIFNtKHQsbil7dmFyIGU9SmIoITApLHI9bnVsbCxpPU1tLG89bnVsbDtmdW5jdGlvbiBhKGEpe3ZhciB1LGMsZixzPShhPXhtKGEpKS5sZW5ndGgsbD0hMTtmb3IobnVsbD09ciYmKG89aShmPVBhKCkpKSx1PTA7dTw9czsrK3UpISh1PHMmJmUoYz1hW3VdLHUsYSkpPT09bCYmKChsPSFsKT9vLmxpbmVTdGFydCgpOm8ubGluZUVuZCgpKSxsJiZvLnBvaW50KCt0KGMsdSxhKSwrbihjLHUsYSkpO2lmKGYpcmV0dXJuIG89bnVsbCxmKyIifHxudWxsfXJldHVybiB0PSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6dm9pZCAwPT09dD9BbTpKYih0KSxuPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246dm9pZCAwPT09bj9UbTpKYihuKSxhLng9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpKYigrbiksYSk6dH0sYS55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6SmIoK3QpLGEpOm59LGEuZGVmaW5lZD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkpiKCEhdCksYSk6ZX0sYS5jdXJ2ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10LG51bGwhPXImJihvPWkocikpLGEpOml9LGEuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obnVsbD09dD9yPW89bnVsbDpvPWkocj10KSxhKTpyfSxhfWZ1bmN0aW9uIEVtKHQsbixlKXt2YXIgcj1udWxsLGk9SmIoITApLG89bnVsbCxhPU1tLHU9bnVsbDtmdW5jdGlvbiBjKGMpe3ZhciBmLHMsbCxoLGQscD0oYz14bShjKSkubGVuZ3RoLGc9ITEseT1uZXcgQXJyYXkocCksdj1uZXcgQXJyYXkocCk7Zm9yKG51bGw9PW8mJih1PWEoZD1QYSgpKSksZj0wO2Y8PXA7KytmKXtpZighKGY8cCYmaShoPWNbZl0sZixjKSk9PT1nKWlmKGc9IWcpcz1mLHUuYXJlYVN0YXJ0KCksdS5saW5lU3RhcnQoKTtlbHNle2Zvcih1LmxpbmVFbmQoKSx1LmxpbmVTdGFydCgpLGw9Zi0xO2w+PXM7LS1sKXUucG9pbnQoeVtsXSx2W2xdKTt1LmxpbmVFbmQoKSx1LmFyZWFFbmQoKX1nJiYoeVtmXT0rdChoLGYsYyksdltmXT0rbihoLGYsYyksdS5wb2ludChyPytyKGgsZixjKTp5W2ZdLGU/K2UoaCxmLGMpOnZbZl0pKX1pZihkKXJldHVybiB1PW51bGwsZCsiInx8bnVsbH1mdW5jdGlvbiBmKCl7cmV0dXJuIFNtKCkuZGVmaW5lZChpKS5jdXJ2ZShhKS5jb250ZXh0KG8pfXJldHVybiB0PSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6dm9pZCAwPT09dD9BbTpKYigrdCksbj0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOkpiKHZvaWQgMD09PW4/MDorbiksZT0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOnZvaWQgMD09PWU/VG06SmIoK2UpLGMueD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOkpiKCtuKSxyPW51bGwsYyk6dH0sYy54MD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOkpiKCtuKSxjKTp0fSxjLngxPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPW51bGw9PXQ/bnVsbDoiZnVuY3Rpb24iPT10eXBlb2YgdD90OkpiKCt0KSxjKTpyfSxjLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpKYigrdCksZT1udWxsLGMpOm59LGMueTA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpKYigrdCksYyk6bn0sYy55MT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1udWxsPT10P251bGw6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpKYigrdCksYyk6ZX0sYy5saW5lWDA9Yy5saW5lWTA9ZnVuY3Rpb24oKXtyZXR1cm4gZigpLngodCkueShuKX0sYy5saW5lWTE9ZnVuY3Rpb24oKXtyZXR1cm4gZigpLngodCkueShlKX0sYy5saW5lWDE9ZnVuY3Rpb24oKXtyZXR1cm4gZigpLngocikueShuKX0sYy5kZWZpbmVkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6SmIoISF0KSxjKTppfSxjLmN1cnZlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPXQsbnVsbCE9byYmKHU9YShvKSksYyk6YX0sYy5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhudWxsPT10P289dT1udWxsOnU9YShvPXQpLGMpOm99LGN9ZnVuY3Rpb24ga20odCxuKXtyZXR1cm4gbjx0Py0xOm4+dD8xOm4+PXQ/MDpOYU59ZnVuY3Rpb24gTm0odCl7cmV0dXJuIHR9d20ucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpeyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxuKXtzd2l0Y2godD0rdCxuPStuLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsbik6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxuKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjtkZWZhdWx0OnRoaXMuX2NvbnRleHQubGluZVRvKHQsbil9fX07dmFyIENtPXptKE1tKTtmdW5jdGlvbiBQbSh0KXt0aGlzLl9jdXJ2ZT10fWZ1bmN0aW9uIHptKHQpe2Z1bmN0aW9uIG4obil7cmV0dXJuIG5ldyBQbSh0KG4pKX1yZXR1cm4gbi5fY3VydmU9dCxufWZ1bmN0aW9uIERtKHQpe3ZhciBuPXQuY3VydmU7cmV0dXJuIHQuYW5nbGU9dC54LGRlbGV0ZSB0LngsdC5yYWRpdXM9dC55LGRlbGV0ZSB0LnksdC5jdXJ2ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9uKHptKHQpKTpuKCkuX2N1cnZlfSx0fWZ1bmN0aW9uIFJtKCl7cmV0dXJuIERtKFNtKCkuY3VydmUoQ20pKX1mdW5jdGlvbiBGbSgpe3ZhciB0PUVtKCkuY3VydmUoQ20pLG49dC5jdXJ2ZSxlPXQubGluZVgwLHI9dC5saW5lWDEsaT10LmxpbmVZMCxvPXQubGluZVkxO3JldHVybiB0LmFuZ2xlPXQueCxkZWxldGUgdC54LHQuc3RhcnRBbmdsZT10LngwLGRlbGV0ZSB0LngwLHQuZW5kQW5nbGU9dC54MSxkZWxldGUgdC54MSx0LnJhZGl1cz10LnksZGVsZXRlIHQueSx0LmlubmVyUmFkaXVzPXQueTAsZGVsZXRlIHQueTAsdC5vdXRlclJhZGl1cz10LnkxLGRlbGV0ZSB0LnkxLHQubGluZVN0YXJ0QW5nbGU9ZnVuY3Rpb24oKXtyZXR1cm4gRG0oZSgpKX0sZGVsZXRlIHQubGluZVgwLHQubGluZUVuZEFuZ2xlPWZ1bmN0aW9uKCl7cmV0dXJuIERtKHIoKSl9LGRlbGV0ZSB0LmxpbmVYMSx0LmxpbmVJbm5lclJhZGl1cz1mdW5jdGlvbigpe3JldHVybiBEbShpKCkpfSxkZWxldGUgdC5saW5lWTAsdC5saW5lT3V0ZXJSYWRpdXM9ZnVuY3Rpb24oKXtyZXR1cm4gRG0obygpKX0sZGVsZXRlIHQubGluZVkxLHQuY3VydmU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/bih6bSh0KSk6bigpLl9jdXJ2ZX0sdH1mdW5jdGlvbiBxbSh0LG4pe3JldHVyblsobj0rbikqTWF0aC5jb3ModC09TWF0aC5QSS8yKSxuKk1hdGguc2luKHQpXX1QbS5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2N1cnZlLmFyZWFTdGFydCgpfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fY3VydmUuYXJlYUVuZCgpfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9jdXJ2ZS5saW5lU3RhcnQoKX0sbGluZUVuZDpmdW5jdGlvbigpe3RoaXMuX2N1cnZlLmxpbmVFbmQoKX0scG9pbnQ6ZnVuY3Rpb24odCxuKXt0aGlzLl9jdXJ2ZS5wb2ludChuKk1hdGguc2luKHQpLG4qLU1hdGguY29zKHQpKX19O2NsYXNzIElte2NvbnN0cnVjdG9yKHQsbil7dGhpcy5fY29udGV4dD10LHRoaXMuX3g9bn1hcmVhU3RhcnQoKXt0aGlzLl9saW5lPTB9YXJlYUVuZCgpe3RoaXMuX2xpbmU9TmFOfWxpbmVTdGFydCgpe3RoaXMuX3BvaW50PTB9bGluZUVuZCgpeyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX1wb2ludCh0LG4pe3N3aXRjaCh0PSt0LG49K24sdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxuKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LG4pO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2RlZmF1bHQ6dGhpcy5feD90aGlzLl9jb250ZXh0LmJlemllckN1cnZlVG8odGhpcy5feDA9KHRoaXMuX3gwK3QpLzIsdGhpcy5feTAsdGhpcy5feDAsbix0LG4pOnRoaXMuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyh0aGlzLl94MCx0aGlzLl95MD0odGhpcy5feTArbikvMix0LHRoaXMuX3kwLHQsbil9dGhpcy5feDA9dCx0aGlzLl95MD1ufX1jbGFzcyBPbXtjb25zdHJ1Y3Rvcih0KXt0aGlzLl9jb250ZXh0PXR9bGluZVN0YXJ0KCl7dGhpcy5fcG9pbnQ9MH1saW5lRW5kKCl7fXBvaW50KHQsbil7aWYodD0rdCxuPStuLDA9PXRoaXMuX3BvaW50KyspdGhpcy5feDA9dCx0aGlzLl95MD1uO2Vsc2V7Y29uc3QgZT1xbSh0aGlzLl94MCx0aGlzLl95MCkscj1xbSh0aGlzLl94MCx0aGlzLl95MD0odGhpcy5feTArbikvMiksaT1xbSh0LHRoaXMuX3kwKSxvPXFtKHQsbik7dGhpcy5fY29udGV4dC5tb3ZlVG8oLi4uZSksdGhpcy5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKC4uLnIsLi4uaSwuLi5vKX19fWZ1bmN0aW9uIFVtKHQpe3JldHVybiBuZXcgSW0odCwhMCl9ZnVuY3Rpb24gQm0odCl7cmV0dXJuIG5ldyBJbSh0LCExKX1mdW5jdGlvbiBZbSh0KXtyZXR1cm4gbmV3IE9tKHQpfWZ1bmN0aW9uIExtKHQpe3JldHVybiB0LnNvdXJjZX1mdW5jdGlvbiBqbSh0KXtyZXR1cm4gdC50YXJnZXR9ZnVuY3Rpb24gJG0odCl7bGV0IG49TG0sZT1qbSxyPUFtLGk9VG0sbz1udWxsLGE9bnVsbDtmdW5jdGlvbiB1KCl7bGV0IHU7Y29uc3QgYz1tbS5jYWxsKGFyZ3VtZW50cyksZj1uLmFwcGx5KHRoaXMsYykscz1lLmFwcGx5KHRoaXMsYyk7aWYobnVsbD09byYmKGE9dCh1PVBhKCkpKSxhLmxpbmVTdGFydCgpLGNbMF09ZixhLnBvaW50KCtyLmFwcGx5KHRoaXMsYyksK2kuYXBwbHkodGhpcyxjKSksY1swXT1zLGEucG9pbnQoK3IuYXBwbHkodGhpcyxjKSwraS5hcHBseSh0aGlzLGMpKSxhLmxpbmVFbmQoKSx1KXJldHVybiBhPW51bGwsdSsiInx8bnVsbH1yZXR1cm4gdS5zb3VyY2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCx1KTpufSx1LnRhcmdldD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LHUpOmV9LHUueD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkpiKCt0KSx1KTpyfSx1Lnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpKYigrdCksdSk6aX0sdS5jb250ZXh0PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhudWxsPT1uP289YT1udWxsOmE9dChvPW4pLHUpOm99LHV9Y29uc3QgSG09YW0oMyk7dmFyIFhtPXtkcmF3KHQsbil7Y29uc3QgZT0uNTk0MzYqYW0obitpbShuLzI4LC43NSkpLHI9ZS8yLGk9cipIbTt0Lm1vdmVUbygwLGUpLHQubGluZVRvKDAsLWUpLHQubW92ZVRvKC1pLC1yKSx0LmxpbmVUbyhpLHIpLHQubW92ZVRvKC1pLHIpLHQubGluZVRvKGksLXIpfX0sR209e2RyYXcodCxuKXtjb25zdCBlPWFtKG4vY20pO3QubW92ZVRvKGUsMCksdC5hcmMoMCwwLGUsMCxzbSl9fSxWbT17ZHJhdyh0LG4pe2NvbnN0IGU9YW0obi81KS8yO3QubW92ZVRvKC0zKmUsLWUpLHQubGluZVRvKC1lLC1lKSx0LmxpbmVUbygtZSwtMyplKSx0LmxpbmVUbyhlLC0zKmUpLHQubGluZVRvKGUsLWUpLHQubGluZVRvKDMqZSwtZSksdC5saW5lVG8oMyplLGUpLHQubGluZVRvKGUsZSksdC5saW5lVG8oZSwzKmUpLHQubGluZVRvKC1lLDMqZSksdC5saW5lVG8oLWUsZSksdC5saW5lVG8oLTMqZSxlKSx0LmNsb3NlUGF0aCgpfX07Y29uc3QgV209YW0oMS8zKSxabT0yKldtO3ZhciBLbT17ZHJhdyh0LG4pe2NvbnN0IGU9YW0obi9abSkscj1lKldtO3QubW92ZVRvKDAsLWUpLHQubGluZVRvKHIsMCksdC5saW5lVG8oMCxlKSx0LmxpbmVUbygtciwwKSx0LmNsb3NlUGF0aCgpfX0sUW09e2RyYXcodCxuKXtjb25zdCBlPS42MjYyNSphbShuKTt0Lm1vdmVUbygwLC1lKSx0LmxpbmVUbyhlLDApLHQubGluZVRvKDAsZSksdC5saW5lVG8oLWUsMCksdC5jbG9zZVBhdGgoKX19LEptPXtkcmF3KHQsbil7Y29uc3QgZT0uODc1NTkqYW0obi1pbShuLzcsMikpO3QubW92ZVRvKC1lLDApLHQubGluZVRvKGUsMCksdC5tb3ZlVG8oMCxlKSx0LmxpbmVUbygwLC1lKX19LHR4PXtkcmF3KHQsbil7Y29uc3QgZT1hbShuKSxyPS1lLzI7dC5yZWN0KHIscixlLGUpfX0sbng9e2RyYXcodCxuKXtjb25zdCBlPS40NDMxKmFtKG4pO3QubW92ZVRvKGUsZSksdC5saW5lVG8oZSwtZSksdC5saW5lVG8oLWUsLWUpLHQubGluZVRvKC1lLGUpLHQuY2xvc2VQYXRoKCl9fTtjb25zdCBleD1vbShjbS8xMCkvb20oNypjbS8xMCkscng9b20oc20vMTApKmV4LGl4PS1lbShzbS8xMCkqZXg7dmFyIG94PXtkcmF3KHQsbil7Y29uc3QgZT1hbSguODkwODEzMDkxNTI5Mjg1MipuKSxyPXJ4KmUsaT1peCplO3QubW92ZVRvKDAsLWUpLHQubGluZVRvKHIsaSk7Zm9yKGxldCBuPTE7bjw1Oysrbil7Y29uc3Qgbz1zbSpuLzUsYT1lbShvKSx1PW9tKG8pO3QubGluZVRvKHUqZSwtYSplKSx0LmxpbmVUbyhhKnItdSppLHUqcithKmkpfXQuY2xvc2VQYXRoKCl9fTtjb25zdCBheD1hbSgzKTt2YXIgdXg9e2RyYXcodCxuKXtjb25zdCBlPS1hbShuLygzKmF4KSk7dC5tb3ZlVG8oMCwyKmUpLHQubGluZVRvKC1heCplLC1lKSx0LmxpbmVUbyhheCplLC1lKSx0LmNsb3NlUGF0aCgpfX07Y29uc3QgY3g9YW0oMyk7dmFyIGZ4PXtkcmF3KHQsbil7Y29uc3QgZT0uNjgyNCphbShuKSxyPWUvMixpPWUqY3gvMjt0Lm1vdmVUbygwLC1lKSx0LmxpbmVUbyhpLHIpLHQubGluZVRvKC1pLHIpLHQuY2xvc2VQYXRoKCl9fTtjb25zdCBzeD0tLjUsbHg9YW0oMykvMixoeD0xL2FtKDEyKSxkeD0zKihoeC8yKzEpO3ZhciBweD17ZHJhdyh0LG4pe2NvbnN0IGU9YW0obi9keCkscj1lLzIsaT1lKmh4LG89cixhPWUqaHgrZSx1PS1vLGM9YTt0Lm1vdmVUbyhyLGkpLHQubGluZVRvKG8sYSksdC5saW5lVG8odSxjKSx0LmxpbmVUbyhzeCpyLWx4KmksbHgqcitzeCppKSx0LmxpbmVUbyhzeCpvLWx4KmEsbHgqbytzeCphKSx0LmxpbmVUbyhzeCp1LWx4KmMsbHgqdStzeCpjKSx0LmxpbmVUbyhzeCpyK2x4Kmksc3gqaS1seCpyKSx0LmxpbmVUbyhzeCpvK2x4KmEsc3gqYS1seCpvKSx0LmxpbmVUbyhzeCp1K2x4KmMsc3gqYy1seCp1KSx0LmNsb3NlUGF0aCgpfX0sZ3g9e2RyYXcodCxuKXtjb25zdCBlPS42MTg5KmFtKG4taW0obi82LDEuNykpO3QubW92ZVRvKC1lLC1lKSx0LmxpbmVUbyhlLGUpLHQubW92ZVRvKC1lLGUpLHQubGluZVRvKGUsLWUpfX07Y29uc3QgeXg9W0dtLFZtLEttLHR4LG94LHV4LHB4XSx2eD1bR20sSm0sZ3gsZngsWG0sbngsUW1dO2Z1bmN0aW9uIF94KCl7fWZ1bmN0aW9uIGJ4KHQsbixlKXt0Ll9jb250ZXh0LmJlemllckN1cnZlVG8oKDIqdC5feDArdC5feDEpLzMsKDIqdC5feTArdC5feTEpLzMsKHQuX3gwKzIqdC5feDEpLzMsKHQuX3kwKzIqdC5feTEpLzMsKHQuX3gwKzQqdC5feDErbikvNiwodC5feTArNCp0Ll95MStlKS82KX1mdW5jdGlvbiBteCh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24geHgodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIHd4KHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBNeCh0LG4pe3RoaXMuX2Jhc2lzPW5ldyBteCh0KSx0aGlzLl9iZXRhPW59bXgucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feTA9dGhpcy5feTE9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMzpieCh0aGlzLHRoaXMuX3gxLHRoaXMuX3kxKTtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDEsdGhpcy5feTEpfSh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxuKXtzd2l0Y2godD0rdCxuPStuLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsbik6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxuKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl9jb250ZXh0LmxpbmVUbygoNSp0aGlzLl94MCt0aGlzLl94MSkvNiwoNSp0aGlzLl95MCt0aGlzLl95MSkvNik7ZGVmYXVsdDpieCh0aGlzLHQsbil9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT1ufX0seHgucHJvdG90eXBlPXthcmVhU3RhcnQ6X3gsYXJlYUVuZDpfeCxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl94Mz10aGlzLl94ND10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj10aGlzLl95Mz10aGlzLl95ND1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAxOnRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gyLHRoaXMuX3kyKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMjp0aGlzLl9jb250ZXh0Lm1vdmVUbygodGhpcy5feDIrMip0aGlzLl94MykvMywodGhpcy5feTIrMip0aGlzLl95MykvMyksdGhpcy5fY29udGV4dC5saW5lVG8oKHRoaXMuX3gzKzIqdGhpcy5feDIpLzMsKHRoaXMuX3kzKzIqdGhpcy5feTIpLzMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAzOnRoaXMucG9pbnQodGhpcy5feDIsdGhpcy5feTIpLHRoaXMucG9pbnQodGhpcy5feDMsdGhpcy5feTMpLHRoaXMucG9pbnQodGhpcy5feDQsdGhpcy5feTQpfX0scG9pbnQ6ZnVuY3Rpb24odCxuKXtzd2l0Y2godD0rdCxuPStuLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl94Mj10LHRoaXMuX3kyPW47YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTIsdGhpcy5feDM9dCx0aGlzLl95Mz1uO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX3g0PXQsdGhpcy5feTQ9bix0aGlzLl9jb250ZXh0Lm1vdmVUbygodGhpcy5feDArNCp0aGlzLl94MSt0KS82LCh0aGlzLl95MCs0KnRoaXMuX3kxK24pLzYpO2JyZWFrO2RlZmF1bHQ6YngodGhpcyx0LG4pfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9bn19LHd4LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3kwPXRoaXMuX3kxPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYzPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LG4pe3N3aXRjaCh0PSt0LG49K24sdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zO3ZhciBlPSh0aGlzLl94MCs0KnRoaXMuX3gxK3QpLzYscj0odGhpcy5feTArNCp0aGlzLl95MStuKS82O3RoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8oZSxyKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyhlLHIpO2JyZWFrO2Nhc2UgMzp0aGlzLl9wb2ludD00O2RlZmF1bHQ6YngodGhpcyx0LG4pfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9bn19LE14LnByb3RvdHlwZT17bGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feD1bXSx0aGlzLl95PVtdLHRoaXMuX2Jhc2lzLmxpbmVTdGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5feCxuPXRoaXMuX3ksZT10Lmxlbmd0aC0xO2lmKGU+MClmb3IodmFyIHIsaT10WzBdLG89blswXSxhPXRbZV0taSx1PW5bZV0tbyxjPS0xOysrYzw9ZTspcj1jL2UsdGhpcy5fYmFzaXMucG9pbnQodGhpcy5fYmV0YSp0W2NdKygxLXRoaXMuX2JldGEpKihpK3IqYSksdGhpcy5fYmV0YSpuW2NdKygxLXRoaXMuX2JldGEpKihvK3IqdSkpO3RoaXMuX3g9dGhpcy5feT1udWxsLHRoaXMuX2Jhc2lzLmxpbmVFbmQoKX0scG9pbnQ6ZnVuY3Rpb24odCxuKXt0aGlzLl94LnB1c2goK3QpLHRoaXMuX3kucHVzaCgrbil9fTt2YXIgQXg9ZnVuY3Rpb24gdChuKXtmdW5jdGlvbiBlKHQpe3JldHVybiAxPT09bj9uZXcgbXgodCk6bmV3IE14KHQsbil9cmV0dXJuIGUuYmV0YT1mdW5jdGlvbihuKXtyZXR1cm4gdCgrbil9LGV9KC44NSk7ZnVuY3Rpb24gVHgodCxuLGUpe3QuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyh0Ll94MSt0Ll9rKih0Ll94Mi10Ll94MCksdC5feTErdC5fayoodC5feTItdC5feTApLHQuX3gyK3QuX2sqKHQuX3gxLW4pLHQuX3kyK3QuX2sqKHQuX3kxLWUpLHQuX3gyLHQuX3kyKX1mdW5jdGlvbiBTeCh0LG4pe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9rPSgxLW4pLzZ9U3gucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Mix0aGlzLl95Mik7YnJlYWs7Y2FzZSAzOlR4KHRoaXMsdGhpcy5feDEsdGhpcy5feTEpfSh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxuKXtzd2l0Y2godD0rdCxuPStuLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsbik6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxuKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9Mix0aGlzLl94MT10LHRoaXMuX3kxPW47YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTM7ZGVmYXVsdDpUeCh0aGlzLHQsbil9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1ufX07dmFyIEV4PWZ1bmN0aW9uIHQobil7ZnVuY3Rpb24gZSh0KXtyZXR1cm4gbmV3IFN4KHQsbil9cmV0dXJuIGUudGVuc2lvbj1mdW5jdGlvbihuKXtyZXR1cm4gdCgrbil9LGV9KDApO2Z1bmN0aW9uIGt4KHQsbil7dGhpcy5fY29udGV4dD10LHRoaXMuX2s9KDEtbikvNn1reC5wcm90b3R5cGU9e2FyZWFTdGFydDpfeCxhcmVhRW5kOl94LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3gzPXRoaXMuX3g0PXRoaXMuX3g1PXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPXRoaXMuX3kzPXRoaXMuX3k0PXRoaXMuX3k1PU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDE6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDMsdGhpcy5feTMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMzp0aGlzLnBvaW50KHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLnBvaW50KHRoaXMuX3g0LHRoaXMuX3k0KSx0aGlzLnBvaW50KHRoaXMuX3g1LHRoaXMuX3k1KX19LHBvaW50OmZ1bmN0aW9uKHQsbil7c3dpdGNoKHQ9K3Qsbj0rbix0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5feDM9dCx0aGlzLl95Mz1uO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3g0PXQsdGhpcy5feTQ9bik7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5feDU9dCx0aGlzLl95NT1uO2JyZWFrO2RlZmF1bHQ6VHgodGhpcyx0LG4pfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9bn19O3ZhciBOeD1mdW5jdGlvbiB0KG4pe2Z1bmN0aW9uIGUodCl7cmV0dXJuIG5ldyBreCh0LG4pfXJldHVybiBlLnRlbnNpb249ZnVuY3Rpb24obil7cmV0dXJuIHQoK24pfSxlfSgwKTtmdW5jdGlvbiBDeCh0LG4pe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9rPSgxLW4pLzZ9Q3gucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXsodGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjM9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsbil7c3dpdGNoKHQ9K3Qsbj0rbix0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTE7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Mix0aGlzLl95Mik6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDIsdGhpcy5feTIpO2JyZWFrO2Nhc2UgMzp0aGlzLl9wb2ludD00O2RlZmF1bHQ6VHgodGhpcyx0LG4pfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9bn19O3ZhciBQeD1mdW5jdGlvbiB0KG4pe2Z1bmN0aW9uIGUodCl7cmV0dXJuIG5ldyBDeCh0LG4pfXJldHVybiBlLnRlbnNpb249ZnVuY3Rpb24obil7cmV0dXJuIHQoK24pfSxlfSgwKTtmdW5jdGlvbiB6eCh0LG4sZSl7dmFyIHI9dC5feDEsaT10Ll95MSxvPXQuX3gyLGE9dC5feTI7aWYodC5fbDAxX2E+dW0pe3ZhciB1PTIqdC5fbDAxXzJhKzMqdC5fbDAxX2EqdC5fbDEyX2ErdC5fbDEyXzJhLGM9Myp0Ll9sMDFfYSoodC5fbDAxX2ErdC5fbDEyX2EpO3I9KHIqdS10Ll94MCp0Ll9sMTJfMmErdC5feDIqdC5fbDAxXzJhKS9jLGk9KGkqdS10Ll95MCp0Ll9sMTJfMmErdC5feTIqdC5fbDAxXzJhKS9jfWlmKHQuX2wyM19hPnVtKXt2YXIgZj0yKnQuX2wyM18yYSszKnQuX2wyM19hKnQuX2wxMl9hK3QuX2wxMl8yYSxzPTMqdC5fbDIzX2EqKHQuX2wyM19hK3QuX2wxMl9hKTtvPShvKmYrdC5feDEqdC5fbDIzXzJhLW4qdC5fbDEyXzJhKS9zLGE9KGEqZit0Ll95MSp0Ll9sMjNfMmEtZSp0Ll9sMTJfMmEpL3N9dC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKHIsaSxvLGEsdC5feDIsdC5feTIpfWZ1bmN0aW9uIER4KHQsbil7dGhpcy5fY29udGV4dD10LHRoaXMuX2FscGhhPW59RHgucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9TmFOLHRoaXMuX2wwMV9hPXRoaXMuX2wxMl9hPXRoaXMuX2wyM19hPXRoaXMuX2wwMV8yYT10aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhPXRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Mix0aGlzLl95Mik7YnJlYWs7Y2FzZSAzOnRoaXMucG9pbnQodGhpcy5feDIsdGhpcy5feTIpfSh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxuKXtpZih0PSt0LG49K24sdGhpcy5fcG9pbnQpe3ZhciBlPXRoaXMuX3gyLXQscj10aGlzLl95Mi1uO3RoaXMuX2wyM19hPU1hdGguc3FydCh0aGlzLl9sMjNfMmE9TWF0aC5wb3coZSplK3Iqcix0aGlzLl9hbHBoYSkpfXN3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0LG4pOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsbik7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTM7ZGVmYXVsdDp6eCh0aGlzLHQsbil9dGhpcy5fbDAxX2E9dGhpcy5fbDEyX2EsdGhpcy5fbDEyX2E9dGhpcy5fbDIzX2EsdGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYSx0aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhLHRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9bn19O3ZhciBSeD1mdW5jdGlvbiB0KG4pe2Z1bmN0aW9uIGUodCl7cmV0dXJuIG4/bmV3IER4KHQsbik6bmV3IFN4KHQsMCl9cmV0dXJuIGUuYWxwaGE9ZnVuY3Rpb24obil7cmV0dXJuIHQoK24pfSxlfSguNSk7ZnVuY3Rpb24gRngodCxuKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5fYWxwaGE9bn1GeC5wcm90b3R5cGU9e2FyZWFTdGFydDpfeCxhcmVhRW5kOl94LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3gzPXRoaXMuX3g0PXRoaXMuX3g1PXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPXRoaXMuX3kzPXRoaXMuX3k0PXRoaXMuX3k1PU5hTix0aGlzLl9sMDFfYT10aGlzLl9sMTJfYT10aGlzLl9sMjNfYT10aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYT10aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDE6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDMsdGhpcy5feTMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMzp0aGlzLnBvaW50KHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLnBvaW50KHRoaXMuX3g0LHRoaXMuX3k0KSx0aGlzLnBvaW50KHRoaXMuX3g1LHRoaXMuX3k1KX19LHBvaW50OmZ1bmN0aW9uKHQsbil7aWYodD0rdCxuPStuLHRoaXMuX3BvaW50KXt2YXIgZT10aGlzLl94Mi10LHI9dGhpcy5feTItbjt0aGlzLl9sMjNfYT1NYXRoLnNxcnQodGhpcy5fbDIzXzJhPU1hdGgucG93KGUqZStyKnIsdGhpcy5fYWxwaGEpKX1zd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX3gzPXQsdGhpcy5feTM9bjticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9Mix0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94ND10LHRoaXMuX3k0PW4pO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX3g1PXQsdGhpcy5feTU9bjticmVhaztkZWZhdWx0Onp4KHRoaXMsdCxuKX10aGlzLl9sMDFfYT10aGlzLl9sMTJfYSx0aGlzLl9sMTJfYT10aGlzLl9sMjNfYSx0aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhLHRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmEsdGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1ufX07dmFyIHF4PWZ1bmN0aW9uIHQobil7ZnVuY3Rpb24gZSh0KXtyZXR1cm4gbj9uZXcgRngodCxuKTpuZXcga3godCwwKX1yZXR1cm4gZS5hbHBoYT1mdW5jdGlvbihuKXtyZXR1cm4gdCgrbil9LGV9KC41KTtmdW5jdGlvbiBJeCh0LG4pe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9hbHBoYT1ufUl4LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPU5hTix0aGlzLl9sMDFfYT10aGlzLl9sMTJfYT10aGlzLl9sMjNfYT10aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYT10aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYzPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LG4pe2lmKHQ9K3Qsbj0rbix0aGlzLl9wb2ludCl7dmFyIGU9dGhpcy5feDItdCxyPXRoaXMuX3kyLW47dGhpcy5fbDIzX2E9TWF0aC5zcXJ0KHRoaXMuX2wyM18yYT1NYXRoLnBvdyhlKmUrcipyLHRoaXMuX2FscGhhKSl9c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94Mix0aGlzLl95Mik7YnJlYWs7Y2FzZSAzOnRoaXMuX3BvaW50PTQ7ZGVmYXVsdDp6eCh0aGlzLHQsbil9dGhpcy5fbDAxX2E9dGhpcy5fbDEyX2EsdGhpcy5fbDEyX2E9dGhpcy5fbDIzX2EsdGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYSx0aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhLHRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9bn19O3ZhciBPeD1mdW5jdGlvbiB0KG4pe2Z1bmN0aW9uIGUodCl7cmV0dXJuIG4/bmV3IEl4KHQsbik6bmV3IEN4KHQsMCl9cmV0dXJuIGUuYWxwaGE9ZnVuY3Rpb24obil7cmV0dXJuIHQoK24pfSxlfSguNSk7ZnVuY3Rpb24gVXgodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIEJ4KHQpe3JldHVybiB0PDA/LTE6MX1mdW5jdGlvbiBZeCh0LG4sZSl7dmFyIHI9dC5feDEtdC5feDAsaT1uLXQuX3gxLG89KHQuX3kxLXQuX3kwKS8ocnx8aTwwJiYtMCksYT0oZS10Ll95MSkvKGl8fHI8MCYmLTApLHU9KG8qaSthKnIpLyhyK2kpO3JldHVybihCeChvKStCeChhKSkqTWF0aC5taW4oTWF0aC5hYnMobyksTWF0aC5hYnMoYSksLjUqTWF0aC5hYnModSkpfHwwfWZ1bmN0aW9uIEx4KHQsbil7dmFyIGU9dC5feDEtdC5feDA7cmV0dXJuIGU/KDMqKHQuX3kxLXQuX3kwKS9lLW4pLzI6bn1mdW5jdGlvbiBqeCh0LG4sZSl7dmFyIHI9dC5feDAsaT10Ll95MCxvPXQuX3gxLGE9dC5feTEsdT0oby1yKS8zO3QuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhyK3UsaSt1Km4sby11LGEtdSplLG8sYSl9ZnVuY3Rpb24gJHgodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIEh4KHQpe3RoaXMuX2NvbnRleHQ9bmV3IFh4KHQpfWZ1bmN0aW9uIFh4KHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBHeCh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gVngodCl7dmFyIG4sZSxyPXQubGVuZ3RoLTEsaT1uZXcgQXJyYXkociksbz1uZXcgQXJyYXkociksYT1uZXcgQXJyYXkocik7Zm9yKGlbMF09MCxvWzBdPTIsYVswXT10WzBdKzIqdFsxXSxuPTE7bjxyLTE7KytuKWlbbl09MSxvW25dPTQsYVtuXT00KnRbbl0rMip0W24rMV07Zm9yKGlbci0xXT0yLG9bci0xXT03LGFbci0xXT04KnRbci0xXSt0W3JdLG49MTtuPHI7KytuKWU9aVtuXS9vW24tMV0sb1tuXS09ZSxhW25dLT1lKmFbbi0xXTtmb3IoaVtyLTFdPWFbci0xXS9vW3ItMV0sbj1yLTI7bj49MDstLW4paVtuXT0oYVtuXS1pW24rMV0pL29bbl07Zm9yKG9bci0xXT0odFtyXStpW3ItMV0pLzIsbj0wO248ci0xOysrbilvW25dPTIqdFtuKzFdLWlbbisxXTtyZXR1cm5baSxvXX1mdW5jdGlvbiBXeCh0LG4pe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl90PW59ZnVuY3Rpb24gWngodCxuKXtpZigoaT10Lmxlbmd0aCk+MSlmb3IodmFyIGUscixpLG89MSxhPXRbblswXV0sdT1hLmxlbmd0aDtvPGk7KytvKWZvcihyPWEsYT10W25bb11dLGU9MDtlPHU7KytlKWFbZV1bMV0rPWFbZV1bMF09aXNOYU4ocltlXVsxXSk/cltlXVswXTpyW2VdWzFdfWZ1bmN0aW9uIEt4KHQpe2Zvcih2YXIgbj10Lmxlbmd0aCxlPW5ldyBBcnJheShuKTstLW4+PTA7KWVbbl09bjtyZXR1cm4gZX1mdW5jdGlvbiBReCh0LG4pe3JldHVybiB0W25dfWZ1bmN0aW9uIEp4KHQpe2NvbnN0IG49W107cmV0dXJuIG4ua2V5PXQsbn1mdW5jdGlvbiB0dyh0KXt2YXIgbj10Lm1hcChudyk7cmV0dXJuIEt4KHQpLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5bdF0tbltlXX0pKX1mdW5jdGlvbiBudyh0KXtmb3IodmFyIG4sZT0tMSxyPTAsaT10Lmxlbmd0aCxvPS0xLzA7KytlPGk7KShuPSt0W2VdWzFdKT5vJiYobz1uLHI9ZSk7cmV0dXJuIHJ9ZnVuY3Rpb24gZXcodCl7dmFyIG49dC5tYXAocncpO3JldHVybiBLeCh0KS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiBuW3RdLW5bZV19KSl9ZnVuY3Rpb24gcncodCl7Zm9yKHZhciBuLGU9MCxyPS0xLGk9dC5sZW5ndGg7KytyPGk7KShuPSt0W3JdWzFdKSYmKGUrPW4pO3JldHVybiBlfVV4LnByb3RvdHlwZT17YXJlYVN0YXJ0Ol94LGFyZWFFbmQ6X3gsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3RoaXMuX3BvaW50JiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpfSxwb2ludDpmdW5jdGlvbih0LG4pe3Q9K3Qsbj0rbix0aGlzLl9wb2ludD90aGlzLl9jb250ZXh0LmxpbmVUbyh0LG4pOih0aGlzLl9wb2ludD0xLHRoaXMuX2NvbnRleHQubW92ZVRvKHQsbikpfX0sJHgucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5fdDA9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94MSx0aGlzLl95MSk7YnJlYWs7Y2FzZSAzOmp4KHRoaXMsdGhpcy5fdDAsTHgodGhpcyx0aGlzLl90MCkpfSh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxuKXt2YXIgZT1OYU47aWYobj0rbiwodD0rdCkhPT10aGlzLl94MXx8biE9PXRoaXMuX3kxKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxuKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LG4pO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLGp4KHRoaXMsTHgodGhpcyxlPVl4KHRoaXMsdCxuKSksZSk7YnJlYWs7ZGVmYXVsdDpqeCh0aGlzLHRoaXMuX3QwLGU9WXgodGhpcyx0LG4pKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPW4sdGhpcy5fdDA9ZX19fSwoSHgucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoJHgucHJvdG90eXBlKSkucG9pbnQ9ZnVuY3Rpb24odCxuKXskeC5wcm90b3R5cGUucG9pbnQuY2FsbCh0aGlzLG4sdCl9LFh4LnByb3RvdHlwZT17bW92ZVRvOmZ1bmN0aW9uKHQsbil7dGhpcy5fY29udGV4dC5tb3ZlVG8obix0KX0sY2xvc2VQYXRoOmZ1bmN0aW9uKCl7dGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKX0sbGluZVRvOmZ1bmN0aW9uKHQsbil7dGhpcy5fY29udGV4dC5saW5lVG8obix0KX0sYmV6aWVyQ3VydmVUbzpmdW5jdGlvbih0LG4sZSxyLGksbyl7dGhpcy5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKG4sdCxyLGUsbyxpKX19LEd4LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3g9W10sdGhpcy5feT1bXX0sbGluZUVuZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3gsbj10aGlzLl95LGU9dC5sZW5ndGg7aWYoZSlpZih0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHRbMF0sblswXSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odFswXSxuWzBdKSwyPT09ZSl0aGlzLl9jb250ZXh0LmxpbmVUbyh0WzFdLG5bMV0pO2Vsc2UgZm9yKHZhciByPVZ4KHQpLGk9Vngobiksbz0wLGE9MTthPGU7KytvLCsrYSl0aGlzLl9jb250ZXh0LmJlemllckN1cnZlVG8oclswXVtvXSxpWzBdW29dLHJbMV1bb10saVsxXVtvXSx0W2FdLG5bYV0pOyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PWUpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lLHRoaXMuX3g9dGhpcy5feT1udWxsfSxwb2ludDpmdW5jdGlvbih0LG4pe3RoaXMuX3gucHVzaCgrdCksdGhpcy5feS5wdXNoKCtuKX19LFd4LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3g9dGhpcy5feT1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpezA8dGhpcy5fdCYmdGhpcy5fdDwxJiYyPT09dGhpcy5fcG9pbnQmJnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gsdGhpcy5feSksKHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYxPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU+PTAmJih0aGlzLl90PTEtdGhpcy5fdCx0aGlzLl9saW5lPTEtdGhpcy5fbGluZSl9LHBvaW50OmZ1bmN0aW9uKHQsbil7c3dpdGNoKHQ9K3Qsbj0rbix0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0LG4pOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsbik7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7ZGVmYXVsdDppZih0aGlzLl90PD0wKXRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gsbiksdGhpcy5fY29udGV4dC5saW5lVG8odCxuKTtlbHNle3ZhciBlPXRoaXMuX3gqKDEtdGhpcy5fdCkrdCp0aGlzLl90O3RoaXMuX2NvbnRleHQubGluZVRvKGUsdGhpcy5feSksdGhpcy5fY29udGV4dC5saW5lVG8oZSxuKX19dGhpcy5feD10LHRoaXMuX3k9bn19O3ZhciBpdz10PT4oKT0+dDtmdW5jdGlvbiBvdyh0LHtzb3VyY2VFdmVudDpuLHRhcmdldDplLHRyYW5zZm9ybTpyLGRpc3BhdGNoOml9KXtPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0aGlzLHt0eXBlOnt2YWx1ZTp0LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSxzb3VyY2VFdmVudDp7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0sdGFyZ2V0Ont2YWx1ZTplLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSx0cmFuc2Zvcm06e3ZhbHVlOnIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9LF86e3ZhbHVlOml9fSl9ZnVuY3Rpb24gYXcodCxuLGUpe3RoaXMuaz10LHRoaXMueD1uLHRoaXMueT1lfWF3LnByb3RvdHlwZT17Y29uc3RydWN0b3I6YXcsc2NhbGU6ZnVuY3Rpb24odCl7cmV0dXJuIDE9PT10P3RoaXM6bmV3IGF3KHRoaXMuayp0LHRoaXMueCx0aGlzLnkpfSx0cmFuc2xhdGU6ZnVuY3Rpb24odCxuKXtyZXR1cm4gMD09PXQmMD09PW4/dGhpczpuZXcgYXcodGhpcy5rLHRoaXMueCt0aGlzLmsqdCx0aGlzLnkrdGhpcy5rKm4pfSxhcHBseTpmdW5jdGlvbih0KXtyZXR1cm5bdFswXSp0aGlzLmsrdGhpcy54LHRbMV0qdGhpcy5rK3RoaXMueV19LGFwcGx5WDpmdW5jdGlvbih0KXtyZXR1cm4gdCp0aGlzLmsrdGhpcy54fSxhcHBseVk6ZnVuY3Rpb24odCl7cmV0dXJuIHQqdGhpcy5rK3RoaXMueX0saW52ZXJ0OmZ1bmN0aW9uKHQpe3JldHVyblsodFswXS10aGlzLngpL3RoaXMuaywodFsxXS10aGlzLnkpL3RoaXMua119LGludmVydFg6ZnVuY3Rpb24odCl7cmV0dXJuKHQtdGhpcy54KS90aGlzLmt9LGludmVydFk6ZnVuY3Rpb24odCl7cmV0dXJuKHQtdGhpcy55KS90aGlzLmt9LHJlc2NhbGVYOmZ1bmN0aW9uKHQpe3JldHVybiB0LmNvcHkoKS5kb21haW4odC5yYW5nZSgpLm1hcCh0aGlzLmludmVydFgsdGhpcykubWFwKHQuaW52ZXJ0LHQpKX0scmVzY2FsZVk6ZnVuY3Rpb24odCl7cmV0dXJuIHQuY29weSgpLmRvbWFpbih0LnJhbmdlKCkubWFwKHRoaXMuaW52ZXJ0WSx0aGlzKS5tYXAodC5pbnZlcnQsdCkpfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiJ0cmFuc2xhdGUoIit0aGlzLngrIiwiK3RoaXMueSsiKSBzY2FsZSgiK3RoaXMuaysiKSJ9fTt2YXIgdXc9bmV3IGF3KDEsMCwwKTtmdW5jdGlvbiBjdyh0KXtmb3IoOyF0Ll9fem9vbTspaWYoISh0PXQucGFyZW50Tm9kZSkpcmV0dXJuIHV3O3JldHVybiB0Ll9fem9vbX1mdW5jdGlvbiBmdyh0KXt0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIHN3KHQpe3QucHJldmVudERlZmF1bHQoKSx0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIGx3KHQpe3JldHVybiEodC5jdHJsS2V5JiYid2hlZWwiIT09dC50eXBlfHx0LmJ1dHRvbil9ZnVuY3Rpb24gaHcoKXt2YXIgdD10aGlzO3JldHVybiB0IGluc3RhbmNlb2YgU1ZHRWxlbWVudD8odD10Lm93bmVyU1ZHRWxlbWVudHx8dCkuaGFzQXR0cmlidXRlKCJ2aWV3Qm94Iik/W1sodD10LnZpZXdCb3guYmFzZVZhbCkueCx0LnldLFt0LngrdC53aWR0aCx0LnkrdC5oZWlnaHRdXTpbWzAsMF0sW3Qud2lkdGguYmFzZVZhbC52YWx1ZSx0LmhlaWdodC5iYXNlVmFsLnZhbHVlXV06W1swLDBdLFt0LmNsaWVudFdpZHRoLHQuY2xpZW50SGVpZ2h0XV19ZnVuY3Rpb24gZHcoKXtyZXR1cm4gdGhpcy5fX3pvb218fHV3fWZ1bmN0aW9uIHB3KHQpe3JldHVybi10LmRlbHRhWSooMT09PXQuZGVsdGFNb2RlPy4wNTp0LmRlbHRhTW9kZT8xOi4wMDIpKih0LmN0cmxLZXk/MTA6MSl9ZnVuY3Rpb24gZ3coKXtyZXR1cm4gbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzfHwib250b3VjaHN0YXJ0ImluIHRoaXN9ZnVuY3Rpb24geXcodCxuLGUpe3ZhciByPXQuaW52ZXJ0WChuWzBdWzBdKS1lWzBdWzBdLGk9dC5pbnZlcnRYKG5bMV1bMF0pLWVbMV1bMF0sbz10LmludmVydFkoblswXVsxXSktZVswXVsxXSxhPXQuaW52ZXJ0WShuWzFdWzFdKS1lWzFdWzFdO3JldHVybiB0LnRyYW5zbGF0ZShpPnI/KHIraSkvMjpNYXRoLm1pbigwLHIpfHxNYXRoLm1heCgwLGkpLGE+bz8obythKS8yOk1hdGgubWluKDAsbyl8fE1hdGgubWF4KDAsYSkpfWN3LnByb3RvdHlwZT1hdy5wcm90b3R5cGUsdC5BZGRlcj1ULHQuRGVsYXVuYXk9a3UsdC5Gb3JtYXRTcGVjaWZpZXI9UmMsdC5JbnRlcm5NYXA9SW50ZXJuTWFwLHQuSW50ZXJuU2V0PUludGVyblNldCx0Lk5vZGU9RWQsdC5Wb3Jvbm9pPXd1LHQuWm9vbVRyYW5zZm9ybT1hdyx0LmFjdGl2ZT1mdW5jdGlvbih0LG4pe3ZhciBlLHIsaT10Ll9fdHJhbnNpdGlvbjtpZihpKWZvcihyIGluIG49bnVsbD09bj9udWxsOm4rIiIsaSlpZigoZT1pW3JdKS5zdGF0ZT4xJiZlLm5hbWU9PT1uKXJldHVybiBuZXcgbG8oW1t0XV0sQm8sbiwrcik7cmV0dXJuIG51bGx9LHQuYXJjPWZ1bmN0aW9uKCl7dmFyIHQ9ZG0sbj1wbSxlPUpiKDApLHI9bnVsbCxpPWdtLG89eW0sYT12bSx1PW51bGw7ZnVuY3Rpb24gYygpe3ZhciBjLGYscz0rdC5hcHBseSh0aGlzLGFyZ3VtZW50cyksbD0rbi5hcHBseSh0aGlzLGFyZ3VtZW50cyksaD1pLmFwcGx5KHRoaXMsYXJndW1lbnRzKS1mbSxkPW8uYXBwbHkodGhpcyxhcmd1bWVudHMpLWZtLHA9dG0oZC1oKSxnPWQ+aDtpZih1fHwodT1jPVBhKCkpLGw8cyYmKGY9bCxsPXMscz1mKSxsPnVtKWlmKHA+c20tdW0pdS5tb3ZlVG8obCplbShoKSxsKm9tKGgpKSx1LmFyYygwLDAsbCxoLGQsIWcpLHM+dW0mJih1Lm1vdmVUbyhzKmVtKGQpLHMqb20oZCkpLHUuYXJjKDAsMCxzLGQsaCxnKSk7ZWxzZXt2YXIgeSx2LF89aCxiPWQsbT1oLHg9ZCx3PXAsTT1wLEE9YS5hcHBseSh0aGlzLGFyZ3VtZW50cykvMixUPUE+dW0mJihyPytyLmFwcGx5KHRoaXMsYXJndW1lbnRzKTphbShzKnMrbCpsKSksUz1pbSh0bShsLXMpLzIsK2UuYXBwbHkodGhpcyxhcmd1bWVudHMpKSxFPVMsaz1TO2lmKFQ+dW0pe3ZhciBOPWhtKFQvcypvbShBKSksQz1obShUL2wqb20oQSkpOyh3LT0yKk4pPnVtPyhtKz1OKj1nPzE6LTEseC09Tik6KHc9MCxtPXg9KGgrZCkvMiksKE0tPTIqQyk+dW0/KF8rPUMqPWc/MTotMSxiLT1DKTooTT0wLF89Yj0oaCtkKS8yKX12YXIgUD1sKmVtKF8pLHo9bCpvbShfKSxEPXMqZW0oeCksUj1zKm9tKHgpO2lmKFM+dW0pe3ZhciBGLHE9bCplbShiKSxJPWwqb20oYiksTz1zKmVtKG0pLFU9cypvbShtKTtpZihwPGNtJiYoRj1fbShQLHosTyxVLHEsSSxELFIpKSl7dmFyIEI9UC1GWzBdLFk9ei1GWzFdLEw9cS1GWzBdLGo9SS1GWzFdLCQ9MS9vbShsbSgoQipMK1kqaikvKGFtKEIqQitZKlkpKmFtKEwqTCtqKmopKSkvMiksSD1hbShGWzBdKkZbMF0rRlsxXSpGWzFdKTtFPWltKFMsKHMtSCkvKCQtMSkpLGs9aW0oUywobC1IKS8oJCsxKSl9fU0+dW0/az51bT8oeT1ibShPLFUsUCx6LGwsayxnKSx2PWJtKHEsSSxELFIsbCxrLGcpLHUubW92ZVRvKHkuY3greS54MDEseS5jeSt5LnkwMSksazxTP3UuYXJjKHkuY3gseS5jeSxrLG5tKHkueTAxLHkueDAxKSxubSh2LnkwMSx2LngwMSksIWcpOih1LmFyYyh5LmN4LHkuY3ksayxubSh5LnkwMSx5LngwMSksbm0oeS55MTEseS54MTEpLCFnKSx1LmFyYygwLDAsbCxubSh5LmN5K3kueTExLHkuY3greS54MTEpLG5tKHYuY3krdi55MTEsdi5jeCt2LngxMSksIWcpLHUuYXJjKHYuY3gsdi5jeSxrLG5tKHYueTExLHYueDExKSxubSh2LnkwMSx2LngwMSksIWcpKSk6KHUubW92ZVRvKFAseiksdS5hcmMoMCwwLGwsXyxiLCFnKSk6dS5tb3ZlVG8oUCx6KSxzPnVtJiZ3PnVtP0U+dW0/KHk9Ym0oRCxSLHEsSSxzLC1FLGcpLHY9Ym0oUCx6LE8sVSxzLC1FLGcpLHUubGluZVRvKHkuY3greS54MDEseS5jeSt5LnkwMSksRTxTP3UuYXJjKHkuY3gseS5jeSxFLG5tKHkueTAxLHkueDAxKSxubSh2LnkwMSx2LngwMSksIWcpOih1LmFyYyh5LmN4LHkuY3ksRSxubSh5LnkwMSx5LngwMSksbm0oeS55MTEseS54MTEpLCFnKSx1LmFyYygwLDAscyxubSh5LmN5K3kueTExLHkuY3greS54MTEpLG5tKHYuY3krdi55MTEsdi5jeCt2LngxMSksZyksdS5hcmModi5jeCx2LmN5LEUsbm0odi55MTEsdi54MTEpLG5tKHYueTAxLHYueDAxKSwhZykpKTp1LmFyYygwLDAscyx4LG0sZyk6dS5saW5lVG8oRCxSKX1lbHNlIHUubW92ZVRvKDAsMCk7aWYodS5jbG9zZVBhdGgoKSxjKXJldHVybiB1PW51bGwsYysiInx8bnVsbH1yZXR1cm4gYy5jZW50cm9pZD1mdW5jdGlvbigpe3ZhciBlPSgrdC5hcHBseSh0aGlzLGFyZ3VtZW50cykrICtuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSkvMixyPSgraS5hcHBseSh0aGlzLGFyZ3VtZW50cykrICtvLmFwcGx5KHRoaXMsYXJndW1lbnRzKSkvMi1jbS8yO3JldHVybltlbShyKSplLG9tKHIpKmVdfSxjLmlubmVyUmFkaXVzPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBuP246SmIoK24pLGMpOnR9LGMub3V0ZXJSYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpKYigrdCksYyk6bn0sYy5jb3JuZXJSYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpKYigrdCksYyk6ZX0sYy5wYWRSYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9bnVsbD09dD9udWxsOiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6SmIoK3QpLGMpOnJ9LGMuc3RhcnRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkpiKCt0KSxjKTppfSxjLmVuZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6SmIoK3QpLGMpOm99LGMucGFkQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpKYigrdCksYyk6YX0sYy5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PW51bGw9PXQ/bnVsbDp0LGMpOnV9LGN9LHQuYXJlYT1FbSx0LmFyZWFSYWRpYWw9Rm0sdC5hc2NlbmRpbmc9bix0LmF1dG9UeXBlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgbiBpbiB0KXt2YXIgZSxyLGk9dFtuXS50cmltKCk7aWYoaSlpZigidHJ1ZSI9PT1pKWk9ITA7ZWxzZSBpZigiZmFsc2UiPT09aSlpPSExO2Vsc2UgaWYoIk5hTiI9PT1pKWk9TmFOO2Vsc2UgaWYoaXNOYU4oZT0raSkpe2lmKCEocj1pLm1hdGNoKC9eKFstK11cZHsyfSk/XGR7NH0oLVxkezJ9KC1cZHsyfSk/KT8oVFxkezJ9OlxkezJ9KDpcZHsyfShcLlxkezN9KT8pPyhafFstK11cZHsyfTpcZHsyfSk/KT8kLykpKWNvbnRpbnVlO1F1JiZyWzRdJiYhcls3XSYmKGk9aS5yZXBsYWNlKC8tL2csIi8iKS5yZXBsYWNlKC9ULywiICIpKSxpPW5ldyBEYXRlKGkpfWVsc2UgaT1lO2Vsc2UgaT1udWxsO3Rbbl09aX1yZXR1cm4gdH0sdC5heGlzQm90dG9tPWZ1bmN0aW9uKHQpe3JldHVybiBFdCgzLHQpfSx0LmF4aXNMZWZ0PWZ1bmN0aW9uKHQpe3JldHVybiBFdCg0LHQpfSx0LmF4aXNSaWdodD1mdW5jdGlvbih0KXtyZXR1cm4gRXQoMix0KX0sdC5heGlzVG9wPWZ1bmN0aW9uKHQpe3JldHVybiBFdCgxLHQpfSx0LmJpbj1RLHQuYmlzZWN0PWwsdC5iaXNlY3RDZW50ZXI9cyx0LmJpc2VjdExlZnQ9Zix0LmJpc2VjdFJpZ2h0PWMsdC5iaXNlY3Rvcj1yLHQuYmxvYj1mdW5jdGlvbih0LG4pe3JldHVybiBmZXRjaCh0LG4pLnRoZW4oSnUpfSx0LmJsdXI9ZnVuY3Rpb24odCxuKXtpZighKChuPStuKT49MCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoImludmFsaWQgciIpO2xldCBlPXQubGVuZ3RoO2lmKCEoKGU9TWF0aC5mbG9vcihlKSk+PTApKXRocm93IG5ldyBSYW5nZUVycm9yKCJpbnZhbGlkIGxlbmd0aCIpO2lmKCFlfHwhbilyZXR1cm4gdDtjb25zdCByPXYobiksaT10LnNsaWNlKCk7cmV0dXJuIHIodCxpLDAsZSwxKSxyKGksdCwwLGUsMSkscih0LGksMCxlLDEpLHR9LHQuYmx1cjI9aCx0LmJsdXJJbWFnZT1kLHQuYnJ1c2g9ZnVuY3Rpb24oKXtyZXR1cm4gcGEoZWEpfSx0LmJydXNoU2VsZWN0aW9uPWZ1bmN0aW9uKHQpe3ZhciBuPXQuX19icnVzaDtyZXR1cm4gbj9uLmRpbS5vdXRwdXQobi5zZWxlY3Rpb24pOm51bGx9LHQuYnJ1c2hYPWZ1bmN0aW9uKCl7cmV0dXJuIHBhKHRhKX0sdC5icnVzaFk9ZnVuY3Rpb24oKXtyZXR1cm4gcGEobmEpfSx0LmJ1ZmZlcj1mdW5jdGlvbih0LG4pe3JldHVybiBmZXRjaCh0LG4pLnRoZW4odGMpfSx0LmNob3JkPWZ1bmN0aW9uKCl7cmV0dXJuIFRhKCExLCExKX0sdC5jaG9yZERpcmVjdGVkPWZ1bmN0aW9uKCl7cmV0dXJuIFRhKCEwLCExKX0sdC5jaG9yZFRyYW5zcG9zZT1mdW5jdGlvbigpe3JldHVybiBUYSghMSwhMCl9LHQuY2x1c3Rlcj1mdW5jdGlvbigpe3ZhciB0PV9kLG49MSxlPTEscj0hMTtmdW5jdGlvbiBpKGkpe3ZhciBvLGE9MDtpLmVhY2hBZnRlcigoZnVuY3Rpb24obil7dmFyIGU9bi5jaGlsZHJlbjtlPyhuLng9ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVkdWNlKGJkLDApL3QubGVuZ3RofShlKSxuLnk9ZnVuY3Rpb24odCl7cmV0dXJuIDErdC5yZWR1Y2UobWQsMCl9KGUpKToobi54PW8/YSs9dChuLG8pOjAsbi55PTAsbz1uKX0pKTt2YXIgdT1mdW5jdGlvbih0KXtmb3IodmFyIG47bj10LmNoaWxkcmVuOyl0PW5bMF07cmV0dXJuIHR9KGkpLGM9ZnVuY3Rpb24odCl7Zm9yKHZhciBuO249dC5jaGlsZHJlbjspdD1uW24ubGVuZ3RoLTFdO3JldHVybiB0fShpKSxmPXUueC10KHUsYykvMixzPWMueCt0KGMsdSkvMjtyZXR1cm4gaS5lYWNoQWZ0ZXIocj9mdW5jdGlvbih0KXt0Lng9KHQueC1pLngpKm4sdC55PShpLnktdC55KSplfTpmdW5jdGlvbih0KXt0Lng9KHQueC1mKS8ocy1mKSpuLHQueT0oMS0oaS55P3QueS9pLnk6MSkpKmV9KX1yZXR1cm4gaS5zZXBhcmF0aW9uPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PW4saSk6dH0saS5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSExLG49K3RbMF0sZT0rdFsxXSxpKTpyP251bGw6W24sZV19LGkubm9kZVNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ITAsbj0rdFswXSxlPSt0WzFdLGkpOnI/W24sZV06bnVsbH0saX0sdC5jb2xvcj1QZSx0LmNvbnRvdXJEZW5zaXR5PWZ1bmN0aW9uKCl7dmFyIHQ9S2Esbj1RYSxlPUphLHI9OTYwLGk9NTAwLG89MjAsYT0yLHU9MypvLGM9cisyKnU+PmEsZj1pKzIqdT4+YSxzPSRhKDIwKTtmdW5jdGlvbiBsKHIpe3ZhciBpPW5ldyBGbG9hdDMyQXJyYXkoYypmKSxzPU1hdGgucG93KDIsLWEpLGw9LTE7Zm9yKGNvbnN0IG8gb2Ygcil7dmFyIGQ9KHQobywrK2wscikrdSkqcyxwPShuKG8sbCxyKSt1KSpzLGc9K2UobyxsLHIpO2lmKGQ+PTAmJmQ8YyYmcD49MCYmcDxmKXt2YXIgeT1NYXRoLmZsb29yKGQpLHY9TWF0aC5mbG9vcihwKSxfPWQteS0uNSxiPXAtdi0uNTtpW3krdipjXSs9KDEtXykqKDEtYikqZyxpW3krMSt2KmNdKz1fKigxLWIpKmcsaVt5KzErKHYrMSkqY10rPV8qYipnLGlbeSsodisxKSpjXSs9KDEtXykqYipnfX1yZXR1cm4gaCh7ZGF0YTppLHdpZHRoOmMsaGVpZ2h0OmZ9LG8qcyksaX1mdW5jdGlvbiBkKHQpe3ZhciBuPWwodCksZT1zKG4pLHI9TWF0aC5wb3coMiwyKmEpO3JldHVybiBBcnJheS5pc0FycmF5KGUpfHwoZT1HKE51bWJlci5NSU5fVkFMVUUsSihuKS9yLGUpKSxaYSgpLnNpemUoW2MsZl0pLnRocmVzaG9sZHMoZS5tYXAoKHQ9PnQqcikpKShuKS5tYXAoKCh0LG4pPT4odC52YWx1ZT0rZVtuXSxwKHQpKSkpfWZ1bmN0aW9uIHAodCl7cmV0dXJuIHQuY29vcmRpbmF0ZXMuZm9yRWFjaChnKSx0fWZ1bmN0aW9uIGcodCl7dC5mb3JFYWNoKHkpfWZ1bmN0aW9uIHkodCl7dC5mb3JFYWNoKHYpfWZ1bmN0aW9uIHYodCl7dFswXT10WzBdKk1hdGgucG93KDIsYSktdSx0WzFdPXRbMV0qTWF0aC5wb3coMixhKS11fWZ1bmN0aW9uIF8oKXtyZXR1cm4gYz1yKzIqKHU9MypvKT4+YSxmPWkrMip1Pj5hLGR9cmV0dXJuIGQuY29udG91cnM9ZnVuY3Rpb24odCl7dmFyIG49bCh0KSxlPVphKCkuc2l6ZShbYyxmXSkscj1NYXRoLnBvdygyLDIqYSksaT10PT57dD0rdDt2YXIgaT1wKGUuY29udG91cihuLHQqcikpO3JldHVybiBpLnZhbHVlPXQsaX07cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpLCJtYXgiLHtnZXQ6KCk9Pkoobikvcn0pLGl9LGQueD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOiRhKCtuKSxkKTp0fSxkLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDokYSgrdCksZCk6bn0sZC53ZWlnaHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDokYSgrdCksZCk6ZX0sZC5zaXplPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybltyLGldO3ZhciBuPSt0WzBdLGU9K3RbMV07aWYoIShuPj0wJiZlPj0wKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgc2l6ZSIpO3JldHVybiByPW4saT1lLF8oKX0sZC5jZWxsU2l6ZT1mdW5jdGlvbih0KXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gMTw8YTtpZighKCh0PSt0KT49MSkpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNlbGwgc2l6ZSIpO3JldHVybiBhPU1hdGguZmxvb3IoTWF0aC5sb2codCkvTWF0aC5MTjIpLF8oKX0sZC50aHJlc2hvbGRzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6QXJyYXkuaXNBcnJheSh0KT8kYShMYS5jYWxsKHQpKTokYSh0KSxkKTpzfSxkLmJhbmR3aWR0aD1mdW5jdGlvbih0KXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gTWF0aC5zcXJ0KG8qKG8rMSkpO2lmKCEoKHQ9K3QpPj0wKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgYmFuZHdpZHRoIik7cmV0dXJuIG89KE1hdGguc3FydCg0KnQqdCsxKS0xKS8yLF8oKX0sZH0sdC5jb250b3Vycz1aYSx0LmNvdW50PV8sdC5jcmVhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIFduKFV0KHQpLmNhbGwoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSl9LHQuY3JlYXRvcj1VdCx0LmNyb3NzPWZ1bmN0aW9uKC4uLnQpe2NvbnN0IG49ImZ1bmN0aW9uIj09dHlwZW9mIHRbdC5sZW5ndGgtMV0mJmZ1bmN0aW9uKHQpe3JldHVybiBuPT50KC4uLm4pfSh0LnBvcCgpKSxlPSh0PXQubWFwKHgpKS5tYXAoYikscj10Lmxlbmd0aC0xLGk9bmV3IEFycmF5KHIrMSkuZmlsbCgwKSxvPVtdO2lmKHI8MHx8ZS5zb21lKG0pKXJldHVybiBvO2Zvcig7Oyl7by5wdXNoKGkubWFwKCgobixlKT0+dFtlXVtuXSkpKTtsZXQgYT1yO2Zvcig7KytpW2FdPT09ZVthXTspe2lmKDA9PT1hKXJldHVybiBuP28ubWFwKG4pOm87aVthLS1dPTB9fX0sdC5jc3Y9aWMsdC5jc3ZGb3JtYXQ9VXUsdC5jc3ZGb3JtYXRCb2R5PUJ1LHQuY3N2Rm9ybWF0Um93PUx1LHQuY3N2Rm9ybWF0Um93cz1ZdSx0LmNzdkZvcm1hdFZhbHVlPWp1LHQuY3N2UGFyc2U9SXUsdC5jc3ZQYXJzZVJvd3M9T3UsdC5jdWJlaGVsaXg9d3IsdC5jdW1zdW09ZnVuY3Rpb24odCxuKXt2YXIgZT0wLHI9MDtyZXR1cm4gRmxvYXQ2NEFycmF5LmZyb20odCx2b2lkIDA9PT1uP3Q9PmUrPSt0fHwwOmk9PmUrPStuKGkscisrLHQpfHwwKX0sdC5jdXJ2ZUJhc2lzPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgbXgodCl9LHQuY3VydmVCYXNpc0Nsb3NlZD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IHh4KHQpfSx0LmN1cnZlQmFzaXNPcGVuPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgd3godCl9LHQuY3VydmVCdW1wWD1VbSx0LmN1cnZlQnVtcFk9Qm0sdC5jdXJ2ZUJ1bmRsZT1BeCx0LmN1cnZlQ2FyZGluYWw9RXgsdC5jdXJ2ZUNhcmRpbmFsQ2xvc2VkPU54LHQuY3VydmVDYXJkaW5hbE9wZW49UHgsdC5jdXJ2ZUNhdG11bGxSb209UngsdC5jdXJ2ZUNhdG11bGxSb21DbG9zZWQ9cXgsdC5jdXJ2ZUNhdG11bGxSb21PcGVuPU94LHQuY3VydmVMaW5lYXI9TW0sdC5jdXJ2ZUxpbmVhckNsb3NlZD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IFV4KHQpfSx0LmN1cnZlTW9ub3RvbmVYPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgJHgodCl9LHQuY3VydmVNb25vdG9uZVk9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBIeCh0KX0sdC5jdXJ2ZU5hdHVyYWw9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBHeCh0KX0sdC5jdXJ2ZVN0ZXA9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBXeCh0LC41KX0sdC5jdXJ2ZVN0ZXBBZnRlcj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IFd4KHQsMSl9LHQuY3VydmVTdGVwQmVmb3JlPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgV3godCwwKX0sdC5kZXNjZW5kaW5nPWUsdC5kZXZpYXRpb249TSx0LmRpZmZlcmVuY2U9ZnVuY3Rpb24odCwuLi5uKXt0PW5ldyBJbnRlcm5TZXQodCk7Zm9yKGNvbnN0IGUgb2Ygbilmb3IoY29uc3QgbiBvZiBlKXQuZGVsZXRlKG4pO3JldHVybiB0fSx0LmRpc2pvaW50PWZ1bmN0aW9uKHQsbil7Y29uc3QgZT1uW1N5bWJvbC5pdGVyYXRvcl0oKSxyPW5ldyBJbnRlcm5TZXQ7Zm9yKGNvbnN0IG4gb2YgdCl7aWYoci5oYXMobikpcmV0dXJuITE7bGV0IHQsaTtmb3IoOyh7dmFsdWU6dCxkb25lOml9PWUubmV4dCgpKSYmIWk7KXtpZihPYmplY3QuaXMobix0KSlyZXR1cm4hMTtyLmFkZCh0KX19cmV0dXJuITB9LHQuZGlzcGF0Y2g9TnQsdC5kcmFnPWZ1bmN0aW9uKCl7dmFyIHQsbixlLHIsaT1mZSxvPXNlLGE9bGUsdT1oZSxjPXt9LGY9TnQoInN0YXJ0IiwiZHJhZyIsImVuZCIpLHM9MCxsPTA7ZnVuY3Rpb24gaCh0KXt0Lm9uKCJtb3VzZWRvd24uZHJhZyIsZCkuZmlsdGVyKHUpLm9uKCJ0b3VjaHN0YXJ0LmRyYWciLHkpLm9uKCJ0b3VjaG1vdmUuZHJhZyIsdixuZSkub24oInRvdWNoZW5kLmRyYWcgdG91Y2hjYW5jZWwuZHJhZyIsXykuc3R5bGUoInRvdWNoLWFjdGlvbiIsIm5vbmUiKS5zdHlsZSgiLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yIiwicmdiYSgwLDAsMCwwKSIpfWZ1bmN0aW9uIGQoYSx1KXtpZighciYmaS5jYWxsKHRoaXMsYSx1KSl7dmFyIGM9Yih0aGlzLG8uY2FsbCh0aGlzLGEsdSksYSx1LCJtb3VzZSIpO2MmJihXbihhLnZpZXcpLm9uKCJtb3VzZW1vdmUuZHJhZyIscCxlZSkub24oIm1vdXNldXAuZHJhZyIsZyxlZSksb2UoYS52aWV3KSxyZShhKSxlPSExLHQ9YS5jbGllbnRYLG49YS5jbGllbnRZLGMoInN0YXJ0IixhKSl9fWZ1bmN0aW9uIHAocil7aWYoaWUociksIWUpe3ZhciBpPXIuY2xpZW50WC10LG89ci5jbGllbnRZLW47ZT1pKmkrbypvPmx9Yy5tb3VzZSgiZHJhZyIscil9ZnVuY3Rpb24gZyh0KXtXbih0LnZpZXcpLm9uKCJtb3VzZW1vdmUuZHJhZyBtb3VzZXVwLmRyYWciLG51bGwpLGFlKHQudmlldyxlKSxpZSh0KSxjLm1vdXNlKCJlbmQiLHQpfWZ1bmN0aW9uIHkodCxuKXtpZihpLmNhbGwodGhpcyx0LG4pKXt2YXIgZSxyLGE9dC5jaGFuZ2VkVG91Y2hlcyx1PW8uY2FsbCh0aGlzLHQsbiksYz1hLmxlbmd0aDtmb3IoZT0wO2U8YzsrK2UpKHI9Yih0aGlzLHUsdCxuLGFbZV0uaWRlbnRpZmllcixhW2VdKSkmJihyZSh0KSxyKCJzdGFydCIsdCxhW2VdKSl9fWZ1bmN0aW9uIHYodCl7dmFyIG4sZSxyPXQuY2hhbmdlZFRvdWNoZXMsaT1yLmxlbmd0aDtmb3Iobj0wO248aTsrK24pKGU9Y1tyW25dLmlkZW50aWZpZXJdKSYmKGllKHQpLGUoImRyYWciLHQscltuXSkpfWZ1bmN0aW9uIF8odCl7dmFyIG4sZSxpPXQuY2hhbmdlZFRvdWNoZXMsbz1pLmxlbmd0aDtmb3IociYmY2xlYXJUaW1lb3V0KHIpLHI9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtyPW51bGx9KSw1MDApLG49MDtuPG87KytuKShlPWNbaVtuXS5pZGVudGlmaWVyXSkmJihyZSh0KSxlKCJlbmQiLHQsaVtuXSkpfWZ1bmN0aW9uIGIodCxuLGUscixpLG8pe3ZhciB1LGwsZCxwPWYuY29weSgpLGc9dGUob3x8ZSxuKTtpZihudWxsIT0oZD1hLmNhbGwodCxuZXcgY2UoImJlZm9yZXN0YXJ0Iix7c291cmNlRXZlbnQ6ZSx0YXJnZXQ6aCxpZGVudGlmaWVyOmksYWN0aXZlOnMseDpnWzBdLHk6Z1sxXSxkeDowLGR5OjAsZGlzcGF0Y2g6cH0pLHIpKSlyZXR1cm4gdT1kLngtZ1swXXx8MCxsPWQueS1nWzFdfHwwLGZ1bmN0aW9uIGUobyxhLGYpe3ZhciB5LHY9Zztzd2l0Y2gobyl7Y2FzZSJzdGFydCI6Y1tpXT1lLHk9cysrO2JyZWFrO2Nhc2UiZW5kIjpkZWxldGUgY1tpXSwtLXM7Y2FzZSJkcmFnIjpnPXRlKGZ8fGEsbikseT1zfXAuY2FsbChvLHQsbmV3IGNlKG8se3NvdXJjZUV2ZW50OmEsc3ViamVjdDpkLHRhcmdldDpoLGlkZW50aWZpZXI6aSxhY3RpdmU6eSx4OmdbMF0rdSx5OmdbMV0rbCxkeDpnWzBdLXZbMF0sZHk6Z1sxXS12WzFdLGRpc3BhdGNoOnB9KSxyKX19cmV0dXJuIGguZmlsdGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6dWUoISF0KSxoKTppfSxoLmNvbnRhaW5lcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnVlKHQpLGgpOm99LGguc3ViamVjdD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnVlKHQpLGgpOmF9LGgudG91Y2hhYmxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6dWUoISF0KSxoKTp1fSxoLm9uPWZ1bmN0aW9uKCl7dmFyIHQ9Zi5vbi5hcHBseShmLGFyZ3VtZW50cyk7cmV0dXJuIHQ9PT1mP2g6dH0saC5jbGlja0Rpc3RhbmNlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPSh0PSt0KSp0LGgpOk1hdGguc3FydChsKX0saH0sdC5kcmFnRGlzYWJsZT1vZSx0LmRyYWdFbmFibGU9YWUsdC5kc3Y9ZnVuY3Rpb24odCxuLGUscil7Mz09PWFyZ3VtZW50cy5sZW5ndGgmJiJmdW5jdGlvbiI9PXR5cGVvZiBlJiYocj1lLGU9dm9pZCAwKTt2YXIgaT1GdSh0KTtyZXR1cm4gZWMobixlKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gaS5wYXJzZSh0LHIpfSkpfSx0LmRzdkZvcm1hdD1GdSx0LmVhc2VCYWNrPURvLHQuZWFzZUJhY2tJbj1Qbyx0LmVhc2VCYWNrSW5PdXQ9RG8sdC5lYXNlQmFja091dD16byx0LmVhc2VCb3VuY2U9Tm8sdC5lYXNlQm91bmNlSW49ZnVuY3Rpb24odCl7cmV0dXJuIDEtTm8oMS10KX0sdC5lYXNlQm91bmNlSW5PdXQ9ZnVuY3Rpb24odCl7cmV0dXJuKCh0Kj0yKTw9MT8xLU5vKDEtdCk6Tm8odC0xKSsxKS8yfSx0LmVhc2VCb3VuY2VPdXQ9Tm8sdC5lYXNlQ2lyY2xlPVNvLHQuZWFzZUNpcmNsZUluPWZ1bmN0aW9uKHQpe3JldHVybiAxLU1hdGguc3FydCgxLXQqdCl9LHQuZWFzZUNpcmNsZUluT3V0PVNvLHQuZWFzZUNpcmNsZU91dD1mdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5zcXJ0KDEtIC0tdCp0KX0sdC5lYXNlQ3ViaWM9dm8sdC5lYXNlQ3ViaWNJbj1mdW5jdGlvbih0KXtyZXR1cm4gdCp0KnR9LHQuZWFzZUN1YmljSW5PdXQ9dm8sdC5lYXNlQ3ViaWNPdXQ9ZnVuY3Rpb24odCl7cmV0dXJuLS10KnQqdCsxfSx0LmVhc2VFbGFzdGljPXFvLHQuZWFzZUVsYXN0aWNJbj1Gbyx0LmVhc2VFbGFzdGljSW5PdXQ9SW8sdC5lYXNlRWxhc3RpY091dD1xbyx0LmVhc2VFeHA9VG8sdC5lYXNlRXhwSW49ZnVuY3Rpb24odCl7cmV0dXJuIEFvKDEtK3QpfSx0LmVhc2VFeHBJbk91dD1Ubyx0LmVhc2VFeHBPdXQ9ZnVuY3Rpb24odCl7cmV0dXJuIDEtQW8odCl9LHQuZWFzZUxpbmVhcj10PT4rdCx0LmVhc2VQb2x5PW1vLHQuZWFzZVBvbHlJbj1fbyx0LmVhc2VQb2x5SW5PdXQ9bW8sdC5lYXNlUG9seU91dD1ibyx0LmVhc2VRdWFkPXlvLHQuZWFzZVF1YWRJbj1mdW5jdGlvbih0KXtyZXR1cm4gdCp0fSx0LmVhc2VRdWFkSW5PdXQ9eW8sdC5lYXNlUXVhZE91dD1mdW5jdGlvbih0KXtyZXR1cm4gdCooMi10KX0sdC5lYXNlU2luPU1vLHQuZWFzZVNpbkluPWZ1bmN0aW9uKHQpe3JldHVybiAxPT0rdD8xOjEtTWF0aC5jb3ModCp3byl9LHQuZWFzZVNpbkluT3V0PU1vLHQuZWFzZVNpbk91dD1mdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5zaW4odCp3byl9LHQuZXZlcnk9ZnVuY3Rpb24odCxuKXtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgVHlwZUVycm9yKCJ0ZXN0IGlzIG5vdCBhIGZ1bmN0aW9uIik7bGV0IGU9LTE7Zm9yKGNvbnN0IHIgb2YgdClpZighbihyLCsrZSx0KSlyZXR1cm4hMTtyZXR1cm4hMH0sdC5leHRlbnQ9QSx0LmZjdW1zdW09ZnVuY3Rpb24odCxuKXtjb25zdCBlPW5ldyBUO2xldCByPS0xO3JldHVybiBGbG9hdDY0QXJyYXkuZnJvbSh0LHZvaWQgMD09PW4/dD0+ZS5hZGQoK3R8fDApOmk9PmUuYWRkKCtuKGksKytyLHQpfHwwKSl9LHQuZmlsdGVyPWZ1bmN0aW9uKHQsbil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IFR5cGVFcnJvcigidGVzdCBpcyBub3QgYSBmdW5jdGlvbiIpO2NvbnN0IGU9W107bGV0IHI9LTE7Zm9yKGNvbnN0IGkgb2YgdCluKGksKytyLHQpJiZlLnB1c2goaSk7cmV0dXJuIGV9LHQuZmxhdEdyb3VwPWZ1bmN0aW9uKHQsLi4ubil7cmV0dXJuIEQoeih0LC4uLm4pLG4pfSx0LmZsYXRSb2xsdXA9ZnVuY3Rpb24odCxuLC4uLmUpe3JldHVybiBEKEYodCxuLC4uLmUpLGUpfSx0LmZvcmNlQ2VudGVyPWZ1bmN0aW9uKHQsbil7dmFyIGUscj0xO2Z1bmN0aW9uIGkoKXt2YXIgaSxvLGE9ZS5sZW5ndGgsdT0wLGM9MDtmb3IoaT0wO2k8YTsrK2kpdSs9KG89ZVtpXSkueCxjKz1vLnk7Zm9yKHU9KHUvYS10KSpyLGM9KGMvYS1uKSpyLGk9MDtpPGE7KytpKShvPWVbaV0pLngtPXUsby55LT1jfXJldHVybiBudWxsPT10JiYodD0wKSxudWxsPT1uJiYobj0wKSxpLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7ZT10fSxpLng9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9K24saSk6dH0saS55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSt0LGkpOm59LGkuc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9K3QsaSk6cn0saX0sdC5mb3JjZUNvbGxpZGU9ZnVuY3Rpb24odCl7dmFyIG4sZSxyLGk9MSxvPTE7ZnVuY3Rpb24gYSgpe2Zvcih2YXIgdCxhLGMsZixzLGwsaCxkPW4ubGVuZ3RoLHA9MDtwPG87KytwKWZvcihhPWdjKG4seGMsd2MpLnZpc2l0QWZ0ZXIodSksdD0wO3Q8ZDsrK3QpYz1uW3RdLGw9ZVtjLmluZGV4XSxoPWwqbCxmPWMueCtjLnZ4LHM9Yy55K2MudnksYS52aXNpdChnKTtmdW5jdGlvbiBnKHQsbixlLG8sYSl7dmFyIHU9dC5kYXRhLGQ9dC5yLHA9bCtkO2lmKCF1KXJldHVybiBuPmYrcHx8bzxmLXB8fGU+cytwfHxhPHMtcDtpZih1LmluZGV4PmMuaW5kZXgpe3ZhciBnPWYtdS54LXUudngseT1zLXUueS11LnZ5LHY9ZypnK3kqeTt2PHAqcCYmKDA9PT1nJiYodis9KGc9bWMocikpKmcpLDA9PT15JiYodis9KHk9bWMocikpKnkpLHY9KHAtKHY9TWF0aC5zcXJ0KHYpKSkvdippLGMudngrPShnKj12KSoocD0oZCo9ZCkvKGgrZCkpLGMudnkrPSh5Kj12KSpwLHUudngtPWcqKHA9MS1wKSx1LnZ5LT15KnApfX19ZnVuY3Rpb24gdSh0KXtpZih0LmRhdGEpcmV0dXJuIHQucj1lW3QuZGF0YS5pbmRleF07Zm9yKHZhciBuPXQucj0wO248NDsrK24pdFtuXSYmdFtuXS5yPnQuciYmKHQucj10W25dLnIpfWZ1bmN0aW9uIGMoKXtpZihuKXt2YXIgcixpLG89bi5sZW5ndGg7Zm9yKGU9bmV3IEFycmF5KG8pLHI9MDtyPG87KytyKWk9bltyXSxlW2kuaW5kZXhdPSt0KGkscixuKX19cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PWJjKG51bGw9PXQ/MTordCkpLGEuaW5pdGlhbGl6ZT1mdW5jdGlvbih0LGUpe249dCxyPWUsYygpfSxhLml0ZXJhdGlvbnM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89K3QsYSk6b30sYS5zdHJlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0rdCxhKTppfSxhLnJhZGl1cz1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOmJjKCtuKSxjKCksYSk6dH0sYX0sdC5mb3JjZUxpbms9ZnVuY3Rpb24odCl7dmFyIG4sZSxyLGksbyxhLHU9TWMsYz1mdW5jdGlvbih0KXtyZXR1cm4gMS9NYXRoLm1pbihpW3Quc291cmNlLmluZGV4XSxpW3QudGFyZ2V0LmluZGV4XSl9LGY9YmMoMzApLHM9MTtmdW5jdGlvbiBsKHIpe2Zvcih2YXIgaT0wLHU9dC5sZW5ndGg7aTxzOysraSlmb3IodmFyIGMsZixsLGgsZCxwLGcseT0wO3k8dTsrK3kpZj0oYz10W3ldKS5zb3VyY2UsaD0obD1jLnRhcmdldCkueCtsLnZ4LWYueC1mLnZ4fHxtYyhhKSxkPWwueStsLnZ5LWYueS1mLnZ5fHxtYyhhKSxoKj1wPSgocD1NYXRoLnNxcnQoaCpoK2QqZCkpLWVbeV0pL3AqcipuW3ldLGQqPXAsbC52eC09aCooZz1vW3ldKSxsLnZ5LT1kKmcsZi52eCs9aCooZz0xLWcpLGYudnkrPWQqZ31mdW5jdGlvbiBoKCl7aWYocil7dmFyIGEsYyxmPXIubGVuZ3RoLHM9dC5sZW5ndGgsbD1uZXcgTWFwKHIubWFwKCgodCxuKT0+W3UodCxuLHIpLHRdKSkpO2ZvcihhPTAsaT1uZXcgQXJyYXkoZik7YTxzOysrYSkoYz10W2FdKS5pbmRleD1hLCJvYmplY3QiIT10eXBlb2YgYy5zb3VyY2UmJihjLnNvdXJjZT1BYyhsLGMuc291cmNlKSksIm9iamVjdCIhPXR5cGVvZiBjLnRhcmdldCYmKGMudGFyZ2V0PUFjKGwsYy50YXJnZXQpKSxpW2Muc291cmNlLmluZGV4XT0oaVtjLnNvdXJjZS5pbmRleF18fDApKzEsaVtjLnRhcmdldC5pbmRleF09KGlbYy50YXJnZXQuaW5kZXhdfHwwKSsxO2ZvcihhPTAsbz1uZXcgQXJyYXkocyk7YTxzOysrYSljPXRbYV0sb1thXT1pW2Muc291cmNlLmluZGV4XS8oaVtjLnNvdXJjZS5pbmRleF0raVtjLnRhcmdldC5pbmRleF0pO249bmV3IEFycmF5KHMpLGQoKSxlPW5ldyBBcnJheShzKSxwKCl9fWZ1bmN0aW9uIGQoKXtpZihyKWZvcih2YXIgZT0wLGk9dC5sZW5ndGg7ZTxpOysrZSluW2VdPStjKHRbZV0sZSx0KX1mdW5jdGlvbiBwKCl7aWYocilmb3IodmFyIG49MCxpPXQubGVuZ3RoO248aTsrK24pZVtuXT0rZih0W25dLG4sdCl9cmV0dXJuIG51bGw9PXQmJih0PVtdKSxsLmluaXRpYWxpemU9ZnVuY3Rpb24odCxuKXtyPXQsYT1uLGgoKX0sbC5saW5rcz1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1uLGgoKSxsKTp0fSxsLmlkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PXQsbCk6dX0sbC5pdGVyYXRpb25zPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSt0LGwpOnN9LGwuc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpiYygrdCksZCgpLGwpOmN9LGwuZGlzdGFuY2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpiYygrdCkscCgpLGwpOmZ9LGx9LHQuZm9yY2VNYW55Qm9keT1mdW5jdGlvbigpe3ZhciB0LG4sZSxyLGksbz1iYygtMzApLGE9MSx1PTEvMCxjPS44MTtmdW5jdGlvbiBmKGUpe3ZhciBpLG89dC5sZW5ndGgsYT1nYyh0LFNjLEVjKS52aXNpdEFmdGVyKGwpO2ZvcihyPWUsaT0wO2k8bzsrK2kpbj10W2ldLGEudmlzaXQoaCl9ZnVuY3Rpb24gcygpe2lmKHQpe3ZhciBuLGUscj10Lmxlbmd0aDtmb3IoaT1uZXcgQXJyYXkociksbj0wO248cjsrK24pZT10W25dLGlbZS5pbmRleF09K28oZSxuLHQpfX1mdW5jdGlvbiBsKHQpe3ZhciBuLGUscixvLGEsdT0wLGM9MDtpZih0Lmxlbmd0aCl7Zm9yKHI9bz1hPTA7YTw0OysrYSkobj10W2FdKSYmKGU9TWF0aC5hYnMobi52YWx1ZSkpJiYodSs9bi52YWx1ZSxjKz1lLHIrPWUqbi54LG8rPWUqbi55KTt0Lng9ci9jLHQueT1vL2N9ZWxzZXsobj10KS54PW4uZGF0YS54LG4ueT1uLmRhdGEueTtkb3t1Kz1pW24uZGF0YS5pbmRleF19d2hpbGUobj1uLm5leHQpfXQudmFsdWU9dX1mdW5jdGlvbiBoKHQsbyxmLHMpe2lmKCF0LnZhbHVlKXJldHVybiEwO3ZhciBsPXQueC1uLngsaD10Lnktbi55LGQ9cy1vLHA9bCpsK2gqaDtpZihkKmQvYzxwKXJldHVybiBwPHUmJigwPT09bCYmKHArPShsPW1jKGUpKSpsKSwwPT09aCYmKHArPShoPW1jKGUpKSpoKSxwPGEmJihwPU1hdGguc3FydChhKnApKSxuLnZ4Kz1sKnQudmFsdWUqci9wLG4udnkrPWgqdC52YWx1ZSpyL3ApLCEwO2lmKCEodC5sZW5ndGh8fHA+PXUpKXsodC5kYXRhIT09bnx8dC5uZXh0KSYmKDA9PT1sJiYocCs9KGw9bWMoZSkpKmwpLDA9PT1oJiYocCs9KGg9bWMoZSkpKmgpLHA8YSYmKHA9TWF0aC5zcXJ0KGEqcCkpKTtkb3t0LmRhdGEhPT1uJiYoZD1pW3QuZGF0YS5pbmRleF0qci9wLG4udngrPWwqZCxuLnZ5Kz1oKmQpfXdoaWxlKHQ9dC5uZXh0KX19cmV0dXJuIGYuaW5pdGlhbGl6ZT1mdW5jdGlvbihuLHIpe3Q9bixlPXIscygpfSxmLnN0cmVuZ3RoPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6YmMoK3QpLHMoKSxmKTpvfSxmLmRpc3RhbmNlTWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPXQqdCxmKTpNYXRoLnNxcnQoYSl9LGYuZGlzdGFuY2VNYXg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9dCp0LGYpOk1hdGguc3FydCh1KX0sZi50aGV0YT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz10KnQsZik6TWF0aC5zcXJ0KGMpfSxmfSx0LmZvcmNlUmFkaWFsPWZ1bmN0aW9uKHQsbixlKXt2YXIgcixpLG8sYT1iYyguMSk7ZnVuY3Rpb24gdSh0KXtmb3IodmFyIGE9MCx1PXIubGVuZ3RoO2E8dTsrK2Epe3ZhciBjPXJbYV0sZj1jLngtbnx8MWUtNixzPWMueS1lfHwxZS02LGw9TWF0aC5zcXJ0KGYqZitzKnMpLGg9KG9bYV0tbCkqaVthXSp0L2w7Yy52eCs9ZipoLGMudnkrPXMqaH19ZnVuY3Rpb24gYygpe2lmKHIpe3ZhciBuLGU9ci5sZW5ndGg7Zm9yKGk9bmV3IEFycmF5KGUpLG89bmV3IEFycmF5KGUpLG49MDtuPGU7KytuKW9bbl09K3QocltuXSxuLHIpLGlbbl09aXNOYU4ob1tuXSk/MDorYShyW25dLG4scil9fXJldHVybiJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1iYygrdCkpLG51bGw9PW4mJihuPTApLG51bGw9PWUmJihlPTApLHUuaW5pdGlhbGl6ZT1mdW5jdGlvbih0KXtyPXQsYygpfSx1LnN0cmVuZ3RoPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6YmMoK3QpLGMoKSx1KTphfSx1LnJhZGl1cz1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOmJjKCtuKSxjKCksdSk6dH0sdS54PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSt0LHUpOm59LHUueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0rdCx1KTplfSx1fSx0LmZvcmNlU2ltdWxhdGlvbj1mdW5jdGlvbih0KXt2YXIgbixlPTEscj0uMDAxLGk9MS1NYXRoLnBvdyhyLDEvMzAwKSxvPTAsYT0uNix1PW5ldyBNYXAsYz1UaShsKSxmPU50KCJ0aWNrIiwiZW5kIikscz1mdW5jdGlvbigpe2xldCB0PTE7cmV0dXJuKCk9Pih0PSgxNjY0NTI1KnQrMTAxMzkwNDIyMyklVGMpL1RjfSgpO2Z1bmN0aW9uIGwoKXtoKCksZi5jYWxsKCJ0aWNrIixuKSxlPHImJihjLnN0b3AoKSxmLmNhbGwoImVuZCIsbikpfWZ1bmN0aW9uIGgocil7dmFyIGMsZixzPXQubGVuZ3RoO3ZvaWQgMD09PXImJihyPTEpO2Zvcih2YXIgbD0wO2w8cjsrK2wpZm9yKGUrPShvLWUpKmksdS5mb3JFYWNoKChmdW5jdGlvbih0KXt0KGUpfSkpLGM9MDtjPHM7KytjKW51bGw9PShmPXRbY10pLmZ4P2YueCs9Zi52eCo9YTooZi54PWYuZngsZi52eD0wKSxudWxsPT1mLmZ5P2YueSs9Zi52eSo9YTooZi55PWYuZnksZi52eT0wKTtyZXR1cm4gbn1mdW5jdGlvbiBkKCl7Zm9yKHZhciBuLGU9MCxyPXQubGVuZ3RoO2U8cjsrK2Upe2lmKChuPXRbZV0pLmluZGV4PWUsbnVsbCE9bi5meCYmKG4ueD1uLmZ4KSxudWxsIT1uLmZ5JiYobi55PW4uZnkpLGlzTmFOKG4ueCl8fGlzTmFOKG4ueSkpe3ZhciBpPTEwKk1hdGguc3FydCguNStlKSxvPWUqa2M7bi54PWkqTWF0aC5jb3Mobyksbi55PWkqTWF0aC5zaW4obyl9KGlzTmFOKG4udngpfHxpc05hTihuLnZ5KSkmJihuLnZ4PW4udnk9MCl9fWZ1bmN0aW9uIHAobil7cmV0dXJuIG4uaW5pdGlhbGl6ZSYmbi5pbml0aWFsaXplKHQscyksbn1yZXR1cm4gbnVsbD09dCYmKHQ9W10pLGQoKSxuPXt0aWNrOmgscmVzdGFydDpmdW5jdGlvbigpe3JldHVybiBjLnJlc3RhcnQobCksbn0sc3RvcDpmdW5jdGlvbigpe3JldHVybiBjLnN0b3AoKSxufSxub2RlczpmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLGQoKSx1LmZvckVhY2gocCksbik6dH0sYWxwaGE6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9K3Qsbik6ZX0sYWxwaGFNaW46ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9K3Qsbik6cn0sYWxwaGFEZWNheTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0rdCxuKToraX0sYWxwaGFUYXJnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89K3Qsbik6b30sdmVsb2NpdHlEZWNheTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0xLXQsbik6MS1hfSxyYW5kb21Tb3VyY2U6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9dCx1LmZvckVhY2gocCksbik6c30sZm9yY2U6ZnVuY3Rpb24odCxlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xPyhudWxsPT1lP3UuZGVsZXRlKHQpOnUuc2V0KHQscChlKSksbik6dS5nZXQodCl9LGZpbmQ6ZnVuY3Rpb24obixlLHIpe3ZhciBpLG8sYSx1LGMsZj0wLHM9dC5sZW5ndGg7Zm9yKG51bGw9PXI/cj0xLzA6cio9cixmPTA7ZjxzOysrZikoYT0oaT1uLSh1PXRbZl0pLngpKmkrKG89ZS11LnkpKm8pPHImJihjPXUscj1hKTtyZXR1cm4gY30sb246ZnVuY3Rpb24odCxlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xPyhmLm9uKHQsZSksbik6Zi5vbih0KX19fSx0LmZvcmNlWD1mdW5jdGlvbih0KXt2YXIgbixlLHIsaT1iYyguMSk7ZnVuY3Rpb24gbyh0KXtmb3IodmFyIGksbz0wLGE9bi5sZW5ndGg7bzxhOysrbykoaT1uW29dKS52eCs9KHJbb10taS54KSplW29dKnR9ZnVuY3Rpb24gYSgpe2lmKG4pe3ZhciBvLGE9bi5sZW5ndGg7Zm9yKGU9bmV3IEFycmF5KGEpLHI9bmV3IEFycmF5KGEpLG89MDtvPGE7KytvKWVbb109aXNOYU4ocltvXT0rdChuW29dLG8sbikpPzA6K2kobltvXSxvLG4pfX1yZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9YmMobnVsbD09dD8wOit0KSksby5pbml0aWFsaXplPWZ1bmN0aW9uKHQpe249dCxhKCl9LG8uc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpiYygrdCksYSgpLG8pOml9LG8ueD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOmJjKCtuKSxhKCksbyk6dH0sb30sdC5mb3JjZVk9ZnVuY3Rpb24odCl7dmFyIG4sZSxyLGk9YmMoLjEpO2Z1bmN0aW9uIG8odCl7Zm9yKHZhciBpLG89MCxhPW4ubGVuZ3RoO288YTsrK28pKGk9bltvXSkudnkrPShyW29dLWkueSkqZVtvXSp0fWZ1bmN0aW9uIGEoKXtpZihuKXt2YXIgbyxhPW4ubGVuZ3RoO2ZvcihlPW5ldyBBcnJheShhKSxyPW5ldyBBcnJheShhKSxvPTA7bzxhOysrbyllW29dPWlzTmFOKHJbb109K3QobltvXSxvLG4pKT8wOitpKG5bb10sbyxuKX19cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PWJjKG51bGw9PXQ/MDordCkpLG8uaW5pdGlhbGl6ZT1mdW5jdGlvbih0KXtuPXQsYSgpfSxvLnN0cmVuZ3RoPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6YmMoK3QpLGEoKSxvKTppfSxvLnk9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpiYygrbiksYSgpLG8pOnR9LG99LHQuZm9ybWF0RGVmYXVsdExvY2FsZT1MYyx0LmZvcm1hdExvY2FsZT1ZYyx0LmZvcm1hdFNwZWNpZmllcj1EYyx0LmZzdW09ZnVuY3Rpb24odCxuKXtjb25zdCBlPW5ldyBUO2lmKHZvaWQgMD09PW4pZm9yKGxldCBuIG9mIHQpKG49K24pJiZlLmFkZChuKTtlbHNle2xldCByPS0xO2ZvcihsZXQgaSBvZiB0KShpPStuKGksKytyLHQpKSYmZS5hZGQoaSl9cmV0dXJuK2V9LHQuZ2VvQWxiZXJzPVpoLHQuZ2VvQWxiZXJzVXNhPWZ1bmN0aW9uKCl7dmFyIHQsbixlLHIsaSxvLGE9WmgoKSx1PVdoKCkucm90YXRlKFsxNTQsMF0pLmNlbnRlcihbLTIsNTguNV0pLnBhcmFsbGVscyhbNTUsNjVdKSxjPVdoKCkucm90YXRlKFsxNTcsMF0pLmNlbnRlcihbLTMsMTkuOV0pLnBhcmFsbGVscyhbOCwxOF0pLGY9e3BvaW50OmZ1bmN0aW9uKHQsbil7bz1bdCxuXX19O2Z1bmN0aW9uIHModCl7dmFyIG49dFswXSxhPXRbMV07cmV0dXJuIG89bnVsbCxlLnBvaW50KG4sYSksb3x8KHIucG9pbnQobixhKSxvKXx8KGkucG9pbnQobixhKSxvKX1mdW5jdGlvbiBsKCl7cmV0dXJuIHQ9bj1udWxsLHN9cmV0dXJuIHMuaW52ZXJ0PWZ1bmN0aW9uKHQpe3ZhciBuPWEuc2NhbGUoKSxlPWEudHJhbnNsYXRlKCkscj0odFswXS1lWzBdKS9uLGk9KHRbMV0tZVsxXSkvbjtyZXR1cm4oaT49LjEyJiZpPC4yMzQmJnI+PS0uNDI1JiZyPC0uMjE0P3U6aT49LjE2NiYmaTwuMjM0JiZyPj0tLjIxNCYmcjwtLjExNT9jOmEpLmludmVydCh0KX0scy5zdHJlYW09ZnVuY3Rpb24oZSl7cmV0dXJuIHQmJm49PT1lP3Q6KHI9W2Euc3RyZWFtKG49ZSksdS5zdHJlYW0oZSksYy5zdHJlYW0oZSldLGk9ci5sZW5ndGgsdD17cG9pbnQ6ZnVuY3Rpb24odCxuKXtmb3IodmFyIGU9LTE7KytlPGk7KXJbZV0ucG9pbnQodCxuKX0sc3BoZXJlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PS0xOysrdDxpOylyW3RdLnNwaGVyZSgpfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9LTE7Kyt0PGk7KXJbdF0ubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9LTE7Kyt0PGk7KXJbdF0ubGluZUVuZCgpfSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9LTE7Kyt0PGk7KXJbdF0ucG9seWdvblN0YXJ0KCl9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9LTE7Kyt0PGk7KXJbdF0ucG9seWdvbkVuZCgpfX0pO3ZhciByLGl9LHMucHJlY2lzaW9uPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhLnByZWNpc2lvbih0KSx1LnByZWNpc2lvbih0KSxjLnByZWNpc2lvbih0KSxsKCkpOmEucHJlY2lzaW9uKCl9LHMuc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGEuc2NhbGUodCksdS5zY2FsZSguMzUqdCksYy5zY2FsZSh0KSxzLnRyYW5zbGF0ZShhLnRyYW5zbGF0ZSgpKSk6YS5zY2FsZSgpfSxzLnRyYW5zbGF0ZT1mdW5jdGlvbih0KXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gYS50cmFuc2xhdGUoKTt2YXIgbj1hLnNjYWxlKCksbz0rdFswXSxzPSt0WzFdO3JldHVybiBlPWEudHJhbnNsYXRlKHQpLmNsaXBFeHRlbnQoW1tvLS40NTUqbixzLS4yMzgqbl0sW28rLjQ1NSpuLHMrLjIzOCpuXV0pLnN0cmVhbShmKSxyPXUudHJhbnNsYXRlKFtvLS4zMDcqbixzKy4yMDEqbl0pLmNsaXBFeHRlbnQoW1tvLS40MjUqbitYYyxzKy4xMipuK1hjXSxbby0uMjE0Km4tWGMscysuMjM0Km4tWGNdXSkuc3RyZWFtKGYpLGk9Yy50cmFuc2xhdGUoW28tLjIwNSpuLHMrLjIxMipuXSkuY2xpcEV4dGVudChbW28tLjIxNCpuK1hjLHMrLjE2NipuK1hjXSxbby0uMTE1Km4tWGMscysuMjM0Km4tWGNdXSkuc3RyZWFtKGYpLGwoKX0scy5maXRFeHRlbnQ9ZnVuY3Rpb24odCxuKXtyZXR1cm4gSWgocyx0LG4pfSxzLmZpdFNpemU9ZnVuY3Rpb24odCxuKXtyZXR1cm4gT2gocyx0LG4pfSxzLmZpdFdpZHRoPWZ1bmN0aW9uKHQsbil7cmV0dXJuIFVoKHMsdCxuKX0scy5maXRIZWlnaHQ9ZnVuY3Rpb24odCxuKXtyZXR1cm4gQmgocyx0LG4pfSxzLnNjYWxlKDEwNzApfSx0Lmdlb0FyZWE9ZnVuY3Rpb24odCl7cmV0dXJuIFlmPW5ldyBULE1mKHQsTGYpLDIqWWZ9LHQuZ2VvQXppbXV0aGFsRXF1YWxBcmVhPWZ1bmN0aW9uKCl7cmV0dXJuIEhoKEpoKS5zY2FsZSgxMjQuNzUpLmNsaXBBbmdsZSgxNzkuOTk5KX0sdC5nZW9BemltdXRoYWxFcXVhbEFyZWFSYXc9SmgsdC5nZW9BemltdXRoYWxFcXVpZGlzdGFudD1mdW5jdGlvbigpe3JldHVybiBIaCh0ZCkuc2NhbGUoNzkuNDE4OCkuY2xpcEFuZ2xlKDE3OS45OTkpfSx0Lmdlb0F6aW11dGhhbEVxdWlkaXN0YW50UmF3PXRkLHQuZ2VvQm91bmRzPWZ1bmN0aW9uKHQpe3ZhciBuLGUscixpLG8sYSx1O2lmKHpmPVBmPS0oTmY9Q2Y9MS8wKSxPZj1bXSxNZih0LHlzKSxlPU9mLmxlbmd0aCl7Zm9yKE9mLnNvcnQoVHMpLG49MSxvPVtyPU9mWzBdXTtuPGU7KytuKVNzKHIsKGk9T2Zbbl0pWzBdKXx8U3MocixpWzFdKT8oQXMoclswXSxpWzFdKT5BcyhyWzBdLHJbMV0pJiYoclsxXT1pWzFdKSxBcyhpWzBdLHJbMV0pPkFzKHJbMF0sclsxXSkmJihyWzBdPWlbMF0pKTpvLnB1c2gocj1pKTtmb3IoYT0tMS8wLG49MCxyPW9bZT1vLmxlbmd0aC0xXTtuPD1lO3I9aSwrK24paT1vW25dLCh1PUFzKHJbMV0saVswXSkpPmEmJihhPXUsTmY9aVswXSxQZj1yWzFdKX1yZXR1cm4gT2Y9VWY9bnVsbCxOZj09PTEvMHx8Q2Y9PT0xLzA/W1tOYU4sTmFOXSxbTmFOLE5hTl1dOltbTmYsQ2ZdLFtQZix6Zl1dfSx0Lmdlb0NlbnRyb2lkPWZ1bmN0aW9uKHQpe3RzPW5zPWVzPXJzPWlzPW9zPWFzPXVzPTAsY3M9bmV3IFQsZnM9bmV3IFQsc3M9bmV3IFQsTWYodCxFcyk7dmFyIG49K2NzLGU9K2ZzLHI9K3NzLGk9dWYobixlLHIpO3JldHVybiBpPEdjJiYobj1vcyxlPWFzLHI9dXMsbnM8WGMmJihuPWVzLGU9cnMscj1pcyksKGk9dWYobixlLHIpKTxHYyk/W05hTixOYU5dOltlZihlLG4pKlFjLGdmKHIvaSkqUWNdfSx0Lmdlb0NpcmNsZT1mdW5jdGlvbigpe3ZhciB0LG4sZT1PcyhbMCwwXSkscj1Pcyg5MCksaT1Pcyg2KSxvPXtwb2ludDpmdW5jdGlvbihlLHIpe3QucHVzaChlPW4oZSxyKSksZVswXSo9UWMsZVsxXSo9UWN9fTtmdW5jdGlvbiBhKCl7dmFyIGE9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksdT1yLmFwcGx5KHRoaXMsYXJndW1lbnRzKSpKYyxjPWkuYXBwbHkodGhpcyxhcmd1bWVudHMpKkpjO3JldHVybiB0PVtdLG49WXMoLWFbMF0qSmMsLWFbMV0qSmMsMCkuaW52ZXJ0LFhzKG8sdSxjLDEpLGE9e3R5cGU6IlBvbHlnb24iLGNvb3JkaW5hdGVzOlt0XX0sdD1uPW51bGwsYX1yZXR1cm4gYS5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpPcyhbK3RbMF0sK3RbMV1dKSxhKTplfSxhLnJhZGl1cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90Ok9zKCt0KSxhKTpyfSxhLnByZWNpc2lvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90Ok9zKCt0KSxhKTppfSxhfSx0Lmdlb0NsaXBBbnRpbWVyaWRpYW49aWwsdC5nZW9DbGlwQ2lyY2xlPW9sLHQuZ2VvQ2xpcEV4dGVudD1mdW5jdGlvbigpe3ZhciB0LG4sZSxyPTAsaT0wLG89OTYwLGE9NTAwO3JldHVybiBlPXtzdHJlYW06ZnVuY3Rpb24oZSl7cmV0dXJuIHQmJm49PT1lP3Q6dD1obChyLGksbyxhKShuPWUpfSxleHRlbnQ6ZnVuY3Rpb24odSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9K3VbMF1bMF0saT0rdVswXVsxXSxvPSt1WzFdWzBdLGE9K3VbMV1bMV0sdD1uPW51bGwsZSk6W1tyLGldLFtvLGFdXX19fSx0Lmdlb0NsaXBSZWN0YW5nbGU9aGwsdC5nZW9Db25pY0NvbmZvcm1hbD1mdW5jdGlvbigpe3JldHVybiBHaChpZCkuc2NhbGUoMTA5LjUpLnBhcmFsbGVscyhbMzAsMzBdKX0sdC5nZW9Db25pY0NvbmZvcm1hbFJhdz1pZCx0Lmdlb0NvbmljRXF1YWxBcmVhPVdoLHQuZ2VvQ29uaWNFcXVhbEFyZWFSYXc9VmgsdC5nZW9Db25pY0VxdWlkaXN0YW50PWZ1bmN0aW9uKCl7cmV0dXJuIEdoKGFkKS5zY2FsZSgxMzEuMTU0KS5jZW50ZXIoWzAsMTMuOTM4OV0pfSx0Lmdlb0NvbmljRXF1aWRpc3RhbnRSYXc9YWQsdC5nZW9Db250YWlucz1mdW5jdGlvbih0LG4pe3JldHVybih0JiZ4bC5oYXNPd25Qcm9wZXJ0eSh0LnR5cGUpP3hsW3QudHlwZV06TWwpKHQsbil9LHQuZ2VvRGlzdGFuY2U9bWwsdC5nZW9FcXVhbEVhcnRoPWZ1bmN0aW9uKCl7cmV0dXJuIEhoKGhkKS5zY2FsZSgxNzcuMTU4KX0sdC5nZW9FcXVhbEVhcnRoUmF3PWhkLHQuZ2VvRXF1aXJlY3Rhbmd1bGFyPWZ1bmN0aW9uKCl7cmV0dXJuIEhoKG9kKS5zY2FsZSgxNTIuNjMpfSx0Lmdlb0VxdWlyZWN0YW5ndWxhclJhdz1vZCx0Lmdlb0dub21vbmljPWZ1bmN0aW9uKCl7cmV0dXJuIEhoKGRkKS5zY2FsZSgxNDQuMDQ5KS5jbGlwQW5nbGUoNjApfSx0Lmdlb0dub21vbmljUmF3PWRkLHQuZ2VvR3JhdGljdWxlPVBsLHQuZ2VvR3JhdGljdWxlMTA9ZnVuY3Rpb24oKXtyZXR1cm4gUGwoKSgpfSx0Lmdlb0lkZW50aXR5PWZ1bmN0aW9uKCl7dmFyIHQsbixlLHIsaSxvLGEsdT0xLGM9MCxmPTAscz0xLGw9MSxoPTAsZD1udWxsLHA9MSxnPTEseT1SaCh7cG9pbnQ6ZnVuY3Rpb24odCxuKXt2YXIgZT1iKFt0LG5dKTt0aGlzLnN0cmVhbS5wb2ludChlWzBdLGVbMV0pfX0pLHY9cWw7ZnVuY3Rpb24gXygpe3JldHVybiBwPXUqcyxnPXUqbCxvPWE9bnVsbCxifWZ1bmN0aW9uIGIoZSl7dmFyIHI9ZVswXSpwLGk9ZVsxXSpnO2lmKGgpe3ZhciBvPWkqdC1yKm47cj1yKnQraSpuLGk9b31yZXR1cm5bcitjLGkrZl19cmV0dXJuIGIuaW52ZXJ0PWZ1bmN0aW9uKGUpe3ZhciByPWVbMF0tYyxpPWVbMV0tZjtpZihoKXt2YXIgbz1pKnQrcipuO3I9cip0LWkqbixpPW99cmV0dXJuW3IvcCxpL2ddfSxiLnN0cmVhbT1mdW5jdGlvbih0KXtyZXR1cm4gbyYmYT09PXQ/bzpvPXkodihhPXQpKX0sYi5wb3N0Y2xpcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odj10LGQ9ZT1yPWk9bnVsbCxfKCkpOnZ9LGIuY2xpcEV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odj1udWxsPT10PyhkPWU9cj1pPW51bGwscWwpOmhsKGQ9K3RbMF1bMF0sZT0rdFswXVsxXSxyPSt0WzFdWzBdLGk9K3RbMV1bMV0pLF8oKSk6bnVsbD09ZD9udWxsOltbZCxlXSxbcixpXV19LGIuc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9K3QsXygpKTp1fSxiLnRyYW5zbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0rdFswXSxmPSt0WzFdLF8oKSk6W2MsZl19LGIuYW5nbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49c2YoaD1lJTM2MCpKYyksdD1yZihoKSxfKCkpOmgqUWN9LGIucmVmbGVjdFg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9dD8tMToxLF8oKSk6czwwfSxiLnJlZmxlY3RZPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPXQ/LTE6MSxfKCkpOmw8MH0sYi5maXRFeHRlbnQ9ZnVuY3Rpb24odCxuKXtyZXR1cm4gSWgoYix0LG4pfSxiLmZpdFNpemU9ZnVuY3Rpb24odCxuKXtyZXR1cm4gT2goYix0LG4pfSxiLmZpdFdpZHRoPWZ1bmN0aW9uKHQsbil7cmV0dXJuIFVoKGIsdCxuKX0sYi5maXRIZWlnaHQ9ZnVuY3Rpb24odCxuKXtyZXR1cm4gQmgoYix0LG4pfSxifSx0Lmdlb0ludGVycG9sYXRlPWZ1bmN0aW9uKHQsbil7dmFyIGU9dFswXSpKYyxyPXRbMV0qSmMsaT1uWzBdKkpjLG89blsxXSpKYyxhPXJmKHIpLHU9c2YociksYz1yZihvKSxmPXNmKG8pLHM9YSpyZihlKSxsPWEqc2YoZSksaD1jKnJmKGkpLGQ9YypzZihpKSxwPTIqZ2YoaGYoeWYoby1yKSthKmMqeWYoaS1lKSkpLGc9c2YocCkseT1wP2Z1bmN0aW9uKHQpe3ZhciBuPXNmKHQqPXApL2csZT1zZihwLXQpL2cscj1lKnMrbipoLGk9ZSpsK24qZCxvPWUqdStuKmY7cmV0dXJuW2VmKGkscikqUWMsZWYobyxoZihyKnIraSppKSkqUWNdfTpmdW5jdGlvbigpe3JldHVybltlKlFjLHIqUWNdfTtyZXR1cm4geS5kaXN0YW5jZT1wLHl9LHQuZ2VvTGVuZ3RoPXZsLHQuZ2VvTWVyY2F0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gZWQobmQpLnNjYWxlKDk2MS9LYyl9LHQuZ2VvTWVyY2F0b3JSYXc9bmQsdC5nZW9OYXR1cmFsRWFydGgxPWZ1bmN0aW9uKCl7cmV0dXJuIEhoKHBkKS5zY2FsZSgxNzUuMjk1KX0sdC5nZW9OYXR1cmFsRWFydGgxUmF3PXBkLHQuZ2VvT3J0aG9ncmFwaGljPWZ1bmN0aW9uKCl7cmV0dXJuIEhoKGdkKS5zY2FsZSgyNDkuNSkuY2xpcEFuZ2xlKDkwLjAwMDAwMSl9LHQuZ2VvT3J0aG9ncmFwaGljUmF3PWdkLHQuZ2VvUGF0aD1mdW5jdGlvbih0LG4pe3ZhciBlLHIsaT00LjU7ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdCYmKCJmdW5jdGlvbiI9PXR5cGVvZiBpJiZyLnBvaW50UmFkaXVzKCtpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksTWYodCxlKHIpKSksci5yZXN1bHQoKX1yZXR1cm4gby5hcmVhPWZ1bmN0aW9uKHQpe3JldHVybiBNZih0LGUoJGwpKSwkbC5yZXN1bHQoKX0sby5tZWFzdXJlPWZ1bmN0aW9uKHQpe3JldHVybiBNZih0LGUoUGgpKSxQaC5yZXN1bHQoKX0sby5ib3VuZHM9ZnVuY3Rpb24odCl7cmV0dXJuIE1mKHQsZSh0aCkpLHRoLnJlc3VsdCgpfSxvLmNlbnRyb2lkPWZ1bmN0aW9uKHQpe3JldHVybiBNZih0LGUobWgpKSxtaC5yZXN1bHQoKX0sby5wcm9qZWN0aW9uPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPW51bGw9PW4/KHQ9bnVsbCxxbCk6KHQ9bikuc3RyZWFtLG8pOnR9LG8uY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1udWxsPT10PyhuPW51bGwsbmV3IHpoKTpuZXcgeGgobj10KSwiZnVuY3Rpb24iIT10eXBlb2YgaSYmci5wb2ludFJhZGl1cyhpKSxvKTpufSxvLnBvaW50UmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6KHIucG9pbnRSYWRpdXMoK3QpLCt0KSxvKTppfSxvLnByb2plY3Rpb24odCkuY29udGV4dChuKX0sdC5nZW9Qcm9qZWN0aW9uPUhoLHQuZ2VvUHJvamVjdGlvbk11dGF0b3I9WGgsdC5nZW9Sb3RhdGlvbj1Icyx0Lmdlb1N0ZXJlb2dyYXBoaWM9ZnVuY3Rpb24oKXtyZXR1cm4gSGgoeWQpLnNjYWxlKDI1MCkuY2xpcEFuZ2xlKDE0Mil9LHQuZ2VvU3RlcmVvZ3JhcGhpY1Jhdz15ZCx0Lmdlb1N0cmVhbT1NZix0Lmdlb1RyYW5zZm9ybT1mdW5jdGlvbih0KXtyZXR1cm57c3RyZWFtOlJoKHQpfX0sdC5nZW9UcmFuc3ZlcnNlTWVyY2F0b3I9ZnVuY3Rpb24oKXt2YXIgdD1lZCh2ZCksbj10LmNlbnRlcixlPXQucm90YXRlO3JldHVybiB0LmNlbnRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9uKFstdFsxXSx0WzBdXSk6Wyh0PW4oKSlbMV0sLXRbMF1dfSx0LnJvdGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9lKFt0WzBdLHRbMV0sdC5sZW5ndGg+Mj90WzJdKzkwOjkwXSk6Wyh0PWUoKSlbMF0sdFsxXSx0WzJdLTkwXX0sZShbMCwwLDkwXSkuc2NhbGUoMTU5LjE1NSl9LHQuZ2VvVHJhbnN2ZXJzZU1lcmNhdG9yUmF3PXZkLHQuZ3JheT1mdW5jdGlvbih0LG4pe3JldHVybiBuZXcgaXIodCwwLDAsbnVsbD09bj8xOm4pfSx0LmdyZWF0ZXN0PW90LHQuZ3JlYXRlc3RJbmRleD1mdW5jdGlvbih0LGU9bil7aWYoMT09PWUubGVuZ3RoKXJldHVybiB0dCh0LGUpO2xldCByLGk9LTEsbz0tMTtmb3IoY29uc3QgbiBvZiB0KSsrbywoaTwwPzA9PT1lKG4sbik6ZShuLHIpPjApJiYocj1uLGk9byk7cmV0dXJuIGl9LHQuZ3JvdXA9UCx0Lmdyb3VwU29ydD1mdW5jdGlvbih0LGUscil7cmV0dXJuKDIhPT1lLmxlbmd0aD9VKFIodCxlLHIpLCgoW3QsZV0sW3IsaV0pPT5uKGUsaSl8fG4odCxyKSkpOlUoUCh0LHIpLCgoW3Qscl0sW2ksb10pPT5lKHIsbyl8fG4odCxpKSkpKS5tYXAoKChbdF0pPT50KSl9LHQuZ3JvdXBzPXosdC5oY2w9c3IsdC5oaWVyYXJjaHk9d2QsdC5oaXN0b2dyYW09USx0LmhzbD0kZSx0Lmh0bWw9ZmMsdC5pbWFnZT1mdW5jdGlvbih0LG4pe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSxyKXt2YXIgaT1uZXcgSW1hZ2U7Zm9yKHZhciBvIGluIG4paVtvXT1uW29dO2kub25lcnJvcj1yLGkub25sb2FkPWZ1bmN0aW9uKCl7ZShpKX0saS5zcmM9dH0pKX0sdC5pbmRleD1mdW5jdGlvbih0LC4uLm4pe3JldHVybiBJKHQsQyxxLG4pfSx0LmluZGV4ZXM9ZnVuY3Rpb24odCwuLi5uKXtyZXR1cm4gSSh0LEFycmF5LmZyb20scSxuKX0sdC5pbnRlcnBvbGF0ZT1Icix0LmludGVycG9sYXRlQXJyYXk9ZnVuY3Rpb24odCxuKXtyZXR1cm4oSXIobik/cXI6T3IpKHQsbil9LHQuaW50ZXJwb2xhdGVCYXNpcz1Ucix0LmludGVycG9sYXRlQmFzaXNDbG9zZWQ9U3IsdC5pbnRlcnBvbGF0ZUJsdWVzPUNiLHQuaW50ZXJwb2xhdGVCckJHPUxfLHQuaW50ZXJwb2xhdGVCdUduPWFiLHQuaW50ZXJwb2xhdGVCdVB1PWNiLHQuaW50ZXJwb2xhdGVDaXZpZGlzPWZ1bmN0aW9uKHQpe3JldHVybiB0PU1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSksInJnYigiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQoLTQuNTQtdCooMzUuMzQtdCooMjM4MS43My10Kig2NDAyLjctdCooNzAyNC43Mi0yNzEwLjU3KnQpKSkpKSkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCgzMi40OSt0KigxNzAuNzMrdCooNTIuODItdCooMTMxLjQ2LXQqKDE3Ni41OC02Ny4zNyp0KSkpKSkpKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQoODEuMjQrdCooNDQyLjM2LXQqKDI0ODIuNDMtdCooNjE2Ny4yNC10Kig2NjE0Ljk0LTI0NzUuNjcqdCkpKSkpKSkrIikifSx0LmludGVycG9sYXRlQ29vbD1qYix0LmludGVycG9sYXRlQ3ViZWhlbGl4PWZpLHQuaW50ZXJwb2xhdGVDdWJlaGVsaXhEZWZhdWx0PVliLHQuaW50ZXJwb2xhdGVDdWJlaGVsaXhMb25nPXNpLHQuaW50ZXJwb2xhdGVEYXRlPVVyLHQuaW50ZXJwb2xhdGVEaXNjcmV0ZT1mdW5jdGlvbih0KXt2YXIgbj10Lmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHRbTWF0aC5tYXgoMCxNYXRoLm1pbihuLTEsTWF0aC5mbG9vcihlKm4pKSldfX0sdC5pbnRlcnBvbGF0ZUduQnU9c2IsdC5pbnRlcnBvbGF0ZUdyZWVucz16Yix0LmludGVycG9sYXRlR3JleXM9UmIsdC5pbnRlcnBvbGF0ZUhjbD1haSx0LmludGVycG9sYXRlSGNsTG9uZz11aSx0LmludGVycG9sYXRlSHNsPXJpLHQuaW50ZXJwb2xhdGVIc2xMb25nPWlpLHQuaW50ZXJwb2xhdGVIdWU9ZnVuY3Rpb24odCxuKXt2YXIgZT1OcigrdCwrbik7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBuPWUodCk7cmV0dXJuIG4tMzYwKk1hdGguZmxvb3Iobi8zNjApfX0sdC5pbnRlcnBvbGF0ZUluZmVybm89S2IsdC5pbnRlcnBvbGF0ZUxhYj1mdW5jdGlvbih0LG4pe3ZhciBlPVByKCh0PXJyKHQpKS5sLChuPXJyKG4pKS5sKSxyPVByKHQuYSxuLmEpLGk9UHIodC5iLG4uYiksbz1Qcih0Lm9wYWNpdHksbi5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQubD1lKG4pLHQuYT1yKG4pLHQuYj1pKG4pLHQub3BhY2l0eT1vKG4pLHQrIiJ9fSx0LmludGVycG9sYXRlTWFnbWE9WmIsdC5pbnRlcnBvbGF0ZU51bWJlcj1Ccix0LmludGVycG9sYXRlTnVtYmVyQXJyYXk9cXIsdC5pbnRlcnBvbGF0ZU9iamVjdD1Zcix0LmludGVycG9sYXRlT3JSZD1oYix0LmludGVycG9sYXRlT3Jhbmdlcz1CYix0LmludGVycG9sYXRlUFJHbj0kXyx0LmludGVycG9sYXRlUGlZRz1YXyx0LmludGVycG9sYXRlUGxhc21hPVFiLHQuaW50ZXJwb2xhdGVQdUJ1PXliLHQuaW50ZXJwb2xhdGVQdUJ1R249cGIsdC5pbnRlcnBvbGF0ZVB1T3I9Vl8sdC5pbnRlcnBvbGF0ZVB1UmQ9X2IsdC5pbnRlcnBvbGF0ZVB1cnBsZXM9cWIsdC5pbnRlcnBvbGF0ZVJhaW5ib3c9ZnVuY3Rpb24odCl7KHQ8MHx8dD4xKSYmKHQtPU1hdGguZmxvb3IodCkpO3ZhciBuPU1hdGguYWJzKHQtLjUpO3JldHVybiAkYi5oPTM2MCp0LTEwMCwkYi5zPTEuNS0xLjUqbiwkYi5sPS44LS45Km4sJGIrIiJ9LHQuaW50ZXJwb2xhdGVSZEJ1PVpfLHQuaW50ZXJwb2xhdGVSZEd5PVFfLHQuaW50ZXJwb2xhdGVSZFB1PW1iLHQuaW50ZXJwb2xhdGVSZFlsQnU9dGIsdC5pbnRlcnBvbGF0ZVJkWWxHbj1lYix0LmludGVycG9sYXRlUmVkcz1PYix0LmludGVycG9sYXRlUmdiPXpyLHQuaW50ZXJwb2xhdGVSZ2JCYXNpcz1Scix0LmludGVycG9sYXRlUmdiQmFzaXNDbG9zZWQ9RnIsdC5pbnRlcnBvbGF0ZVJvdW5kPVhyLHQuaW50ZXJwb2xhdGVTaW5lYm93PWZ1bmN0aW9uKHQpe3ZhciBuO3JldHVybiB0PSguNS10KSpNYXRoLlBJLEhiLnI9MjU1KihuPU1hdGguc2luKHQpKSpuLEhiLmc9MjU1KihuPU1hdGguc2luKHQrWGIpKSpuLEhiLmI9MjU1KihuPU1hdGguc2luKHQrR2IpKSpuLEhiKyIifSx0LmludGVycG9sYXRlU3BlY3RyYWw9aWIsdC5pbnRlcnBvbGF0ZVN0cmluZz0kcix0LmludGVycG9sYXRlVHJhbnNmb3JtQ3NzPVFyLHQuaW50ZXJwb2xhdGVUcmFuc2Zvcm1Tdmc9SnIsdC5pbnRlcnBvbGF0ZVR1cmJvPWZ1bmN0aW9uKHQpe3JldHVybiB0PU1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSksInJnYigiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQoMzQuNjErdCooMTE3Mi4zMy10KigxMDc5My41Ni10KigzMzMwMC4xMi10KigzODM5NC40OS0xNDgyNS4wNSp0KSkpKSkpKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQoMjMuMzErdCooNTU3LjMzK3QqKDEyMjUuMzMtdCooMzU3NC45Ni10KigxMDczLjc3KzcwNy41Nip0KSkpKSkpKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQoMjcuMit0KigzMjExLjEtdCooMTUzMjcuOTctdCooMjc4MTQtdCooMjI1NjkuMTgtNjgzOC42Nip0KSkpKSkpKSsiKSJ9LHQuaW50ZXJwb2xhdGVWaXJpZGlzPVdiLHQuaW50ZXJwb2xhdGVXYXJtPUxiLHQuaW50ZXJwb2xhdGVZbEduPUFiLHQuaW50ZXJwb2xhdGVZbEduQnU9d2IsdC5pbnRlcnBvbGF0ZVlsT3JCcj1TYix0LmludGVycG9sYXRlWWxPclJkPWtiLHQuaW50ZXJwb2xhdGVab29tPW5pLHQuaW50ZXJydXB0PUlpLHQuaW50ZXJzZWN0aW9uPWZ1bmN0aW9uKHQsLi4ubil7dD1uZXcgSW50ZXJuU2V0KHQpLG49bi5tYXAodnQpO3Q6Zm9yKGNvbnN0IGUgb2YgdClmb3IoY29uc3QgciBvZiBuKWlmKCFyLmhhcyhlKSl7dC5kZWxldGUoZSk7Y29udGludWUgdH1yZXR1cm4gdH0sdC5pbnRlcnZhbD1mdW5jdGlvbih0LG4sZSl7dmFyIHI9bmV3IEFpLGk9bjtyZXR1cm4gbnVsbD09bj8oci5yZXN0YXJ0KHQsbixlKSxyKTooci5fcmVzdGFydD1yLnJlc3RhcnQsci5yZXN0YXJ0PWZ1bmN0aW9uKHQsbixlKXtuPStuLGU9bnVsbD09ZT93aSgpOitlLHIuX3Jlc3RhcnQoKGZ1bmN0aW9uIG8oYSl7YSs9aSxyLl9yZXN0YXJ0KG8saSs9bixlKSx0KGEpfSksbixlKX0sci5yZXN0YXJ0KHQsbixlKSxyKX0sdC5pc29Gb3JtYXQ9X18sdC5pc29QYXJzZT1tXyx0Lmpzb249ZnVuY3Rpb24odCxuKXtyZXR1cm4gZmV0Y2godCxuKS50aGVuKGFjKX0sdC5sYWI9cnIsdC5sY2g9ZnVuY3Rpb24odCxuLGUscil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2ZyKHQpOm5ldyBscihlLG4sdCxudWxsPT1yPzE6cil9LHQubGVhc3Q9ZnVuY3Rpb24odCxlPW4pe2xldCByLGk9ITE7aWYoMT09PWUubGVuZ3RoKXtsZXQgbztmb3IoY29uc3QgYSBvZiB0KXtjb25zdCB0PWUoYSk7KGk/bih0LG8pPDA6MD09PW4odCx0KSkmJihyPWEsbz10LGk9ITApfX1lbHNlIGZvcihjb25zdCBuIG9mIHQpKGk/ZShuLHIpPDA6MD09PWUobixuKSkmJihyPW4saT0hMCk7cmV0dXJuIHJ9LHQubGVhc3RJbmRleD1odCx0LmxpbmU9U20sdC5saW5lUmFkaWFsPVJtLHQubGluaz0kbSx0LmxpbmtIb3Jpem9udGFsPWZ1bmN0aW9uKCl7cmV0dXJuICRtKFVtKX0sdC5saW5rUmFkaWFsPWZ1bmN0aW9uKCl7Y29uc3QgdD0kbShZbSk7cmV0dXJuIHQuYW5nbGU9dC54LGRlbGV0ZSB0LngsdC5yYWRpdXM9dC55LGRlbGV0ZSB0LnksdH0sdC5saW5rVmVydGljYWw9ZnVuY3Rpb24oKXtyZXR1cm4gJG0oQm0pfSx0LmxvY2FsPUtuLHQubWFwPWZ1bmN0aW9uKHQsbil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHRbU3ltYm9sLml0ZXJhdG9yXSl0aHJvdyBuZXcgVHlwZUVycm9yKCJ2YWx1ZXMgaXMgbm90IGl0ZXJhYmxlIik7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IFR5cGVFcnJvcigibWFwcGVyIGlzIG5vdCBhIGZ1bmN0aW9uIik7cmV0dXJuIEFycmF5LmZyb20odCwoKGUscik9Pm4oZSxyLHQpKSl9LHQubWF0Y2hlcj1IdCx0Lm1heD1KLHQubWF4SW5kZXg9dHQsdC5tZWFuPWZ1bmN0aW9uKHQsbil7bGV0IGU9MCxyPTA7aWYodm9pZCAwPT09bilmb3IobGV0IG4gb2YgdCludWxsIT1uJiYobj0rbik+PW4mJigrK2Uscis9bik7ZWxzZXtsZXQgaT0tMTtmb3IobGV0IG8gb2YgdCludWxsIT0obz1uKG8sKytpLHQpKSYmKG89K28pPj1vJiYoKytlLHIrPW8pfWlmKGUpcmV0dXJuIHIvZX0sdC5tZWRpYW49ZnVuY3Rpb24odCxuKXtyZXR1cm4gYXQodCwuNSxuKX0sdC5tZWRpYW5JbmRleD1mdW5jdGlvbih0LG4pe3JldHVybiBjdCh0LC41LG4pfSx0Lm1lcmdlPWZ0LHQubWluPW50LHQubWluSW5kZXg9ZXQsdC5tb2RlPWZ1bmN0aW9uKHQsbil7Y29uc3QgZT1uZXcgSW50ZXJuTWFwO2lmKHZvaWQgMD09PW4pZm9yKGxldCBuIG9mIHQpbnVsbCE9biYmbj49biYmZS5zZXQobiwoZS5nZXQobil8fDApKzEpO2Vsc2V7bGV0IHI9LTE7Zm9yKGxldCBpIG9mIHQpbnVsbCE9KGk9bihpLCsrcix0KSkmJmk+PWkmJmUuc2V0KGksKGUuZ2V0KGkpfHwwKSsxKX1sZXQgcixpPTA7Zm9yKGNvbnN0W3Qsbl1vZiBlKW4+aSYmKGk9bixyPXQpO3JldHVybiByfSx0Lm5hbWVzcGFjZT1xdCx0Lm5hbWVzcGFjZXM9RnQsdC5uaWNlPVosdC5ub3c9d2ksdC5wYWNrPWZ1bmN0aW9uKCl7dmFyIHQ9bnVsbCxuPTEsZT0xLHI9Q2Q7ZnVuY3Rpb24gaShpKXtjb25zdCBvPURkKCk7cmV0dXJuIGkueD1uLzIsaS55PWUvMix0P2kuZWFjaEJlZm9yZShWZCh0KSkuZWFjaEFmdGVyKFdkKHIsLjUsbykpLmVhY2hCZWZvcmUoWmQoMSkpOmkuZWFjaEJlZm9yZShWZChHZCkpLmVhY2hBZnRlcihXZChDZCwxLG8pKS5lYWNoQWZ0ZXIoV2QocixpLnIvTWF0aC5taW4obixlKSxvKSkuZWFjaEJlZm9yZShaZChNYXRoLm1pbihuLGUpLygyKmkucikpKSxpfXJldHVybiBpLnJhZGl1cz1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1rZChuKSxpKTp0fSxpLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K3RbMF0sZT0rdFsxXSxpKTpbbixlXX0saS5wYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6UGQoK3QpLGkpOnJ9LGl9LHQucGFja0VuY2xvc2U9ZnVuY3Rpb24odCl7cmV0dXJuIFJkKHQsRGQoKSl9LHQucGFja1NpYmxpbmdzPWZ1bmN0aW9uKHQpe3JldHVybiBYZCh0LERkKCkpLHR9LHQucGFpcnM9ZnVuY3Rpb24odCxuPXN0KXtjb25zdCBlPVtdO2xldCByLGk9ITE7Zm9yKGNvbnN0IG8gb2YgdClpJiZlLnB1c2gobihyLG8pKSxyPW8saT0hMDtyZXR1cm4gZX0sdC5wYXJ0aXRpb249ZnVuY3Rpb24oKXt2YXIgdD0xLG49MSxlPTAscj0hMTtmdW5jdGlvbiBpKGkpe3ZhciBvPWkuaGVpZ2h0KzE7cmV0dXJuIGkueDA9aS55MD1lLGkueDE9dCxpLnkxPW4vbyxpLmVhY2hCZWZvcmUoZnVuY3Rpb24odCxuKXtyZXR1cm4gZnVuY3Rpb24ocil7ci5jaGlsZHJlbiYmUWQocixyLngwLHQqKHIuZGVwdGgrMSkvbixyLngxLHQqKHIuZGVwdGgrMikvbik7dmFyIGk9ci54MCxvPXIueTAsYT1yLngxLWUsdT1yLnkxLWU7YTxpJiYoaT1hPShpK2EpLzIpLHU8byYmKG89dT0obyt1KS8yKSxyLngwPWksci55MD1vLHIueDE9YSxyLnkxPXV9fShuLG8pKSxyJiZpLmVhY2hCZWZvcmUoS2QpLGl9cmV0dXJuIGkucm91bmQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ISF0LGkpOnJ9LGkuc2l6ZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0rZVswXSxuPStlWzFdLGkpOlt0LG5dfSxpLnBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9K3QsaSk6ZX0saX0sdC5wYXRoPVBhLHQucGVybXV0ZT1PLHQucGllPWZ1bmN0aW9uKCl7dmFyIHQ9Tm0sbj1rbSxlPW51bGwscj1KYigwKSxpPUpiKHNtKSxvPUpiKDApO2Z1bmN0aW9uIGEoYSl7dmFyIHUsYyxmLHMsbCxoPShhPXhtKGEpKS5sZW5ndGgsZD0wLHA9bmV3IEFycmF5KGgpLGc9bmV3IEFycmF5KGgpLHk9K3IuYXBwbHkodGhpcyxhcmd1bWVudHMpLHY9TWF0aC5taW4oc20sTWF0aC5tYXgoLXNtLGkuYXBwbHkodGhpcyxhcmd1bWVudHMpLXkpKSxfPU1hdGgubWluKE1hdGguYWJzKHYpL2gsby5hcHBseSh0aGlzLGFyZ3VtZW50cykpLGI9XyoodjwwPy0xOjEpO2Zvcih1PTA7dTxoOysrdSkobD1nW3BbdV09dV09K3QoYVt1XSx1LGEpKT4wJiYoZCs9bCk7Zm9yKG51bGwhPW4/cC5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiBuKGdbdF0sZ1tlXSl9KSk6bnVsbCE9ZSYmcC5zb3J0KChmdW5jdGlvbih0LG4pe3JldHVybiBlKGFbdF0sYVtuXSl9KSksdT0wLGY9ZD8odi1oKmIpL2Q6MDt1PGg7Kyt1LHk9cyljPXBbdV0scz15KygobD1nW2NdKT4wP2wqZjowKStiLGdbY109e2RhdGE6YVtjXSxpbmRleDp1LHZhbHVlOmwsc3RhcnRBbmdsZTp5LGVuZEFuZ2xlOnMscGFkQW5nbGU6X307cmV0dXJuIGd9cmV0dXJuIGEudmFsdWU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpKYigrbiksYSk6dH0sYS5zb3J0VmFsdWVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQsZT1udWxsLGEpOm59LGEuc29ydD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LG49bnVsbCxhKTplfSxhLnN0YXJ0QW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpKYigrdCksYSk6cn0sYS5lbmRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkpiKCt0KSxhKTppfSxhLnBhZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6SmIoK3QpLGEpOm99LGF9LHQucGllY2V3aXNlPWxpLHQucG9pbnRSYWRpYWw9cW0sdC5wb2ludGVyPXRlLHQucG9pbnRlcnM9ZnVuY3Rpb24odCxuKXtyZXR1cm4gdC50YXJnZXQmJih0PUpuKHQpLHZvaWQgMD09PW4mJihuPXQuY3VycmVudFRhcmdldCksdD10LnRvdWNoZXN8fFt0XSksQXJyYXkuZnJvbSh0LCh0PT50ZSh0LG4pKSl9LHQucG9seWdvbkFyZWE9ZnVuY3Rpb24odCl7Zm9yKHZhciBuLGU9LTEscj10Lmxlbmd0aCxpPXRbci0xXSxvPTA7KytlPHI7KW49aSxpPXRbZV0sbys9blsxXSppWzBdLW5bMF0qaVsxXTtyZXR1cm4gby8yfSx0LnBvbHlnb25DZW50cm9pZD1mdW5jdGlvbih0KXtmb3IodmFyIG4sZSxyPS0xLGk9dC5sZW5ndGgsbz0wLGE9MCx1PXRbaS0xXSxjPTA7KytyPGk7KW49dSx1PXRbcl0sYys9ZT1uWzBdKnVbMV0tdVswXSpuWzFdLG8rPShuWzBdK3VbMF0pKmUsYSs9KG5bMV0rdVsxXSkqZTtyZXR1cm5bby8oYyo9MyksYS9jXX0sdC5wb2x5Z29uQ29udGFpbnM9ZnVuY3Rpb24odCxuKXtmb3IodmFyIGUscixpPXQubGVuZ3RoLG89dFtpLTFdLGE9blswXSx1PW5bMV0sYz1vWzBdLGY9b1sxXSxzPSExLGw9MDtsPGk7KytsKWU9KG89dFtsXSlbMF0sKHI9b1sxXSk+dSE9Zj51JiZhPChjLWUpKih1LXIpLyhmLXIpK2UmJihzPSFzKSxjPWUsZj1yO3JldHVybiBzfSx0LnBvbHlnb25IdWxsPWZ1bmN0aW9uKHQpe2lmKChlPXQubGVuZ3RoKTwzKXJldHVybiBudWxsO3ZhciBuLGUscj1uZXcgQXJyYXkoZSksaT1uZXcgQXJyYXkoZSk7Zm9yKG49MDtuPGU7KytuKXJbbl09Wyt0W25dWzBdLCt0W25dWzFdLG5dO2ZvcihyLnNvcnQoX3ApLG49MDtuPGU7KytuKWlbbl09W3Jbbl1bMF0sLXJbbl1bMV1dO3ZhciBvPWJwKHIpLGE9YnAoaSksdT1hWzBdPT09b1swXSxjPWFbYS5sZW5ndGgtMV09PT1vW28ubGVuZ3RoLTFdLGY9W107Zm9yKG49by5sZW5ndGgtMTtuPj0wOy0tbilmLnB1c2godFtyW29bbl1dWzJdXSk7Zm9yKG49K3U7bjxhLmxlbmd0aC1jOysrbilmLnB1c2godFtyW2Fbbl1dWzJdXSk7cmV0dXJuIGZ9LHQucG9seWdvbkxlbmd0aD1mdW5jdGlvbih0KXtmb3IodmFyIG4sZSxyPS0xLGk9dC5sZW5ndGgsbz10W2ktMV0sYT1vWzBdLHU9b1sxXSxjPTA7KytyPGk7KW49YSxlPXUsbi09YT0obz10W3JdKVswXSxlLT11PW9bMV0sYys9TWF0aC5oeXBvdChuLGUpO3JldHVybiBjfSx0LnByZWNpc2lvbkZpeGVkPWpjLHQucHJlY2lzaW9uUHJlZml4PSRjLHQucHJlY2lzaW9uUm91bmQ9SGMsdC5xdWFkdHJlZT1nYyx0LnF1YW50aWxlPWF0LHQucXVhbnRpbGVJbmRleD1jdCx0LnF1YW50aWxlU29ydGVkPXV0LHQucXVhbnRpemU9ZnVuY3Rpb24odCxuKXtmb3IodmFyIGU9bmV3IEFycmF5KG4pLHI9MDtyPG47KytyKWVbcl09dChyLyhuLTEpKTtyZXR1cm4gZX0sdC5xdWlja3NlbGVjdD1ydCx0LnJhZGlhbEFyZWE9Rm0sdC5yYWRpYWxMaW5lPVJtLHQucmFuZG9tQmF0ZXM9U3AsdC5yYW5kb21CZXJub3VsbGk9TnAsdC5yYW5kb21CZXRhPXpwLHQucmFuZG9tQmlub21pYWw9RHAsdC5yYW5kb21DYXVjaHk9RnAsdC5yYW5kb21FeHBvbmVudGlhbD1FcCx0LnJhbmRvbUdhbW1hPVBwLHQucmFuZG9tR2VvbWV0cmljPUNwLHQucmFuZG9tSW50PXdwLHQucmFuZG9tSXJ3aW5IYWxsPVRwLHQucmFuZG9tTGNnPWZ1bmN0aW9uKHQ9TWF0aC5yYW5kb20oKSl7bGV0IG49MHwoMDw9dCYmdDwxP3QvT3A6TWF0aC5hYnModCkpO3JldHVybigpPT4obj0xNjY0NTI1Km4rMTAxMzkwNDIyM3wwLE9wKihuPj4+MCkpfSx0LnJhbmRvbUxvZ05vcm1hbD1BcCx0LnJhbmRvbUxvZ2lzdGljPXFwLHQucmFuZG9tTm9ybWFsPU1wLHQucmFuZG9tUGFyZXRvPWtwLHQucmFuZG9tUG9pc3Nvbj1JcCx0LnJhbmRvbVVuaWZvcm09eHAsdC5yYW5kb21XZWlidWxsPVJwLHQucmFuZ2U9bHQsdC5yYW5rPWZ1bmN0aW9uKHQsZT1uKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdFtTeW1ib2wuaXRlcmF0b3JdKXRocm93IG5ldyBUeXBlRXJyb3IoInZhbHVlcyBpcyBub3QgaXRlcmFibGUiKTtsZXQgcj1BcnJheS5mcm9tKHQpO2NvbnN0IGk9bmV3IEZsb2F0NjRBcnJheShyLmxlbmd0aCk7MiE9PWUubGVuZ3RoJiYocj1yLm1hcChlKSxlPW4pO2NvbnN0IG89KHQsbik9PmUoclt0XSxyW25dKTtsZXQgYSx1O3JldHVybiBVaW50MzJBcnJheS5mcm9tKHIsKCh0LG4pPT5uKSkuc29ydChlPT09bj8odCxuKT0+WShyW3RdLHJbbl0pOkIobykpLmZvckVhY2goKCh0LG4pPT57Y29uc3QgZT1vKHQsdm9pZCAwPT09YT90OmEpO2U+PTA/KCh2b2lkIDA9PT1hfHxlPjApJiYoYT10LHU9biksaVt0XT11KTppW3RdPU5hTn0pKSxpfSx0LnJlZHVjZT1mdW5jdGlvbih0LG4sZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IFR5cGVFcnJvcigicmVkdWNlciBpcyBub3QgYSBmdW5jdGlvbiIpO2NvbnN0IHI9dFtTeW1ib2wuaXRlcmF0b3JdKCk7bGV0IGksbyxhPS0xO2lmKGFyZ3VtZW50cy5sZW5ndGg8Myl7aWYoKHtkb25lOmksdmFsdWU6ZX09ci5uZXh0KCkpLGkpcmV0dXJuOysrYX1mb3IoOyh7ZG9uZTppLHZhbHVlOm99PXIubmV4dCgpKSwhaTspZT1uKGUsbywrK2EsdCk7cmV0dXJuIGV9LHQucmV2ZXJzZT1mdW5jdGlvbih0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdFtTeW1ib2wuaXRlcmF0b3JdKXRocm93IG5ldyBUeXBlRXJyb3IoInZhbHVlcyBpcyBub3QgaXRlcmFibGUiKTtyZXR1cm4gQXJyYXkuZnJvbSh0KS5yZXZlcnNlKCl9LHQucmdiPUZlLHQucmliYm9uPWZ1bmN0aW9uKCl7cmV0dXJuIFlhKCl9LHQucmliYm9uQXJyb3c9ZnVuY3Rpb24oKXtyZXR1cm4gWWEoQmEpfSx0LnJvbGx1cD1SLHQucm9sbHVwcz1GLHQuc2NhbGVCYW5kPWpwLHQuc2NhbGVEaXZlcmdpbmc9ZnVuY3Rpb24gdCgpe3ZhciBuPW5nKEVfKCkoR3ApKTtyZXR1cm4gbi5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFRfKG4sdCgpKX0sQnAuYXBwbHkobixhcmd1bWVudHMpfSx0LnNjYWxlRGl2ZXJnaW5nTG9nPWZ1bmN0aW9uIHQoKXt2YXIgbj1mZyhFXygpKS5kb21haW4oWy4xLDEsMTBdKTtyZXR1cm4gbi5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFRfKG4sdCgpKS5iYXNlKG4uYmFzZSgpKX0sQnAuYXBwbHkobixhcmd1bWVudHMpfSx0LnNjYWxlRGl2ZXJnaW5nUG93PWtfLHQuc2NhbGVEaXZlcmdpbmdTcXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIGtfLmFwcGx5KG51bGwsYXJndW1lbnRzKS5leHBvbmVudCguNSl9LHQuc2NhbGVEaXZlcmdpbmdTeW1sb2c9ZnVuY3Rpb24gdCgpe3ZhciBuPWhnKEVfKCkpO3JldHVybiBuLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gVF8obix0KCkpLmNvbnN0YW50KG4uY29uc3RhbnQoKSl9LEJwLmFwcGx5KG4sYXJndW1lbnRzKX0sdC5zY2FsZUlkZW50aXR5PWZ1bmN0aW9uIHQobil7dmFyIGU7ZnVuY3Rpb24gcih0KXtyZXR1cm4gbnVsbD09dHx8aXNOYU4odD0rdCk/ZTp0fXJldHVybiByLmludmVydD1yLHIuZG9tYWluPXIucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49QXJyYXkuZnJvbSh0LEhwKSxyKTpuLnNsaWNlKCl9LHIudW5rbm93bj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LHIpOmV9LHIuY29weT1mdW5jdGlvbigpe3JldHVybiB0KG4pLnVua25vd24oZSl9LG49YXJndW1lbnRzLmxlbmd0aD9BcnJheS5mcm9tKG4sSHApOlswLDFdLG5nKHIpfSx0LnNjYWxlSW1wbGljaXQ9WXAsdC5zY2FsZUxpbmVhcj1mdW5jdGlvbiB0KCl7dmFyIG49SnAoKTtyZXR1cm4gbi5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIEtwKG4sdCgpKX0sVXAuYXBwbHkobixhcmd1bWVudHMpLG5nKG4pfSx0LnNjYWxlTG9nPWZ1bmN0aW9uIHQoKXtjb25zdCBuPWZnKFFwKCkpLmRvbWFpbihbMSwxMF0pO3JldHVybiBuLmNvcHk9KCk9PktwKG4sdCgpKS5iYXNlKG4uYmFzZSgpKSxVcC5hcHBseShuLGFyZ3VtZW50cyksbn0sdC5zY2FsZU9yZGluYWw9THAsdC5zY2FsZVBvaW50PWZ1bmN0aW9uKCl7cmV0dXJuICRwKGpwLmFwcGx5KG51bGwsYXJndW1lbnRzKS5wYWRkaW5nSW5uZXIoMSkpfSx0LnNjYWxlUG93PXZnLHQuc2NhbGVRdWFudGlsZT1mdW5jdGlvbiB0KCl7dmFyIGUscj1bXSxpPVtdLG89W107ZnVuY3Rpb24gYSgpe3ZhciB0PTAsbj1NYXRoLm1heCgxLGkubGVuZ3RoKTtmb3Iobz1uZXcgQXJyYXkobi0xKTsrK3Q8bjspb1t0LTFdPXV0KHIsdC9uKTtyZXR1cm4gdX1mdW5jdGlvbiB1KHQpe3JldHVybiBudWxsPT10fHxpc05hTih0PSt0KT9lOmlbbChvLHQpXX1yZXR1cm4gdS5pbnZlcnRFeHRlbnQ9ZnVuY3Rpb24odCl7dmFyIG49aS5pbmRleE9mKHQpO3JldHVybiBuPDA/W05hTixOYU5dOltuPjA/b1tuLTFdOnJbMF0sbjxvLmxlbmd0aD9vW25dOnJbci5sZW5ndGgtMV1dfSx1LmRvbWFpbj1mdW5jdGlvbih0KXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gci5zbGljZSgpO3I9W107Zm9yKGxldCBuIG9mIHQpbnVsbD09bnx8aXNOYU4obj0rbil8fHIucHVzaChuKTtyZXR1cm4gci5zb3J0KG4pLGEoKX0sdS5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1BcnJheS5mcm9tKHQpLGEoKSk6aS5zbGljZSgpfSx1LnVua25vd249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCx1KTplfSx1LnF1YW50aWxlcz1mdW5jdGlvbigpe3JldHVybiBvLnNsaWNlKCl9LHUuY29weT1mdW5jdGlvbigpe3JldHVybiB0KCkuZG9tYWluKHIpLnJhbmdlKGkpLnVua25vd24oZSl9LFVwLmFwcGx5KHUsYXJndW1lbnRzKX0sdC5zY2FsZVF1YW50aXplPWZ1bmN0aW9uIHQoKXt2YXIgbixlPTAscj0xLGk9MSxvPVsuNV0sYT1bMCwxXTtmdW5jdGlvbiB1KHQpe3JldHVybiBudWxsIT10JiZ0PD10P2FbbChvLHQsMCxpKV06bn1mdW5jdGlvbiBjKCl7dmFyIHQ9LTE7Zm9yKG89bmV3IEFycmF5KGkpOysrdDxpOylvW3RdPSgodCsxKSpyLSh0LWkpKmUpLyhpKzEpO3JldHVybiB1fXJldHVybiB1LmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oW2Uscl09dCxlPStlLHI9K3IsYygpKTpbZSxyXX0sdS5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0oYT1BcnJheS5mcm9tKHQpKS5sZW5ndGgtMSxjKCkpOmEuc2xpY2UoKX0sdS5pbnZlcnRFeHRlbnQ9ZnVuY3Rpb24odCl7dmFyIG49YS5pbmRleE9mKHQpO3JldHVybiBuPDA/W05hTixOYU5dOm48MT9bZSxvWzBdXTpuPj1pP1tvW2ktMV0scl06W29bbi0xXSxvW25dXX0sdS51bmtub3duPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQsdSk6dX0sdS50aHJlc2hvbGRzPWZ1bmN0aW9uKCl7cmV0dXJuIG8uc2xpY2UoKX0sdS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHQoKS5kb21haW4oW2Uscl0pLnJhbmdlKGEpLnVua25vd24obil9LFVwLmFwcGx5KG5nKHUpLGFyZ3VtZW50cyl9LHQuc2NhbGVSYWRpYWw9ZnVuY3Rpb24gdCgpe3ZhciBuLGU9SnAoKSxyPVswLDFdLGk9ITE7ZnVuY3Rpb24gbyh0KXt2YXIgcj1iZyhlKHQpKTtyZXR1cm4gaXNOYU4ocik/bjppP01hdGgucm91bmQocik6cn1yZXR1cm4gby5pbnZlcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGUuaW52ZXJ0KF9nKHQpKX0sby5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGUuZG9tYWluKHQpLG8pOmUuZG9tYWluKCl9LG8ucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGUucmFuZ2UoKHI9QXJyYXkuZnJvbSh0LEhwKSkubWFwKF9nKSksbyk6ci5zbGljZSgpfSxvLnJhbmdlUm91bmQ9ZnVuY3Rpb24odCl7cmV0dXJuIG8ucmFuZ2UodCkucm91bmQoITApfSxvLnJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSEhdCxvKTppfSxvLmNsYW1wPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlLmNsYW1wKHQpLG8pOmUuY2xhbXAoKX0sby51bmtub3duPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQsbyk6bn0sby5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHQoZS5kb21haW4oKSxyKS5yb3VuZChpKS5jbGFtcChlLmNsYW1wKCkpLnVua25vd24obil9LFVwLmFwcGx5KG8sYXJndW1lbnRzKSxuZyhvKX0sdC5zY2FsZVNlcXVlbnRpYWw9ZnVuY3Rpb24gdCgpe3ZhciBuPW5nKEFfKCkoR3ApKTtyZXR1cm4gbi5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFRfKG4sdCgpKX0sQnAuYXBwbHkobixhcmd1bWVudHMpfSx0LnNjYWxlU2VxdWVudGlhbExvZz1mdW5jdGlvbiB0KCl7dmFyIG49ZmcoQV8oKSkuZG9tYWluKFsxLDEwXSk7cmV0dXJuIG4uY29weT1mdW5jdGlvbigpe3JldHVybiBUXyhuLHQoKSkuYmFzZShuLmJhc2UoKSl9LEJwLmFwcGx5KG4sYXJndW1lbnRzKX0sdC5zY2FsZVNlcXVlbnRpYWxQb3c9U18sdC5zY2FsZVNlcXVlbnRpYWxRdWFudGlsZT1mdW5jdGlvbiB0KCl7dmFyIGU9W10scj1HcDtmdW5jdGlvbiBpKHQpe2lmKG51bGwhPXQmJiFpc05hTih0PSt0KSlyZXR1cm4gcigobChlLHQsMSktMSkvKGUubGVuZ3RoLTEpKX1yZXR1cm4gaS5kb21haW49ZnVuY3Rpb24odCl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGUuc2xpY2UoKTtlPVtdO2ZvcihsZXQgbiBvZiB0KW51bGw9PW58fGlzTmFOKG49K24pfHxlLnB1c2gobik7cmV0dXJuIGUuc29ydChuKSxpfSxpLmludGVycG9sYXRvcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LGkpOnJ9LGkucmFuZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gZS5tYXAoKCh0LG4pPT5yKG4vKGUubGVuZ3RoLTEpKSkpfSxpLnF1YW50aWxlcz1mdW5jdGlvbih0KXtyZXR1cm4gQXJyYXkuZnJvbSh7bGVuZ3RoOnQrMX0sKChuLHIpPT5hdChlLHIvdCkpKX0saS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHQocikuZG9tYWluKGUpfSxCcC5hcHBseShpLGFyZ3VtZW50cyl9LHQuc2NhbGVTZXF1ZW50aWFsU3FydD1mdW5jdGlvbigpe3JldHVybiBTXy5hcHBseShudWxsLGFyZ3VtZW50cykuZXhwb25lbnQoLjUpfSx0LnNjYWxlU2VxdWVudGlhbFN5bWxvZz1mdW5jdGlvbiB0KCl7dmFyIG49aGcoQV8oKSk7cmV0dXJuIG4uY29weT1mdW5jdGlvbigpe3JldHVybiBUXyhuLHQoKSkuY29uc3RhbnQobi5jb25zdGFudCgpKX0sQnAuYXBwbHkobixhcmd1bWVudHMpfSx0LnNjYWxlU3FydD1mdW5jdGlvbigpe3JldHVybiB2Zy5hcHBseShudWxsLGFyZ3VtZW50cykuZXhwb25lbnQoLjUpfSx0LnNjYWxlU3ltbG9nPWZ1bmN0aW9uIHQoKXt2YXIgbj1oZyhRcCgpKTtyZXR1cm4gbi5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIEtwKG4sdCgpKS5jb25zdGFudChuLmNvbnN0YW50KCkpfSxVcC5hcHBseShuLGFyZ3VtZW50cyl9LHQuc2NhbGVUaHJlc2hvbGQ9ZnVuY3Rpb24gdCgpe3ZhciBuLGU9Wy41XSxyPVswLDFdLGk9MTtmdW5jdGlvbiBvKHQpe3JldHVybiBudWxsIT10JiZ0PD10P3JbbChlLHQsMCxpKV06bn1yZXR1cm4gby5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9QXJyYXkuZnJvbSh0KSxpPU1hdGgubWluKGUubGVuZ3RoLHIubGVuZ3RoLTEpLG8pOmUuc2xpY2UoKX0sby5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1BcnJheS5mcm9tKHQpLGk9TWF0aC5taW4oZS5sZW5ndGgsci5sZW5ndGgtMSksbyk6ci5zbGljZSgpfSxvLmludmVydEV4dGVudD1mdW5jdGlvbih0KXt2YXIgbj1yLmluZGV4T2YodCk7cmV0dXJuW2Vbbi0xXSxlW25dXX0sby51bmtub3duPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQsbyk6bn0sby5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHQoKS5kb21haW4oZSkucmFuZ2UocikudW5rbm93bihuKX0sVXAuYXBwbHkobyxhcmd1bWVudHMpfSx0LnNjYWxlVGltZT1mdW5jdGlvbigpe3JldHVybiBVcC5hcHBseShNXyhIeSxYeSxzeSx1eSxYZyxqZyxCZyxJZyxSZyx0LnRpbWVGb3JtYXQpLmRvbWFpbihbbmV3IERhdGUoMmUzLDAsMSksbmV3IERhdGUoMmUzLDAsMildKSxhcmd1bWVudHMpfSx0LnNjYWxlVXRjPWZ1bmN0aW9uKCl7cmV0dXJuIFVwLmFwcGx5KE1fKGp5LCR5LEJ5LEl5LHd5LGJ5LHl5LGR5LFJnLHQudXRjRm9ybWF0KS5kb21haW4oW0RhdGUuVVRDKDJlMywwLDEpLERhdGUuVVRDKDJlMywwLDIpXSksYXJndW1lbnRzKX0sdC5zY2FuPWZ1bmN0aW9uKHQsbil7Y29uc3QgZT1odCh0LG4pO3JldHVybiBlPDA/dm9pZCAwOmV9LHQuc2NoZW1lQWNjZW50PVBfLHQuc2NoZW1lQmx1ZXM9TmIsdC5zY2hlbWVCckJHPVlfLHQuc2NoZW1lQnVHbj1vYix0LnNjaGVtZUJ1UHU9dWIsdC5zY2hlbWVDYXRlZ29yeTEwPUNfLHQuc2NoZW1lRGFyazI9el8sdC5zY2hlbWVHbkJ1PWZiLHQuc2NoZW1lR3JlZW5zPVBiLHQuc2NoZW1lR3JleXM9RGIsdC5zY2hlbWVPclJkPWxiLHQuc2NoZW1lT3Jhbmdlcz1VYix0LnNjaGVtZVBSR249al8sdC5zY2hlbWVQYWlyZWQ9RF8sdC5zY2hlbWVQYXN0ZWwxPVJfLHQuc2NoZW1lUGFzdGVsMj1GXyx0LnNjaGVtZVBpWUc9SF8sdC5zY2hlbWVQdUJ1PWdiLHQuc2NoZW1lUHVCdUduPWRiLHQuc2NoZW1lUHVPcj1HXyx0LnNjaGVtZVB1UmQ9dmIsdC5zY2hlbWVQdXJwbGVzPUZiLHQuc2NoZW1lUmRCdT1XXyx0LnNjaGVtZVJkR3k9S18sdC5zY2hlbWVSZFB1PWJiLHQuc2NoZW1lUmRZbEJ1PUpfLHQuc2NoZW1lUmRZbEduPW5iLHQuc2NoZW1lUmVkcz1JYix0LnNjaGVtZVNldDE9cV8sdC5zY2hlbWVTZXQyPUlfLHQuc2NoZW1lU2V0Mz1PXyx0LnNjaGVtZVNwZWN0cmFsPXJiLHQuc2NoZW1lVGFibGVhdTEwPVVfLHQuc2NoZW1lWWxHbj1NYix0LnNjaGVtZVlsR25CdT14Yix0LnNjaGVtZVlsT3JCcj1UYix0LnNjaGVtZVlsT3JSZD1FYix0LnNlbGVjdD1Xbix0LnNlbGVjdEFsbD1mdW5jdGlvbih0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/bmV3IEduKFtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHQpXSxbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XSk6bmV3IEduKFtMdCh0KV0sWG4pfSx0LnNlbGVjdGlvbj1Wbix0LnNlbGVjdG9yPVl0LHQuc2VsZWN0b3JBbGw9JHQsdC5zaHVmZmxlPWR0LHQuc2h1ZmZsZXI9cHQsdC5zb21lPWZ1bmN0aW9uKHQsbil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IFR5cGVFcnJvcigidGVzdCBpcyBub3QgYSBmdW5jdGlvbiIpO2xldCBlPS0xO2Zvcihjb25zdCByIG9mIHQpaWYobihyLCsrZSx0KSlyZXR1cm4hMDtyZXR1cm4hMX0sdC5zb3J0PVUsdC5zdGFjaz1mdW5jdGlvbigpe3ZhciB0PUpiKFtdKSxuPUt4LGU9Wngscj1ReDtmdW5jdGlvbiBpKGkpe3ZhciBvLGEsdT1BcnJheS5mcm9tKHQuYXBwbHkodGhpcyxhcmd1bWVudHMpLEp4KSxjPXUubGVuZ3RoLGY9LTE7Zm9yKGNvbnN0IHQgb2YgaSlmb3Iobz0wLCsrZjtvPGM7KytvKSh1W29dW2ZdPVswLCtyKHQsdVtvXS5rZXksZixpKV0pLmRhdGE9dDtmb3Iobz0wLGE9eG0obih1KSk7bzxjOysrbyl1W2Fbb11dLmluZGV4PW87cmV0dXJuIGUodSxhKSx1fXJldHVybiBpLmtleXM9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpKYihBcnJheS5mcm9tKG4pKSxpKTp0fSxpLnZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6SmIoK3QpLGkpOnJ9LGkub3JkZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49bnVsbD09dD9LeDoiZnVuY3Rpb24iPT10eXBlb2YgdD90OkpiKEFycmF5LmZyb20odCkpLGkpOm59LGkub2Zmc2V0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPW51bGw9PXQ/Wng6dCxpKTplfSxpfSx0LnN0YWNrT2Zmc2V0RGl2ZXJnaW5nPWZ1bmN0aW9uKHQsbil7aWYoKHU9dC5sZW5ndGgpPjApZm9yKHZhciBlLHIsaSxvLGEsdSxjPTAsZj10W25bMF1dLmxlbmd0aDtjPGY7KytjKWZvcihvPWE9MCxlPTA7ZTx1OysrZSkoaT0ocj10W25bZV1dW2NdKVsxXS1yWzBdKT4wPyhyWzBdPW8sclsxXT1vKz1pKTppPDA/KHJbMV09YSxyWzBdPWErPWkpOihyWzBdPTAsclsxXT1pKX0sdC5zdGFja09mZnNldEV4cGFuZD1mdW5jdGlvbih0LG4pe2lmKChyPXQubGVuZ3RoKT4wKXtmb3IodmFyIGUscixpLG89MCxhPXRbMF0ubGVuZ3RoO288YTsrK28pe2ZvcihpPWU9MDtlPHI7KytlKWkrPXRbZV1bb11bMV18fDA7aWYoaSlmb3IoZT0wO2U8cjsrK2UpdFtlXVtvXVsxXS89aX1aeCh0LG4pfX0sdC5zdGFja09mZnNldE5vbmU9WngsdC5zdGFja09mZnNldFNpbGhvdWV0dGU9ZnVuY3Rpb24odCxuKXtpZigoZT10Lmxlbmd0aCk+MCl7Zm9yKHZhciBlLHI9MCxpPXRbblswXV0sbz1pLmxlbmd0aDtyPG87KytyKXtmb3IodmFyIGE9MCx1PTA7YTxlOysrYSl1Kz10W2FdW3JdWzFdfHwwO2lbcl1bMV0rPWlbcl1bMF09LXUvMn1aeCh0LG4pfX0sdC5zdGFja09mZnNldFdpZ2dsZT1mdW5jdGlvbih0LG4pe2lmKChpPXQubGVuZ3RoKT4wJiYocj0oZT10W25bMF1dKS5sZW5ndGgpPjApe2Zvcih2YXIgZSxyLGksbz0wLGE9MTthPHI7KythKXtmb3IodmFyIHU9MCxjPTAsZj0wO3U8aTsrK3Upe2Zvcih2YXIgcz10W25bdV1dLGw9c1thXVsxXXx8MCxoPShsLShzW2EtMV1bMV18fDApKS8yLGQ9MDtkPHU7KytkKXt2YXIgcD10W25bZF1dO2grPShwW2FdWzFdfHwwKS0ocFthLTFdWzFdfHwwKX1jKz1sLGYrPWgqbH1lW2EtMV1bMV0rPWVbYS0xXVswXT1vLGMmJihvLT1mL2MpfWVbYS0xXVsxXSs9ZVthLTFdWzBdPW8sWngodCxuKX19LHQuc3RhY2tPcmRlckFwcGVhcmFuY2U9dHcsdC5zdGFja09yZGVyQXNjZW5kaW5nPWV3LHQuc3RhY2tPcmRlckRlc2NlbmRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGV3KHQpLnJldmVyc2UoKX0sdC5zdGFja09yZGVySW5zaWRlT3V0PWZ1bmN0aW9uKHQpe3ZhciBuLGUscj10Lmxlbmd0aCxpPXQubWFwKHJ3KSxvPXR3KHQpLGE9MCx1PTAsYz1bXSxmPVtdO2ZvcihuPTA7bjxyOysrbillPW9bbl0sYTx1PyhhKz1pW2VdLGMucHVzaChlKSk6KHUrPWlbZV0sZi5wdXNoKGUpKTtyZXR1cm4gZi5yZXZlcnNlKCkuY29uY2F0KGMpfSx0LnN0YWNrT3JkZXJOb25lPUt4LHQuc3RhY2tPcmRlclJldmVyc2U9ZnVuY3Rpb24odCl7cmV0dXJuIEt4KHQpLnJldmVyc2UoKX0sdC5zdHJhdGlmeT1mdW5jdGlvbigpe3ZhciB0LG49ZXAsZT1ycDtmdW5jdGlvbiByKHIpe3ZhciBpLG8sYSx1LGMsZixzLGwsaD1BcnJheS5mcm9tKHIpLGQ9bixwPWUsZz1uZXcgTWFwO2lmKG51bGwhPXQpe2NvbnN0IG49aC5tYXAoKChuLGUpPT5mdW5jdGlvbih0KXtsZXQgbj0odD1gJHt0fWApLmxlbmd0aDtvcCh0LG4tMSkmJiFvcCh0LG4tMikmJih0PXQuc2xpY2UoMCwtMSkpO3JldHVybiIvIj09PXRbMF0/dDpgLyR7dH1gfSh0KG4sZSxyKSkpKSxlPW4ubWFwKGlwKSxpPW5ldyBTZXQobikuYWRkKCIiKTtmb3IoY29uc3QgdCBvZiBlKWkuaGFzKHQpfHwoaS5hZGQodCksbi5wdXNoKHQpLGUucHVzaChpcCh0KSksaC5wdXNoKG5wKSk7ZD0odCxlKT0+bltlXSxwPSh0LG4pPT5lW25dfWZvcihhPTAsaT1oLmxlbmd0aDthPGk7KythKW89aFthXSxmPWhbYV09bmV3IEVkKG8pLG51bGwhPShzPWQobyxhLHIpKSYmKHMrPSIiKSYmKGw9Zi5pZD1zLGcuc2V0KGwsZy5oYXMobCk/dHA6ZikpLG51bGwhPShzPXAobyxhLHIpKSYmKHMrPSIiKSYmKGYucGFyZW50PXMpO2ZvcihhPTA7YTxpOysrYSlpZihzPShmPWhbYV0pLnBhcmVudCl7aWYoIShjPWcuZ2V0KHMpKSl0aHJvdyBuZXcgRXJyb3IoIm1pc3Npbmc6ICIrcyk7aWYoYz09PXRwKXRocm93IG5ldyBFcnJvcigiYW1iaWd1b3VzOiAiK3MpO2MuY2hpbGRyZW4/Yy5jaGlsZHJlbi5wdXNoKGYpOmMuY2hpbGRyZW49W2ZdLGYucGFyZW50PWN9ZWxzZXtpZih1KXRocm93IG5ldyBFcnJvcigibXVsdGlwbGUgcm9vdHMiKTt1PWZ9aWYoIXUpdGhyb3cgbmV3IEVycm9yKCJubyByb290Iik7aWYobnVsbCE9dCl7Zm9yKDt1LmRhdGE9PT1ucCYmMT09PXUuY2hpbGRyZW4ubGVuZ3RoOyl1PXUuY2hpbGRyZW5bMF0sLS1pO2ZvcihsZXQgdD1oLmxlbmd0aC0xO3Q+PTAmJihmPWhbdF0sZi5kYXRhPT09bnApOy0tdClmLmRhdGE9bnVsbH1pZih1LnBhcmVudD1KZCx1LmVhY2hCZWZvcmUoKGZ1bmN0aW9uKHQpe3QuZGVwdGg9dC5wYXJlbnQuZGVwdGgrMSwtLWl9KSkuZWFjaEJlZm9yZShTZCksdS5wYXJlbnQ9bnVsbCxpPjApdGhyb3cgbmV3IEVycm9yKCJjeWNsZSIpO3JldHVybiB1fXJldHVybiByLmlkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPWtkKHQpLHIpOm59LHIucGFyZW50SWQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9a2QodCkscik6ZX0sci5wYXRoPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWtkKG4pLHIpOnR9LHJ9LHQuc3R5bGU9eW4sdC5zdWJzZXQ9ZnVuY3Rpb24odCxuKXtyZXR1cm4gX3Qobix0KX0sdC5zdW09ZnVuY3Rpb24odCxuKXtsZXQgZT0wO2lmKHZvaWQgMD09PW4pZm9yKGxldCBuIG9mIHQpKG49K24pJiYoZSs9bik7ZWxzZXtsZXQgcj0tMTtmb3IobGV0IGkgb2YgdCkoaT0rbihpLCsrcix0KSkmJihlKz1pKX1yZXR1cm4gZX0sdC5zdXBlcnNldD1fdCx0LnN2Zz1zYyx0LnN5bWJvbD1mdW5jdGlvbih0LG4pe2xldCBlPW51bGw7ZnVuY3Rpb24gcigpe2xldCByO2lmKGV8fChlPXI9UGEoKSksdC5hcHBseSh0aGlzLGFyZ3VtZW50cykuZHJhdyhlLCtuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSkscilyZXR1cm4gZT1udWxsLHIrIiJ8fG51bGx9cmV0dXJuIHQ9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpKYih0fHxHbSksbj0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOkpiKHZvaWQgMD09PW4/NjQ6K24pLHIudHlwZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOkpiKG4pLHIpOnR9LHIuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkpiKCt0KSxyKTpufSxyLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9bnVsbD09dD9udWxsOnQscik6ZX0scn0sdC5zeW1ib2xBc3Rlcmlzaz1YbSx0LnN5bWJvbENpcmNsZT1HbSx0LnN5bWJvbENyb3NzPVZtLHQuc3ltYm9sRGlhbW9uZD1LbSx0LnN5bWJvbERpYW1vbmQyPVFtLHQuc3ltYm9sUGx1cz1KbSx0LnN5bWJvbFNxdWFyZT10eCx0LnN5bWJvbFNxdWFyZTI9bngsdC5zeW1ib2xTdGFyPW94LHQuc3ltYm9sVHJpYW5nbGU9dXgsdC5zeW1ib2xUcmlhbmdsZTI9ZngsdC5zeW1ib2xXeWU9cHgsdC5zeW1ib2xYPWd4LHQuc3ltYm9scz15eCx0LnN5bWJvbHNGaWxsPXl4LHQuc3ltYm9sc1N0cm9rZT12eCx0LnRleHQ9ZWMsdC50aHJlc2hvbGRGcmVlZG1hbkRpYWNvbmlzPWZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gTWF0aC5jZWlsKChlLW4pLygyKihhdCh0LC43NSktYXQodCwuMjUpKSpNYXRoLnBvdyhfKHQpLC0xLzMpKSl9LHQudGhyZXNob2xkU2NvdHQ9ZnVuY3Rpb24odCxuLGUpe3JldHVybiBNYXRoLmNlaWwoKGUtbikqTWF0aC5jYnJ0KF8odCkpLygzLjQ5Kk0odCkpKX0sdC50aHJlc2hvbGRTdHVyZ2VzPUssdC50aWNrRm9ybWF0PXRnLHQudGlja0luY3JlbWVudD1WLHQudGlja1N0ZXA9Vyx0LnRpY2tzPUcsdC50aW1lRGF5PWpnLHQudGltZURheXM9JGcsdC50aW1lRm9ybWF0RGVmYXVsdExvY2FsZT1nXyx0LnRpbWVGb3JtYXRMb2NhbGU9WnksdC50aW1lRnJpZGF5PUtnLHQudGltZUZyaWRheXM9aXksdC50aW1lSG91cj1CZyx0LnRpbWVIb3Vycz1ZZyx0LnRpbWVJbnRlcnZhbD13Zyx0LnRpbWVNaWxsaXNlY29uZD1BZyx0LnRpbWVNaWxsaXNlY29uZHM9VGcsdC50aW1lTWludXRlPUlnLHQudGltZU1pbnV0ZXM9T2csdC50aW1lTW9uZGF5PUdnLHQudGltZU1vbmRheXM9dHksdC50aW1lTW9udGg9dXksdC50aW1lTW9udGhzPWN5LHQudGltZVNhdHVyZGF5PVFnLHQudGltZVNhdHVyZGF5cz1veSx0LnRpbWVTZWNvbmQ9UmcsdC50aW1lU2Vjb25kcz1GZyx0LnRpbWVTdW5kYXk9WGcsdC50aW1lU3VuZGF5cz1KZyx0LnRpbWVUaHVyc2RheT1aZyx0LnRpbWVUaHVyc2RheXM9cnksdC50aW1lVGlja0ludGVydmFsPVh5LHQudGltZVRpY2tzPUh5LHQudGltZVR1ZXNkYXk9VmcsdC50aW1lVHVlc2RheXM9bnksdC50aW1lV2VkbmVzZGF5PVdnLHQudGltZVdlZG5lc2RheXM9ZXksdC50aW1lV2Vlaz1YZyx0LnRpbWVXZWVrcz1KZyx0LnRpbWVZZWFyPXN5LHQudGltZVllYXJzPWx5LHQudGltZW91dD1DaSx0LnRpbWVyPVRpLHQudGltZXJGbHVzaD1TaSx0LnRyYW5zaXRpb249aG8sdC50cmFuc3Bvc2U9Z3QsdC50cmVlPWZ1bmN0aW9uKCl7dmFyIHQ9YXAsbj0xLGU9MSxyPW51bGw7ZnVuY3Rpb24gaShpKXt2YXIgYz1mdW5jdGlvbih0KXtmb3IodmFyIG4sZSxyLGksbyxhPW5ldyBscCh0LDApLHU9W2FdO249dS5wb3AoKTspaWYocj1uLl8uY2hpbGRyZW4pZm9yKG4uY2hpbGRyZW49bmV3IEFycmF5KG89ci5sZW5ndGgpLGk9by0xO2k+PTA7LS1pKXUucHVzaChlPW4uY2hpbGRyZW5baV09bmV3IGxwKHJbaV0saSkpLGUucGFyZW50PW47cmV0dXJuKGEucGFyZW50PW5ldyBscChudWxsLDApKS5jaGlsZHJlbj1bYV0sYX0oaSk7aWYoYy5lYWNoQWZ0ZXIobyksYy5wYXJlbnQubT0tYy56LGMuZWFjaEJlZm9yZShhKSxyKWkuZWFjaEJlZm9yZSh1KTtlbHNle3ZhciBmPWkscz1pLGw9aTtpLmVhY2hCZWZvcmUoKGZ1bmN0aW9uKHQpe3QueDxmLngmJihmPXQpLHQueD5zLngmJihzPXQpLHQuZGVwdGg+bC5kZXB0aCYmKGw9dCl9KSk7dmFyIGg9Zj09PXM/MTp0KGYscykvMixkPWgtZi54LHA9bi8ocy54K2grZCksZz1lLyhsLmRlcHRofHwxKTtpLmVhY2hCZWZvcmUoKGZ1bmN0aW9uKHQpe3QueD0odC54K2QpKnAsdC55PXQuZGVwdGgqZ30pKX1yZXR1cm4gaX1mdW5jdGlvbiBvKG4pe3ZhciBlPW4uY2hpbGRyZW4scj1uLnBhcmVudC5jaGlsZHJlbixpPW4uaT9yW24uaS0xXTpudWxsO2lmKGUpeyFmdW5jdGlvbih0KXtmb3IodmFyIG4sZT0wLHI9MCxpPXQuY2hpbGRyZW4sbz1pLmxlbmd0aDstLW8+PTA7KShuPWlbb10pLnorPWUsbi5tKz1lLGUrPW4ucysocis9bi5jKX0obik7dmFyIG89KGVbMF0ueitlW2UubGVuZ3RoLTFdLnopLzI7aT8obi56PWkueit0KG4uXyxpLl8pLG4ubT1uLnotbyk6bi56PW99ZWxzZSBpJiYobi56PWkueit0KG4uXyxpLl8pKTtuLnBhcmVudC5BPWZ1bmN0aW9uKG4sZSxyKXtpZihlKXtmb3IodmFyIGksbz1uLGE9bix1PWUsYz1vLnBhcmVudC5jaGlsZHJlblswXSxmPW8ubSxzPWEubSxsPXUubSxoPWMubTt1PWNwKHUpLG89dXAobyksdSYmbzspYz11cChjKSwoYT1jcChhKSkuYT1uLChpPXUueitsLW8uei1mK3QodS5fLG8uXykpPjAmJihmcChzcCh1LG4sciksbixpKSxmKz1pLHMrPWkpLGwrPXUubSxmKz1vLm0saCs9Yy5tLHMrPWEubTt1JiYhY3AoYSkmJihhLnQ9dSxhLm0rPWwtcyksbyYmIXVwKGMpJiYoYy50PW8sYy5tKz1mLWgscj1uKX1yZXR1cm4gcn0obixpLG4ucGFyZW50LkF8fHJbMF0pfWZ1bmN0aW9uIGEodCl7dC5fLng9dC56K3QucGFyZW50Lm0sdC5tKz10LnBhcmVudC5tfWZ1bmN0aW9uIHUodCl7dC54Kj1uLHQueT10LmRlcHRoKmV9cmV0dXJuIGkuc2VwYXJhdGlvbj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1uLGkpOnR9LGkuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0hMSxuPSt0WzBdLGU9K3RbMV0saSk6cj9udWxsOltuLGVdfSxpLm5vZGVTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSEwLG49K3RbMF0sZT0rdFsxXSxpKTpyP1tuLGVdOm51bGx9LGl9LHQudHJlZW1hcD1mdW5jdGlvbigpe3ZhciB0PWdwLG49ITEsZT0xLHI9MSxpPVswXSxvPUNkLGE9Q2QsdT1DZCxjPUNkLGY9Q2Q7ZnVuY3Rpb24gcyh0KXtyZXR1cm4gdC54MD10LnkwPTAsdC54MT1lLHQueTE9cix0LmVhY2hCZWZvcmUobCksaT1bMF0sbiYmdC5lYWNoQmVmb3JlKEtkKSx0fWZ1bmN0aW9uIGwobil7dmFyIGU9aVtuLmRlcHRoXSxyPW4ueDArZSxzPW4ueTArZSxsPW4ueDEtZSxoPW4ueTEtZTtsPHImJihyPWw9KHIrbCkvMiksaDxzJiYocz1oPShzK2gpLzIpLG4ueDA9cixuLnkwPXMsbi54MT1sLG4ueTE9aCxuLmNoaWxkcmVuJiYoZT1pW24uZGVwdGgrMV09byhuKS8yLHIrPWYobiktZSxzKz1hKG4pLWUsKGwtPXUobiktZSk8ciYmKHI9bD0ocitsKS8yKSwoaC09YyhuKS1lKTxzJiYocz1oPShzK2gpLzIpLHQobixyLHMsbCxoKSl9cmV0dXJuIHMucm91bmQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ISF0LHMpOm59LHMuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0rdFswXSxyPSt0WzFdLHMpOltlLHJdfSxzLnRpbGU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9TmQobikscyk6dH0scy5wYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3MucGFkZGluZ0lubmVyKHQpLnBhZGRpbmdPdXRlcih0KTpzLnBhZGRpbmdJbm5lcigpfSxzLnBhZGRpbmdJbm5lcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlBkKCt0KSxzKTpvfSxzLnBhZGRpbmdPdXRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9zLnBhZGRpbmdUb3AodCkucGFkZGluZ1JpZ2h0KHQpLnBhZGRpbmdCb3R0b20odCkucGFkZGluZ0xlZnQodCk6cy5wYWRkaW5nVG9wKCl9LHMucGFkZGluZ1RvcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlBkKCt0KSxzKTphfSxzLnBhZGRpbmdSaWdodD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlBkKCt0KSxzKTp1fSxzLnBhZGRpbmdCb3R0b209ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpQZCgrdCkscyk6Y30scy5wYWRkaW5nTGVmdD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlBkKCt0KSxzKTpmfSxzfSx0LnRyZWVtYXBCaW5hcnk9ZnVuY3Rpb24odCxuLGUscixpKXt2YXIgbyxhLHU9dC5jaGlsZHJlbixjPXUubGVuZ3RoLGY9bmV3IEFycmF5KGMrMSk7Zm9yKGZbMF09YT1vPTA7bzxjOysrbylmW28rMV09YSs9dVtvXS52YWx1ZTshZnVuY3Rpb24gdChuLGUscixpLG8sYSxjKXtpZihuPj1lLTEpe3ZhciBzPXVbbl07cmV0dXJuIHMueDA9aSxzLnkwPW8scy54MT1hLHZvaWQocy55MT1jKX12YXIgbD1mW25dLGg9ci8yK2wsZD1uKzEscD1lLTE7Zm9yKDtkPHA7KXt2YXIgZz1kK3A+Pj4xO2ZbZ108aD9kPWcrMTpwPWd9aC1mW2QtMV08ZltkXS1oJiZuKzE8ZCYmLS1kO3ZhciB5PWZbZF0tbCx2PXIteTtpZihhLWk+Yy1vKXt2YXIgXz1yPyhpKnYrYSp5KS9yOmE7dChuLGQseSxpLG8sXyxjKSx0KGQsZSx2LF8sbyxhLGMpfWVsc2V7dmFyIGI9cj8obyp2K2MqeSkvcjpjO3QobixkLHksaSxvLGEsYiksdChkLGUsdixpLGIsYSxjKX19KDAsYyx0LnZhbHVlLG4sZSxyLGkpfSx0LnRyZWVtYXBEaWNlPVFkLHQudHJlZW1hcFJlc3F1YXJpZnk9eXAsdC50cmVlbWFwU2xpY2U9aHAsdC50cmVlbWFwU2xpY2VEaWNlPWZ1bmN0aW9uKHQsbixlLHIsaSl7KDEmdC5kZXB0aD9ocDpRZCkodCxuLGUscixpKX0sdC50cmVlbWFwU3F1YXJpZnk9Z3AsdC50c3Y9b2MsdC50c3ZGb3JtYXQ9R3UsdC50c3ZGb3JtYXRCb2R5PVZ1LHQudHN2Rm9ybWF0Um93PVp1LHQudHN2Rm9ybWF0Um93cz1XdSx0LnRzdkZvcm1hdFZhbHVlPUt1LHQudHN2UGFyc2U9SHUsdC50c3ZQYXJzZVJvd3M9WHUsdC51bmlvbj1mdW5jdGlvbiguLi50KXtjb25zdCBuPW5ldyBJbnRlcm5TZXQ7Zm9yKGNvbnN0IGUgb2YgdClmb3IoY29uc3QgdCBvZiBlKW4uYWRkKHQpO3JldHVybiBufSx0LnV0Y0RheT1ieSx0LnV0Y0RheXM9bXksdC51dGNGcmlkYXk9RXksdC51dGNGcmlkYXlzPVJ5LHQudXRjSG91cj15eSx0LnV0Y0hvdXJzPXZ5LHQudXRjTWlsbGlzZWNvbmQ9QWcsdC51dGNNaWxsaXNlY29uZHM9VGcsdC51dGNNaW51dGU9ZHksdC51dGNNaW51dGVzPXB5LHQudXRjTW9uZGF5PU15LHQudXRjTW9uZGF5cz1DeSx0LnV0Y01vbnRoPUl5LHQudXRjTW9udGhzPU95LHQudXRjU2F0dXJkYXk9a3ksdC51dGNTYXR1cmRheXM9RnksdC51dGNTZWNvbmQ9UmcsdC51dGNTZWNvbmRzPUZnLHQudXRjU3VuZGF5PXd5LHQudXRjU3VuZGF5cz1OeSx0LnV0Y1RodXJzZGF5PVN5LHQudXRjVGh1cnNkYXlzPUR5LHQudXRjVGlja0ludGVydmFsPSR5LHQudXRjVGlja3M9anksdC51dGNUdWVzZGF5PUF5LHQudXRjVHVlc2RheXM9UHksdC51dGNXZWRuZXNkYXk9VHksdC51dGNXZWRuZXNkYXlzPXp5LHQudXRjV2Vlaz13eSx0LnV0Y1dlZWtzPU55LHQudXRjWWVhcj1CeSx0LnV0Y1llYXJzPVl5LHQudmFyaWFuY2U9dyx0LnZlcnNpb249IjcuNi4xIix0LndpbmRvdz1obix0LnhtbD1jYyx0LnppcD1mdW5jdGlvbigpe3JldHVybiBndChhcmd1bWVudHMpfSx0Lnpvb209ZnVuY3Rpb24oKXt2YXIgdCxuLGUscj1sdyxpPWh3LG89eXcsYT1wdyx1PWd3LGM9WzAsMS8wXSxmPVtbLTEvMCwtMS8wXSxbMS8wLDEvMF1dLHM9MjUwLGw9bmksaD1OdCgic3RhcnQiLCJ6b29tIiwiZW5kIiksZD01MDAscD0wLGc9MTA7ZnVuY3Rpb24geSh0KXt0LnByb3BlcnR5KCJfX3pvb20iLGR3KS5vbigid2hlZWwuem9vbSIsTSx7cGFzc2l2ZTohMX0pLm9uKCJtb3VzZWRvd24uem9vbSIsQSkub24oImRibGNsaWNrLnpvb20iLFQpLmZpbHRlcih1KS5vbigidG91Y2hzdGFydC56b29tIixTKS5vbigidG91Y2htb3ZlLnpvb20iLEUpLm9uKCJ0b3VjaGVuZC56b29tIHRvdWNoY2FuY2VsLnpvb20iLGspLnN0eWxlKCItd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IiLCJyZ2JhKDAsMCwwLDApIil9ZnVuY3Rpb24gdih0LG4pe3JldHVybihuPU1hdGgubWF4KGNbMF0sTWF0aC5taW4oY1sxXSxuKSkpPT09dC5rP3Q6bmV3IGF3KG4sdC54LHQueSl9ZnVuY3Rpb24gXyh0LG4sZSl7dmFyIHI9blswXS1lWzBdKnQuayxpPW5bMV0tZVsxXSp0Lms7cmV0dXJuIHI9PT10LngmJmk9PT10Lnk/dDpuZXcgYXcodC5rLHIsaSl9ZnVuY3Rpb24gYih0KXtyZXR1cm5bKCt0WzBdWzBdKyArdFsxXVswXSkvMiwoK3RbMF1bMV0rICt0WzFdWzFdKS8yXX1mdW5jdGlvbiBtKHQsbixlLHIpe3Qub24oInN0YXJ0Lnpvb20iLChmdW5jdGlvbigpe3godGhpcyxhcmd1bWVudHMpLmV2ZW50KHIpLnN0YXJ0KCl9KSkub24oImludGVycnVwdC56b29tIGVuZC56b29tIiwoZnVuY3Rpb24oKXt4KHRoaXMsYXJndW1lbnRzKS5ldmVudChyKS5lbmQoKX0pKS50d2Vlbigiem9vbSIsKGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxvPWFyZ3VtZW50cyxhPXgodCxvKS5ldmVudChyKSx1PWkuYXBwbHkodCxvKSxjPW51bGw9PWU/Yih1KToiZnVuY3Rpb24iPT10eXBlb2YgZT9lLmFwcGx5KHQsbyk6ZSxmPU1hdGgubWF4KHVbMV1bMF0tdVswXVswXSx1WzFdWzFdLXVbMF1bMV0pLHM9dC5fX3pvb20saD0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uLmFwcGx5KHQsbyk6bixkPWwocy5pbnZlcnQoYykuY29uY2F0KGYvcy5rKSxoLmludmVydChjKS5jb25jYXQoZi9oLmspKTtyZXR1cm4gZnVuY3Rpb24odCl7aWYoMT09PXQpdD1oO2Vsc2V7dmFyIG49ZCh0KSxlPWYvblsyXTt0PW5ldyBhdyhlLGNbMF0tblswXSplLGNbMV0tblsxXSplKX1hLnpvb20obnVsbCx0KX19KSl9ZnVuY3Rpb24geCh0LG4sZSl7cmV0dXJuIWUmJnQuX196b29taW5nfHxuZXcgdyh0LG4pfWZ1bmN0aW9uIHcodCxuKXt0aGlzLnRoYXQ9dCx0aGlzLmFyZ3M9bix0aGlzLmFjdGl2ZT0wLHRoaXMuc291cmNlRXZlbnQ9bnVsbCx0aGlzLmV4dGVudD1pLmFwcGx5KHQsbiksdGhpcy50YXBzPTB9ZnVuY3Rpb24gTSh0LC4uLm4pe2lmKHIuYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgZT14KHRoaXMsbikuZXZlbnQodCksaT10aGlzLl9fem9vbSx1PU1hdGgubWF4KGNbMF0sTWF0aC5taW4oY1sxXSxpLmsqTWF0aC5wb3coMixhLmFwcGx5KHRoaXMsYXJndW1lbnRzKSkpKSxzPXRlKHQpO2lmKGUud2hlZWwpZS5tb3VzZVswXVswXT09PXNbMF0mJmUubW91c2VbMF1bMV09PT1zWzFdfHwoZS5tb3VzZVsxXT1pLmludmVydChlLm1vdXNlWzBdPXMpKSxjbGVhclRpbWVvdXQoZS53aGVlbCk7ZWxzZXtpZihpLms9PT11KXJldHVybjtlLm1vdXNlPVtzLGkuaW52ZXJ0KHMpXSxJaSh0aGlzKSxlLnN0YXJ0KCl9c3codCksZS53aGVlbD1zZXRUaW1lb3V0KGwsMTUwKSxlLnpvb20oIm1vdXNlIixvKF8odihpLHUpLGUubW91c2VbMF0sZS5tb3VzZVsxXSksZS5leHRlbnQsZikpfWZ1bmN0aW9uIGwoKXtlLndoZWVsPW51bGwsZS5lbmQoKX19ZnVuY3Rpb24gQSh0LC4uLm4pe2lmKCFlJiZyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIGk9dC5jdXJyZW50VGFyZ2V0LGE9eCh0aGlzLG4sITApLmV2ZW50KHQpLHU9V24odC52aWV3KS5vbigibW91c2Vtb3ZlLnpvb20iLGgsITApLm9uKCJtb3VzZXVwLnpvb20iLGQsITApLGM9dGUodCxpKSxzPXQuY2xpZW50WCxsPXQuY2xpZW50WTtvZSh0LnZpZXcpLGZ3KHQpLGEubW91c2U9W2MsdGhpcy5fX3pvb20uaW52ZXJ0KGMpXSxJaSh0aGlzKSxhLnN0YXJ0KCl9ZnVuY3Rpb24gaCh0KXtpZihzdyh0KSwhYS5tb3ZlZCl7dmFyIG49dC5jbGllbnRYLXMsZT10LmNsaWVudFktbDthLm1vdmVkPW4qbitlKmU+cH1hLmV2ZW50KHQpLnpvb20oIm1vdXNlIixvKF8oYS50aGF0Ll9fem9vbSxhLm1vdXNlWzBdPXRlKHQsaSksYS5tb3VzZVsxXSksYS5leHRlbnQsZikpfWZ1bmN0aW9uIGQodCl7dS5vbigibW91c2Vtb3ZlLnpvb20gbW91c2V1cC56b29tIixudWxsKSxhZSh0LnZpZXcsYS5tb3ZlZCksc3codCksYS5ldmVudCh0KS5lbmQoKX19ZnVuY3Rpb24gVCh0LC4uLm4pe2lmKHIuYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgZT10aGlzLl9fem9vbSxhPXRlKHQuY2hhbmdlZFRvdWNoZXM/dC5jaGFuZ2VkVG91Y2hlc1swXTp0LHRoaXMpLHU9ZS5pbnZlcnQoYSksYz1lLmsqKHQuc2hpZnRLZXk/LjU6MiksbD1vKF8odihlLGMpLGEsdSksaS5hcHBseSh0aGlzLG4pLGYpO3N3KHQpLHM+MD9Xbih0aGlzKS50cmFuc2l0aW9uKCkuZHVyYXRpb24ocykuY2FsbChtLGwsYSx0KTpXbih0aGlzKS5jYWxsKHkudHJhbnNmb3JtLGwsYSx0KX19ZnVuY3Rpb24gUyhlLC4uLmkpe2lmKHIuYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgbyxhLHUsYyxmPWUudG91Y2hlcyxzPWYubGVuZ3RoLGw9eCh0aGlzLGksZS5jaGFuZ2VkVG91Y2hlcy5sZW5ndGg9PT1zKS5ldmVudChlKTtmb3IoZncoZSksYT0wO2E8czsrK2EpYz1bYz10ZSh1PWZbYV0sdGhpcyksdGhpcy5fX3pvb20uaW52ZXJ0KGMpLHUuaWRlbnRpZmllcl0sbC50b3VjaDA/bC50b3VjaDF8fGwudG91Y2gwWzJdPT09Y1syXXx8KGwudG91Y2gxPWMsbC50YXBzPTApOihsLnRvdWNoMD1jLG89ITAsbC50YXBzPTErISF0KTt0JiYodD1jbGVhclRpbWVvdXQodCkpLG8mJihsLnRhcHM8MiYmKG49Y1swXSx0PXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dD1udWxsfSksZCkpLElpKHRoaXMpLGwuc3RhcnQoKSl9fWZ1bmN0aW9uIEUodCwuLi5uKXtpZih0aGlzLl9fem9vbWluZyl7dmFyIGUscixpLGEsdT14KHRoaXMsbikuZXZlbnQodCksYz10LmNoYW5nZWRUb3VjaGVzLHM9Yy5sZW5ndGg7Zm9yKHN3KHQpLGU9MDtlPHM7KytlKWk9dGUocj1jW2VdLHRoaXMpLHUudG91Y2gwJiZ1LnRvdWNoMFsyXT09PXIuaWRlbnRpZmllcj91LnRvdWNoMFswXT1pOnUudG91Y2gxJiZ1LnRvdWNoMVsyXT09PXIuaWRlbnRpZmllciYmKHUudG91Y2gxWzBdPWkpO2lmKHI9dS50aGF0Ll9fem9vbSx1LnRvdWNoMSl7dmFyIGw9dS50b3VjaDBbMF0saD11LnRvdWNoMFsxXSxkPXUudG91Y2gxWzBdLHA9dS50b3VjaDFbMV0sZz0oZz1kWzBdLWxbMF0pKmcrKGc9ZFsxXS1sWzFdKSpnLHk9KHk9cFswXS1oWzBdKSp5Kyh5PXBbMV0taFsxXSkqeTtyPXYocixNYXRoLnNxcnQoZy95KSksaT1bKGxbMF0rZFswXSkvMiwobFsxXStkWzFdKS8yXSxhPVsoaFswXStwWzBdKS8yLChoWzFdK3BbMV0pLzJdfWVsc2V7aWYoIXUudG91Y2gwKXJldHVybjtpPXUudG91Y2gwWzBdLGE9dS50b3VjaDBbMV19dS56b29tKCJ0b3VjaCIsbyhfKHIsaSxhKSx1LmV4dGVudCxmKSl9fWZ1bmN0aW9uIGsodCwuLi5yKXtpZih0aGlzLl9fem9vbWluZyl7dmFyIGksbyxhPXgodGhpcyxyKS5ldmVudCh0KSx1PXQuY2hhbmdlZFRvdWNoZXMsYz11Lmxlbmd0aDtmb3IoZncodCksZSYmY2xlYXJUaW1lb3V0KGUpLGU9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtlPW51bGx9KSxkKSxpPTA7aTxjOysraSlvPXVbaV0sYS50b3VjaDAmJmEudG91Y2gwWzJdPT09by5pZGVudGlmaWVyP2RlbGV0ZSBhLnRvdWNoMDphLnRvdWNoMSYmYS50b3VjaDFbMl09PT1vLmlkZW50aWZpZXImJmRlbGV0ZSBhLnRvdWNoMTtpZihhLnRvdWNoMSYmIWEudG91Y2gwJiYoYS50b3VjaDA9YS50b3VjaDEsZGVsZXRlIGEudG91Y2gxKSxhLnRvdWNoMClhLnRvdWNoMFsxXT10aGlzLl9fem9vbS5pbnZlcnQoYS50b3VjaDBbMF0pO2Vsc2UgaWYoYS5lbmQoKSwyPT09YS50YXBzJiYobz10ZShvLHRoaXMpLE1hdGguaHlwb3QoblswXS1vWzBdLG5bMV0tb1sxXSk8Zykpe3ZhciBmPVduKHRoaXMpLm9uKCJkYmxjbGljay56b29tIik7ZiYmZi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fX1yZXR1cm4geS50cmFuc2Zvcm09ZnVuY3Rpb24odCxuLGUscil7dmFyIGk9dC5zZWxlY3Rpb24/dC5zZWxlY3Rpb24oKTp0O2kucHJvcGVydHkoIl9fem9vbSIsZHcpLHQhPT1pP20odCxuLGUscik6aS5pbnRlcnJ1cHQoKS5lYWNoKChmdW5jdGlvbigpe3godGhpcyxhcmd1bWVudHMpLmV2ZW50KHIpLnN0YXJ0KCkuem9vbShudWxsLCJmdW5jdGlvbiI9PXR5cGVvZiBuP24uYXBwbHkodGhpcyxhcmd1bWVudHMpOm4pLmVuZCgpfSkpfSx5LnNjYWxlQnk9ZnVuY3Rpb24odCxuLGUscil7eS5zY2FsZVRvKHQsKGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fX3pvb20uayxlPSJmdW5jdGlvbiI9PXR5cGVvZiBuP24uYXBwbHkodGhpcyxhcmd1bWVudHMpOm47cmV0dXJuIHQqZX0pLGUscil9LHkuc2NhbGVUbz1mdW5jdGlvbih0LG4sZSxyKXt5LnRyYW5zZm9ybSh0LChmdW5jdGlvbigpe3ZhciB0PWkuYXBwbHkodGhpcyxhcmd1bWVudHMpLHI9dGhpcy5fX3pvb20sYT1udWxsPT1lP2IodCk6ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6ZSx1PXIuaW52ZXJ0KGEpLGM9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk6bjtyZXR1cm4gbyhfKHYocixjKSxhLHUpLHQsZil9KSxlLHIpfSx5LnRyYW5zbGF0ZUJ5PWZ1bmN0aW9uKHQsbixlLHIpe3kudHJhbnNmb3JtKHQsKGZ1bmN0aW9uKCl7cmV0dXJuIG8odGhpcy5fX3pvb20udHJhbnNsYXRlKCJmdW5jdGlvbiI9PXR5cGVvZiBuP24uYXBwbHkodGhpcyxhcmd1bWVudHMpOm4sImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6ZSksaS5hcHBseSh0aGlzLGFyZ3VtZW50cyksZil9KSxudWxsLHIpfSx5LnRyYW5zbGF0ZVRvPWZ1bmN0aW9uKHQsbixlLHIsYSl7eS50cmFuc2Zvcm0odCwoZnVuY3Rpb24oKXt2YXIgdD1pLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxhPXRoaXMuX196b29tLHU9bnVsbD09cj9iKHQpOiJmdW5jdGlvbiI9PXR5cGVvZiByP3IuYXBwbHkodGhpcyxhcmd1bWVudHMpOnI7cmV0dXJuIG8odXcudHJhbnNsYXRlKHVbMF0sdVsxXSkuc2NhbGUoYS5rKS50cmFuc2xhdGUoImZ1bmN0aW9uIj09dHlwZW9mIG4/LW4uYXBwbHkodGhpcyxhcmd1bWVudHMpOi1uLCJmdW5jdGlvbiI9PXR5cGVvZiBlPy1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTotZSksdCxmKX0pLHIsYSl9LHcucHJvdG90eXBlPXtldmVudDpmdW5jdGlvbih0KXtyZXR1cm4gdCYmKHRoaXMuc291cmNlRXZlbnQ9dCksdGhpc30sc3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gMT09Kyt0aGlzLmFjdGl2ZSYmKHRoaXMudGhhdC5fX3pvb21pbmc9dGhpcyx0aGlzLmVtaXQoInN0YXJ0IikpLHRoaXN9LHpvb206ZnVuY3Rpb24odCxuKXtyZXR1cm4gdGhpcy5tb3VzZSYmIm1vdXNlIiE9PXQmJih0aGlzLm1vdXNlWzFdPW4uaW52ZXJ0KHRoaXMubW91c2VbMF0pKSx0aGlzLnRvdWNoMCYmInRvdWNoIiE9PXQmJih0aGlzLnRvdWNoMFsxXT1uLmludmVydCh0aGlzLnRvdWNoMFswXSkpLHRoaXMudG91Y2gxJiYidG91Y2giIT09dCYmKHRoaXMudG91Y2gxWzFdPW4uaW52ZXJ0KHRoaXMudG91Y2gxWzBdKSksdGhpcy50aGF0Ll9fem9vbT1uLHRoaXMuZW1pdCgiem9vbSIpLHRoaXN9LGVuZDpmdW5jdGlvbigpe3JldHVybiAwPT0tLXRoaXMuYWN0aXZlJiYoZGVsZXRlIHRoaXMudGhhdC5fX3pvb21pbmcsdGhpcy5lbWl0KCJlbmQiKSksdGhpc30sZW1pdDpmdW5jdGlvbih0KXt2YXIgbj1Xbih0aGlzLnRoYXQpLmRhdHVtKCk7aC5jYWxsKHQsdGhpcy50aGF0LG5ldyBvdyh0LHtzb3VyY2VFdmVudDp0aGlzLnNvdXJjZUV2ZW50LHRhcmdldDp5LHR5cGU6dCx0cmFuc2Zvcm06dGhpcy50aGF0Ll9fem9vbSxkaXNwYXRjaDpofSksbil9fSx5LndoZWVsRGVsdGE9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDppdygrdCkseSk6YX0seS5maWx0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDppdyghIXQpLHkpOnJ9LHkudG91Y2hhYmxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6aXcoISF0KSx5KTp1fSx5LmV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90Oml3KFtbK3RbMF1bMF0sK3RbMF1bMV1dLFsrdFsxXVswXSwrdFsxXVsxXV1dKSx5KTppfSx5LnNjYWxlRXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjWzBdPSt0WzBdLGNbMV09K3RbMV0seSk6W2NbMF0sY1sxXV19LHkudHJhbnNsYXRlRXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmWzBdWzBdPSt0WzBdWzBdLGZbMV1bMF09K3RbMV1bMF0sZlswXVsxXT0rdFswXVsxXSxmWzFdWzFdPSt0WzFdWzFdLHkpOltbZlswXVswXSxmWzBdWzFdXSxbZlsxXVswXSxmWzFdWzFdXV19LHkuY29uc3RyYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPXQseSk6b30seS5kdXJhdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0rdCx5KTpzfSx5LmludGVycG9sYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPXQseSk6bH0seS5vbj1mdW5jdGlvbigpe3ZhciB0PWgub24uYXBwbHkoaCxhcmd1bWVudHMpO3JldHVybiB0PT09aD95OnR9LHkuY2xpY2tEaXN0YW5jZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0odD0rdCkqdCx5KTpNYXRoLnNxcnQocCl9LHkudGFwRGlzdGFuY2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9K3QseSk6Z30seX0sdC56b29tSWRlbnRpdHk9dXcsdC56b29tVHJhbnNmb3JtPWN3LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0pKTs=","asset/force-graph.js":"data:application/javascript;base64,ICAvLwogIC8vIFNldHRpbmdzIGFkZGVkIGJ5IFdpbGxlbSBIZW5kcmlrcwogIC8vICghKSB0byBiZSBhZGRlZCB0byB5YW1sIG9yIG90aGVyIHNldHRpbmdzIGNvbmZpZwogIC8vCiAgLy8KICAvLyBMQUJFTCBTRVRUSU5HUwogIGNvbnN0IExBQkVMX01BUkdJTiA9IDIyOyAvLyBtYXJnaW4gYmV0d2VlbiBsYWJlbC10ZXh0IGFuZCBub2RlLCBoaWdoZXIgbnVtYmVyIC0+IG1vcmUgc3BhY2UKICBjb25zdCBMQUJFTF9WSVNJQklMSVRZX1NUQVJUX0sgPSAxLjU7IC8vIGF0IHRoaXMgaywgbGFiZWxzIGFyZSBzdGlsbCBpbnZpc2libGUKICBjb25zdCBMQUJFTF9WSVNJQklMSVRZX0VORF9LID0gNTsgLy8gYXQgdGhpcyBrLCBsYWJlbHMgYXJlIGZ1bGx5IHZpc2libGUKCi8vIENvcHlyaWdodCAyMDIxIE9ic2VydmFibGUsIEluYy4KLy8gUmVsZWFzZWQgdW5kZXIgdGhlIElTQyBsaWNlbnNlLgovLyBodHRwczovL29ic2VydmFibGVocS5jb20vQGQzL2Rpc2pvaW50LWZvcmNlLWRpcmVjdGVkLWdyYXBoCmZ1bmN0aW9uIEZvcmNlR3JhcGgoewogIG5vZGVzLCAvLyBhbiBpdGVyYWJsZSBvZiBub2RlIG9iamVjdHMgKHR5cGljYWxseSBbe2lkfSwg4oCmXSkKICBsaW5rcyAvLyBhbiBpdGVyYWJsZSBvZiBsaW5rIG9iamVjdHMgKHR5cGljYWxseSBbe3NvdXJjZSwgdGFyZ2V0fSwg4oCmXSkKfSwgewogIG5vZGVJZCA9IGQgPT4gZC5pZCwgLy8gZ2l2ZW4gZCBpbiBub2RlcywgcmV0dXJucyBhIHVuaXF1ZSBpZGVudGlmaWVyIChzdHJpbmcpCiAgbm9kZUdyb3VwLCAvLyBnaXZlbiBkIGluIG5vZGVzLCByZXR1cm5zIGFuIChvcmRpbmFsKSB2YWx1ZSBmb3IgY29sb3IKICBub2RlR3JvdXBzLCAvLyBhbiBhcnJheSBvZiBvcmRpbmFsIHZhbHVlcyByZXByZXNlbnRpbmcgdGhlIG5vZGUgZ3JvdXBzCiAgbm9kZVRpdGxlLCAvLyBnaXZlbiBkIGluIG5vZGVzLCBhIHRpdGxlIHN0cmluZwogIG5vZGVGaWxsID0gImN1cnJlbnRDb2xvciIsIC8vIG5vZGUgc3Ryb2tlIGZpbGwgKGlmIG5vdCB1c2luZyBhIGdyb3VwIGNvbG9yIGVuY29kaW5nKQogIG5vZGVTdHJva2UgPSAiI2ZmZiIsIC8vIG5vZGUgc3Ryb2tlIGNvbG9yCiAgbm9kZVN0cm9rZVdpZHRoID0gMS41LCAvLyBub2RlIHN0cm9rZSB3aWR0aCwgaW4gcGl4ZWxzCiAgbm9kZVN0cm9rZU9wYWNpdHkgPSAxLCAvLyBub2RlIHN0cm9rZSBvcGFjaXR5CiAgbm9kZVN0cmVuZ3RoLAogIGxpbmtTb3VyY2UgPSAoe3NvdXJjZX0pID0+IHNvdXJjZSwgLy8gZ2l2ZW4gZCBpbiBsaW5rcywgcmV0dXJucyBhIG5vZGUgaWRlbnRpZmllciBzdHJpbmcKICBsaW5rVGFyZ2V0ID0gKHt0YXJnZXR9KSA9PiB0YXJnZXQsIC8vIGdpdmVuIGQgaW4gbGlua3MsIHJldHVybnMgYSBub2RlIGlkZW50aWZpZXIgc3RyaW5nCiAgbGlua1N0cm9rZSA9ICIjOTk5IiwgLy8gbGluayBzdHJva2UgY29sb3IKICBsaW5rU3Ryb2tlT3BhY2l0eSA9IDAuNiwgLy8gbGluayBzdHJva2Ugb3BhY2l0eQogIGxpbmtTdHJva2VXaWR0aCA9IDEuNSwgLy8gZ2l2ZW4gZCBpbiBsaW5rcywgcmV0dXJucyBhIHN0cm9rZSB3aWR0aCBpbiBwaXhlbHMKICBsaW5rU3Ryb2tlTGluZWNhcCA9ICJyb3VuZCIsIC8vIGxpbmsgc3Ryb2tlIGxpbmVjYXAKICBsaW5rU3RyZW5ndGgsCiAgY29sb3JzID0gZDMuc2NoZW1lVGFibGVhdTEwLCAvLyBhbiBhcnJheSBvZiBjb2xvciBzdHJpbmdzLCBmb3IgdGhlIG5vZGUgZ3JvdXBzCiAgd2lkdGggPSA2NDAsIC8vIG91dGVyIHdpZHRoLCBpbiBwaXhlbHMKICBoZWlnaHQgPSA0MDAsIC8vIG91dGVyIGhlaWdodCwgaW4gcGl4ZWxzCiAgaW52YWxpZGF0aW9uIC8vIHdoZW4gdGhpcyBwcm9taXNlIHJlc29sdmVzLCBzdG9wIHRoZSBzaW11bGF0aW9uCn0gPSB7fSkgewogIC8vIENvbXB1dGUgdmFsdWVzLgoKICBjb25zdCBOID0gZDMubWFwKG5vZGVzLCBub2RlSWQpLm1hcChpbnRlcm4pOwogIGNvbnN0IEMgPSBkMy5tYXAobm9kZXMsIG5vZGVDb25uZWN0aXZpdHkuYmluZChudWxsLCBsaW5rcykpOwogIGNvbnN0IExTID0gZDMubWFwKGxpbmtzLCBsaW5rU291cmNlKS5tYXAoaW50ZXJuKTsKICBjb25zdCBMVCA9IGQzLm1hcChsaW5rcywgbGlua1RhcmdldCkubWFwKGludGVybik7CiAgaWYgKG5vZGVUaXRsZSA9PT0gdW5kZWZpbmVkKSBub2RlVGl0bGUgPSAoXywgaSkgPT4gTltpXTsKICBjb25zdCBUID0gbm9kZVRpdGxlID09IG51bGwgPyBudWxsIDogZDMubWFwKG5vZGVzLCBub2RlVGl0bGUpOwogIGNvbnN0IEcgPSBub2RlR3JvdXAgPT0gbnVsbCA/IG51bGwgOiBkMy5tYXAobm9kZXMsIG5vZGVHcm91cCkubWFwKGludGVybik7CiAgY29uc3QgVyA9IHR5cGVvZiBsaW5rU3Ryb2tlV2lkdGggIT09ICJmdW5jdGlvbiIgPyBudWxsIDogZDMubWFwKGxpbmtzLCBsaW5rU3Ryb2tlV2lkdGgpOwoKICAvLyBSZXBsYWNlIHRoZSBpbnB1dCBub2RlcyBhbmQgbGlua3Mgd2l0aCBtdXRhYmxlIG9iamVjdHMgZm9yIHRoZSBzaW11bGF0aW9uLgogIG5vZGVzID0gZDMubWFwKG5vZGVzLCAoXywgaSkgPT4gKHtpZDogTltpXSwgY29ubmVjdGl2aXR5OiBDW2ldfSkpOwogIGxpbmtzID0gZDMubWFwKGxpbmtzLCAoXywgaSkgPT4gKHtzb3VyY2U6IExTW2ldLCB0YXJnZXQ6IExUW2ldfSkpOwoKICAvLyBDb21wdXRlIG5vZGUgY29ubmVjdGl2aXR5CiAgZnVuY3Rpb24gaXNDb25uZWN0aW5nKG5vZGUsIGxpbmspIHsKICAgIHJldHVybiBsaW5rLnNvdXJjZSA9PSBub2RlLmlkIHx8IGxpbmsudGFyZ2V0ID09IG5vZGUuaWQ7CiAgfQogIAogIGZ1bmN0aW9uIG5vZGVDb25uZWN0aXZpdHkobGlua3MsIG5vZGUpIHsKICAgIHJldHVybiBsaW5rcy5yZWR1Y2UoKGFjYywgY3VycmVudExpbmspID0+IHsKICAgICAgcmV0dXJuIGFjYyArIChpc0Nvbm5lY3Rpbmcobm9kZSwgY3VycmVudExpbmspID8gMSA6IDApOwogICAgfSwgMCk7CiAgfQoKICAvLyBDb21wdXRlIGRlZmF1bHQgZG9tYWlucy4KICBpZiAoRyAmJiBub2RlR3JvdXBzID09PSB1bmRlZmluZWQpIG5vZGVHcm91cHMgPSBkMy5zb3J0KEcpOwoKICAvLyBDb25zdHJ1Y3QgdGhlIHNjYWxlcy4KICBjb25zdCBjb2xvciA9IG5vZGVHcm91cCA9PSBudWxsID8gbnVsbCA6IGQzLnNjYWxlT3JkaW5hbChub2RlR3JvdXBzLCBjb2xvcnMpOwoKICAvLyBDb25zdHJ1Y3QgdGhlIGZvcmNlcy4KICBjb25zdCBmb3JjZU5vZGUgPSBkMy5mb3JjZU1hbnlCb2R5KCk7CiAgY29uc3QgZm9yY2VMaW5rID0gZDMuZm9yY2VMaW5rKGxpbmtzKS5pZCgoe2luZGV4OiBpfSkgPT4gTltpXSk7CiAgaWYgKG5vZGVTdHJlbmd0aCAhPT0gdW5kZWZpbmVkKSBmb3JjZU5vZGUuc3RyZW5ndGgobm9kZVN0cmVuZ3RoKTsKICBpZiAobGlua1N0cmVuZ3RoICE9PSB1bmRlZmluZWQpIGZvcmNlTGluay5zdHJlbmd0aChsaW5rU3RyZW5ndGgpOwoKICBjb25zdCBzdmcgPSBkMy5jcmVhdGUoInN2ZyIpCiAgICAuYXR0cigid2lkdGgiLCB3aWR0aCkKICAgIC5hdHRyKCJoZWlnaHQiLCBoZWlnaHQpCiAgICAuYXR0cigidmlld0JveCIsIFstd2lkdGggLyAyLCAtaGVpZ2h0IC8gMiwgd2lkdGgsIGhlaWdodF0pCiAgICAuYXR0cigic3R5bGUiLCAibWF4LXdpZHRoOiAxMDAlOyBoZWlnaHQ6IGF1dG87IGhlaWdodDogaW50cmluc2ljOyIpOwoKICBjb25zdCBsaW5rID0gc3ZnLmFwcGVuZCgiZyIpCiAgICAuYXR0cigic3Ryb2tlIiwgbGlua1N0cm9rZSkKICAgIC5hdHRyKCJzdHJva2Utb3BhY2l0eSIsIGxpbmtTdHJva2VPcGFjaXR5KQogICAgLmF0dHIoInN0cm9rZS13aWR0aCIsIHR5cGVvZiBsaW5rU3Ryb2tlV2lkdGggIT09ICJmdW5jdGlvbiIgPyBsaW5rU3Ryb2tlV2lkdGggOiBudWxsKQogICAgLmF0dHIoInN0cm9rZS1saW5lY2FwIiwgbGlua1N0cm9rZUxpbmVjYXApCiAgICAuc2VsZWN0QWxsKCJsaW5lIikKICAgIC5kYXRhKGxpbmtzKQogICAgLmpvaW4oImxpbmUiKTsKCiAgaWYgKFcpIGxpbmsuYXR0cigic3Ryb2tlLXdpZHRoIiwgKHtpbmRleDogaX0pID0+IFdbaV0pOwoKICAvLyBTY2FsZXMgZm9yIG5vZGUgc2l6ZSBiYXNlZCBvbiBjb25uZWN0aXZpdHkKICBjb25zdCBub2RlU2l6ZVNjYWxlID0gZDMuc2NhbGVMaW5lYXIoKQogICAgLmRvbWFpbihbZDMubWluKEMpLCBkMy5tYXgoQyldKQogICAgLnJhbmdlKFsyLCA4XSk7CgogIGNvbnN0IG5vZGUgPSBzdmcuYXBwZW5kKCJnIikKICAgIC5hdHRyKCJzdHJva2UiLCBub2RlU3Ryb2tlKQogICAgLmF0dHIoInN0cm9rZS1vcGFjaXR5Iiwgbm9kZVN0cm9rZU9wYWNpdHkpCiAgICAuYXR0cigic3Ryb2tlLXdpZHRoIiwgbm9kZVN0cm9rZVdpZHRoKQogICAgLnNlbGVjdEFsbCgiY2lyY2xlIikKICAgIC5kYXRhKG5vZGVzKQogICAgLmpvaW4oImNpcmNsZSIpCiAgICAuYXR0cigiciIsIGQgPT4gbm9kZVNpemVTY2FsZShkLmNvbm5lY3Rpdml0eSkpOwoKICBjb25zdCBsYWJlbHMgPSBzdmcuYXBwZW5kKCJnIikKICAgIC5zZWxlY3RBbGwoInRleHQiKQogICAgLmRhdGEobm9kZXMpCiAgICAuam9pbigndGV4dCcpCiAgICAudGV4dChkID0+IGQuaWQpCiAgICAuYXR0cignZm9udC1mYW1pbHknLCAnU2FucyxBcmlhbCcgKQogICAgLmF0dHIoJ2ZvbnQtc2l6ZScsICcwLjhlbScgKQogICAgLmF0dHIoJ2ZpbGwnLCAnIzIyMicgKQogICAgLmF0dHIoJ3RleHQtYW5jaG9yJywgJ21pZGRsZScpOwoKICBpZiAoRykgbm9kZS5hdHRyKCJmaWxsIiwgKHtpbmRleDogaX0pID0+IGNvbG9yKEdbaV0pKTsKICBpZiAoVCkgbm9kZS5hcHBlbmQoInRpdGxlIikudGV4dCgoe2luZGV4OiBpfSkgPT4gVFtpXSk7CgogIC8vIEhhbmRsZSBpbnZhbGlkYXRpb24uCiAgaWYgKGludmFsaWRhdGlvbiAhPSBudWxsKSBpbnZhbGlkYXRpb24udGhlbigoKSA9PiBzaW11bGF0aW9uLnN0b3AoKSk7CgogIGZ1bmN0aW9uIGludGVybih2YWx1ZSkgewogICAgcmV0dXJuIHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PT0gIm9iamVjdCIgPyB2YWx1ZS52YWx1ZU9mKCkgOiB2YWx1ZTsKICB9CgogIGNvbnN0IHNpbXVsYXRpb24gPSBkMy5mb3JjZVNpbXVsYXRpb24obm9kZXMpCiAgICAgIC5mb3JjZSgibGluayIsIGZvcmNlTGluaykKICAgICAgLmZvcmNlKCJjaGFyZ2UiLCBmb3JjZU5vZGUpCiAgICAgIC5mb3JjZSgieCIsIGQzLmZvcmNlWCgpKQogICAgICAuZm9yY2UoInkiLCBkMy5mb3JjZVkoKSkKICAgICAgLm9uKCJ0aWNrIiwgdGlja2VkKTsKCiAgZnVuY3Rpb24gdGlja2VkKCkgewogICAgbGluawogICAgICAuYXR0cigieDEiLCBkID0+IGQuc291cmNlLngpCiAgICAgIC5hdHRyKCJ5MSIsIGQgPT4gZC5zb3VyY2UueSkKICAgICAgLmF0dHIoIngyIiwgZCA9PiBkLnRhcmdldC54KQogICAgICAuYXR0cigieTIiLCBkID0+IGQudGFyZ2V0LnkpOwoKICAgIG5vZGUKICAgICAgLmF0dHIoImN4IiwgZCA9PiBkLngpCiAgICAgIC5hdHRyKCJjeSIsIGQgPT4gZC55KTsKCiAgICBsYWJlbHMKICAgICAgLmF0dHIoJ3gnLCBkID0+IGQueCkKICAgICAgLmF0dHIoJ3knLCBkID0+IGQueSk7CiAgfQogCiAgLy8gWm9vbQogIGZ1bmN0aW9uIHJlc2l6ZU5vZGUoZCwgaykgewogICAgLy8gVE9ETzogTWFrZSBzdXJlIGQgaGFzIHNvbWUgaW5mb3JtYXRpb24gb24gdGhlIGNvbm5lY3RlZG5lc3Mgb2YgYQogICAgLy8gbm9kZSBzbyB0aGF0IHdlIGNhbiB2YXJ5IG5vZGUgc2l6ZXMgYmFzZWQgb24gdGhhdC4KICAgIGNvbnN0IG1pbiA9IG5vZGVTaXplU2NhbGUoZC5jb25uZWN0aXZpdHkpOwogICAgY29uc3QgY3VyID0gbm9kZVNpemVTY2FsZShkLmNvbm5lY3Rpdml0eSkgKiBNYXRoLmxvZyhrKTsKICAgIHJldHVybiBNYXRoLm1heChtaW4sIGN1cik7CiAgfQoKICBmdW5jdGlvbiB6b29tZWQoZXZlbnQpIHsKICAgIGNvbnN0IHQgPSBldmVudC50cmFuc2Zvcm07CiAgICBjb25zdCB0cmFuc2xhdGUgPSAidHJhbnNsYXRlKCIgKyB0LnggKyAiLCIgKyB0LnkgKyAiKSIKICAgIG5vZGUKICAgICAgLmF0dHIoImN4IiwgZCA9PiBkLnggKiB0LmspCiAgICAgIC5hdHRyKCJjeSIsIGQgPT4gZC55ICogdC5rKQogICAgICAuYXR0cigiciIsIGQgPT4gcmVzaXplTm9kZShkLCB0LmspKQogICAgICAuYXR0cigndHJhbnNmb3JtJywgdHJhbnNsYXRlKTsKICAgIGxpbmsKICAgICAgLmF0dHIoIngxIiwgZCA9PiBkLnNvdXJjZS54ICogdC5rKQogICAgICAuYXR0cigieTEiLCBkID0+IGQuc291cmNlLnkgKiB0LmspCiAgICAgIC5hdHRyKCJ4MiIsIGQgPT4gZC50YXJnZXQueCAqIHQuaykKICAgICAgLmF0dHIoInkyIiwgZCA9PiBkLnRhcmdldC55ICogdC5rKQogICAgICAuYXR0cigndHJhbnNmb3JtJywgdHJhbnNsYXRlKTsKICAgIGxhYmVscwogICAgICAuYXR0cigndHJhbnNmb3JtJywgdHJhbnNsYXRlKQogICAgICAuYXR0cigneCcsIGQgPT4gZC54ICogdC5rICkKICAgICAgLmF0dHIoJ3knLCBkID0+IGQueSAqIHQuayArIExBQkVMX01BUkdJTiApCiAgICAgIC5hdHRyKCdvcGFjaXR5Jywgb3BhY2l0eV9hY3RpdmF0aW9uKGV2ZW50LnRyYW5zZm9ybS5rKSApOzsKICB9CgogIGNvbnN0IHpvb20gPSBkMy56b29tKCkKICAgIC5zY2FsZUV4dGVudChbMS8yLCA2NF0pCiAgICAub24oInpvb20iLCB6b29tZWQpOwogIAogIHN2Zy5jYWxsKHpvb20pCiAgICAuY2FsbCh6b29tLnRyYW5zbGF0ZVRvLCAwLCAwKTsKCgogIHJldHVybiBPYmplY3QuYXNzaWduKHN2Zy5ub2RlKCksIHtzY2FsZXM6IHtjb2xvcn19KTsKfQoKCmZ1bmN0aW9uIG9wYWNpdHlfYWN0aXZhdGlvbih6b29tX2xldmVsKXsKICAvKiBTdW1tYXJ5OiByZXR1cm5zIG9wYWNpdHkgdmFsdWUsIGRlcGVuZGluZyBvbiB6b29tIGxldmVsIGsKICAgKgogICAqIG9wYWNpdHkgaXMgYSB2YWx1ZSBiZXR3ZW4gWzAsMV0gd2hlcmUgMCBpcyBpbnZpc2libGUKICAgKgogICAqIERlc2NyaXB0aW9uOiBBIGxpbmVhciBvcGFjaXR5IGFjdGl2YXRpb24gZnVuY3Rpb24uCiAgICogLSBmb3IgTEFCRUxfVklTSUJJTElUWV9TVEFSVF9LIChhbmQgYmVsb3cpIC0+IDAgKGludmlzaWJsZSkKICAgKiAtIGZvciBMQUJFTF9WSVNJQklMSVRZX0VORF9LIChhbmQgYWJvdmUpIC0+IDEgKGZ1bGx5IHZpc2libGUpCiAgICogLSBiZXR3ZWVuOiBsaW5lYXIKICAgKgogICAqICBBU0NJSSBhcmUgb2YgYWN0aXZhdGlvbiBmdW5jdGlvbjogX19fXy8tLS0tCiAgICoKICAgKi8KCiAgaWYgKHpvb21fbGV2ZWwgPD0gIExBQkVMX1ZJU0lCSUxJVFlfU1RBUlRfSykgewogICAgcmV0dXJuIDA7CiAgfQogIGlmICh6b29tX2xldmVsID49ICBMQUJFTF9WSVNJQklMSVRZX0VORF9LKSB7CiAgICByZXR1cm4gMTsKICB9CgogIGNvbnN0IGxpbmVhcl9vcGFjaXR5ID0gKHpvb21fbGV2ZWwgLSBMQUJFTF9WSVNJQklMSVRZX1NUQVJUX0spIC8gKExBQkVMX1ZJU0lCSUxJVFlfRU5EX0sgLSBMQUJFTF9WSVNJQklMSVRZX1NUQVJUX0spOwoKICByZXR1cm4gbGluZWFyX29wYWNpdHk7Cn0K"},"functions":{"toggle":{"command":{"name":"Show Global Graph","key":"ctrl-shift-g","mac":"Cmd-shift-g"},"code":"(() => { var mod=(()=>{var f=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var A=Object.prototype.hasOwnProperty;var a=(e,t)=>{for(var n in t)f(e,n,{get:t[n],enumerable:!0})},F=(e,t,n,o)=>{if(t&&typeof t==\"object\"||typeof t==\"function\")for(let i of w(t))!A.call(e,i)&&i!==n&&f(e,i,{get:()=>t[i],enumerable:!(o=b(t,i))||o.enumerable});return e};var M=e=>F(f({},\"__esModule\",{value:!0}),e);var Ve={};a(Ve,{default:()=>Le});var m={};a(m,{del:()=>C,get:()=>k,set:()=>S});typeof self>\"u\"&&(self={syscall:()=>{throw new Error(\"Not implemented here\")}});var r=self.syscall;function S(e,t){return r(\"clientStore.set\",e,t)}function k(e){return r(\"clientStore.get\",e)}function C(e){return r(\"clientStore.delete\",e)}var u={};a(u,{dispatch:()=>z,enableReadOnlyMode:()=>W,filterBox:()=>B,flashNotification:()=>j,getCurrentPage:()=>T,getCursor:()=>G,getSelection:()=>D,getText:()=>V,hidePanel:()=>N,insertAtCursor:()=>_,insertAtPos:()=>$,matchBefore:()=>J,moveCursor:()=>Q,navigate:()=>O,openUrl:()=>U,prompt:()=>H,reloadPage:()=>I,replaceRange:()=>R,save:()=>E,setPage:()=>L,setSelection:()=>q,showPanel:()=>K});function T(){return r(\"editor.getCurrentPage\")}function L(e){return r(\"editor.setPage\",e)}function V(){return r(\"editor.getText\")}function G(){return r(\"editor.getCursor\")}function D(){return r(\"editor.getSelection\")}function q(e,t){return r(\"editor.setSelection\",e,t)}function E(){return r(\"editor.save\")}function O(e,t,n=!1){return r(\"editor.navigate\",e,t,n)}function I(){return r(\"editor.reloadPage\")}function U(e){return r(\"editor.openUrl\",e)}function j(e,t=\"info\"){return r(\"editor.flashNotification\",e,t)}function B(e,t,n=\"\",o=\"\"){return r(\"editor.filterBox\",e,t,n,o)}function K(e,t,n,o=\"\"){return r(\"editor.showPanel\",e,t,n,o)}function N(e){return r(\"editor.hidePanel\",e)}function $(e,t){return r(\"editor.insertAtPos\",e,t)}function R(e,t,n){return r(\"editor.replaceRange\",e,t,n)}function Q(e){return r(\"editor.moveCursor\",e)}function _(e){return r(\"editor.insertAtCursor\",e)}function J(e){return r(\"editor.matchBefore\",e)}function z(e){return r(\"editor.dispatch\",e)}function H(e,t=\"\"){return r(\"editor.prompt\",e,t)}function W(e){return r(\"editor.enableReadOnlyMode\",e)}var p={};a(p,{batchSet:()=>Y,clearPageIndex:()=>ie,clearPageIndexForPage:()=>ne,del:()=>ee,deletePrefixForPage:()=>oe,get:()=>Z,query:()=>re,queryPrefix:()=>te,set:()=>X});function X(e,t,n){return r(\"index.set\",e,t,n)}function Y(e,t){return r(\"index.batchSet\",e,t)}function Z(e,t){return r(\"index.get\",e,t)}function ee(e,t){return r(\"index.delete\",e,t)}function te(e){return r(\"index.queryPrefix\",e)}function re(e){return r(\"index.query\",e)}function ne(e){return r(\"index.clearPageIndexForPage\",e)}function oe(e,t){return r(\"index.deletePrefixForPage\",e,t)}function ie(){return r(\"index.clearPageIndex\")}var g={};a(g,{deleteAttachment:()=>ye,deletePage:()=>pe,getAttachmentMeta:()=>fe,getPageMeta:()=>le,listAttachments:()=>de,listPages:()=>ue,listPlugs:()=>ge,readAttachment:()=>xe,readPage:()=>ce,writeAttachment:()=>Pe,writePage:()=>me});function ue(e=!1){return r(\"space.listPages\",e)}function le(e){return r(\"space.getPageMeta\",e)}function ce(e){return r(\"space.readPage\",e)}function me(e,t){return r(\"space.writePage\",e,t)}function pe(e){return r(\"space.deletePage\",e)}function ge(){return r(\"space.listPlugs\")}function de(){return r(\"space.listAttachments\")}function fe(e){return r(\"space.getAttachmentMeta\",e)}function xe(e){return r(\"space.readAttachment\",e)}function Pe(e,t,n){return r(\"space.writeAttachment\",e,t,n)}function ye(e){return r(\"space.deleteAttachment\",e)}var l={};a(l,{readAsset:()=>ve});function x(e){let t=atob(e),n=t.length,o=new Uint8Array(n);for(let i=0;i d.id,\n nodeTitle: d => d.id,\n nodeStrokeOpacity: 0.75,\n height: 600,\n width: 700,\n });\n const graph_div = document.querySelector('#graph');\n graph_div.appendChild(chart);\n `}async function Ce(e){let t=await Te(e),n=JSON.stringify(t);await h()&&await u.showPanel(\"lhs\",1,`\n \n \n \n
\n
\n \n `,await ke(n))}async function Te(e){let n=(await g.listPages()).map(({name:c})=>c),i=(await p.queryPrefix(\"pl:\")).map(({key:c,page:v})=>{let[,d]=c.split(\":\");return n.includes(d)||n.push(d),{source:v,target:d}});return{nodes:n.map(c=>({id:c})),links:i}}var Le=y;return M(Ve);})();\n return mod;})()"},"updateBacklinks":{"env":"client","events":["plug:load","editor:pageLoaded"],"code":"(() => { var mod=(()=>{var f=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var a=(e,t)=>{for(var n in t)f(e,n,{get:t[n],enumerable:!0})},w=(e,t,n,o)=>{if(t&&typeof t==\"object\"||typeof t==\"function\")for(let i of v(t))!b.call(e,i)&&i!==n&&f(e,i,{get:()=>t[i],enumerable:!(o=h(t,i))||o.enumerable});return e};var A=e=>w(f({},\"__esModule\",{value:!0}),e);var Ve={};a(Ve,{default:()=>Le});var m={};a(m,{del:()=>S,get:()=>M,set:()=>F});typeof self>\"u\"&&(self={syscall:()=>{throw new Error(\"Not implemented here\")}});var r=self.syscall;function F(e,t){return r(\"clientStore.set\",e,t)}function M(e){return r(\"clientStore.get\",e)}function S(e){return r(\"clientStore.delete\",e)}var c={};a(c,{dispatch:()=>_,enableReadOnlyMode:()=>z,filterBox:()=>U,flashNotification:()=>I,getCurrentPage:()=>k,getCursor:()=>L,getSelection:()=>V,getText:()=>T,hidePanel:()=>B,insertAtCursor:()=>R,insertAtPos:()=>K,matchBefore:()=>Q,moveCursor:()=>$,navigate:()=>q,openUrl:()=>O,prompt:()=>J,reloadPage:()=>E,replaceRange:()=>N,save:()=>D,setPage:()=>C,setSelection:()=>G,showPanel:()=>j});function k(){return r(\"editor.getCurrentPage\")}function C(e){return r(\"editor.setPage\",e)}function T(){return r(\"editor.getText\")}function L(){return r(\"editor.getCursor\")}function V(){return r(\"editor.getSelection\")}function G(e,t){return r(\"editor.setSelection\",e,t)}function D(){return r(\"editor.save\")}function q(e,t,n=!1){return r(\"editor.navigate\",e,t,n)}function E(){return r(\"editor.reloadPage\")}function O(e){return r(\"editor.openUrl\",e)}function I(e,t=\"info\"){return r(\"editor.flashNotification\",e,t)}function U(e,t,n=\"\",o=\"\"){return r(\"editor.filterBox\",e,t,n,o)}function j(e,t,n,o=\"\"){return r(\"editor.showPanel\",e,t,n,o)}function B(e){return r(\"editor.hidePanel\",e)}function K(e,t){return r(\"editor.insertAtPos\",e,t)}function N(e,t,n){return r(\"editor.replaceRange\",e,t,n)}function $(e){return r(\"editor.moveCursor\",e)}function R(e){return r(\"editor.insertAtCursor\",e)}function Q(e){return r(\"editor.matchBefore\",e)}function _(e){return r(\"editor.dispatch\",e)}function J(e,t=\"\"){return r(\"editor.prompt\",e,t)}function z(e){return r(\"editor.enableReadOnlyMode\",e)}var p={};a(p,{batchSet:()=>W,clearPageIndex:()=>ne,clearPageIndexForPage:()=>te,del:()=>Y,deletePrefixForPage:()=>re,get:()=>X,query:()=>ee,queryPrefix:()=>Z,set:()=>H});function H(e,t,n){return r(\"index.set\",e,t,n)}function W(e,t){return r(\"index.batchSet\",e,t)}function X(e,t){return r(\"index.get\",e,t)}function Y(e,t){return r(\"index.delete\",e,t)}function Z(e){return r(\"index.queryPrefix\",e)}function ee(e){return r(\"index.query\",e)}function te(e){return r(\"index.clearPageIndexForPage\",e)}function re(e,t){return r(\"index.deletePrefixForPage\",e,t)}function ne(){return r(\"index.clearPageIndex\")}var d={};a(d,{deleteAttachment:()=>xe,deletePage:()=>ce,getAttachmentMeta:()=>de,getPageMeta:()=>ae,listAttachments:()=>pe,listPages:()=>se,listPlugs:()=>me,readAttachment:()=>ge,readPage:()=>ue,writeAttachment:()=>fe,writePage:()=>le});function se(e=!1){return r(\"space.listPages\",e)}function ae(e){return r(\"space.getPageMeta\",e)}function ue(e){return r(\"space.readPage\",e)}function le(e,t){return r(\"space.writePage\",e,t)}function ce(e){return r(\"space.deletePage\",e)}function me(){return r(\"space.listPlugs\")}function pe(){return r(\"space.listAttachments\")}function de(e){return r(\"space.getAttachmentMeta\",e)}function ge(e){return r(\"space.readAttachment\",e)}function fe(e,t,n){return r(\"space.writeAttachment\",e,t,n)}function xe(e){return r(\"space.deleteAttachment\",e)}var u={};a(u,{readAsset:()=>ye});function x(e){let t=atob(e),n=t.length,o=new Uint8Array(n);for(let i=0;i d.id,\n nodeTitle: d => d.id,\n nodeStrokeOpacity: 0.75,\n height: 600,\n width: 700,\n });\n const graph_div = document.querySelector('#graph');\n graph_div.appendChild(chart);\n `}async function Ce(e){let t=await Te(e),n=JSON.stringify(t);await Se()&&await c.showPanel(\"lhs\",1,`\n \n \n \n
\n
\n \n `,await ke(n))}async function Te(e){let n=(await d.listPages()).map(({name:l})=>l),i=(await p.queryPrefix(\"pl:\")).map(({key:l,page:y})=>{let[,g]=l.split(\":\");return n.includes(g)||n.push(g),{source:y,target:g}});return{nodes:n.map(l=>({id:l})),links:i}}var Le=P;return A(Ve);})();\n return mod;})()"}}} \ No newline at end of file diff --git a/_plug/katex.plug.json b/_plug/katex.plug.json deleted file mode 100644 index 9451a9c..0000000 --- a/_plug/katex.plug.json +++ /dev/null @@ -1 +0,0 @@ -{"name":"katex","imports":["https://get.silverbullet.md/global.plug.json"],"functions":{"katexWidget":{"codeWidget":"latex","code":"(() => { var mod=(()=>{var d=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var m=Object.prototype.hasOwnProperty;var o=(t,e)=>{for(var i in e)d(t,i,{get:e[i],enumerable:!0})},p=(t,e,i,r)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let n of a(e))!m.call(t,n)&&n!==i&&d(t,n,{get:()=>e[n],enumerable:!(r=l(e,n))||r.enumerable});return t};var c=t=>p(d({},\"__esModule\",{value:!0}),t);var x={};o(x,{default:()=>u});function s(t){return{html:`\n \n
\n
${t.replaceAll(\"<\",\"<\")}
`,script:`\n loadJsByUrl(\"https://cdn.jsdelivr.net/npm/katex@0.16.4/dist/katex.min.js\").then(() => {\n katex.render(document.getElementById(\"formula\").innerText, document.getElementById(\"katex\"));\n updateHeight();\n });\n document.addEventListener(\"click\", () => {\n api({type: \"blur\"});\n });\n `}}var u=s;return c(x);})();\n return mod;})()"}},"assets":{}} \ No newline at end of file diff --git a/data.db b/data.db deleted file mode 100644 index ae323fc68b34f1e30ce53155ccda81ca37158616..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 389120 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%0AJZyEjNRH6g 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%0A675Wz^w`S4A{ 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⁡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 CuBq_=