{"id":1168,"date":"2026-10-01T19:44:10","date_gmt":"2026-10-01T16:44:10","guid":{"rendered":"https:\/\/eg-missfitness.co.il\/?page_id=1168"},"modified":"2026-10-05T09:26:48","modified_gmt":"2026-10-05T06:26:48","slug":"members","status":"publish","type":"page","link":"https:\/\/eg-missfitness.co.il\/?page_id=1168","title":{"rendered":"\u05d0\u05d6\u05d5\u05e8 \u05d0\u05d9\u05e9\u05d9"},"content":{"rendered":"<meta name=\"robots\" content=\"noindex, nofollow\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Cormorant+Garamond:wght@600&#038;family=Heebo:wght@300;400;500;600;700;800&#038;display=swap\" rel=\"stylesheet\">\n<style>\n@font-face{font-family:'OZ Temple';src:url('data:font\/woff2;base64,d09GMgABAAAAAFm8ABAAAAAAwEQAAFlYAAEAQgAAAAAAAAAAAAAAAAAAAAAAAAAAGoFYG64AHId0BmA\/U1RBVIE4AIQuL34KgZ4o\/CMw+EQBNgIkA4hUC4QsAAQgBYtsB45NG\/2rNXjzaKQ3q0KLcLefqFewYyO4HVTfAnv\/KKQQvSv7\/09ANGToPZBorOsqlJ4ZOtSqXmqv1a6snnSldadxV8fV55kLsK5EEAGJEMAOKAHoqIBseIBwQAAAHwAAAOB9zt0X4w6spILyl0YDoCEAwOfcB5rAV\/tHFV8gKACAC3D4ekGCFAm\/sGWIkafQsYNpJZ5dGJVpNLYf4AQIACAAAMO49e+4w+UFmWpYDQQwAIBDkqJoElWyqjyyenoR6BBIOus+APx\/RQUWX2YVUESo4\/npvBfTH7EfbdSaiqVJakqqQp1ipXgJVkzmxpha2ZwxR3xSJEgx7aCF9Hja1g\/hglVXkerPymf1cR1WXGgfNuIdaCOILLvCEktKHcgyPM3pvxpblxpUCZB7B4kTYhfzi5A4MT0SRANeE2q2Up23rOqh5tNO1Nnne4\/eqf3iaIUm2Q7YITtYTtsDTHtIFCUH6dcDxAPkXAlcCpBJJmnF8\/8ta\/dVV+0SuqtnNnmC0hxkiJbsEQ7tUCrqFYb4CyCAYG5xyRLsmU0KWtj\/n2v5yUxVUsK9aRWhJiPK2hzz9oA5eSlY+B9KdLqcKPZjREpvwzTEKl05e\/AwrTMRBLFTvfZee6e1T36CzECndLccZC4nkTOgFFivB9ITRAZamjM3NuKEGco5pAd0hayXQlKkBFQA8K21N7EvHz0BFGlzO1Nla3SdA7LAewFg5ZpFUiqwB0kkK9V52TJF7ZbhpUkhiM4h5eZfVW3FV6XSmQrlGtOhXLOvrpKuli03LG2Y8D9AiB8gWCVZIF0ISo4JSnII0YxJOYVNCinJDuUq23n3ZKc12dccXwNoKyZlJaEUO6XLV0qZbF+vYy3D7HfTDeNtY5tuPv9rrbTX82qrA\/RDPGEQZlXkqegYedM7B33\/uvoAaG7DMAesEkflU1HAcm8DAPIq6mQ06kgTM0\/QAmq+d8mkdw9Daa5LbFOY8QA8FRvPv3+bv3\/kbim0mFqcYJBwZoEF+PO2OLB4eHdxW4EH8rYAuLVagBEE\/u2Yb8d2ENG2Qrlp1AI17izwpkm0NLGcH2qZ6C20r34OsKR44kz6I\/vt3zMm9rGCyMiIiwvnmGOOAXMiIpLxvkJsSyoPifDR6x0pWNseG0sQ8Xn6+xGQJQpBsv07j+QqhBQLQyEhASIETF\/ELIQgcBo0w5nRfz3ViZIJIewuKkpmKnGdNq876k4pBXV5dcI6VaZ6UDOlrqGaqhrcrvFIF5SwLngSE528m+uGMIZ+39e9t5x1r2w1WYYarImSCKejIe5W5d1d2mIUSqImIIWAqVL1IZz1oLgSOPe9bx8APg7pjtH5L8MaIAQ9AATIcrJCfPD9wCwQPtw2MAM0i1hgAERKDDBEQoY\/4VQ0dAxiF4bOk7WHRbwH50sEpwVyYRwQ0CA0BMWygTtsxEEG9Ebe69JHj99OEWZys92AToPeefUhIHRVajVo0a5Tr36zEVBU+UakwUjQgpFDYyTo9SKzKS6I1MKREFVlXNbpY3JERpQ5bJD8VIN7+h6xOG3Vl4Vz6fB0ugR04iJsSgKvJ9k5zYLofUfxVCNcvO9wachkXEGdcnEiklfoJen1C6\/N9\/f3p5Nv\/OpzeipzCGVNtwpRFaclz2p3CUs\/6Ck12rj7+Dvpqm48awbv1d0lh+\/hquunh4w2LdWuxwV0Wr1\/nk5zUvJPKsMhx7MJvCFqpmaOioUNIyQiIYVT0ohjYmHl4OLhhVCiTNQY4TabCzSfbrjsHExGA6YAmqHRpmKi7unADOKOZgGzgTn4XLPjqVbSeHHx+ZNBu2bVCuAJXyRFCcAmWUlYFcE15eleYNIIMLUB\/QsaVcBGVgVzO1Gj1k9jonDo0PDDIP0xWkQHxfNEAoZZENaMo+DRSCmapE7XqFWaL3W5HsAJeZo8U54vL5GXJa\/JNKgCk\/ffGMDTaboZyF3KYAMcdqpUc9wusIfIR1wWkwmejtk7CyorCTooh9gbq23PtpIt6\/jskpYANCorJ60Q561+QmXb06REhUlFU0Vk5+09VVPHh4t2Ux\/OkidSVEEV5ehGTANV68piVS5x6Cxc5D+n\/f22nfm2FGlqagJqEka6QdbJNB2t6KaEF2tzUrVTlaTYIFguV12qjbu6g+5n2b0qctNKeHu2CV7Vdp1DxZLOFyGUKEmyFGnS+WUKCsmWK0++YqXKlJsmDEmiQOhVvs2CAdNwQT96QEduMDozbGJfZgBT5mUsHN8lUEokpiQiSiaSFCJIJbI0okknhgwi8xOSyfTLE0yWqwzJQpY8sJEGseQRkk9UBURWuDFSpBhbCSGlRFZGVOVENo1owkT3LmH+IsyhwyKAGaMhg5+TBmENpBA+LQSFBwFDRHHx9AiwVKJi7QasInDODdUadZKQ0TFjQkOq+FKY1szJiqzLngzh+Ee+EBgwHAFmjkBzKTYCZmE21l8OmEPhAubWtLjjzrxROEO3JUATjG2IzXV2klnLlMqCfislTs97rQb0hIP3s\/5jrHftKEexdFJS0YLoTQIvE7tvXfQgu52qhmTKjRWYUjWR5xysdFbNy6sRYbVjnj9kYo2ztiQ2Yc66EnfjzpIh8w\/FoLadxclW4iqRAhtzDVDZX7SseK8PMgywqWI3w4cyDrOcATQA2MyxBSE4NkxMxmenX\/+wnW0ZPKtZT+j+br1TFfVElf5iewiIH2364kXsPkBeZ\/kjOYFHgEZPxNbFStCukkJss1g82oSzfWJ3nmPHiCum2WmAhTIeOyUXu05NA+00oA28XQmwhwl7pcjOV8x3sE\/qBtmv+TkWwZNzASFIMw0h++3LPscSbXI8FRJg\/CcoJEBIiLUN1FTgPUVKFaM8SRkEfIO+RBP3aAdfRwvxO4+NGDJiA2R2zUSPoACjKezURET4QCZwHdDArpPAeXFzX3DiZ8BzwGtRDccT4nm6ph71Isg\/Ac1GIjbYuDg2ywacLiswkF04I6SoaN+2VKKAQpU69Bk07JgLKrWSmGy0AhISRj87OjuV6chghispTnTAB0DTSLJLgOYnkLOSdoi\/OHJqkgA0rXqoaY6kiaPcGPw4jjVWAqYfUgxbpk24j8XyHA7JM9kHYGJysEh+xwukcupKUkjg4wzTBD7l9XGbBXwCQhbJJ0EGcEruxW45H6fJYS6Qu8VhjnupuSaGvsGAeSEC4oD2FzKxsG9\/3T8I5XfNmj0Tau8ZaJsOzY\/MnzkAPY+9PwFmPdk7qwsGn5znFsASTEIYJhFs3RCDp5+c9nnwasqc\/J1P0Ra9byA5FuyiAE1QHAR5AUYFEcVuKiBzl4vZIPMWc0Dm7+KCLJC7CsTejmXi0Xs8Hf6+kbyfDdmzeNHl\/Lvxm7UNtA\/b7RYVzrRuA+Mdk5GoUKlKtRq16tRr0KjJkGUillsBSZYiVZpmLQqxUTsbDF2LMiTHfzOCAUsRrVUg3Kdum21kYuYOow8HDUrMZBpuAeVazbFCoUuqCYlI8Jp\/d8CQte92BU+LXvMss85pV\/G0WtdwRKx3xjU8bWaYb7kNzrqOp12\/BVbI7jz8DjzTzbTQSjnOK8LTYZZFVsl1QTGeTrMttlqei0rwdJljiWH5LinF022updYocFkZjitMzNgBVEAIQkQ9MmrHQrHUz3o29WZr7k7po1iQkeTz+nhRgMKgRRy6KorVVHg2rd1OkvwjCZAha0zK580EUlXRHsZSpa7UdCyBHlezlqfkbdpN16FTl+5qPpUOoAABiUFVaVmIC\/7Vw8Q8ApPHEzTYevTqM0M\/63ih2eaY62oIiAgERHbFiJD+umRXp0CQC9yY1dYq02TUip6fKUdFuJSxvQ8Y5L4sMlrtbH3AZeHV8zCvCd7WY\/yGgRsNy6U35NbB95b8Ajira08CSRscWAPIP9sIsFqEL8\/3BvMxgPUIz37sGUQA7n+qrR9hECENu2T5KrXqt8hwZ75qjg5975HAr9GnNGQHGlAI2Q7qO+SaIboDMyYTavtOTZ8xnah52UziMNAghPDApEhx5\/mOCg8kFQ7c0SMItFxSlj92vRZLRLysSIlylW6q06DVGPfE1+PquDl+GZcG5pEIrWYGJEMKLId0yIcKiMMOOA+uhW\/Dd+Gn8Cv4DapFk+VF5dbydHkdEzsFgQAgiz82VVCDNkvdZ11Rokylanc0aOIvPhQ3aP+4vbpAI9UoNBqk7NijWaopiTREsiOwHvQ20JtA\/wDYDWwHdAOwtPv+NHh\/J\/Cfi7z13rxdhb8LXoJfvI3vO\/UUXnzK6z9WCvCLw7gHd+IW1VeqlEle9PHk4wBr5gPSDjzf2TDvtNz8RTDlEvCdbb7m\/E+cid8AfATMS1X1v\/\/UoAYkxruGtOtQz6JaqyqNatRy+cvfzhnRrUkPvxs6KXXx+YIewWiSjMSMjz0w5Loxd0gJHHE04xHfn+4TEevTSwVXx0DHY7RBaROiYxh3zGi9oLL9wXPOnHgSwyAAPwS2\/VmQ7SADIIC8BzKBKAD5K5BJSCdDXQcyBTGM+20zDbEA2mqQGYgD0F4CmQXTBAsAtRXU8oULvwqw8m9A7QX5L9DC5zQDr0TSpKhYf+KMSWl+O2qIvnIMIZUJqF2kwCCCoo+QQ0SLnIxkaFlBRAr7kjgZIjEUG4iU7ArNqB4YqHtdgE5g+wPuisVXLFOUISQsScmBkJ9CVFTtRGay4MpyQ3XZFzSbUR3M0tXSKJrupHoM5e+zMafyAzW3vJItrRxfv0qqhwFlgUxxuWSXwaxKeM0L+6htQLz5oeZeE8O6eCLoDB0cRYrEVN8iMEu6o1qOWDioUCWghl+Q4xiRfsJJq5tAHURBmTaetZXo0QoW9UmWZnjPyfPhTO0u1L48KxilE7vKAglBviVA3+6FMcsXXjJxn2\/oEUgDu5LIUT6pHMvlYtY09uypjPN5HaWkEepdQDpw25HSMJZ\/JI2TMFisqVTvqjDf5rVT2m7xoP5mgblLvzjOZuM+cRECbnXRLJyBKy+cY6Zupybi1v25nTYrB74I0UWvdi\/ogfGEkeNwFfNGZyuCJBEHbFJsvnAfcFrkr2hV2u4lIgmXBbzwFBALbvZoIZAAOuY0OyfhHRZMvPtJSGoHyhygpF0gR8IKnyMAE2r5Pw2zP5T8xRxjaFWex+Bg2EjqCXJZnHIkBccR\/MOzNv\/4ovVHw\/xfrNiyfK\/cMcFBmOfKPMeczTE1cnxUmJgNULxSJWTY4H2Pz+AzjgLRN5Dj9g3QoxKAOBcEY8ic2db0cxaZqSJbcN2HkIfgPNsRnysgFizpi70Z6K4r4cb5HnRsYDZxguhtg3Ic5pFjKVgF7InL5of\/\/Snua6MnaZWDJIbaLg83jJehcxQRtTwTPKyLWi3LZevDsuBpcHyxypEcQ+eMG1zdGU2dd5QjxNZ2EUXQ8ORfj2TPd+gjrEBODE4LCQ+xoUapHeVt6BH3RLNXsJ2bUT6mrgzXXyitxdU6AwYRruYxwQICVGIdCDx4h+I0TupgcImDWvUWaJ9Ydpc3Nt7OlqIzqYaTBCiIfWQ4hokik2I2EbYwWFVAEMdrgHatuGHNkzCDoPbpTpqVtzhb3DatGsY84Accg132ws2tBrsDEJsxMc7vLvA+KIC\/lUhmIC5pZIRA7GlJMTdIhLPNRgpJP8dRP45kan2IlzTA5kI4j1x1DP4\/RcZaGYxU2XZnPeIpo1qIDfQ988G6t5g0LlQKuA9G2BXDAn9jXPHFD7EbPmZr2\/EH0t8RlWeJ8vbI7px1qOBGMmox09ep2N3dAy91Cp2dn\/l3M6xxWie1wEZx9DS3uxMuzHCpUPTRWF8TovohLLIWHjLQkWo+UnNxCwjjlRwpFIA4LSe7qDaEmY0Zwy1TD3D6G2hcAmyYr7m+9\/INn5OoyDrE8iTPYka2XfukmVZjyaQyNpcmgXeayUmvCSFcGd42wOldsy7QufnT4oj5pPxXSifuo7fgKiprPnlx27xy4dWS8blV7PcdEYCbJq6YvhF7DGDqOfwHtfzfHK6FJ\/bwF7Yr5Wqrr4CQw5MHfIhdEPphhTQ74XSB2nmM0i7qRk9TywEa98nJyxXBLAsUv+\/TQdMuG6JOsEbZKnmxJsyfOM5mJcQ2eesN8GeHBUTaLps6Qk4nMdtRwv118MtF7Nuv90shc7Sq1B7cT\/PhqpUqqGvzNRVfCra0UWPFmg941sHNvUJv68xcg9TeONcRhU2UXtgSFoP2aq5dQiUh+vtwdtCgpKEdRAO8jkAeriRDvKB2GqJuN1bEbNo3WZwVeJudnK473O9tJrbRPiQsk00xrYQVLc+INStQrCNLktzgQu4j3E3Gl8r6SBW+lvPG3l4s+bZM+vZBrc8mkbB7VB3K9kYDDx2KxIZkm\/ckh1k1J11XnDUgUWvSW4UOyM1i0JjYwkeFCvzlt9PkYC3tB1sZzu9vJgYPkIlmeIYZu0y7JM1qWbw+2YOheT5chTWB3U5CQZYb1mCtovVnd3TxMHvrbVVts\/hWPIuGG8nhPlT2BUMGNxVnMgwxxPG2ldQ4n523z46fFAuvjGaUWdUi8\/iscqkfuXmfcGrMYpfwgTYqTtumDspKhhvG2YS8b8VvQTM65CfmKb7KbnniOaskw6hLBjysNcaV\/zVomOFpefNyFEVarfKIoiF9TIysE0yVADjuVuZTOzrG2HI0h8u9HeT38WcFZIykMGtXRiQRJZPLlzlAsdQLJDl3hA8jdtcZudn0FNspH+uzOZqTtciICoIGzQXRofSJ0SbCpm4BHtU5W1EdnDdIYbA+zJ9lCNEnBlAcyPqRAs0D0C0p+OAjBvMgDB4zEwGoOylrFBkPc+Ku0zZZQaPE35KLJ8Vrs3RksllNekt35+\/5MHpDnOSRKIFCcaKkt7WKQXJzpe6rNh380NmQ1TsJsDqihTbxiWK2GCudyXJoyjQIGzr2ph9FlQ1WB1xMIXtUr2QyxtHsMfeYcEY8ZRHpKxMblkVmAmLzjqJdV+nema6y3mVsCmERGbbUerAHTzEEHSXQMscdYw0LofaYI9TUJxQpEkVWgaBDv8sCxYgbwOp2s\/q1Byj6\/a7c7\/C8gTfL13uCU\/P2Fe4065oGWPTX\/fpvM4ZInj\/zq4Uxp5iL3sR9xS33bF\/zGHFh6UTz0HbcyJyIooZpTSZr3c7LKZdu2CnqtWrVE2f55LRPHZmsZCdH1I\/93eINN0++G9A4pOcdBGL90pHOR58Ke7AejGqacOImZv3UoyUyaH2wqhlgSk0hl+X+AJVXcq7x9oLKGpUjpuAid5Bjv0BOyNa+tHtRXD96oIS7nRv5uPWxPLHCXQGuIYs3LCuo7xwVWQQWMPTpiwgchX2yhamKtY5I7XB3T1xUdX05K0d6RBpg\/uT6tGpdwcDrjhoR+rEHBoOlvWbraL5sXRphelSuHM8X2vfM9vzPPYDhnfTbdk021zWT7lDBp3WufQUHorB8Ti26qtvTP+Py09jgsWjRH+s9i+ZqQhhiNjsh04PiDoi9ZMvhjuujnaUoM4GB+hs8gQ6e9mKtC1HiGqXDxirAImLiSLH4JEJihxhEn2cye+rPEuNFH66bMyfHLQnVvjRG4opLYw9xuXzBQhhst8TPViT7bW8b6jT5EmMbStqIMfzSOcIPZZrU7\/T\/KCmfQ0Z065jbEEY6SRwt7zdS\/b6hWNobQiBO6YcSI7TnI\/L2KjQGjKpuQ7dmQrQiTS7Zy6upMk\/QQloaSUvaoQyxWel4sDNe3nx1p2pi1vvHIMOVpmXd2HRyJbHMvSpBbU5hON27l3nER62MIz8xSkRFLY6IQZTEqHG0qXtD9cW8J6NHV\/6wUzcvdCQflYf16kcG3WstsvFyf\/9wu670S9O15v\/v805169Dc\/Z3QneVlDa\/KtLNRBx2XB00UmmdYWb4j+6IyzkAzoFnzFM2oUCqqRxv3l4fMtUvR4Cph\/zeqF39Fc01VXyxd6\/wQBaX5ivuvH4\/tf3uhF5Qho1gpm23l4LGI+99wQtvI5wUlYkEwJlT9dxtpFzq50MyimdgFpqCFwcPCs\/99hZ6do5bUVFW6p\/ItLidXNBZUpEdigX1NTUOfwhHXIumhh4JZfLN7hc+xPZWC5gPvdnVz+StWLsMqwdCh7hIssSFlH8oS4Wf3xlv3bQPzdvi9W0Mx845loaAwQ24o7VoMyvLoCNrSDbtzeqhvmbCJkkTtxbC4JQVTgEV6Iuobam7y7WNfEppFmtobP7VJ5aHVNbbBNGHbvqom7Oy369eEEaJ650pfUNryawnpGijMgP\/hrbio7yr8FjyXhyOwJf85cmphMANgIylm+W3v\/\/JUCnsoE\/gFXjVUEWFMCWL\/6rtGf\/a3yb9R7sWGpfWZM4UzN05pi5+eV6+Yg1ByCnN5z0DPiYkleYyZFpRkfA+ty0+cmcEoVZLiTHkU3P\/j668xeZT1Pvr9pGPU0VBOeirq29fcPPTJJYgoKoSsrrFvT6eDjtxwGP0NF3DVK5u6RZE5T+ydWD9H7esX65td6PVLvz+uwWee7V6cTqM2fWaBIHAWJM3zWY++6rdombOQEmObkGlOWvuSzVXNZP\/wqs4Scf\/KdjADPXoAG9TPTzMQQuu21C9\/vpHiIfibNKQky3I8SiuID8ibpAWW\/z3sa9Hi0UazmsOzVeooRsQvkttFjlwoZe5Sn3mYqMU0noRZzeZaOTrEBFPyODChtLqeYQKqgixtNP8JHAX\/IrWZlMtCB+CbfV1ramsH930WDSmXtZnswEJ9f5B6JT82H7aN4OLSBjuo7wxSR\/JnmWIr3PCLHj50ww9fmbeYM8sOFshUccDPs7\/Nsz7s8Nl3kojDj6fx7Y01WokfwemntE8QNXIOIlA3+Cw7SenD4FVRTztxHn5eLW1pltuREeiCihnN8j9cveKLgmhsr0PA5b20NetpYNmAvDIx\/8LsN1eB70l1emm\/06XsbzaYqtpLzv\/amy5haNIKcROO8xoDcpm4Rs5twqFL3J\/Wa78kXedqKA9LKGp61UM4D4JvSLmS\/cMDWTJDS9CXaBI3EwotI0seGN6fK+GbWwzKfpdzCrfozS+9Dl+A8CGpV6\/vd7lEnyJOdatm70N7XCI21svlW6ODjt0axXGJ\/eHeVo0avERq0StzlrfFYOZ3lOwYHsyS6Vs5pdmEi5sIOjk4vKNDOJzxvvg6Ig5GhRJdrVxSb0Qd6t52vdXUqlLWa8bxPTmjZq4bzd0vk1Krq5Ue27K0x2j76oM7XZte6wGFfXqHOgRD3BKpAAoOXoBfgD2kJr1c8PzLg5ldzIMLGqNyBeaWVxbLxxPWn9SrtZfa1FtP25MSKebBKpMaaMHakirNqV3wTQivLUg2heQp6Z8vjbTIjLXN8zrIkLziENwNoWYU3oOE7kBhYaCoyLT0TEWg\/OA0CY1VauK6hY0CwYTX+N\/EBp8rrWEZl092bVhcZlGKsiXOH9Z8V1zEJXQqjtXMHLDdgmEo7Vwggcz5tGnIdHD+Odyk43ilX770VUIutnkDrjRMt+zc5qAJxF7gnwVEU1SZJXTm5Oa6tpw6N39CGw2fkPoNhn6nc0b3GxyOKMqANCgUTUYjjgbFikefYuASKUw7TR0MM1h1bXPbO3LzG9iJOXeH32siizoXrlu8aMnantsfw8UQ7CUtWb9gwcKNncrEbPIwq3SmqL5jUVtr2\/w6dpAxQF0RZjCH1uJt2tqX1Kf9SZMBGnSOmPclcIbUYPrxYSakxnC3QoT2D5W8gBePcINJh1eWtt1768H4BodCBPuGSM\/g5AmOIOHwgS16hzkPv5LKuZWu1T36MvwDvNjW1wY9IkXUK++6PG63Y7+ijrxJ3Tv69WjI2u7OXqe++CZ8f3T\/KHVHAkc+Iqkjo7tH4Yvf+x6M0te38nra3a8tlwuYw\/3s3nU7f62wzHXu59\/9UbgXysXEtrUw4lxMwNfGwTGo+29kfhv08vpiWiO0fFSvGDqdDItUgXiuFna2Lc2CZz9nTX\/AAks7smLiaIrkzUbwnfFOquu9s6qyxDI7fVF0gSP7nqa43RmVc24ZSbtOnuZUyMOzKwzXrjxmEofs27uXU3fsBlrx9iPL1K5kAJNh\/hkHqTsiRRItoZK0WtZvOLKSEiL0owZMU9k213Fj+iSsQOjCBZLjDmQQyS0foZgCivyu0A773jgN6CxfzB47ze6rCIp4669Pyxd1wA5w91ZzrknSNGsWldYyXd3dt2RuHMaf42s4ELgt0ArBEFfNsHa5jvaOn25ZHXY9Y5Gc8hWWCcU5n39f7D+dC7aswDRYb\/OS2o9YmvE42oNm1apUBaxY2rehrXXQbzy\/eDIbY\/DIf7Q\/a\/IzZtFq0AKa1au6zTWg0AJTELxydP6qTqZvilpbGZjMWLF+cM0DuBtc3dzSu2bh8v6N7cwjObTMMIm2bO2zWzcs29m3G1CRnQf2pFob6tYh2zsX9Lcfyl88DD2H4Cs5Lu2H+as2LZdeekAR9vYuaXkwETSLDhTcHcvauhexvj9NiL6xa9X8Fa1bMtmelQXzCkVwQh4yu+A\/ELHADyHoKFqD1e9sXIa8AtbGw1mvFhSQIg7z2khk6JNbUxNFWZAcrpnv8cToHG61AuTwP9W+FVt2rHkCYtv37d3+LMwrX6aJA+\/Ml\/Rl9Dpo67Rolvpegt9bwi4uu0aslEcbhThURFkCh8Do8mv5iBD8TqqbYiuvzE7h5bcbVfPdHtXCdtzibwyZtS6Xtmx8Hmr+usTnYVe6RDJpMMPTexc6TOuiYdPaRXYvqHnlCxCHIDq0mHpisKV4oMEy1I7Wabb2pHwlEMg\/Hhh8X\/YU5clA8dExX57KUvPdRNG8uGYwh25b8MI8FgSNyIahZ9K5+tY7yB\/zFvXljj5z7lm4nAk\/gnDlZl1HHAvNlFLNkSJlQ8eyvhpTAlCS1sVsQ80\/wGspw+Bcr8uV98AwmPoVXmy2Da2OhYbH6unl1aJZOj2uRI5fj5AOOr0BG1AvFMBjEMwX63IJFsJq7VvS44f+CVhaWYEe3obdQ0h1pIEzZhhcaNmCbP8kUpVJ4sOyD5RzpL6ovgNCD31ync4IHvacNfIOCD30gU5c5AJfnqhNuZvyCTJKSV+1cOW6ZeCH7Uu6M9sc0TgRrIR\/CT0DPzZU6YwJTJCxOLNPPzPYEx8C8hyyDhwgLRaE8KJ2jlQR4QicIndtIOZENG7CrsYzPo80zakZuJcTKDVpLuaTVPyySF5008SneYQqabxOZABhlX60YADStxj\/q2xdARZOQ5g7zLAIghOkLr4M\/6uFLdARYgmh1c6\/KEKs43pnDY\/8maIIrTm1Ome1anKdmupVdwKIhPbnvSbwH6nDrlkdXqn4pr3WrSKqXhqs8zGlOiKK7R3T+OjTfFeaJbS2q9StlmpNLqex\/paWiAmtWpxMYxpNEsOSai1GJCUakD+8Lrfw2WJJz571Dc\/Dl\/OnkY\/BCVInXxuW64IEPvmqLaESy2sauTgu+twzscqWuIpPDhI6uTbcybc9mn4sqebzJNYMQ6eDpjQeX1KdYerktRG6AOdWCowRmkIBTbFKrgCP0BXgJ1KW+9Ggv8ZPpCNi2NCY5keCwNx4zNq+i\/fOomnPqazudlwxkFit+K4941Y93izG0loNlkpKrZHGxCmNVpxOizXZb\/dadtZBZ6tdurURLTM5\/KakI4uswCa0R7qVDif8Y6PD10E3XOyGPVVfMT4Ty2JxWyapyRnsobhF4GKuHPgxUSWRBYW8uMrpHVjctTg7KzWG9IGfSO28efj0WjbPl3TZ8LDDoeEDobabMFON0cn3MnsHSDGuNFIfcdPuf3WgaNUVJI8tF\/niHCXwl2rfK1gMJ67Tf6TuuKO+hEQ9FfCVQs+SUlVRfHyYxYs1pX2+0Y6x\/\/HSyKWWhvmdhE66w0XmriVcZEp1f\/6\/ROra3HOGeHuFZFrlz4N1FiavLnFhzJZHjbND7zXUCWQpvV6cqONb4kg26Q3WxWOx2oybz\/MEqmTg5cNtwtT2YkliYyOjcD98uXsdshHMnN5WbVInXY0w6\/SLWWVepAoWIknTlXaMRjE8Y2qhoZKOM5RKZyPNCA3I+q1G6VQy6Lihsmfc7hlKoWFKe5ougVVepIwldvqzsDHpUpvaqiOwXgg+IOVQ7NqROZHHQYznWQWOkdocqkMtPfTJtVgi+fUkjjW0dI5O4mo1coGbzQRbpRW\/H8DrTRvn2eYb9SGPu\/2VPA9Wt\/\/uwRZ3R5in4lWagaWz0fn3SxtEcJUVqXKmJQsy+DibcvHxb5Zv1VdSzawqkeOeEpyo\/qFgwRmrtXu03cdMhi8XOkBq4lXj4wg235cI2+1zb3wc6+wHI58EygREa2NUyQ8neYaFvgpkvOH8y65\/JtVbBPPt9bRt2VC0cu+xOWChrxgTe8Rzddtd+nqJLKlUyFINUsPmEI\/vEQhj34S4skQ67ufzvEGeFNydy7sUP2NPTp9tSwQOsz+c1Aeft2xJHrpUTRyFjUvduQLskcd+8AZEHLElxVSr496JLRyRN\/DDYyNPslk6Kldha+IYn4tUcKgV7Ej5nltSObuCyolUKERUD\/pSufa+B2IYlvv36Jc8KFbK6cmZ6VBqTuzjx0xZ\/l1AeVB+omcoQURfFDJvgjnpdE6LXB4GjmGlWi0tHA78Swcb7NABq8teoLwy7W40sDIVAfPNuJpjoMFVqCqq6eJvK3cd4KYmcklVIfj7DuUIWD7hp3p8npg5E0Hu0PQUKlJFJp+skPrGZ+bspri2MFWzLhRM+45q\/wcGyp3lM8eZ4LjC8g7bh+Dd8RT+mb3wCoTGCYct9bQ7ZNN\/qfr\/MkQourp8xxyfTi0Q6lVis\/dFyqZZG1t7wPoJ+2E2N6BpMpSSHwu84CsWCPwW5io9nysz6zEx7wf5MR2ToeOw+Qwmnw3mEsp9BhOpeDa2J0xJ2b9WnwK9E6wiFqoeGIe\/Ck16vlisdxsDvoqPG1DHsawixZXaUkq2sjJLKa2tpD83osQfMRiPyGUjDNg6Qdg55Sy3g6fnJywqztqZawQKHOHRAORpW\/JU6JnbCxSgELHoEB2oJgH25FcFzOhF1a3yLbjyGFshBQdX\/9KSHhTnCK8vppsEtrC3RhvGZ+kHinMzNjvRRERZs\/XIjZOkVjocu8FizdeguNgpFazRzHv+kqr7snIPec8l5cLLqsHnXd3PX8uAk3m0OA9fmarrv\/gbuUu2QTQI3apgjy8D1gas63Z1Y5OP5mh\/nxLt3veLuwKPhjz44CpilZhfwZo77c6ZqRlQ6viVSOXC+H8k9gg8RPYD2ffIBbAOTT3X06M4r0vSjPXK0x0dylPGBhoYYB0YxZw21tN0ScX51F8v53QpGlislgh\/mn1wJllKFh2cfVmYyJchIuZfnOvTvhgaujDtOuc2Mx6RgarkwPyNokDmHVSIIgcKzwhc4OtY60rK1LVlS1m5DhUsvNCfL53wn79ifvYhE94yJdHN786j1LiLdLLledi6l9KjDV4OuNducsZim9zuTYuGPgVjTQ5N6O0Eqqt7JhR6JpuFxlL3vqeB0C4CPbb5OvOTCrvQrkM9eEwpUFvlw1eU1VGLJSQcDyAaCp4yWuXyFokEtMCpudqcyhKPVFfz\/rGIxE6HWEdL6CoPVGTFbB5NHa+1dzV7eNc3DWK3NsYSOCVcgdkqOPU8zqvSseTVFqVSJcqFvFChqM7PDRrAIdghkiaUSmmcn6Q6ZDfCfhq5hXT9AW9BaDoyLa5\/+gYbnjgt2Dh6Vrs1xpI\/vv4ZoOeyUTrSU0H\/0\/X1Qx84XGYJ4GxoiDQCRBBZ47RvSiSGDlUotMZl34gsG9EObdka5ckUUUxA6PVJU0ghDTIHXtAUwCpbNOP3U8jGszOEJ8GH4hI2xyEQiCZXKIyu+ZndptGgj0\/FK39t0VS8Sn8f0xaOU4gcDlhYOSlOSkaoRvUkLvezv75Rq9jFKPjr1ELPcfIfx8t+LUu4t7Zsw6lS2TjGbvK79\/pd+8nlR8YVM38hw7YD+gqqjs3WaH0FhwPhyC8Czy9C7+JskByBT0FpCD6HDggUdpchIeTCs5uRbYg\/FF87\/zgvPDnRZpPDBcGs4IsjIaEwKBY7QsIVH7W9Gww4OviTJJ\/JtHK5OdrK5HJRTCOlPhAMbN\/+1lb\/\/czfyPpgAPAqyPV5HWp8A46qwJyNcMvVYC1hr17IVgUq\/wMnd8DfTLp4Cj1XnTB7NLVY4uGZLrVZm2AIqoWVHGOr9ubOV5j+kClsiKjXPJzaZLI2NAWdDMoPUohfyC2pgXIK+cjSgXSAMvX\/fbGYD4SjV6n\/p8RqW5tBW7K1LjOy+3a5EFP9cw7AFvYsJgIPSc0yaatTDQ21LS21wQy9Dw85pa3NMvtUyYz5tapElcgn6RBIHRmWvrpBI+4L0CDt0v8L869jmFvNzPno+7e8+CQ9WRao5apl\/jmTDFN+Se6tr6lm7Bgc3EZLK4zyPaeugv+Q\/+ZM24\/sGHy9sX4vH\/KHVVU3OlbA1TscToETX4eHT3gSbnk2foeXGiEQg4VeIzWrJL3+zfDxtuaeTCYfsTY2pPklvc0qx9TNjauz4iRX7pN28DSOOo7MXm8WLQ31w\/7hIo0LgmMkQirMGhpgayCdjUQoEhgLHxqEWUJqmlqT6knck0ygw9kYTWfbVnW4ofvJH+F+CLT\/Il8gf\/xIgS9AHf8i8iUIbJ8pCsxU2yx8Vu8GBJgSRLKhr2IqV8fhLHLZwi9qCOztQroOO\/rANR1d\/wBtD3cinYcnCggcQDc5\/Kq3jgMgAEOUbAPdtm0hOvjMBmTzwo8OAgRqMEMCyvsL+BPVecgbp28hP713E\/kROEe+uHH9Oqp4VEpmfMzUfdlrEUEm01woOIril8kzLq2asxa8PA+m7r66QXmasUsDkUfKZDLEnWdblyqOr9hsxhowc7imqzescWhlFlJBMcUDgWnR6ZwUwojuqG6qhGeL2+3RolSiwGuyIrWaFi4X1qQv+u2hkcmaMSlCCAthCXBsXoNhILAhzSkBDJPpWFiTtuC3h0YmaySgOF\/3tHVTp7AwLhdjcdRcwJbHgpwZyGQ2phfNMLi3OvebFmhQkNWBEzceMzzMGCH1JrK4LJcJzvy6usetLTsYO4xPvnnJljn2tiS7M0vM6TAYjg1tmDi0AqmZ3K0OCItJUkRpFlju4mUwvFJHM8QidiS2Wqd5Bvc8Fw6UvG13zJ9vMD42cceTBrzpp4Quk3jzdCJJfJGbJoxGBUpPptaN28trSlu1QsT\/JTmj+NydW3M0zyAKWDLryEx+YEoeK8rUtgQr60BXCSb+NkPk55J5TwkYfIJtyvCwnid4WhgJ7OXW+OSyX9+aXkqZZVV1QLHOIKExDHpWuivI5YUUalEiganwppODu9rRLYyCGo\/XF7r0kc3+HnSD8WOhEixSLU8NNbUFqcNS7\/HNXBpS0jh1bkrsJ8EQyCOhZSKWW2GlVVYbrjVXWuuAdbZn1uR8E8lxQLDCBoqj\/9JNDxu2SVX9bgt6ksT3wRCG7FhgGSJYjhVYiVVYjWGsobXexDqsxwZsxCZsxhZsFdtW1Hp3CUBbRRUYbGrID7Bj+671ITDJDfbk+64LWSQ1fZAtfrpKaYPMIBHoEgxmwXtZ0md+gXj+e0sWo94VX2e\/QWreH4sc4AP8+ZAG0pa+BJM2msyDwdke3hN2\/XGZ+q8Cjk8AX18Nk9jbE+zojpbS9vgUlFC\/EBcisdg9t414RstA7Nc2knhRzBe7tQtlQOKN6YmjfW9bZjmbFmzMrLCRQkKi54K2gZ4LjNKqeuJChohMPK1C7jZQv\/VCbmkeZG9y6rt3YcY9FGP1IFvH0wOWk4JL4bpH494wxV52I5PjConZuhg0B3Qx8Ji0qkvhITMOGRGtQk\/i5sc4Fpw3v5pqQkS\/hq1ASLQMtA20DBilVf0YFzJEZOJpFXqz8nwSaxvxaHdYnt\/Ze7bG0HNqG5+bvCAH6qDCEbtpBU9\/gQThxfOdhvU4M5aziqco9DMSmei53Mtr\/\/RDNwJ12l8Td53B+8SdRKXGMi+5qZPRTFjIkMwUpSOL80yu5ecmb6WtsS1sG9uh9kq7tlCI\/qVveXS5vlzrRJK\/1\/W5\/bF+ot\/uNwaTbB1lY8HY\/A8SfEG8NeYyj1HIUI6m\/ETJhudhPVblhZQB6irqadT3qGnK95W\/K2\/zNvEm+IZI0AZoJ9DepyHxtPiUPxkMahv9DPp39H\/oOeov1OfUT4LnQ3oYRzBuYlzQntX2hqaYJzM\/ZGbqY7r\/LxNKqNjqWrPXx9bb65n1\/qbcqrdZ29Pbw21sOmf3nDVXzXXzybln7p2H5qmZn9fnsXl5Z3Ez9qo9sr+339wfHGyYF0vBApgFc2EBLI5lsGasE1uIrcTysZPYJawEq8WasHasF+vHxrBJTIPR2PRhgkzRKEKLcCNinpKn59l4Xl4KL8DL41XwGnndvMW8YV4u7wTvEq+ZZ4n+P4YSVfIT+AF+Eb+b\/zy\/iF\/Lb+F3xfwTcz1WLSgUNAj6BfMEw4J8wQnBFUGJoFbQJOiL\/Tf2bOyNOJdwsXCXcCTeLOoXvSHqiR+Lvxkfm8VKKMUl4mFxi9g4Wy8JSxZJPpBo5tCb4qV90pel0jmjcy7MuTdXKbPJMmVlshbZPNk62SnZZVnH3INzz8RINpEHyG+T\/yshyhNLrCX1JQdL\/iiJlWKlVaXhUqJ0QenG0pdKfyv9t\/Rq6f0yS1HAigAaMjCyZrw6BvR33uzTYFWb+\/VKcwD296IQ3J35+QkwKwQQLEEPTBoZSWEDPSFeasGkuMqzUM3V1UZLYuiRyUhwjlE\/94xZOsrLK7qLEW1xy5hDSxqSs0Ihj4hqIAty\/y1Te6LiVguxj+IxaESUwIEnIvQQ3QTefSEd05GzLBAXYtLbqBSLhwgDIZ+avUChayVmMsXz7a8L5pJWTlNqdbALvaK1WjkbiZCSCRDKlE0DruPpZzODUqSivS2RiDltMo5k+IA0tUIP4fmuDKCmp0eJmL+KC7UXbGNexcBAEFYgGhcqZFoCyIiFH22ycGcrM9QmOEfA6ipSCEAXmKCguHk0Lujv7CYf0DJJD1uHxHRjAFSgCcDNo4uCsd44BqmnugBEcVbs+TihpO81JphqvitIubMDf06GpgKQIw7aXbo\/7vz+41uFU1S9b5XneOblzMzV\/7ZSODKBcE9U3ewT\/Z8IE8egmRmyuKm+W0bf+KOcT5LAO\/boMreAGQD4wQvEk0Y7dq3LxCva2QYMvAhjZqpr2iJaOuykQFZK1SWwzZSI+8lv2dFv2kZNASsyONCYaiorOwdnRz6MArMYjIjG9Nyz8bmMwhr6IAMBiUrA0wLhiRprEhwQEG9pf5pA89zojcUvy8lLe\/F2YDkwjs3QGPwQA4x3CDB4ghpoAtxtr5JfmZDW\/tGcnHl3L3AjygTWBpRz2HdSxeoBeFFApOS1HVOM3+4lDU9QXqOdtaMku0TV2zTUZKKEYxwhqPy35WSR8UA3E8xvovyjEUNW86iB0SNKrXbL7gYeKTycl\/eONdjjcyDCCffU4MMLzkVjj5HYXsm43gZXzFCcMusrPBEAnwsINkgwztFBbn7vleJwpcFKfi\/ZWzPMbUtbdySyMo8MBpW3bsk\/YqXDLaNGH9g6XHY8yhqf80ddUVG4e4diSuUBUJ2QrLWCUywuEAwEhA2XcU\/AinV\/\/0CZCTAt0AjA7jRSb3p15G9OmFIhmaRpnRanVW5wjPxUtLOXidKZYzebbNpqeh2iyMpg5umdEWlOs3KnR8Xi+2Mqm5BJOp5+MXOXdapaqyfDn+a1KunG1MlCQGbm2YMd8QEzZzJNzlbOrgLgmAgxRQVnklnT7t6ezjx89uz69VquMKXfA7kvkhrDPL9kIBQPCtjb298JR\/8hxqjXw2NwJKLXMEAUqEHDpxhIKE1WsWLhnOgrnjHiv5oxsjXR9a563ke7QOlHEEDjSAog46qVdLmOhKhWt3wlQRhmBBn3XVlX3XlQT6k1L7hyPEqT6d+u3hGSplcqTB7HD9CCkB3UCab6SwJ98krmB+fUt2DuUFIp5xoVItUHcl0LxDN5ExUi0V\/vJP6KKCmVyk05JBKBFbEeLrZTIEIJMH44M3MlAwdfImBx8dAQ0h1hvCcQ+iYKQauMHBErFEZlIdoOGcwg7JlnXk4olCQBPGOmBd0+jFN3xUQyokkPVV1ytGhS+kKQ5Rdt\/Spdx97V1bVAoZKxyiTZU5KTCgvJB4U8P8NQJgYI44fbgIp\/\/QuBKTUU66wezF+tIdKGT0qUfWT6HDW7iBhfJVYPlGrpzJ7c8xpyFa85Gtp3bHxRoFzOVLMms1GFNXxK7seuKKQQV87wW2cvEKXWQJ+uLeyV+KgOjNDV77Y2jqYDlgwA5yqU5dXEwLgousAWKj6pCU6l9U+mpd+cpqDvVT1tsCkglJIBQtkeKvu2Z3fIfEoVSTM1ntYKUS1kMF\/BqyZcjlupVq0o+gxna8t6J6WGbg\/qsZP39rkU4rdT970NCxBDskA1IWb96mriIy9o7O1KpVbtq8\/9wv4OMjunDAbhWFPjMRJ3Ny9enFutyHytPT5+BAu4rs8ptScpJoa7luMSeR9s\/wbWIoO0XL4elYpKQ7I9R4cmJxiv0ai0VuSXLLGfMS4ccp3RvnSKARhqM8Kcr+6Zqi\/zJw1EiUPXltAB1q0bRuPYOipKAdAuBTfD3rmUMHYUgmCOZoIQreJ2EwpX6p949JwAZMWD\/vm0aMqDSvRLbi365yEbeG\/vkVLJ0lgAC8Hwn38jqPD33bc4pCzM6jbn9\/TQWBV7oQ0J+y1sBwDRqX24fdr0FB1fqjan++mnKztgI9bHhbSfudKxpymyoG5qup1GmIbIv2z+J2TSZGgmo7k9Qwd5HZMQ\/QPSn\/DRLX5IdndrQCMVAHA6QKtGiL9MVZ4r8yfIlK90NrXUB7WRHv1SLl0egJMU4DTTKnbgCkpiD\/\/bLdn7IAxXWdp1bbVV5WUNDRxoj7ycAlvDjBGtahoXLnZktbVtTIuE6J383OL70NE8d64dKmIC3FcGa59buKAxBaXahiu\/zngXFwnuOJN6r12vvsqk2a4LaymeEdRqs4rChP\/YDrpj\/F4vNaNzhk2VxH9HOMY\/k2PuaUfQnqJfpfqU2VfP7pM6EwN2f\/ghIhaXv1GT0WWoGrKm2sdFXAsR0OSMEK4rrktptlplV0+e3F7zPUsi5NHiwhzLn3VnBGSmSkEgVr2hrLW1VMf5dp\/W6amah5RH6QAk3JY4BQ6VM\/qRxECfJR\/p87n79JV2R1I1NhPbZFDlAGA39rpxICGMT\/1Ty81WuuNYJ3A80uZm8SxgRc6wNcOVCf7jT7OS+tlgtr6q4BGK5jZUEVXaHT5tCmZkSFJ6e4thhclg9Q1aw+lZLfLGaIF6ADb2Av2axyu91mhK\/yRPqRm1QjOm3Nz\/tEHtBRFRukvdnswSTQsbuZCFCcgDtYPSzI2jTk4M9w8oNG4hExefVAj2o20\/tG1ISE11ajqfjG0+HyJAuaQkvwueYQVxkDK4bCVB5QQAEe0Rf085JPy\/6Z2REite8+14HWYhgZ1tT3jt9F0Naa6dl3DL\/mgplbjfeTUAkGYHvm64mQC5yu3jrht6x+GS6MnjXUcSsCitgCQ\/qTL2Js1x+bFPfX1XE5Rft6D4XXww43dYQZ+CFSTfP\/nlkiWHdI7ifmpHWoHlNz2OO88JJDgcKSlXoEPDzbGKFm4\/WOQb8PlLx4c7TB9U9jBX+g+9f99KpExGfTHl6GRl5e3bg8W6hhvW8yqM5B319YcOachZEUbHiphL98iBg4MxDIj3czKRFr1S3n3LoNtc0KOIRNoK7JZdB8DwQ41G2hJAYLiuXrN5nF6kuk2DfRRkMCgpZri9a3j9eL+K\/K2h3a8J\/jb5D+nDqxNTahx\/IdreM2fx4qvyusetsBZxa9M7STIgMdD9TdU6BXJ0BSNiWHRa3lPf4FpJOJmCPa4fh\/mGtWt7vhuRT0yQTt\/qTdBEbp\/m+HrbcaBO8kf+UWEnwJudw+2CKRWreVBJJypjTW9FUnZ0enUHZQMDIUsrlaqKb6PbE5O43G0kAQch7oSkvaBQx+ptdZLtFoTdnSfa2zaV3rvT5uYWqe4SxefyN29LSrZq586UMACRB1JecO7cmeImoQPChkPz\/I+7x3GlkrJVIo6IeuGFsesajoEGfk6AnF8YpoGhrDlhi7c+l4rAmJe6ZfRJgDlc2oQE6VNk4uezg3oDo8TzHgYBg4iZ3x7lRzNPlArzuogL8NPOCNNDcSPiSXEUbIvmrbx6y69cI5RgjTnd8DYXMWTio0fC80B04vixZqpgpRRyPl9lsdoUJA8MJ+3lGBqAdvQSkdkMUSaZVxAqIinRDFr3QiZN4tFjMRdaGr0TP81SCplMHRRTNF7qJ58EjmO8mYU3PZV9DF7odMDqLCMHYBsI0RPSB4kZJtTY7\/v9tRkNRYeuTqAnGY9GaJljGRwmNK1A6mOYGsbkFXkPQPvjHzlNrBUeb8\/xOZSBfzIx2AxD\/idijHuQg4DC6ejcDdcyo0cDbRwLUC0rkqKZCQAqPMEar9aZTFUKdTr4U1BKV7GzZXrXCeIz4hSojrD6cJpkBdiILHIkh39gR952TRqHA3AoZ7T6gFrmbrxXdWhta2xc6h70ggwkYnY1+mvbnFVy8+rEIhGiPtO3g8G9D1X0hD44qZLs3FAMr59a+N\/EXBEKxZefKs4sXvO+egwjL9VFBbJg0+htjHpUu4zz2qniL6fEXJCMYUSBU8Qw5009OQGdIbgwC3ma5\/eR\/lqeb3K99JJvEscSA5BDV4h1rPC76\/lmM8jsHirGqtXHZV2DFsX8\/hdTpCLt6EAPvk8B89ZbBr3eqJnsLqzg3inl8G+KsinCwDXTBgO1Ncag++7uO9ml\/Caprgwfk43jdiKEagre71krAAh6Xg\/ukZYkxe7iBPFbf328SQI4Qn3dK9khgIIMN2Mgsv7QYQP6yHgBQHLCveqHGa3H+GCiKMkg\/1+l+rknnGgEC6Ksze9SRSJdK1kXUDB9q10HWFxYfYENuNtEzmt2Shu754hvZ\/IUv\/\/gh7UHIY4C4H994J\/aQ4NnVm76YxO8YH3CzHfyDb6eJAijxWFMrIyVEwXIXiwuI0GR0gNs5kyckXRVe9T0HRcJAiVJ6lC26W+9LHXG5MDAB0RphnpR5AAMIisDoQwF2nztxVVau09FgQwXxZi5mYhCkT179rXv8OMgz\/44CjDMAkB8jCztO2p82M5+RN6TNWtke0Y6Otpf9FU4GBthFvFf3BWlTKDgjRy3dkbdO+88x1rbezz10r1ro\/svyxgC8rPrViNBbd0OIi\/OuB+qyvPxlks3j93c8lkA0vF1OEtyBL27NlopqFzxOhg0O0jE4\/n3ey0kByPwOM9TjpMMM2gYitBi76d3nXyCvqFmaypp2Ow5rgZ7YVKeSu0MQh66pWB8TGoqQg4k2+4XXWk5IlNB7sgs\/+K4zuj9+f19fS0q6NByu20zD8lZVbKlCKqkqIjiWIWmiqQycy86eJMhKSSq6vLYhHmBX9vBi8Ey5GQ42lnNgzI1uMVXhMRKMka2CUyXK2lf3AH13NvFSo\/Lo4wgkF2ZECMA8HU83H8WL5o\/7lpmt4\/3veD9A7oQR+mkgJXXx4sCgd\/FHUyiXBOMUXdsRyVIGfPdVej2urYlNzyjuzQ5I0vVaaQZpQ92JbbPD9+Eg5Ce4YpzWo2QeitzpvlKmErurJtLlxVOsfhIgLEx2+e\/S0H4F6oWEjFiLqQgeD5G9kH6ps3TrSZbwhleur8vJTPZqrUY8a9fao7+MNLOw5VO\/Kj2\/VL4az8UhA\/5rDJuiATydfrdv9wNPn9wuGn6nPVq8nl3U0\/PXl9CNAknRbEsgGc31w+kTW1YhB9APg+dT4lckhBCGOO0A4yS2D2KbOyUO8tNNltuY77LZb48\/YubAFkk\/LgvAXJxWIOTYkwRssklfinI5qp6jCRX\/n1g8KzAnwLVXAJj1ux2s31NW2W1egvucYt5U0oNBK0WioprTNafo9Tr1YHmpUqzlY5wqAV8YlNI3njbfa2bYM0LCG\/P8ykGdD4pr8iV3JP3OCPL5dVkblubA6oLs378lWlG1RbL47SGLb8G0qtg5El2+FfHjq1dq+azzbxPXMKJJCfJb2eKOpFAwBcUEankAKVHDA7GfvYTP786S+Zu4Ajxwx+KKB21FRCShT7N4JTQEsZTCK9tTCe66uXGahH+XoH7gaxpSuSA+dfC6jaZyQOtNc5pWUapDkKNnIARUkESabKdNdmcOslWk13nPMwjqrLPDYmvYeNDspG4CBq9pdudoDxuoPw7tkkejqL0sxcWjuu\/y12EIdDR6ALIP0IbiXdi6xReaXKGe7yGCZLSmVtdohTiwTQcWgvAys9bJ2Sl7Aln9OHpXCsIyfZpzTYLJr0CP37RMx7JP0zvxMMDHJmZuQk6i8D\/3LWAqUvMCKWicsVQys+Xwdl8HUlt9Q6dZK62jpr3JDU51YcPWGrC\/Bd8txH6BALwUWVhGm\/BDxdTxahlntufSfVoVVq9L4vqt+E43bVRg7BAzCeWe7usBff1hSDX76aX43jDmeG02Ck4Dj6U+XNx3NTXk0Q9WSctqndFuHTk59wsrDPLBAJ6fh2x4JNPZtLxSBWzrSR5\/buNIulE0JrggYFAZ\/Eg+nnwh9ESsivCg4fxKeu1nsK87EoUxXOZxjcuXov5ID7GzARAoyw7a\/XwKT4O6gFpdoB0ZcM9VRVe0Ftd7LK9baZFEfHgbwvTSkMwAYJWzvkqXGM4XSWoUnfXQAd+I98stZFOqdGlXiMIR5FGxpAmGO7J6uViuGwKPrQ\/N1eYnx9UFCkHTwqbq5UCDHWISmYHTn0ydZLs9mSX7zAnr8wNWrqaE5WkTSrHJnquU3EBvnoOxgSu97hS04GiAXQvbMliQ0r3zFGqv9ZSWXliEhQadWFFIxcdr9WnXDlSeWqQl0tUCY+JYzAw\/fgMznaUK5vVNZ2LuhuAaw5p7a1GOjCu0HRO9mgNJlmF32jG32zlFVLmDugZlqJ2nIWUKvWgYLJisZfcxug1TTo+dCbpUTYV3uBKpvmn6asWwHpEg0qkkvIGDgPdQxOxjFnJx5Ocvx5Y1gBB52B8\/iAie6qw17guxSzNydvmtBNyXYwk2Z3otGmX1NeX5WZlTYjKRIf0ByALbr7fVdx16Ozz8wt1m88cC4vhuIgUlB11IkjdUZYsjuMC1t2NLN2Abndj0HyhVFAaYMJ2iK7AuGR1nKz3lIuyh0gCP8cP+4osQxrZVBbSaJnk2TIrEiEfY9Y2HvhNEzMEefop2PXbGrxtDsf3C+KESMx7AeTFK9E8NHx9YBJgf\/pG5A\/RW7FfW\/u6Hgy6uxx8CRpZg5kBUFwEOY2PN1ZtzKuXTyKQSRloP+Wz5TM9HfOZhoX6+8a0vM3st7ArE8v9OANzlWP\/ibMty654TArsvRsd5yzrrNcpTSRHPGUMQ4HHSGxCCpJ9ckV\/a2gN7TE\/QBvHNVZPVwkHdlzQrSexCZhGs+fQ55SSFplE4y6p7qer83akWyyBwJp2IcplnYmn1g2DUPVe38\/vHdWygLCSl8xsI2mQSSEUynU+tgc2AT8vtDwT0sB7SBLR5EOTskcWD5rdWR8Q8b2uRJgF0u9bMtVssexOTPBpJNzucd9RWZPQI0NEvD0qQ9I5Ltd1S9sXzS7Y4mzSMClSx61HJVq3zaA0TLSE1Op8uTVRexcShPjZNOtMQJJTi9IGVPolQjL7r3Lm+wE+7g2bdI4ON7k4leNJURYWK247udFqt+NaKTd6luHjajN9SdJB6Yx8SjKiOD1+lgLQjvpgl2IAk1VgdE+jVmv4\/mrhhFqoa6m9dkJCu6e5X2\/cYHf4fGM+AiJ6DRwfm9NzmwaWVX0AVgzmITBHaczTSWI9rjNZPG6zgRQzyzLSqXf6pThmaWd8Dr0rQAlaJhIjjx\/TjRiH4sADVYXRgwCmVoypg+8fsitZrjSMtD0QkMSMih5dS2FkkhK1i7msU7E8VCflcnrK7C4JlyseDYEvxp7sTVLPaklz4wj8M6h7vT59sSCwQjJNXZQODxD3\/ccaWIWiuH670Z2ba4NsrGF0Q2PDuIarGs5qiC0vhVZT5WMBEz96mL0XzHZiNqSDRgNGrbBgapyeaKR78zMamNMbjzcifRWzOuCPZVyC7e+Gbv5uyJGPA0x878l+DeZbR1MzcXDoQE3tELB1vGagbpH0mkTolwuCocI9RkVEBBJFeH0lvGRJFyF2vzUAayt9P\/0O2cDErp8HuyB\/PEYT6UNdS3rBp2PJUozPAEb1jefGI0iW4PaYgHtOgz\/HCbyf115PmDttKrSuSGAxOHEavDrRezvu1y+dBOt8x\/9D59S+ygE71WkCtv583+5dFd0Enb\/udZICY+OS3fmpXMOkjXN4U1KOXfrR5CW6+VER80TgjzVPp7LVrJvfkg+B13ezWXAAQe+g6ql7NK4NZR0MtYYg3bewl01\/1TJIRQArFbIK44W5CMgMERjhZBAiC6prDPYfch4Buhm\/gOITtHj6ab545vPstaKJCHzlRJyEtHsrJ7xnp5xnnSTdO6fpjuVJ1zv2DW32HBpMXjqqXqg8DcEooW0ph6ad164xHxq6kr9NIH\/1dnQvHGiDDOGcWz5rGr1ENMoH+\/wQZ5LTH\/MpsUiyOX96f4+w+OJFbRu0Vq\/Dk3AH75x82c8VC4QXhPrdemF0WJxJBUISTW9tH\/kDYdsUBLDOYY2MtBVO7hfe8VLJO9S90ImYAZUVAOU9KxjnIryH8EuXwCAMZTcVqN4z0KeQK64Z2lUZJWeLenv7hrIgzV9Ebi2c9aUYPNzX21sET7Vi6dLc3R1tBWzJg1mh7zXYyeVOMo+XfiOnUXn\/9G937HCVRDHSxvF+z0OF7n9XjxtpOmRFFfRobuntbWleSh7GDE8cx7KzuY3P\/CWpOHjm208M2Ml7hUlGEVDQ9XR0PoquHbkkXXL8cR\/Ph4zI8Ftiqu+ob7PeymTANimVjwPZhKSP3qYdXxaAO+QxLwSk2j0K7E\/YtRyQPwyLHOCMVg6\/8o+cVGiYXik\/s50VUzkf0JxQwpIrRe1MkkSZpPf1RHACHcUzdK9rWyfwPAxJdnLSOBJHE48APXIFPh0SXG8KGble68Z\/vCSoAoMrNnV8nn\/uEdO1oP\/H6SEbtj81OHwxxwZAhDG8J3M9VHb\/tLIfSdAz8kuii7\/b2zhw0jmxSA6TJsrkU0O2i0\/l73JD8\/1CoUY1WFc3uEOznPo8vx8fj5yVtsBD23Pf67o1qmjCaZn\/d8KZS\/m3jSQwFYA6Cx8uG+vooOZmGAVY2maftpiMTqhb6h\/oau+7Bl+gyiy6qlV9V+XGcUaRguLRk7TiVEdMQm3uQbUkVIiOonx0nC640cN5bQbKK9CsU4SK0Ntpk7F0gajdTRUViOVpQ1JlTfFnxqsekEKBegh3WwMEPxFxXXgvS0dKs8OR0xcFA0UZ7I2TryaBE2gPrNMLdpcAFHxWZvC8M7Pco3Rs9dbnSa0ZW5qU9JfMHc5cJEpbrtniC+4vub\/Vf5l60W4XnFuv3R6cd\/0aVvp0D\/Q0ZEbm15P1jBnV6OCgQvPgKjVfdg0odMpvtcQnpZD3oUr76QyRMDwnBMf8B9j6UaqGUKZ1OltDS6k\/\/3G3N+bJLCgpy07UCYWrAUSkDLep8Pwmt+TdSIXL5fTOf\/E1iE9LNXXGEEWXLk\/yiNiaPLL0lvPP\/TDF6m+StgVNttbYwENpDFDxkB9tQhmWzEEOIbEwLmFWuZ3a9uRkj5tiwIiuetQ0NFh99QQ5TAfnzGssdMsg5IxmsWF1ihu9YjYxc2sQQ2jnmFqhUJ9wlzhn3UcQpEFH6qYsGpVOR6soSqftqesk\/\/N1pe4s1xUdj1BsaJqjAaBY9Ua6bhk7WDr7LhUA5MYItk\/JJtuIGS9HR8REVxUM2zeq8HvjsB2xKphjAVxOUPZpMdj24a8g0rZE1ui4RPZIxb6qKCU8fPe0XC6VZ829gx8600hN+IpoFE3TOQgBXNfEsVd6+eiq64l3Rl\/OYF7HcN4ZJV3nWKwW7lzhMB34FSdn3egzy2oaV5QCZ2XQQl2HhlwzwqpezD\/xwrSJ4ErA2gwjrSIpnTYujSM2vKBTC5lsZHGQZeM6szW0MkGUu1Y1OdwqyrBn2yt770GFXXB+eS6dWBwia0OO1YMZuazOgKkxqUoQ0FlQti5Yg3cG3zAqSDNdVdqTrlluOruu7u427jcPDhAcjUucGBUEeoM++VbPP0G\/jWp06U5Tt+JGf9sYN+rLT4SbuUCwW4em3Vf6497\/EvfT5f3+CV+ufEg01M+NYfoQcroXq6+aYgWn1eOamWE5P7E0Lho4zpxKzX7cFW64YEcionXI5PQ+35nTyqTP9LRs2YgLJ+WahmLiY8BxlseLzpALlZeN9qmJK361F2ocU3rSQtmKnhe3equ2Q3aVs3mR0mgTcjRNGKPIRDmHrK5Awz+UT1gtavXGX2gFkqYMZGe\/v4Vaizs0uso4qkzUj4I+MrY+n77p2cRZfqd9xPd9UNJ38\/Ly79LblFY1o9XSFoaU35h+U4bq28ANlbGqkvuh2KAsmEnsW3femsGAeM34BWqB8vJoWxx8B5Imw8mmydKfZEBe\/B+PAWzypzdt0C3\/Y5pLG29r8zfNa48kOw1g5cTz2B+2383qgsZlzBgJdZw\/L60vAJ2YtIDi0E6KMcNFpNpxbFjlmIGWIj4Ej+fnLizRLgHOx+Xqe\/vhK\/et+eAVlpBU4SoUSEAX14lsauvquy+lgtMmk0plsm2ftKE9KPKRSpNKLBUJ2YbKK0omTiVBaSEmqhjf74OIxqaPs3tDcOZ0bQyHc1bFXsn1pdUC5YjVKxJNK6OjVgF1TPAfYhmjA6Zpjjr1T25xTwYpRp\/W5\/vDzS2KenRoaPwlODH5QvrWSIzeh0duNIAoB1SrQnPo9w7\/URW4HbEsuVpM7UBnXSOfAl6lOA3glrr8uOzzz5e\/aAjrjmkW0cCHhuPlNZvFT6aF7PJyYMZYO934Sa\/laZNmOH6L2FJIQ0c\/GsKX19UFplcnJvvV9mO78qE\/CqbTzWC28vPPlz1c7jrZWgpwhmLM+AXQQJ3kMBMtN2X49PKeEdc4v13W\/DTnCpclLvUogHjv6DlDkiK6PXQTsoja7\/l7AN+qPVAJhGO+IAa1gU3+rdJocnT664Hp3oICUzhFnH7Yt+S++mXL6s3koamKX\/qmXP7m0nLAYbkc2WhuAWOn7Nv4wRBlr1dPtO2KdhuiwTcGiqMfkLin+xnnPulGxwcfpEjqIUK0VwfMIM++HboF2aY0iFE6Qsp5jVfthbfMFBEcq5n9wEPjc9r0BsOvoredGKIx8+Cg1xVzRHqspBHRDZbS4n0dS3ZH5qKiNjiUcMqNvf9pfNuwCh1AaFP06jZfFS1WWNJyveJRgt9nM2oEyPW77oX1aUK6MFlnt6i7Ewy+wzypyakLukcQ3+sc42TW4yQIS5jKSVTUzo479NilGZBFodpXAUiG8M5TGYWro9rCq6YgI6XDpdK8FTrNrV3AC6kxRYsrbRIxlFwzSSiLwyY7dUAtoaitDndalinN7aDlSP6S8KL2sAN8\/fWoAx3eQPqJQCY+E4whDByjjcnr0JTLrpycGFcVihGVJksRKpPMaXbanjZ1T\/EXl5WpcLN9iAAyZXCoOWGKq\/WWVNKin9pEBrIFs9sL9GDL3fPkyECMKz0STzUkV7pMsZ9zF4zIXqnVdgBRHCBnOGG+i9uqTOzPR5Tnm9e8qJMkZbGIZ+f6cnK7YQcj5COxulhMRGmn0do6YNebDqBcwIfzV8lT\/HrjnKWpxE2P5Gx8G21Kxn9oLlkbRL8sbOrMIuGlV\/XwPzpwz40Y68tDSo6EbkWIF26UWzQAdUQBIyp1OJ81qjfYUFXnAWn4Rkc9wfQqkQnrhiT9XGHZXoYjmO+XXOtZzNF4hwcsbZMuVwSpNTt9pNPMUUgzJlMvlgmoI+2ZOOIcPDau+dsFubh23ZWsTsu8XAVqAim9HHDVroIVLXFCCBB\/i90jjRp5tIXV8lhBjNkoIbOEsSvNQPjbX8xT3PmyeZEnrVfp3Ylug0oV0t47t9UMHCFCMZFIptHgylhIXETmy2Ao8MtEi3Cox7EiDFkVifloGnmVWFhDopZGCja+6CEBkkAcj+XO6LxpOIY5cnXYgGIKbEEBwDZwsWQbWshm7XQ\/GWGf0yuKqtpx+0JS6a2tv2LVC1gGgf6gvRKVVDnvfrO9GYouzFGUveZTNSTqP\/ilcjoi5fIMgoxuIkAPnGW54v5e3VPbIAzQWCxKPB4JAQGjx3CeQH9\/OH9oLp47\/B73wF2grGmy16d13E8BAZzvukcG7pZa7mnEJQBAvTmlToSA5Cu39j+Hx0MpxO2mGzUxe1pZkDsSbgC19HRVorxesrseDbElABT8BYlYrUqt9JyJQLXlAqpmEKxVoYkGSVV1ZN0BybiFjDc6RLO7vcjLuLGGsAywETpNigoLaSwWIF9jUdktRlR+ss+NJHGQYgpOanHO8gZiJQukXyaNivKHjSB5JdFJkRULAh7B8lEkk6QVllhpgpkT4emk2Dblvvd81gGx2lDPqnzuqUqOezmQHuA1zuzbPeqwN7MAfwyITQkS1rxQCUuqXBqlVFVZwHPJU+mqOCXFEkCkUV0caeXNlJwlhFPqyYqvFHIkBkQYRS3lp8FRJFyhM8pyCWsROAqsldpXHJT+rE4JXQF4FXSBaUANSkAaCPNJkU7qOSLmTU6IU0HJJovTwY0AjLjVQdAfNBQ\/9p8XpbMpAiXA0ZIRJKlaOVnLdw4pUdM5Ynee9nzuiPrVo+6xh4aAoWprHPTypJNnHQS1XrB2uPNGYFuXFpJT3qyPMbTh2XIBZK\/y04JhgM4Y0sEn8XZmK1l4WqTzC6JRcESpjkyxqU25H5D91DS9ZQc1OUecNTRGTfbkm6BPhMMJ700gHQvIDmKdgpUpqW6GeBkyver52sw3e\/LmcNiQdSjubJUOIaXUDPXVXyfvS8yX4I5w25STAMipRzOkfQ1Nk3IMhlaYuU\/yftSGkA6BLPCoEC2ozc2XhgBszF4caEAHcBuhRwfBZwMQcCxB5LY+ktKR+X2JAjeOxh4MHT\/pmMwpjSzAVpkFOJLzOwxWBDy04gcZ6UIA0wsHCIRlRABjpSICo1qRQFF9yKCptSjAqh2ooKqP0QCr\/eigrVMYQGsETMAbAwv4TY8N+paIA4xWjwuK1gHDais2zymbE788uQW8pyyEhO3PKuJv7x7SxtjNfDRkKA4FxBiF\/KlKoNsBX0T5lU0cSW\/7mYJFCGJeCCj1Y9An7v\/PueS4Txhm2O8oSO+u2ohsxcFzwHzfK1DSz9v\/LRMYq8fCt4BbDpBJPKktduY+6QdCVCWGzOUbVyyUsnimUBRJizhhQJKZkZH0wTI6SYY+jRIseSDmUu251oRMUrri0gukKaw7LEeWk7dHCkopBxIuUAUlYV8xE7HrT1tnSfXAuQt+oFqVXRrOBEUgm0yhv5QUadOmTU5iGMJNQwAHc+gSUoQPooJrhsF0yqSpaVJxEKdSmnQp0mmQ3BvXLK4cGZ9AVCpDeK+a9RVSxitcoagau\/CRzlpeEqJ3ZRuF4DOdbg\/sJEqTSHEFtEpJBGPhsYiw6Ql0sxKQguNqo9uk23hpbmFwt7kEFhsancG8obxlOZXcKp4lLi0UYeKblhIUs241vpt7T9+H7bafMp23LpX65mCY0bo8u8mLMKxggdXbI+CNm7nQxCEcXrjo9DN0J886+5zFyUuWLkuJENz+niCeYdnsv6OcIowuX5Galp6RmZWdszJ3VV5+QWFRrLiktKy8orKquqa2rr6hMd7U3NK6uq29o7Oru6fX5TvK3E\/6+gcGh4ZHRsfGJyanphNrZ2bXrd+wcdPmLVtv9U5RUnnnqVPrp4wb3NsdX+a27ab5+JPQjePsqDmtEbjddcMs5f\/wuQ7ugkMOu+qaCbQ3Mqoxq6y3zgYrpCYsd9OAKx77eHyBMJ74S\/z0rxJpWOb9nga\/B23\/iUHbHED8md7t+GAmVyhVao3W7yweSpEqTboMmbJky5Erb\/3SOJPmQh4QJlQQJVlRNb2NoTseECZUEKU1j2TdzPc74y+jVINycJ+nz8suv+MG3Bx+ia5DeHyYde9fN\/Kdloppjg8q7QoyBnrsgjJk+Hg8FTXxr0IV6qEa1ahCPdRDNQ7H1vObOi58R3Maa2\/u\/U1dF4VoDtPQHAI7hx\/snEbozpt\/k7yPuj\/YYRACBGZAnyywSwSflSZASPAzwbUEl8Lt8Xd8\/n4EBLQQnwm5DJAmQEjwM8G1BJc7biCt5YhbRqtgyKWF8Wjz9vGlGzUuXHQhHkAwghKIJU1C3T64kgC0vAgEAoEwDWg7CBW+L30Iv2YrztMff\/YGghCZYqY+dRqr3ficxbRsa1ta2OZxmzNs0yku889zDU90ctPXgGr78AZPoeQoUEhn+U5pRLt3V9Vviwu7OIA6JacCKIFIIlNKnVWRslx3M+cAAA==') format('woff2');font-weight:100 900;font-style:normal;font-display:swap}\n\n:root{\n  --bg:#050403;--surface:#0e0906;--surface-2:#120c08;--surface-3:#1a110b;\n  --border:#2a1d15;--border-strong:#3d2a1e;\n  --text:#f4efe9;--muted:#9b928a;--faint:#6f6760;\n  --ember:#FF5A1F;--ember-2:#ff7a45;--ember-deep:#c2410c;--on-ember:#140702;\n  --glow:0 0 0 1px rgba(255,90,31,.35),0 8px 30px rgba(255,90,31,.35);\n  --glow-soft:0 6px 24px rgba(255,90,31,.18);\n  --ok:#5bd69a;--warn:#f5b84a;--err:#ff6b6b;\n  --r-sm:12px;--r:16px;--r-lg:22px;\n  --head:\"OZ Temple\",\"Heebo\",system-ui,sans-serif;\n  --body:\"Heebo\",system-ui,-apple-system,\"Segoe UI\",Arial,sans-serif;\n  --wordmark:\"Cormorant Garamond\",Georgia,serif;\n  --tabbar-h:68px;\n  color-scheme:dark;\n}\n*{box-sizing:border-box}\nhtml{-webkit-text-size-adjust:100%}\nbody{margin:0;background:var(--bg);color:var(--text);font-family:var(--body);font-size:16px;line-height:1.55;min-height:100vh;overflow-x:hidden}\nimg{max-width:100%;display:block}\na{color:var(--ember-2)}\nh1,h2,h3,h4{font-family:var(--head);font-weight:700;line-height:1.2;margin:0 0 .5em;letter-spacing:.01em}\nh1{font-size:clamp(1.7rem,6vw,2.4rem)}\nh2{font-size:1.35rem}\nh3{font-size:1.1rem}\np{margin:0 0 .75em}\nbutton,input,select,textarea{font:inherit;color:inherit}\n:focus-visible{outline:2px solid var(--ember);outline-offset:2px;border-radius:6px}\n.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}\n.muted{color:var(--muted)}\n.small{font-size:.875rem}\n.num{font-variant-numeric:tabular-nums;direction:ltr;unicode-bidi:isolate}\n.ltr{direction:ltr;unicode-bidi:isolate}\n.hidden{display:none!important}\n.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}\n.row.between{justify-content:space-between}\n.stack>*+*{margin-top:16px}\n.grid{display:grid;gap:16px}\n@media(min-width:720px){.grid-2{grid-template-columns:1fr 1fr}.grid-3{grid-template-columns:repeat(3,1fr)}}\n\n\/* ---------- wordmark ---------- *\/\n.wordmark{font-family:var(--wordmark);font-weight:600;letter-spacing:.24em;text-transform:uppercase;direction:ltr;white-space:nowrap}\n.wordmark small{display:block;font-family:var(--body);letter-spacing:.08em;font-size:.7rem;color:var(--muted);font-weight:400;text-transform:none;direction:rtl;margin-top:2px}\n\n\/* ---------- buttons ---------- *\/\n.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;padding:10px 20px;border-radius:999px;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text);font-weight:600;cursor:pointer;text-decoration:none;transition:transform .15s,box-shadow .2s,background .2s,border-color .2s;-webkit-tap-highlight-color:transparent}\n.btn:hover{border-color:var(--ember);}\n.btn:active{transform:scale(.98)}\n.btn[disabled]{opacity:.55;cursor:not-allowed}\n.btn-primary{background:linear-gradient(135deg,var(--ember-2),var(--ember) 55%,var(--ember-deep));border-color:transparent;color:var(--on-ember);box-shadow:var(--glow)}\n.btn-primary:hover{box-shadow:0 0 0 1px rgba(255,90,31,.5),0 10px 38px rgba(255,90,31,.5)}\n.btn-ghost{background:transparent}\n.btn-danger{border-color:rgba(255,107,107,.45);color:var(--err);background:transparent}\n.btn-sm{min-height:44px;padding:8px 14px;font-size:.9rem}\n.btn-block{width:100%}\n.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:12px;border:1px solid var(--border);background:var(--surface);cursor:pointer;color:var(--text)}\n.icon-btn:hover{border-color:var(--ember)}\n.icon{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}\n.icon-lg{width:26px;height:26px}\n\n\/* ---------- forms ---------- *\/\n.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}\n.field label,.label{font-size:.9rem;color:var(--muted);font-weight:500}\n.input,select.input,textarea.input{width:100%;min-height:48px;padding:11px 14px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-sm);color:var(--text);transition:border-color .2s,box-shadow .2s}\ntextarea.input{min-height:96px;resize:vertical;line-height:1.5}\n.input:focus{outline:none;border-color:var(--ember);box-shadow:0 0 0 3px rgba(255,90,31,.18)}\n.input::placeholder{color:var(--faint)}\ninput[type=date].input{direction:rtl}\ninput[type=email].input,input[type=tel].input,.input.ltr-input{direction:ltr;text-align:right}\n.fields-2{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}\n.fields-3{display:grid;grid-template-columns:repeat(3,1fr);gap:0 10px}\n@media(max-width:420px){.fields-3{grid-template-columns:1fr 1fr}}\n.form-error{color:var(--err);font-size:.92rem;margin:4px 0 12px;min-height:1em}\n.form-ok{color:var(--ok);font-size:.92rem}\n.hint{font-size:.85rem;color:var(--muted)}\n\n\/* ---------- cards ---------- *\/\n.card{background:linear-gradient(180deg,var(--surface-2),var(--surface));border:1px solid var(--border);border-radius:var(--r-lg);padding:20px;position:relative}\n.card-tight{padding:16px}\n.card h2{margin-bottom:12px}\n.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}\n.card-head h2,.card-head h3{margin:0}\n.card.ember{border-color:rgba(255,90,31,.35);box-shadow:var(--glow-soft)}\n.eyebrow{font-size:.78rem;letter-spacing:.12em;color:var(--ember-2);font-weight:600;margin-bottom:6px}\n\n\/* ---------- login ---------- *\/\n.auth{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px 16px;position:relative;overflow:hidden}\n.auth::before{content:\"\";position:absolute;inset:-20% -30% auto -30%;height:70%;background:radial-gradient(closest-side,rgba(255,90,31,.32),rgba(255,90,31,.08) 55%,transparent 75%);pointer-events:none;filter:blur(8px)}\n.auth-inner{position:relative;width:100%;max-width:420px}\n.auth .wordmark{font-size:1.6rem;text-align:center}\n.auth-title{text-align:center;margin:18px 0 6px}\n.auth-sub{text-align:center;color:var(--muted);margin-bottom:22px}\n.tabs{display:grid;grid-template-columns:1fr 1fr;background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:4px;margin-bottom:18px}\n.tabs button{min-height:44px;border:0;background:transparent;border-radius:999px;cursor:pointer;color:var(--muted);font-weight:600}\n.tabs button[aria-selected=true]{background:var(--surface-3);color:var(--text);box-shadow:inset 0 0 0 1px var(--ember)}\n.auth-foot{text-align:center;margin-top:22px;font-size:.9rem}\n.auth-foot a{color:var(--muted)}\n.linkish{background:none;border:0;color:var(--ember-2);cursor:pointer;padding:10px 0;min-height:44px;text-decoration:underline;text-underline-offset:3px}\n.notice{border:1px solid var(--border-strong);background:var(--surface-2);border-radius:var(--r);padding:14px 16px;font-size:.93rem;color:var(--text)}\n\n\/* ---------- shell ---------- *\/\n.app-header{position:sticky;top:0;z-index:30;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;padding-top:max(10px,env(safe-area-inset-top));background:rgba(5,4,3,.86);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border)}\n.app-header .wordmark{font-size:1.05rem}\n.header-actions{display:flex;gap:8px;align-items:center}\n.mode-switch{display:inline-flex;background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:3px}\n.mode-switch a{min-height:38px;display:inline-flex;align-items:center;padding:0 12px;border-radius:999px;color:var(--muted);text-decoration:none;font-size:.88rem;font-weight:600}\n.mode-switch a[aria-current=true]{background:var(--ember);color:var(--on-ember)}\nmain#view{padding:20px 16px calc(var(--tabbar-h) + 28px + env(safe-area-inset-bottom));max-width:1080px;margin:0 auto;position:relative}\n.page-glow{position:absolute;inset:-40px 0 auto 0;height:300px;background:radial-gradient(60% 100% at 70% 0%,rgba(255,90,31,.20),transparent 70%);pointer-events:none;z-index:-1}\n\n.tabbar{position:fixed;bottom:0;inset-inline:0;z-index:40;display:grid;grid-auto-flow:column;grid-auto-columns:1fr;height:calc(var(--tabbar-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:rgba(10,7,5,.94);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-top:1px solid var(--border)}\n.tabbar a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--muted);text-decoration:none;font-size:.72rem;font-weight:500;position:relative;min-width:44px}\n.tabbar a[aria-current=page]{color:var(--ember)}\n.tabbar a[aria-current=page]::before{content:\"\";position:absolute;top:0;width:32px;height:3px;border-radius:0 0 4px 4px;background:var(--ember);box-shadow:0 0 12px rgba(255,90,31,.8)}\n.badge{min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--ember);color:var(--on-ember);font-size:.7rem;font-weight:700;display:inline-flex;align-items:center;justify-content:center;line-height:1}\n.tabbar .badge{position:absolute;top:8px;inset-inline-start:calc(50% + 6px)}\n.sidenav{display:none}\n@media(min-width:960px){\n  .tabbar{display:none}\n  .sidenav{display:flex;flex-direction:column;gap:4px;position:fixed;top:65px;bottom:0;inset-inline-start:0;width:240px;padding:24px 14px;border-inline-end:1px solid var(--border);background:var(--surface)}\n  .sidenav a{display:flex;align-items:center;gap:12px;min-height:46px;padding:0 14px;border-radius:12px;color:var(--muted);text-decoration:none;font-weight:500}\n  .sidenav a:hover{color:var(--text);background:var(--surface-2)}\n  .sidenav a[aria-current=page]{color:var(--text);background:var(--surface-3);box-shadow:inset -3px 0 0 var(--ember)}\n  .sidenav .badge{margin-inline-start:auto}\n  main#view{margin-inline-start:240px;padding:32px 40px 48px;max-width:none}\n  .view-inner{max-width:980px}\n}\n\n\/* ---------- home ---------- *\/\n.hero{padding:6px 0 18px}\n.hero h1{margin-bottom:4px}\n.progress{height:10px;background:var(--surface-3);border-radius:999px;overflow:hidden;border:1px solid var(--border)}\n.progress>span{display:block;height:100%;background:linear-gradient(90deg,var(--ember-deep),var(--ember),var(--ember-2));border-radius:999px;box-shadow:0 0 14px rgba(255,90,31,.6)}\n.stat{display:flex;flex-direction:column;gap:2px}\n.stat .v{font-family:var(--head);font-size:1.9rem;font-weight:700;line-height:1.1}\n.stat .l{font-size:.85rem;color:var(--muted)}\n.delta{font-weight:700;font-size:.95rem}\n.delta.down{color:var(--ok)}\n.delta.up{color:var(--warn)}\n.quote{border-inline-start:3px solid var(--ember);padding-inline-start:12px;color:var(--text);white-space:pre-wrap}\n\n\/* ---------- workouts ---------- *\/\ndetails.day{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);margin-bottom:12px;overflow:hidden}\ndetails.day[open]{border-color:rgba(255,90,31,.35)}\ndetails.day>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:12px;padding:16px;min-height:60px}\ndetails.day>summary::-webkit-details-marker{display:none}\ndetails.day>summary .chev{margin-inline-start:auto;transition:transform .2s;color:var(--muted)}\ndetails.day[open]>summary .chev{transform:rotate(180deg)}\n.day-letter{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:var(--surface-3);border:1px solid var(--border-strong);font-family:var(--head);font-weight:900;color:var(--ember);flex:none}\n.day-body{padding:0 16px 16px}\n.ex{padding:14px 0;border-top:1px solid var(--border)}\n.ex-name{font-weight:600;margin-bottom:6px}\n.chips{display:flex;flex-wrap:wrap;gap:6px}\n.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;background:var(--surface-3);border:1px solid var(--border);font-size:.82rem;color:var(--text)}\n.chip.ember{border-color:rgba(255,90,31,.45);color:var(--ember-2)}\n.ex-notes{font-size:.88rem;color:var(--muted);margin-top:6px}\n.video-link{display:inline-flex;align-items:center;gap:6px;min-height:44px;font-size:.88rem;text-decoration:none}\n.rating{display:flex;gap:6px}\n.rating button{width:44px;height:44px;border-radius:12px;border:1px solid var(--border);background:var(--surface-2);cursor:pointer;font-weight:700}\n.rating button[aria-pressed=true]{background:var(--ember);color:var(--on-ember);border-color:var(--ember)}\n.list{list-style:none;margin:0;padding:0}\n.list li{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--border)}\n.list li:last-child{border-bottom:0}\n\n\/* ---------- nutrition ---------- *\/\n.macro-wrap{display:grid;grid-template-columns:auto 1fr;gap:20px;align-items:center}\n@media(max-width:380px){.macro-wrap{grid-template-columns:1fr;justify-items:center}}\n.ring{position:relative;width:132px;height:132px}\n.ring svg{width:100%;height:100%;transform:rotate(-90deg)}\n.ring .center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}\n.ring .center b{font-family:var(--head);font-size:1.7rem;line-height:1}\n.ring .center span{font-size:.78rem;color:var(--muted)}\n.bars{display:flex;flex-direction:column;gap:12px;width:100%}\n.bar-row .top{display:flex;justify-content:space-between;font-size:.9rem;margin-bottom:5px}\n.bar{height:8px;border-radius:999px;background:var(--surface-3);overflow:hidden}\n.bar>span{display:block;height:100%;border-radius:999px}\n.timeline{position:relative;padding-inline-start:26px}\n.timeline::before{content:\"\";position:absolute;inset-inline-start:8px;top:8px;bottom:8px;width:2px;background:linear-gradient(var(--ember),var(--border))}\n.meal{position:relative;margin-bottom:16px}\n.meal::before{content:\"\";position:absolute;inset-inline-start:-23px;top:22px;width:12px;height:12px;border-radius:50%;background:var(--bg);border:2px solid var(--ember);box-shadow:0 0 10px rgba(255,90,31,.6)}\n.meal ul{margin:6px 0 0;padding-inline-start:20px}\n.meal li{margin-bottom:3px}\n.alts{margin-top:10px;padding:10px 12px;border-radius:12px;background:var(--surface-3);font-size:.9rem}\n.alts b{color:var(--ember-2);font-weight:600}\n\n\/* ---------- progress ---------- *\/\n.chart-box{position:relative;height:260px}\n.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--border);border-radius:var(--r)}\ntable.data{width:100%;border-collapse:collapse;font-size:.9rem;white-space:nowrap}\ntable.data th,table.data td{padding:11px 12px;text-align:start;border-bottom:1px solid var(--border)}\ntable.data th{color:var(--muted);font-weight:500;background:var(--surface-2);position:sticky;top:0}\ntable.data tr:last-child td{border-bottom:0}\ntable.data tbody tr:hover{background:var(--surface-2)}\n.compare{display:grid;grid-template-columns:1fr 1fr;gap:10px}\n.compare figure{margin:0}\n.compare .ph{aspect-ratio:3\/4;border-radius:14px;background:var(--surface-3);border:1px solid var(--border);overflow:hidden;display:grid;place-items:center;color:var(--faint);font-size:.85rem;text-align:center;padding:8px}\n.compare .ph img{width:100%;height:100%;object-fit:cover}\n.compare figcaption{font-size:.85rem;color:var(--muted);margin-top:6px;text-align:center}\n.thumbs{display:flex;gap:8px;flex-wrap:wrap}\n.thumbs img{width:64px;height:84px;object-fit:cover;border-radius:10px;border:1px solid var(--border)}\n.file-drop{display:flex;align-items:center;gap:12px;padding:14px;border:1px dashed var(--border-strong);border-radius:var(--r);cursor:pointer;min-height:56px}\n.file-drop:hover{border-color:var(--ember)}\n\n\/* ---------- messages ---------- *\/\n.thread{display:flex;flex-direction:column;gap:10px;max-height:56vh;overflow-y:auto;padding:4px 2px 8px}\n.bubble{max-width:82%;padding:10px 14px;border-radius:18px;white-space:pre-wrap;word-wrap:break-word;font-size:.95rem}\n.bubble .meta{display:block;font-size:.72rem;color:var(--muted);margin-top:4px}\n.bubble.mine{align-self:flex-start;background:linear-gradient(135deg,rgba(255,122,69,.22),rgba(255,90,31,.14));border:1px solid rgba(255,90,31,.35);border-start-start-radius:6px}\n.bubble.theirs{align-self:flex-end;background:var(--surface-3);border:1px solid var(--border);border-start-end-radius:6px}\n.composer{display:flex;gap:8px;align-items:flex-end;margin-top:12px}\n.composer textarea{min-height:48px;max-height:140px}\n\n\/* ---------- admin ---------- *\/\n.toolbar{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:16px}\n.toolbar .input{flex:1 1 160px;width:auto}\n.t-row{display:flex;align-items:center;gap:12px;padding:14px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r);margin-bottom:10px;text-decoration:none;color:var(--text);min-height:64px}\n.t-row:hover{border-color:rgba(255,90,31,.45)}\n.avatar{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:var(--surface-3);border:1px solid var(--border-strong);font-family:var(--head);font-weight:700;color:var(--ember-2);flex:none}\n.t-main{flex:1;min-width:0}\n.t-main .n{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.t-main .s{font-size:.82rem;color:var(--muted)}\n.pill{display:inline-flex;align-items:center;padding:3px 10px;border-radius:999px;font-size:.75rem;font-weight:600;border:1px solid}\n.pill.active{color:var(--ok);border-color:rgba(91,214,154,.4)}\n.pill.paused{color:var(--warn);border-color:rgba(245,184,74,.4)}\n.pill.ended{color:var(--muted);border-color:var(--border-strong)}\n.pill.pending{color:var(--ember-2);border-color:rgba(255,90,31,.45)}\n.subtabs{display:flex;gap:6px;overflow-x:auto;padding-bottom:6px;margin-bottom:16px;scrollbar-width:none}\n.subtabs::-webkit-scrollbar{display:none}\n.subtabs a{flex:none;min-height:44px;display:inline-flex;align-items:center;padding:0 16px;border-radius:999px;border:1px solid var(--border);color:var(--muted);text-decoration:none;font-size:.9rem;font-weight:500}\n.subtabs a[aria-current=page]{color:var(--on-ember);background:var(--ember);border-color:var(--ember)}\n.code-box{display:flex;align-items:center;justify-content:center;gap:10px;font-family:var(--head);font-size:2.2rem;letter-spacing:.3em;padding:14px;border-radius:var(--r);background:var(--surface-3);border:1px dashed rgba(255,90,31,.5);direction:ltr}\n.editor-block{border:1px solid var(--border);border-radius:var(--r);padding:14px;margin-bottom:14px;background:var(--surface)}\n.ex-edit{border-top:1px solid var(--border);padding-top:12px;margin-top:12px}\n.ex-edit .fields-3 .field,.ex-edit .fields-2 .field{margin-bottom:10px}\n.back{display:inline-flex;align-items:center;gap:6px;min-height:44px;color:var(--muted);text-decoration:none;margin-bottom:8px}\n.lead-card{padding:14px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r);margin-bottom:10px}\n.lead-card.handled{opacity:.6}\n.check{display:inline-flex;align-items:center;gap:8px;min-height:44px;cursor:pointer;font-size:.9rem;color:var(--muted)}\n.check input{width:20px;height:20px;accent-color:var(--ember)}\n\n\/* ---------- states ---------- *\/\n.loading{display:flex;align-items:center;justify-content:center;gap:12px;padding:48px 0;color:var(--muted)}\n.spinner{width:26px;height:26px;border-radius:50%;border:3px solid var(--border-strong);border-top-color:var(--ember);animation:spin .8s linear infinite}\n@keyframes spin{to{transform:rotate(360deg)}}\n.empty{text-align:center;padding:28px 12px;color:var(--muted)}\n.empty .icon{width:36px;height:36px;margin:0 auto 10px;color:var(--faint)}\n.error-box{border:1px solid rgba(255,107,107,.4);background:rgba(255,107,107,.06);color:var(--text);border-radius:var(--r);padding:14px 16px}\n.toast{position:fixed;inset-inline:16px;bottom:calc(var(--tabbar-h) + 16px + env(safe-area-inset-bottom));z-index:100;margin:0 auto;max-width:420px;padding:12px 16px;border-radius:14px;background:var(--surface-3);border:1px solid var(--border-strong);box-shadow:0 10px 40px rgba(0,0,0,.6);font-weight:500;transform:translateY(20px);opacity:0;transition:.25s;pointer-events:none}\n.toast.show{transform:none;opacity:1}\n.toast.ok{border-color:rgba(91,214,154,.5)}\n.toast.err{border-color:rgba(255,107,107,.6)}\n@media(min-width:960px){.toast{bottom:24px}}\n.boot{min-height:100vh;display:grid;place-items:center}\n@media(prefers-reduced-motion:reduce){*{transition:none!important;animation-duration:1.5s!important}}\n\/* prevent grid\/flex children from forcing horizontal overflow *\/\n.grid>*,.fields-2>*,.fields-3>*,.field,.stack>*{min-width:0}\n.input{min-width:0;max-width:100%}\ninput[type=date].input,input[type=time].input{-webkit-appearance:none;appearance:none}\n.t-main .n,.t-main .s{display:block}\n\n#wpadminbar{display:none!important} html{margin-top:0!important}\n<\/style>\n<div id=\"app\"><div class=\"boot\"><div class=\"loading\" role=\"status\"><span class=\"spinner\" aria-hidden=\"true\"><\/span><span>\u05d8\u05d5\u05e2\u05df\u2026<\/span><\/div><\/div><\/div>\n<div id=\"toast\" class=\"toast\" role=\"status\" aria-live=\"polite\"><\/div>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/@supabase\/supabase-js@2\"><\/script>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js@4.4.4\/dist\/chart.umd.js\"><\/script>\n<script src=\"data:text\/javascript;charset=utf-8;base64,Ci8qIEVNQSBHQUxJTSDigJMgbWVtYmVycyBhcmVhIChzdGF0aWMgU1BBLCBTdXBhYmFzZSBiYWNrZW5kKSAqLwooZnVuY3Rpb24gKCkgewondXNlIHN0cmljdCc7Cgpjb25zdCBTVVBBQkFTRV9VUkwgPSAnaHR0cHM6Ly90YWprcnFxZHNieXh2Z3F4cHVocC5zdXBhYmFzZS5jbyc7CmNvbnN0IFNVUEFCQVNFX0FOT05fS0VZID0gJ2V5SmhiR2NpT2lKSVV6STFOaUlzSW5SNWNDSTZJa3BYVkNKOS5leUpwYzNNaU9pSnpkWEJoWW1GelpTSXNJbkpsWmlJNkluUmhhbXR5Y1hGa2MySjVlSFpuY1hod2RXaHdJaXdpY205c1pTSTZJbUZ1YjI0aUxDSnBZWFFpT2pFM09UQTROalExTXpjc0ltVjRjQ0k2TWpFd05qUTBNRFV6TjMwLll5d2M0elJ6SkVlM051Q0hvWmFpUHBnSGZkUlpzOU01WVN3ai1famhyQlEnOwpjb25zdCBNQUlOX1NJVEUgPSAnaHR0cHM6Ly9lZy1taXNzZml0bmVzcy5jby5pbCc7CmNvbnN0IEJVQ0tFVCA9ICdwcm9ncmVzcy1waG90b3MnOwoKY29uc3QgUFJPR1JBTVMgPSBbJ9eq15XXm9eg15nXqiDXqdeZ157XldeoJywgJ9eq15XXm9eg15nXqiDXkNeV16DXnNeZ15nXnyDXnNeX15XXk9ep15nXmdedJywgJ9eq15XXm9eg15nXqiDXkNeV16DXnNeZ15nXnyDXnC0zINeX15XXk9ep15nXnScsICfXlNeb16DXlCDXnNeq15fXqNeV16og16TXmdeq15XXlyDXkteV16MnLCAn16fXldeo16Eg16TXldeW15nXoNeSJ107CmNvbnN0IEdPQUxTID0gWyfXmdeo15nXk9eUINeR157Xqden15wg15XXl9eZ15jXldeRINeU15LXldejJywgJ9ei15zXmdeZ15Qg15HXnteh16og16nXqNeZ16gnLCAn15fXmdeY15XXkSDXlNeS15XXoyDXldeZ16jXmdeT15Qg15HXkNeX15XXlteZINep15XXntefJ107CmNvbnN0IFNUQVRVUyA9IHsgYWN0aXZlOiAn16TXoteZ15zXlCcsIHBhdXNlZDogJ9eR15TXp9ek15DXlCcsIGVuZGVkOiAn15TXodeq15nXmdee15QnIH07CmNvbnN0IFBST0dSQU1fTU9OVEhTID0geyAn16rXldeb16DXmdeqINeQ15XXoNec15nXmdefINec15fXldeT16nXmdeZ150nOiAyLCAn16rXldeb16DXmdeqINeQ15XXoNec15nXmdefINecLTMg15fXldeT16nXmdedJzogMyB9OwoKaWYgKCF3aW5kb3cuc3VwYWJhc2UgfHwgIXdpbmRvdy5zdXBhYmFzZS5jcmVhdGVDbGllbnQpIHsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXBwJykuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9ImF1dGgiPjxkaXYgY2xhc3M9ImF1dGgtaW5uZXIiPjxkaXYgY2xhc3M9ImVycm9yLWJveCI+15zXkCDXlNem15zXl9eg15Ug15zXmNei15XXnyDXkNeqINeU157Xoteo15vXqi4g15HXk9en15Ug15DXqiDXlNeX15nXkdeV16gg15zXkNeZ16DXmNeo16DXmCDXldeo16LXoNeg15Ug15DXqiDXlNeT16MuPC9kaXY+PC9kaXY+PC9kaXY+JzsKICByZXR1cm47Cn0KY29uc3Qgc2IgPSB3aW5kb3cuc3VwYWJhc2UuY3JlYXRlQ2xpZW50KFNVUEFCQVNFX1VSTCwgU1VQQUJBU0VfQU5PTl9LRVksIHsKICBhdXRoOiB7IHBlcnNpc3RTZXNzaW9uOiB0cnVlLCBhdXRvUmVmcmVzaFRva2VuOiB0cnVlLCBkZXRlY3RTZXNzaW9uSW5Vcmw6IGZhbHNlLCBzdG9yYWdlS2V5OiAnZWctbWVtYmVycy1hdXRoJyB9Cn0pOwoKLyogLS0tLS0tLS0tLS0tLS0tLSBzdGF0ZSAtLS0tLS0tLS0tLS0tLS0tICovCmNvbnN0IFMgPSB7IHNlc3Npb246IG51bGwsIG1lOiBudWxsLCB1bnJlYWQ6IDAsIGFkbWluVW5yZWFkOiAwLCBjaGFydDogbnVsbCwgY2hhcnQyOiBudWxsIH07CgovKiAtLS0tLS0tLS0tLS0tLS0tIHV0aWxzIC0tLS0tLS0tLS0tLS0tLS0gKi8KY29uc3QgJCA9IChzZWwsIHJvb3QgPSBkb2N1bWVudCkgPT4gcm9vdC5xdWVyeVNlbGVjdG9yKHNlbCk7CmNvbnN0ICQkID0gKHNlbCwgcm9vdCA9IGRvY3VtZW50KSA9PiBBcnJheS5mcm9tKHJvb3QucXVlcnlTZWxlY3RvckFsbChzZWwpKTsKY29uc3QgZXNjID0gKHMpID0+IFN0cmluZyhzID8\/ICcnKS5yZXBsYWNlKC9bJjw+IiddL2csIChjKSA9PiAoeyAnJic6ICcmYW1wOycsICc8JzogJyZsdDsnLCAnPic6ICcmZ3Q7JywgJyInOiAnJnF1b3Q7JywgIiciOiAnJiMzOTsnIH1bY10pKTsKY29uc3QgREFZID0gODY0ZTU7CmNvbnN0IHRvZGF5SVNPID0gKCkgPT4geyBjb25zdCBkID0gbmV3IERhdGUoKTsgZC5zZXRNaW51dGVzKGQuZ2V0TWludXRlcygpIC0gZC5nZXRUaW1lem9uZU9mZnNldCgpKTsgcmV0dXJuIGQudG9JU09TdHJpbmcoKS5zbGljZSgwLCAxMCk7IH07CmNvbnN0IHBhcnNlRGF0ZSA9IChzKSA9PiAocyA\/IG5ldyBEYXRlKHMgKyAocy5sZW5ndGggPT09IDEwID8gJ1QwMDowMDowMCcgOiAnJykpIDogbnVsbCk7CmNvbnN0IGZtdERhdGUgPSAocykgPT4geyBjb25zdCBkID0gcGFyc2VEYXRlKHMpOyByZXR1cm4gZCA\/IGQudG9Mb2NhbGVEYXRlU3RyaW5nKCdoZS1JTCcsIHsgZGF5OiAnMi1kaWdpdCcsIG1vbnRoOiAnMi1kaWdpdCcsIHllYXI6ICdudW1lcmljJyB9KSA6ICfigJQnOyB9Owpjb25zdCBmbXRTaG9ydCA9IChzKSA9PiB7IGNvbnN0IGQgPSBwYXJzZURhdGUocyk7IHJldHVybiBkID8gZC50b0xvY2FsZURhdGVTdHJpbmcoJ2hlLUlMJywgeyBkYXk6ICdudW1lcmljJywgbW9udGg6ICdudW1lcmljJyB9KSA6ICcnOyB9Owpjb25zdCBmbXREVCA9IChzKSA9PiB7IGNvbnN0IGQgPSBuZXcgRGF0ZShzKTsgcmV0dXJuIGQudG9Mb2NhbGVTdHJpbmcoJ2hlLUlMJywgeyBkYXk6ICdudW1lcmljJywgbW9udGg6ICdudW1lcmljJywgaG91cjogJzItZGlnaXQnLCBtaW51dGU6ICcyLWRpZ2l0JyB9KTsgfTsKY29uc3QgbnVtID0gKHYsIGQgPSAxKSA9PiAodiA9PT0gbnVsbCB8fCB2ID09PSB1bmRlZmluZWQgfHwgdiA9PT0gJycgPyAn4oCUJyA6IE51bWJlcih2KS50b0xvY2FsZVN0cmluZygnaGUtSUwnLCB7IG1heGltdW1GcmFjdGlvbkRpZ2l0czogZCB9KSk7CmNvbnN0IGZpcnN0TmFtZSA9IChuKSA9PiBTdHJpbmcobiB8fCAnJykudHJpbSgpLnNwbGl0KC9ccysvKVswXSB8fCAnJzsKY29uc3QgaW5pdGlhbHMgPSAobikgPT4gU3RyaW5nKG4gfHwgJz8nKS5yZXBsYWNlKC9cKC4qP1wpL2csICcnKS50cmltKCkuc3BsaXQoL1xzKy8pLnNsaWNlKDAsIDIpLm1hcCgodykgPT4gd1swXSkuam9pbignJyk7CmNvbnN0IHZhbE9yTnVsbCA9ICh2KSA9PiB7IHYgPSAodiA\/PyAnJykudG9TdHJpbmcoKS50cmltKCk7IHJldHVybiB2ID09PSAnJyA\/IG51bGwgOiB2OyB9Owpjb25zdCBudW1Pck51bGwgPSAodikgPT4geyB2ID0gKHYgPz8gJycpLnRvU3RyaW5nKCkudHJpbSgpLnJlcGxhY2UoJywnLCAnLicpOyBpZiAodiA9PT0gJycpIHJldHVybiBudWxsOyBjb25zdCBuID0gTnVtYmVyKHYpOyByZXR1cm4gTnVtYmVyLmlzRmluaXRlKG4pID8gbiA6IG51bGw7IH07CmNvbnN0IGludE9yTnVsbCA9ICh2KSA9PiB7IGNvbnN0IG4gPSBudW1Pck51bGwodik7IHJldHVybiBuID09PSBudWxsID8gbnVsbCA6IE1hdGgucm91bmQobik7IH07CmNvbnN0IG1lbWJlcnNVcmwgPSAoKSA9PiBsb2NhdGlvbi5ocmVmLnNwbGl0KCcjJylbMF07CmZ1bmN0aW9uIHdhUGhvbmUocCkgewogIGxldCBkID0gU3RyaW5nKHAgfHwgJycpLnJlcGxhY2UoL1xEL2csICcnKTsKICBpZiAoIWQpIHJldHVybiAnJzsKICBpZiAoZC5zdGFydHNXaXRoKCcwMCcpKSBkID0gZC5zbGljZSgyKTsKICBpZiAoZC5zdGFydHNXaXRoKCcwJykpIGQgPSAnOTcyJyArIGQuc2xpY2UoMSk7CiAgcmV0dXJuIGQ7Cn0KZnVuY3Rpb24gZXJyTXNnKGUpIHsKICBjb25zdCBtID0gKGUgJiYgKGUubWVzc2FnZSB8fCBlLmVycm9yX2Rlc2NyaXB0aW9uIHx8IGUuZXJyb3IpKSB8fCBTdHJpbmcoZSB8fCAnJyk7CiAgaWYgKC9JbnZhbGlkIGxvZ2luIGNyZWRlbnRpYWxzL2kudGVzdChtKSkgcmV0dXJuICfXlNeQ15nXnteZ15nXnCDXkNeVINeU16HXmdeh157XlCDXqdeS15XXmdeZ150nOwogIGlmICgvRmFpbGVkIHRvIGZldGNofE5ldHdvcmtFcnJvcnxuZXR3b3JrL2kudGVzdChtKSkgcmV0dXJuICfXkdei15nXmdeqINeq16fXqdeV16jXqi4g15HXk9en15Ug15DXqiDXlNeX15nXkdeV16gg15XXoNeh15Ug16nXldeRLic7CiAgaWYgKC9ub3QgYWxsb3dlZHxwZXJtaXNzaW9ufDQyNTAxfHJvdy1sZXZlbCBzZWN1cml0eS9pLnRlc3QobSkpIHJldHVybiAn15DXmdefINeU16jXqdeQ15Qg15zXpNei15XXnNeUINeU15bXlSc7CiAgaWYgKC9kdXBsaWNhdGUga2V5fGFscmVhZHkgZXhpc3RzfDIzNTA1L2kudGVzdChtKSkgcmV0dXJuICfXm9eR16gg16fXmdeZ157XqiDXqNep15XXnteUINei150g15TXpNeo15jXmdedINeU15DXnNeUICjXm9eg16jXkNeUINeQ15XXqteVINeQ15nXnteZ15nXnCknOwogIGlmICgvUGFzc3dvcmQgc2hvdWxkIGJlfHdlYWsvaS50ZXN0KG0pKSByZXR1cm4gJ9eU16HXmdeh157XlCDXl9ec16nXlCDXnteT15kuINeR15fXqNeVINeh15nXodee15Qg16nXnCA4INeq15XXldeZ150g15zXpNeX15XXqi4nOwogIGlmICgvc2FtZV9wYXNzd29yZHxzaG91bGQgYmUgZGlmZmVyZW50L2kudGVzdChtKSkgcmV0dXJuICfXlNeh15nXodee15Qg15TXl9eT16nXlCDXlteU15Qg15zXodeZ16HXnteUINeU16DXldeb15fXmdeqJzsKICByZXR1cm4gbSB8fCAn15DXmdeo16LXlCDXqdeS15nXkNeULiDXoNeh15Ug16nXldeRLic7Cn0KbGV0IHRvYXN0VDsKZnVuY3Rpb24gdG9hc3QobXNnLCBraW5kID0gJ29rJykgewogIGNvbnN0IHQgPSAkKCcjdG9hc3QnKTsKICB0LnRleHRDb250ZW50ID0gbXNnOyB0LmNsYXNzTmFtZSA9ICd0b2FzdCBzaG93ICcgKyBraW5kOwogIGNsZWFyVGltZW91dCh0b2FzdFQpOyB0b2FzdFQgPSBzZXRUaW1lb3V0KCgpID0+ICh0LmNsYXNzTmFtZSA9ICd0b2FzdCcpLCAzMjAwKTsKfQpjb25zdCBsb2FkaW5nSFRNTCA9ICh0eHQgPSAn15jXldei15\/igKYnKSA9PiBgPGRpdiBjbGFzcz0ibG9hZGluZyIgcm9sZT0ic3RhdHVzIj48c3BhbiBjbGFzcz0ic3Bpbm5lciIgYXJpYS1oaWRkZW49InRydWUiPjwvc3Bhbj48c3Bhbj4ke2VzYyh0eHQpfTwvc3Bhbj48L2Rpdj5gOwpjb25zdCBlbXB0eUhUTUwgPSAodHh0LCBpY29uID0gJ2luYm94JykgPT4gYDxkaXYgY2xhc3M9ImVtcHR5Ij4ke2ljKGljb24sICdpY29uJyl9PGRpdj4ke2VzYyh0eHQpfTwvZGl2PjwvZGl2PmA7CmNvbnN0IGVycm9ySFRNTCA9IChlKSA9PiBgPGRpdiBjbGFzcz0iZXJyb3ItYm94IiByb2xlPSJhbGVydCI+JHtlc2MoZXJyTXNnKGUpKX08L2Rpdj5gOwpmdW5jdGlvbiBzZXRCdXN5KGJ0biwgYnVzeSwgdHh0KSB7CiAgaWYgKCFidG4pIHJldHVybjsKICBpZiAoYnVzeSkgeyBidG4uZGF0YXNldC5sYWJlbCA9IGJ0bi5pbm5lckhUTUw7IGJ0bi5kaXNhYmxlZCA9IHRydWU7IGJ0bi5pbm5lckhUTUwgPSBgPHNwYW4gY2xhc3M9InNwaW5uZXIiIHN0eWxlPSJ3aWR0aDoxOHB4O2hlaWdodDoxOHB4O2JvcmRlci13aWR0aDoycHgiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L3NwYW4+ICR7ZXNjKHR4dCB8fCAn16jXktei4oCmJyl9YDsgfQogIGVsc2UgeyBidG4uZGlzYWJsZWQgPSBmYWxzZTsgaWYgKGJ0bi5kYXRhc2V0LmxhYmVsKSBidG4uaW5uZXJIVE1MID0gYnRuLmRhdGFzZXQubGFiZWw7IH0KfQphc3luYyBmdW5jdGlvbiBxKHByb21pc2UpIHsgY29uc3QgeyBkYXRhLCBlcnJvciB9ID0gYXdhaXQgcHJvbWlzZTsgaWYgKGVycm9yKSB0aHJvdyBlcnJvcjsgcmV0dXJuIGRhdGE7IH0KCi8qIC0tLS0tLS0tLS0tLS0tLS0gaWNvbnMgLS0tLS0tLS0tLS0tLS0tLSAqLwpjb25zdCBJQyA9IHsKICBob21lOiAnPHBhdGggZD0iTTMgMTAuNSAxMiAzbDkgNy41Ii8+PHBhdGggZD0iTTUgOS41VjIwaDV2LTZoNHY2aDVWOS41Ii8+JywKICBkdW1iYmVsbDogJzxwYXRoIGQ9Ik02LjUgNi41djExTTE3LjUgNi41djExTTMuNSA5djZNMjAuNSA5djZNNi41IDEyaDExIi8+JywKICBhcHBsZTogJzxwYXRoIGQ9Ik0xMiA3Yy0xLjUtMS41LTUtMS44LTYuNS44QzQgMTAuNSA1LjMgMTYgNy44IDE5YzEuMiAxLjQgMi40IDEuNiA0LjIuOCAxLjguOCAzIC42IDQuMi0uOCAyLjUtMyAzLjgtOC41IDIuMy0xMS4yQzE3IDUuMiAxMy41IDUuNSAxMiA3WiIvPjxwYXRoIGQ9Ik0xMiA3YzAtMiAxLTMuNSAzLTQiLz4nLAogIGNoYXJ0OiAnPHBhdGggZD0iTTMgM3YxOGgxOCIvPjxwYXRoIGQ9Im03IDE1IDQtNCAzIDMgNS02Ii8+JywKICBjaGF0OiAnPHBhdGggZD0iTTIxIDEyYTggOCAwIDAgMS0xMS42IDcuMUw0IDIwLjVsMS40LTQuOUE4IDggMCAxIDEgMjEgMTJaIi8+JywKICB1c2VyOiAnPGNpcmNsZSBjeD0iMTIiIGN5PSI4IiByPSI0Ii8+PHBhdGggZD0iTTQgMjFhOCA4IDAgMCAxIDE2IDAiLz4nLAogIHVzZXJzOiAnPGNpcmNsZSBjeD0iOSIgY3k9IjgiIHI9IjMuNSIvPjxwYXRoIGQ9Ik0yLjUgMjBhNi41IDYuNSAwIDAgMSAxMyAwIi8+PHBhdGggZD0iTTE2IDQuNWEzLjUgMy41IDAgMCAxIDAgN00xOCAxNC41YTYuNSA2LjUgMCAwIDEgMy41IDUuNSIvPicsCiAgaW5ib3g6ICc8cGF0aCBkPSJNMyAxM2g1bDEuNSAzaDVMMTYgMTNoNSIvPjxwYXRoIGQ9Ik01LjUgNWgxM0wyMSAxM3Y2SDN2LTZaIi8+JywKICBsb2dvdXQ6ICc8cGF0aCBkPSJNMTUgNGg0djE2aC00Ii8+PHBhdGggZD0iTTEwIDhsLTQgNCA0IDRNNiAxMmgxMCIvPicsCiAgcGx1czogJzxwYXRoIGQ9Ik0xMiA1djE0TTUgMTJoMTQiLz4nLAogIHRyYXNoOiAnPHBhdGggZD0iTTQgN2gxNk05IDdWNGg2djNNNiA3bDEgMTNoMTBsMS0xMyIvPicsCiAgY2hldnJvbjogJzxwYXRoIGQ9Im02IDkgNiA2IDYtNiIvPicsCiAgYmFjazogJzxwYXRoIGQ9Im05IDYgNiA2LTYgNiIvPicsCiAgcGxheTogJzxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjkiLz48cGF0aCBkPSJtMTAgOC41IDUuNSAzLjUtNS41IDMuNVoiLz4nLAogIGNoZWNrOiAnPHBhdGggZD0ibTUgMTIuNSA0LjUgNC41TDE5IDcuNSIvPicsCiAgd2F0ZXI6ICc8cGF0aCBkPSJNMTIgM3M2IDYuNSA2IDExYTYgNiAwIDAgMS0xMiAwYzAtNC41IDYtMTEgNi0xMVoiLz4nLAogIGZsYW1lOiAnPHBhdGggZD0iTTEyIDNjMSAzLjUgNSA1LjUgNSAxMGE1IDUgMCAwIDEtMTAgMGMwLTIuMiAxLTMuOCAyLjMtNSAuMiAxLjYgMSAyLjYgMiAzIDAtMyAuMi01LjQuNy04WiIvPicsCiAgc2NhbGU6ICc8cmVjdCB4PSIzIiB5PSI0IiB3aWR0aD0iMTgiIGhlaWdodD0iMTYiIHJ4PSI0Ii8+PHBhdGggZD0iTTguNSA5LjVhNSA1IDAgMCAxIDcgMEwxMiAxMiIvPicsCiAgc2VuZDogJzxwYXRoIGQ9Ik0yMCA0IDMgMTFsNyAyLjVMMTIuNSAyMSAyMCA0WiIvPjxwYXRoIGQ9Im0xMCAxMy41IDQtNCIvPicsCiAgcGhvbmU6ICc8cGF0aCBkPSJNNSA0aDRsMiA1LTIuNSAxLjVhMTEgMTEgMCAwIDAgNSA1TDE1IDEzbDUgMnY0YTIgMiAwIDAgMS0yIDJBMTYgMTYgMCAwIDEgMyA2YTIgMiAwIDAgMSAyLTJaIi8+JywKICB3aGF0c2FwcDogJzxwYXRoIGQ9Ik00IDIwbDEuMy00QTggOCAwIDEgMSA4LjQgMTlMNCAyMFoiLz48cGF0aCBkPSJNOSA5LjVjMCAzIDIuNSA1LjUgNS41IDUuNWwxLTEuNS0xLjgtMS0xIC44YTQgNCAwIDAgMS0yLTJsLjgtMS0xLTEuOEw5IDkuNVoiLz4nLAogIGNvcHk6ICc8cmVjdCB4PSI4IiB5PSI4IiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHJ4PSIyLjUiLz48cGF0aCBkPSJNMTYgOFY1LjVBMS41IDEuNSAwIDAgMCAxNC41IDRoLTlBMS41IDEuNSAwIDAgMCA0IDUuNXY5QTEuNSAxLjUgMCAwIDAgNS41IDE2SDgiLz4nLAogIGtleTogJzxjaXJjbGUgY3g9IjgiIGN5PSIxNSIgcj0iNCIvPjxwYXRoIGQ9Im0xMSAxMiA5LTlNMTcgNmwzIDNNMTUgOGwyIDIiLz4nLAogIGNhbWVyYTogJzxwYXRoIGQ9Ik00IDhoM2wyLTNoNmwyIDNoM3YxMUg0WiIvPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTMiIHI9IjMuNSIvPicsCiAgY2FsZW5kYXI6ICc8cmVjdCB4PSIzLjUiIHk9IjUiIHdpZHRoPSIxNyIgaGVpZ2h0PSIxNSIgcng9IjMiLz48cGF0aCBkPSJNOCAzdjRNMTYgM3Y0TTMuNSAxMGgxNyIvPicsCiAgdGFyZ2V0OiAnPGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iOC41Ii8+PGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iNC41Ii8+PGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iMSIvPicsCiAgc2hpZWxkOiAnPHBhdGggZD0iTTEyIDMgNSA2djZjMCA0LjUgMyA3LjUgNyA5IDQtMS41IDctNC41IDctOVY2WiIvPicsCiAgZXh0ZXJuYWw6ICc8cGF0aCBkPSJNMTQgNGg2djZNMjAgNGwtOSA5Ii8+PHBhdGggZD0iTTE4IDE0djVINVY2aDUiLz4nLAogIGNsb2NrOiAnPGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iOC41Ii8+PHBhdGggZD0iTTEyIDcuNVYxMmwzIDIiLz4nCn07CmNvbnN0IGljID0gKG5hbWUsIGNscyA9ICdpY29uJykgPT4gYDxzdmcgY2xhc3M9IiR7Y2xzfSIgdmlld0JveD0iMCAwIDI0IDI0IiBhcmlhLWhpZGRlbj0idHJ1ZSIgZm9jdXNhYmxlPSJmYWxzZSI+JHtJQ1tuYW1lXSB8fCAnJ308L3N2Zz5gOwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBVVRIIFNDUkVFTlMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwpmdW5jdGlvbiByZW5kZXJBdXRoKHRhYiA9ICdsb2dpbicsIG5vdGljZSA9ICcnKSB7CiAgZGVzdHJveUNoYXJ0cygpOwogIGRvY3VtZW50LnRpdGxlID0gJ9eb16DXmdeh15QgfCDXlNeQ15bXldeoINeU15DXmdep15kgRU1BIEdBTElNJzsKICAkKCcjYXBwJykuaW5uZXJIVE1MID0gYAogIDxkaXYgY2xhc3M9ImF1dGgiPgogICAgPGRpdiBjbGFzcz0iYXV0aC1pbm5lciI+CiAgICAgIDxkaXYgY2xhc3M9IndvcmRtYXJrIj48aW1nIHNyYz0iaHR0cHM6Ly9lZy1taXNzZml0bmVzcy5jby5pbC93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8xMC9lZy1sb2dvLWZ1bGwtdjIucG5nIiBhbHQ9IkVNQSBHQUxJTSBNaXNzIEZpdG5lc3MiIHdpZHRoPSI0NDQiIGhlaWdodD0iNDIwIiBzdHlsZT0iaGVpZ2h0OjEyMHB4O3dpZHRoOmF1dG87ZGlzcGxheTpibG9jazttYXJnaW46MCBhdXRvIDEycHgiPjxzbWFsbD7XlNeQ15bXldeoINeU15DXmdep15kg15zXnteq15DXnteg15XXqjwvc21hbGw+PC9kaXY+CiAgICAgIDxoMSBjbGFzcz0iYXV0aC10aXRsZSI+15HXqNeV15vXlCDXlNeR15DXlDwvaDE+CiAgICAgIDxwIGNsYXNzPSJhdXRoLXN1YiI+15TXqteV15vXoNeZ16osINeU16rXpNeo15nXmCDXldeU157Xoten15Eg16nXnNeaIOKAkyDXkdee16fXldedINeQ15fXkzwvcD4KICAgICAgPGRpdiBjbGFzcz0idGFicyIgcm9sZT0idGFibGlzdCIgYXJpYS1sYWJlbD0i16HXldeSINeb16DXmdeh15QiPgogICAgICAgIDxidXR0b24gcm9sZT0idGFiIiBpZD0idGFiLWxvZ2luIiBhcmlhLWNvbnRyb2xzPSJwYW5lbC1sb2dpbiIgYXJpYS1zZWxlY3RlZD0iJHt0YWIgPT09ICdsb2dpbid9Ij7Xm9eg15nXodeUPC9idXR0b24+CiAgICAgICAgPGJ1dHRvbiByb2xlPSJ0YWIiIGlkPSJ0YWItYWN0aXZhdGUiIGFyaWEtY29udHJvbHM9InBhbmVsLWFjdGl2YXRlIiBhcmlhLXNlbGVjdGVkPSIke3RhYiA9PT0gJ2FjdGl2YXRlJ30iPteU16TXotec16og15fXqdeR15XXnzwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgICAgJHtub3RpY2UgPyBgPGRpdiBjbGFzcz0ibm90aWNlIiBzdHlsZT0ibWFyZ2luLWJvdHRvbToxNHB4Ij4ke2VzYyhub3RpY2UpfTwvZGl2PmAgOiAnJ30KICAgICAgPHNlY3Rpb24gY2xhc3M9ImNhcmQiIGlkPSJwYW5lbC1sb2dpbiIgcm9sZT0idGFicGFuZWwiIGFyaWEtbGFiZWxsZWRieT0idGFiLWxvZ2luIiAke3RhYiA9PT0gJ2xvZ2luJyA\/ICcnIDogJ2hpZGRlbid9PgogICAgICAgIDxmb3JtIGlkPSJsb2dpbi1mb3JtIiBub3ZhbGlkYXRlPgogICAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbCBmb3I9ImxpLWVtYWlsIj7XkNeZ157XmdeZ15w8L2xhYmVsPgogICAgICAgICAgICA8aW5wdXQgY2xhc3M9ImlucHV0IiBpZD0ibGktZW1haWwiIHR5cGU9ImVtYWlsIiBhdXRvY29tcGxldGU9InVzZXJuYW1lIiBpbnB1dG1vZGU9ImVtYWlsIiByZXF1aXJlZD48L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWwgZm9yPSJsaS1wYXNzIj7XodeZ16HXnteUPC9sYWJlbD4KICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJpbnB1dCIgaWQ9ImxpLXBhc3MiIHR5cGU9InBhc3N3b3JkIiBhdXRvY29tcGxldGU9ImN1cnJlbnQtcGFzc3dvcmQiIHJlcXVpcmVkPjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1lcnJvciIgaWQ9ImxpLWVyciIgcm9sZT0iYWxlcnQiPjwvZGl2PgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IGJ0bi1ibG9jayIgdHlwZT0ic3VibWl0Ij7Xm9eg15nXodeUINec15DXlteV16gg15TXkNeZ16nXmTwvYnV0dG9uPgogICAgICAgIDwvZm9ybT4KICAgICAgICA8YnV0dG9uIGNsYXNzPSJsaW5raXNoIiB0eXBlPSJidXR0b24iIGlkPSJmb3Jnb3QtYnRuIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSIgYXJpYS1jb250cm9scz0iZm9yZ290LWJveCI+16nXm9eX16rXmSDXodeZ16HXnteUPC9idXR0b24+CiAgICAgICAgPGRpdiBjbGFzcz0ibm90aWNlIGhpZGRlbiIgaWQ9ImZvcmdvdC1ib3giPgogICAgICAgICAg15vXk9eZINec15DXpNehINeh15nXodee15QsINek16DXmSDXnNee15DXnteg16og15HXldeV15DXmNeh15DXpCDXldeR16fXqdeZIDxiPten15XXkyDXlNek16LXnNeUINeX15PXqTwvYj4uCiAgICAgICAgICDXotedINeU16fXldeTINeq15XXm9ec15kg15zXlNeZ15vXoNehINec15zXqdeV16DXmdeqICLXlNek16LXnNeqINeX16nXkdeV158iINeV15zXkdeX15XXqCDXodeZ16HXnteUINeX15PXqdeULgogICAgICAgIDwvZGl2PgogICAgICA8L3NlY3Rpb24+CiAgICAgIDxzZWN0aW9uIGNsYXNzPSJjYXJkIiBpZD0icGFuZWwtYWN0aXZhdGUiIHJvbGU9InRhYnBhbmVsIiBhcmlhLWxhYmVsbGVkYnk9InRhYi1hY3RpdmF0ZSIgJHt0YWIgPT09ICdhY3RpdmF0ZScgPyAnJyA6ICdoaWRkZW4nfT4KICAgICAgICA8cCBjbGFzcz0ibXV0ZWQgc21hbGwiIHN0eWxlPSJtYXJnaW4tdG9wOjAiPten15nXkdec16og16fXldeTINeU16TXotec15Qg15HXnyA2INeh16TXqNeV16og157XlNee15DXnteg16o\/INeU15bXmdeg15kg15DXldeq15Ug15nXl9eTINei150g15TXkNeZ157XmdeZ15wg16nXnNeaINeV15HXl9eo15kg16HXmdeh157XlCDXkNeZ16nXmdeqLjwvcD4KICAgICAgICA8Zm9ybSBpZD0iYWN0LWZvcm0iIG5vdmFsaWRhdGU+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsIGZvcj0iYWMtZW1haWwiPteQ15nXnteZ15nXnCAo15vXpNeZINep16DXnteh16gg15zXnteQ157XoNeqKTwvbGFiZWw+CiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iaW5wdXQiIGlkPSJhYy1lbWFpbCIgdHlwZT0iZW1haWwiIGF1dG9jb21wbGV0ZT0idXNlcm5hbWUiIGlucHV0bW9kZT0iZW1haWwiIHJlcXVpcmVkPjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbCBmb3I9ImFjLWNvZGUiPten15XXkyDXlNek16LXnNeUPC9sYWJlbD4KICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJpbnB1dCBsdHItaW5wdXQiIGlkPSJhYy1jb2RlIiBpbnB1dG1vZGU9Im51bWVyaWMiIGF1dG9jb21wbGV0ZT0ib25lLXRpbWUtY29kZSIgcGF0dGVybj0iWzAtOV17Nn0iIG1heGxlbmd0aD0iNiIgcGxhY2Vob2xkZXI9IjAwMDAwMCIgcmVxdWlyZWQ+PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsIGZvcj0iYWMtcGFzcyI+16HXmdeh157XlCDXl9eT16nXlCAoOCDXqteV15XXmdedINec16TXl9eV16opPC9sYWJlbD4KICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJpbnB1dCIgaWQ9ImFjLXBhc3MiIHR5cGU9InBhc3N3b3JkIiBhdXRvY29tcGxldGU9Im5ldy1wYXNzd29yZCIgbWlubGVuZ3RoPSI4IiByZXF1aXJlZD48L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWwgZm9yPSJhYy1wYXNzMiI+15DXmdee15XXqiDXodeZ16HXnteUPC9sYWJlbD4KICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJpbnB1dCIgaWQ9ImFjLXBhc3MyIiB0eXBlPSJwYXNzd29yZCIgYXV0b2NvbXBsZXRlPSJuZXctcGFzc3dvcmQiIG1pbmxlbmd0aD0iOCIgcmVxdWlyZWQ+PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWVycm9yIiBpZD0iYWMtZXJyIiByb2xlPSJhbGVydCI+PC9kaXY+CiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXByaW1hcnkgYnRuLWJsb2NrIiB0eXBlPSJzdWJtaXQiPteU16TXotec16og15TXl9ep15HXldefPC9idXR0b24+CiAgICAgICAgPC9mb3JtPgogICAgICA8L3NlY3Rpb24+CiAgICAgIDxkaXYgY2xhc3M9ImF1dGgtZm9vdCI+PGEgaHJlZj0iJHtNQUlOX1NJVEV9Ij4ke2ljKCdiYWNrJywgJ2ljb24nKX0g15fXlteo15Qg15zXkNeq16ggRU1BIEdBTElNPC9hPjwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+YDsKICBjb25zdCBzd2l0Y2hUYWIgPSAodCkgPT4gcmVuZGVyQXV0aCh0KTsKICAkKCcjdGFiLWxvZ2luJykub25jbGljayA9ICgpID0+IHRhYiAhPT0gJ2xvZ2luJyAmJiBzd2l0Y2hUYWIoJ2xvZ2luJyk7CiAgJCgnI3RhYi1hY3RpdmF0ZScpLm9uY2xpY2sgPSAoKSA9PiB0YWIgIT09ICdhY3RpdmF0ZScgJiYgc3dpdGNoVGFiKCdhY3RpdmF0ZScpOwogICQkKCdbcm9sZT10YWJdJykuZm9yRWFjaCgoYikgPT4gYi5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGUpID0+IHsKICAgIGlmIChlLmtleSA9PT0gJ0Fycm93TGVmdCcgfHwgZS5rZXkgPT09ICdBcnJvd1JpZ2h0JykgeyBzd2l0Y2hUYWIodGFiID09PSAnbG9naW4nID8gJ2FjdGl2YXRlJyA6ICdsb2dpbicpOyBzZXRUaW1lb3V0KCgpID0+ICQoJ1tyb2xlPXRhYl1bYXJpYS1zZWxlY3RlZD10cnVlXScpLmZvY3VzKCksIDApOyB9CiAgfSkpOwogICQoJyNmb3Jnb3QtYnRuJykub25jbGljayA9IChlKSA9PiB7IGNvbnN0IGJveCA9ICQoJyNmb3Jnb3QtYm94Jyk7IGJveC5jbGFzc0xpc3QudG9nZ2xlKCdoaWRkZW4nKTsgZS5jdXJyZW50VGFyZ2V0LnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsIFN0cmluZyghYm94LmNsYXNzTGlzdC5jb250YWlucygnaGlkZGVuJykpKTsgfTsKCiAgJCgnI2xvZ2luLWZvcm0nKS5vbnN1Ym1pdCA9IGFzeW5jIChlKSA9PiB7CiAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICBjb25zdCBidG4gPSBlLnN1Ym1pdHRlciB8fCAkKCcjbG9naW4tZm9ybSBidXR0b25bdHlwZT1zdWJtaXRdJyk7IGNvbnN0IGVyciA9ICQoJyNsaS1lcnInKTsgZXJyLnRleHRDb250ZW50ID0gJyc7CiAgICBjb25zdCBlbWFpbCA9ICQoJyNsaS1lbWFpbCcpLnZhbHVlLnRyaW0oKS50b0xvd2VyQ2FzZSgpOyBjb25zdCBwYXNzd29yZCA9ICQoJyNsaS1wYXNzJykudmFsdWU7CiAgICBpZiAoIWVtYWlsIHx8ICFwYXNzd29yZCkgeyBlcnIudGV4dENvbnRlbnQgPSAn15nXqSDXnNee15zXkCDXkNeZ157XmdeZ15wg15XXodeZ16HXnteUJzsgcmV0dXJuOyB9CiAgICBzZXRCdXN5KGJ0biwgdHJ1ZSwgJ9eg15vXoNeh16rigKYnKTsKICAgIHRyeSB7CiAgICAgIGNvbnN0IHsgZXJyb3IgfSA9IGF3YWl0IHNiLmF1dGguc2lnbkluV2l0aFBhc3N3b3JkKHsgZW1haWwsIHBhc3N3b3JkIH0pOwogICAgICBpZiAoZXJyb3IpIHRocm93IGVycm9yOwogICAgICAvLyBvbkF1dGhTdGF0ZUNoYW5nZSB0YWtlcyBvdmVyCiAgICB9IGNhdGNoIChleCkgeyBlcnIudGV4dENvbnRlbnQgPSBlcnJNc2coZXgpOyBzZXRCdXN5KGJ0biwgZmFsc2UpOyB9CiAgfTsKCiAgJCgnI2FjdC1mb3JtJykub25zdWJtaXQgPSBhc3luYyAoZSkgPT4gewogICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgY29uc3QgYnRuID0gJCgnI2FjdC1mb3JtIGJ1dHRvblt0eXBlPXN1Ym1pdF0nKTsgY29uc3QgZXJyID0gJCgnI2FjLWVycicpOyBlcnIudGV4dENvbnRlbnQgPSAnJzsKICAgIGNvbnN0IGVtYWlsID0gJCgnI2FjLWVtYWlsJykudmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCk7CiAgICBjb25zdCBjb2RlID0gJCgnI2FjLWNvZGUnKS52YWx1ZS5yZXBsYWNlKC9cRC9nLCAnJyk7CiAgICBjb25zdCBwYXNzd29yZCA9ICQoJyNhYy1wYXNzJykudmFsdWU7IGNvbnN0IHAyID0gJCgnI2FjLXBhc3MyJykudmFsdWU7CiAgICBpZiAoIWVtYWlsIHx8ICFlbWFpbC5pbmNsdWRlcygnQCcpKSB7IGVyci50ZXh0Q29udGVudCA9ICfXmdepINec15TXlteZ158g15DXmdee15nXmdecINeq16fXmdefJzsgcmV0dXJuOyB9CiAgICBpZiAoY29kZS5sZW5ndGggIT09IDYpIHsgZXJyLnRleHRDb250ZW50ID0gJ9en15XXkyDXlNeU16TXotec15Qg157Xm9eZ15wgNiDXodek16jXldeqJzsgcmV0dXJuOyB9CiAgICBpZiAocGFzc3dvcmQubGVuZ3RoIDwgOCkgeyBlcnIudGV4dENvbnRlbnQgPSAn15TXodeZ16HXnteUINem16jXmdeb15Qg15zXlNeb15nXnCDXnNek15fXldeqIDgg16rXldeV15nXnSc7IHJldHVybjsgfQogICAgaWYgKHBhc3N3b3JkICE9PSBwMikgeyBlcnIudGV4dENvbnRlbnQgPSAn15TXodeZ16HXnteQ15XXqiDXkNeZ16DXnyDXqteV15DXnteV16onOyByZXR1cm47IH0KICAgIHNldEJ1c3koYnRuLCB0cnVlLCAn157XpNei15nXnNeU4oCmJyk7CiAgICB0cnkgewogICAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChgJHtTVVBBQkFTRV9VUkx9L2Z1bmN0aW9ucy92MS9hY3RpdmF0ZWAsIHsKICAgICAgICBtZXRob2Q6ICdQT1NUJywKICAgICAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsIGFwaWtleTogU1VQQUJBU0VfQU5PTl9LRVksIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHtTVVBBQkFTRV9BTk9OX0tFWX1gIH0sCiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBlbWFpbCwgY29kZSwgcGFzc3dvcmQgfSkKICAgICAgfSk7CiAgICAgIGNvbnN0IGJvZHkgPSBhd2FpdCByZXMuanNvbigpLmNhdGNoKCgpID0+ICh7fSkpOwogICAgICBpZiAoIXJlcy5vayB8fCAhYm9keS5vaykgdGhyb3cgbmV3IEVycm9yKGJvZHkuZXJyb3IgfHwgJ9eU15TXpNei15zXlCDXoNeb16nXnNeUJyk7CiAgICAgIGNvbnN0IHsgZXJyb3IgfSA9IGF3YWl0IHNiLmF1dGguc2lnbkluV2l0aFBhc3N3b3JkKHsgZW1haWwsIHBhc3N3b3JkIH0pOwogICAgICBpZiAoZXJyb3IpIHRocm93IGVycm9yOwogICAgICB0b2FzdCgn15TXl9ep15HXldefINeU15XXpNei15wg15HXlNem15zXl9eUJyk7CiAgICB9IGNhdGNoIChleCkgeyBlcnIudGV4dENvbnRlbnQgPSBlcnJNc2coZXgpOyBzZXRCdXN5KGJ0biwgZmFsc2UpOyB9CiAgfTsKfQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBCT09UIC8gU0VTU0lPTgogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCmxldCBib290ZWQgPSBmYWxzZTsKYXN5bmMgZnVuY3Rpb24gb25TZXNzaW9uKHNlc3Npb24pIHsKICBTLnNlc3Npb24gPSBzZXNzaW9uOwogIGlmICghc2Vzc2lvbikgeyBTLm1lID0gbnVsbDsgcmVuZGVyQXV0aCgpOyByZXR1cm47IH0KICB0cnkgewogICAgY29uc3QgbWUgPSBhd2FpdCBxKHNiLmZyb20oJ3RyYWluZWVzJykuc2VsZWN0KCcqJykuZXEoJ3VzZXJfaWQnLCBzZXNzaW9uLnVzZXIuaWQpLm1heWJlU2luZ2xlKCkpOwogICAgaWYgKCFtZSkgewogICAgICAkKCcjYXBwJykuaW5uZXJIVE1MID0gYDxkaXYgY2xhc3M9ImF1dGgiPjxkaXYgY2xhc3M9ImF1dGgtaW5uZXIiPjxkaXYgY2xhc3M9IndvcmRtYXJrIj48aW1nIHNyYz0iaHR0cHM6Ly9lZy1taXNzZml0bmVzcy5jby5pbC93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8xMC9lZy1sb2dvLWZ1bGwtdjIucG5nIiBhbHQ9IkVNQSBHQUxJTSBNaXNzIEZpdG5lc3MiIHdpZHRoPSI0NDQiIGhlaWdodD0iNDIwIiBzdHlsZT0iaGVpZ2h0OjEyMHB4O3dpZHRoOmF1dG87ZGlzcGxheTpibG9jazttYXJnaW46MCBhdXRvIDEycHgiPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNhcmQiIHN0eWxlPSJtYXJnaW4tdG9wOjIwcHgiPjxoMj7XlNeX16nXkdeV158g15zXkCDXnten15XXqdeoPC9oMj48cCBjbGFzcz0ibXV0ZWQiPteU157Xqdeq157XqSDXlNeW15Qg16LXk9eZ15nXnyDXnNeQINee16nXldeZ15og15zXm9eo15jXmdehINee16rXkNee16DXqi4g16TXoNeZINec157XkNee16DXqiDXnNen15HXnNeqINen15XXkyDXlNek16LXnNeULjwvcD4KICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWJsb2NrIiBpZD0ibG8iPteU16rXoNeq16fXldeqPC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+YDsKICAgICAgJCgnI2xvJykub25jbGljayA9ICgpID0+IHNiLmF1dGguc2lnbk91dCgpOwogICAgICByZXR1cm47CiAgICB9CiAgICBTLm1lID0gbWU7CiAgICByZW5kZXJTaGVsbCgpOwogICAgcm91dGUoKTsKICB9IGNhdGNoIChlKSB7CiAgICAkKCcjYXBwJykuaW5uZXJIVE1MID0gYDxkaXYgY2xhc3M9ImF1dGgiPjxkaXYgY2xhc3M9ImF1dGgtaW5uZXIiPiR7ZXJyb3JIVE1MKGUpfTxidXR0b24gY2xhc3M9ImJ0biBidG4tYmxvY2siIHN0eWxlPSJtYXJnaW4tdG9wOjEycHgiIG9uY2xpY2s9ImxvY2F0aW9uLnJlbG9hZCgpIj7XoNeh15Ug16nXldeRPC9idXR0b24+PC9kaXY+PC9kaXY+YDsKICB9Cn0KLy8gbm90ZTogbmV2ZXIgYXdhaXQgc3VwYWJhc2UgY2FsbHMgZGlyZWN0bHkgaW5zaWRlIHRoaXMgY2FsbGJhY2sgKHN1cGFiYXNlLWpzIGxvY2spIOKAkyBkZWZlciB3aXRoIHNldFRpbWVvdXQKc2IuYXV0aC5vbkF1dGhTdGF0ZUNoYW5nZSgoZXZlbnQsIHNlc3Npb24pID0+IHsKICBpZiAoZXZlbnQgPT09ICdJTklUSUFMX1NFU1NJT04nKSB7IGJvb3RlZCA9IHRydWU7IHNldFRpbWVvdXQoKCkgPT4gb25TZXNzaW9uKHNlc3Npb24pLCAwKTsgcmV0dXJuOyB9CiAgaWYgKGV2ZW50ID09PSAnU0lHTkVEX0lOJyAmJiBTLnNlc3Npb24gJiYgc2Vzc2lvbiAmJiBTLnNlc3Npb24udXNlci5pZCA9PT0gc2Vzc2lvbi51c2VyLmlkKSB7IFMuc2Vzc2lvbiA9IHNlc3Npb247IHJldHVybjsgfQogIGlmIChldmVudCA9PT0gJ1RPS0VOX1JFRlJFU0hFRCcgfHwgZXZlbnQgPT09ICdVU0VSX1VQREFURUQnKSB7IFMuc2Vzc2lvbiA9IHNlc3Npb247IHJldHVybjsgfQogIGlmIChldmVudCA9PT0gJ1NJR05FRF9JTicgfHwgZXZlbnQgPT09ICdTSUdORURfT1VUJykgc2V0VGltZW91dCgoKSA9PiBvblNlc3Npb24oc2Vzc2lvbiksIDApOwp9KTsKc2V0VGltZW91dChhc3luYyAoKSA9PiB7IGlmICghYm9vdGVkKSB7IGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgc2IuYXV0aC5nZXRTZXNzaW9uKCk7IG9uU2Vzc2lvbihkYXRhLnNlc3Npb24pOyBib290ZWQgPSB0cnVlOyB9IH0sIDI1MDApOwoKY29uc3QgaXNBZG1pbiA9ICgpID0+IFMubWUgJiYgUy5tZS5yb2xlID09PSAnYWRtaW4nOwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBTSEVMTCAmIFJPVVRFUgogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCmNvbnN0IFRSQUlORUVfTkFWID0gWwogIHsgcjogJ2hvbWUnLCBsYWJlbDogJ9eR15nXqicsIGljb246ICdob21lJyB9LAogIHsgcjogJ3dvcmtvdXRzJywgbGFiZWw6ICfXkNeZ157Xldeg15nXnScsIGljb246ICdkdW1iYmVsbCcgfSwKICB7IHI6ICdudXRyaXRpb24nLCBsYWJlbDogJ9eq15bXldeg15QnLCBpY29uOiAnYXBwbGUnIH0sCiAgeyByOiAncHJvZ3Jlc3MnLCBsYWJlbDogJ9ee16LXp9eRJywgaWNvbjogJ2NoYXJ0JyB9LAogIHsgcjogJ21lc3NhZ2VzJywgbGFiZWw6ICfXlNeV15PXoteV16onLCBpY29uOiAnY2hhdCcsIGJhZGdlOiAndW5yZWFkJyB9Cl07CmNvbnN0IEFETUlOX05BViA9IFsKICB7IHI6ICdhZG1pbicsIGxhYmVsOiAn157XqteQ157XoNeV16onLCBpY29uOiAndXNlcnMnLCBiYWRnZTogJ2FkbWluVW5yZWFkJyB9LAogIHsgcjogJ2FkbWluL2xlYWRzJywgbGFiZWw6ICfXnNeZ15PXmdedJywgaWNvbjogJ2luYm94JyB9Cl07CgpmdW5jdGlvbiByZW5kZXJTaGVsbCgpIHsKICAkKCcjYXBwJykuaW5uZXJIVE1MID0gYAogIDxhIGNsYXNzPSJzci1vbmx5IiBocmVmPSIjdmlldyI+15PXmdec15XXkiDXnNeq15XXm9efPC9hPgogIDxoZWFkZXIgY2xhc3M9ImFwcC1oZWFkZXIiPgogICAgPGEgaHJlZj0iIy9ob21lIiBjbGFzcz0id29yZG1hcmsiIHN0eWxlPSJjb2xvcjppbmhlcml0O3RleHQtZGVjb3JhdGlvbjpub25lO2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMHB4Ij48aW1nIHNyYz0iaHR0cHM6Ly9lZy1taXNzZml0bmVzcy5jby5pbC93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8xMC9lZy1sb2dvLWhvcml6b250YWwtdjIucG5nIiBhbHQ9IkVNQSBHQUxJTSBNaXNzIEZpdG5lc3MiIHdpZHRoPSI2MDciIGhlaWdodD0iMTY4IiBzdHlsZT0iaGVpZ2h0OjM0cHg7d2lkdGg6YXV0bztkaXNwbGF5OmJsb2NrIj48c21hbGw+15TXkNeW15XXqCDXlNeQ15nXqdeZPC9zbWFsbD48L2E+CiAgICA8ZGl2IGNsYXNzPSJoZWFkZXItYWN0aW9ucyI+CiAgICAgICR7aXNBZG1pbigpID8gYDxuYXYgY2xhc3M9Im1vZGUtc3dpdGNoIiBhcmlhLWxhYmVsPSLXntem15Eg16rXpteV15LXlCI+PGEgaHJlZj0iIy9ob21lIiBpZD0ibXMtbWUiPteU15DXlteV16gg16nXnNeZPC9hPjxhIGhyZWY9IiMvYWRtaW4iIGlkPSJtcy1hZG1pbiI+16DXmdeU15XXnDwvYT48L25hdj5gIDogJyd9CiAgICAgIDxhIGNsYXNzPSJpY29uLWJ0biIgaHJlZj0iIy9wcm9maWxlIiBhcmlhLWxhYmVsPSLXpNeo15XXpNeZ15wiPiR7aWMoJ3VzZXInKX08L2E+CiAgICA8L2Rpdj4KICA8L2hlYWRlcj4KICA8bmF2IGNsYXNzPSJzaWRlbmF2IiBpZD0ic2lkZW5hdiIgYXJpYS1sYWJlbD0i16DXmdeV15XXmCDXqNeQ16nXmSI+PC9uYXY+CiAgPG1haW4gaWQ9InZpZXciIHRhYmluZGV4PSItMSI+PC9tYWluPgogIDxuYXYgY2xhc3M9InRhYmJhciIgaWQ9InRhYmJhciIgYXJpYS1sYWJlbD0i16DXmdeV15XXmCI+PC9uYXY+YDsKICByZWZyZXNoVW5yZWFkKCk7Cn0KCmZ1bmN0aW9uIGN1cnJlbnRSb3V0ZSgpIHsgcmV0dXJuIChsb2NhdGlvbi5oYXNoIHx8ICcjL2hvbWUnKS5yZXBsYWNlKC9eI1wvPy8sICcnKSB8fCAnaG9tZSc7IH0KCmZ1bmN0aW9uIHJlbmRlck5hdigpIHsKICBjb25zdCByID0gY3VycmVudFJvdXRlKCk7CiAgY29uc3QgYWRtaW5Nb2RlID0gci5zdGFydHNXaXRoKCdhZG1pbicpOwogIGNvbnN0IGl0ZW1zID0gYWRtaW5Nb2RlID8gQURNSU5fTkFWIDogVFJBSU5FRV9OQVY7CiAgY29uc3QgaXNDdXIgPSAoaXQpID0+IChpdC5yID09PSAnYWRtaW4nID8gKHIgPT09ICdhZG1pbicgfHwgci5zdGFydHNXaXRoKCdhZG1pbi90LycpKSA6IHIgPT09IGl0LnIgfHwgci5zdGFydHNXaXRoKGl0LnIgKyAnLycpKTsKICBjb25zdCBiYWRnZSA9IChpdCkgPT4gKGl0LmJhZGdlICYmIFNbaXQuYmFkZ2VdID4gMCA\/IGA8c3BhbiBjbGFzcz0iYmFkZ2UiIGFyaWEtbGFiZWw9IiR7U1tpdC5iYWRnZV19INeX15PXqdeV16oiPiR7U1tpdC5iYWRnZV19PC9zcGFuPmAgOiAnJyk7CiAgJCgnI3RhYmJhcicpLmlubmVySFRNTCA9IGl0ZW1zLm1hcCgoaXQpID0+IGA8YSBocmVmPSIjLyR7aXQucn0iICR7aXNDdXIoaXQpID8gJ2FyaWEtY3VycmVudD0icGFnZSInIDogJyd9PiR7aWMoaXQuaWNvbiwgJ2ljb24gaWNvbi1sZycpfTxzcGFuPiR7aXQubGFiZWx9PC9zcGFuPiR7YmFkZ2UoaXQpfTwvYT5gKS5qb2luKCcnKTsKICBjb25zdCBzaWRlID0gYWRtaW5Nb2RlID8gaXRlbXMgOiBbLi4uaXRlbXMsIHsgcjogJ3Byb2ZpbGUnLCBsYWJlbDogJ9ek16jXldek15nXnCcsIGljb246ICd1c2VyJyB9XTsKICAkKCcjc2lkZW5hdicpLmlubmVySFRNTCA9IHNpZGUubWFwKChpdCkgPT4gYDxhIGhyZWY9IiMvJHtpdC5yfSIgJHtpc0N1cihpdCkgPyAnYXJpYS1jdXJyZW50PSJwYWdlIicgOiAnJ30+JHtpYyhpdC5pY29uKX08c3Bhbj4ke2l0LmxhYmVsfTwvc3Bhbj4ke2JhZGdlKGl0KX08L2E+YCkuam9pbignJykgKwogICAgYDxkaXYgc3R5bGU9Im1hcmdpbi10b3A6YXV0byI+PGEgaHJlZj0iJHtNQUlOX1NJVEV9Ij4ke2ljKCdleHRlcm5hbCcpfTxzcGFuPtec15DXqteoINeU16jXkNep15k8L3NwYW4+PC9hPjwvZGl2PmA7CiAgaWYgKGlzQWRtaW4oKSkgewogICAgJCgnI21zLW1lJykuc2V0QXR0cmlidXRlKCdhcmlhLWN1cnJlbnQnLCBTdHJpbmcoIWFkbWluTW9kZSkpOwogICAgJCgnI21zLWFkbWluJykuc2V0QXR0cmlidXRlKCdhcmlhLWN1cnJlbnQnLCBTdHJpbmcoYWRtaW5Nb2RlKSk7CiAgfQp9Cgphc3luYyBmdW5jdGlvbiByZWZyZXNoVW5yZWFkKCkgewogIGlmICghUy5tZSkgcmV0dXJuOwogIHRyeSB7CiAgICBjb25zdCB7IGNvdW50IH0gPSBhd2FpdCBzYi5mcm9tKCdtZXNzYWdlcycpLnNlbGVjdCgnaWQnLCB7IGNvdW50OiAnZXhhY3QnLCBoZWFkOiB0cnVlIH0pLmVxKCd0cmFpbmVlX2lkJywgUy5tZS5pZCkuZXEoJ3NlbmRlcicsICdjb2FjaCcpLmlzKCdyZWFkX2F0JywgbnVsbCk7CiAgICBTLnVucmVhZCA9IGNvdW50IHx8IDA7CiAgICBpZiAoaXNBZG1pbigpKSB7CiAgICAgIGNvbnN0IHsgY291bnQ6IGMyIH0gPSBhd2FpdCBzYi5mcm9tKCdtZXNzYWdlcycpLnNlbGVjdCgnaWQnLCB7IGNvdW50OiAnZXhhY3QnLCBoZWFkOiB0cnVlIH0pLmVxKCdzZW5kZXInLCAndHJhaW5lZScpLmlzKCdyZWFkX2F0JywgbnVsbCk7CiAgICAgIFMuYWRtaW5VbnJlYWQgPSBjMiB8fCAwOwogICAgfQogIH0gY2F0Y2ggKF8pIHsgLyogaWdub3JlICovIH0KICBpZiAoJCgnI3RhYmJhcicpKSByZW5kZXJOYXYoKTsKfQoKbGV0IHJvdXRlU2VxID0gMDsKYXN5bmMgZnVuY3Rpb24gcm91dGUoKSB7CiAgaWYgKCFTLm1lIHx8ICEkKCcjdmlldycpKSByZXR1cm47CiAgZGVzdHJveUNoYXJ0cygpOwogIGNvbnN0IHIgPSBjdXJyZW50Um91dGUoKTsKICBjb25zdCBzZXEgPSArK3JvdXRlU2VxOwogIHJlbmRlck5hdigpOwogIGNvbnN0IHZpZXcgPSAkKCcjdmlldycpOwogIHZpZXcuaW5uZXJIVE1MID0gYDxkaXYgY2xhc3M9InBhZ2UtZ2xvdyIgYXJpYS1oaWRkZW49InRydWUiPjwvZGl2PjxkaXYgY2xhc3M9InZpZXctaW5uZXIiIGlkPSJ2aSI+JHtsb2FkaW5nSFRNTCgpfTwvZGl2PmA7CiAgY29uc3QgdmkgPSAkKCcjdmknKTsKICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7CiAgY29uc3QgcGFydHMgPSByLnNwbGl0KCcvJyk7CiAgdHJ5IHsKICAgIGlmIChwYXJ0c1swXSA9PT0gJ2FkbWluJykgewogICAgICBpZiAoIWlzQWRtaW4oKSkgeyBsb2NhdGlvbi5oYXNoID0gJyMvaG9tZSc7IHJldHVybjsgfQogICAgICBpZiAocGFydHNbMV0gPT09ICdsZWFkcycpIGF3YWl0IHZpZXdMZWFkcyh2aSwgc2VxKTsKICAgICAgZWxzZSBpZiAocGFydHNbMV0gPT09ICd0JyAmJiBwYXJ0c1syXSkgYXdhaXQgdmlld0FkbWluVHJhaW5lZSh2aSwgcGFydHNbMl0sIHBhcnRzWzNdIHx8ICdkZXRhaWxzJywgc2VxKTsKICAgICAgZWxzZSBhd2FpdCB2aWV3QWRtaW5MaXN0KHZpLCBzZXEpOwogICAgfSBlbHNlIHsKICAgICAgY29uc3QgbWFwID0geyBob21lOiB2aWV3SG9tZSwgd29ya291dHM6IHZpZXdXb3Jrb3V0cywgbnV0cml0aW9uOiB2aWV3TnV0cml0aW9uLCBwcm9ncmVzczogdmlld1Byb2dyZXNzLCBtZXNzYWdlczogdmlld01lc3NhZ2VzLCBwcm9maWxlOiB2aWV3UHJvZmlsZSB9OwogICAgICBjb25zdCBmbiA9IG1hcFtwYXJ0c1swXV0gfHwgdmlld0hvbWU7CiAgICAgIGF3YWl0IGZuKHZpLCBzZXEsIHBhcnRzLnNsaWNlKDEpKTsKICAgIH0KICB9IGNhdGNoIChlKSB7CiAgICBpZiAoc2VxID09PSByb3V0ZVNlcSkgdmkuaW5uZXJIVE1MID0gZXJyb3JIVE1MKGUpOwogICAgY29uc29sZS53YXJuKGUpOwogIH0KfQp3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignaGFzaGNoYW5nZScsIHJvdXRlKTsKCmZ1bmN0aW9uIGRlc3Ryb3lDaGFydHMoKSB7CiAgaWYgKFMuY2hhcnQpIHsgUy5jaGFydC5kZXN0cm95KCk7IFMuY2hhcnQgPSBudWxsOyB9Cn0KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgREFUQSBIRUxQRVJTCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KY29uc3QgZ2V0QWN0aXZlV29ya291dFBsYW4gPSAodGlkKSA9PiBxKHNiLmZyb20oJ3dvcmtvdXRfcGxhbnMnKS5zZWxlY3QoJyonKS5lcSgndHJhaW5lZV9pZCcsIHRpZCkuZXEoJ2lzX2FjdGl2ZScsIHRydWUpLm9yZGVyKCdjcmVhdGVkX2F0JywgeyBhc2NlbmRpbmc6IGZhbHNlIH0pLmxpbWl0KDEpLm1heWJlU2luZ2xlKCkpOwpjb25zdCBnZXRBY3RpdmVOdXRyaXRpb25QbGFuID0gKHRpZCkgPT4gcShzYi5mcm9tKCdudXRyaXRpb25fcGxhbnMnKS5zZWxlY3QoJyonKS5lcSgndHJhaW5lZV9pZCcsIHRpZCkuZXEoJ2lzX2FjdGl2ZScsIHRydWUpLm9yZGVyKCdjcmVhdGVkX2F0JywgeyBhc2NlbmRpbmc6IGZhbHNlIH0pLmxpbWl0KDEpLm1heWJlU2luZ2xlKCkpOwpjb25zdCBnZXRQcm9ncmVzcyA9ICh0aWQpID0+IHEoc2IuZnJvbSgncHJvZ3Jlc3NfbG9ncycpLnNlbGVjdCgnKicpLmVxKCd0cmFpbmVlX2lkJywgdGlkKS5vcmRlcignbG9nX2RhdGUnLCB7IGFzY2VuZGluZzogdHJ1ZSB9KS5vcmRlcignY3JlYXRlZF9hdCcsIHsgYXNjZW5kaW5nOiB0cnVlIH0pKTsKY29uc3QgZ2V0V29ya291dExvZ3MgPSAodGlkLCBsaW1pdCA9IDMwKSA9PiBxKHNiLmZyb20oJ3dvcmtvdXRfbG9ncycpLnNlbGVjdCgnKicpLmVxKCd0cmFpbmVlX2lkJywgdGlkKS5vcmRlcignbG9nX2RhdGUnLCB7IGFzY2VuZGluZzogZmFsc2UgfSkub3JkZXIoJ2NyZWF0ZWRfYXQnLCB7IGFzY2VuZGluZzogZmFsc2UgfSkubGltaXQobGltaXQpKTsKY29uc3QgZ2V0TWVzc2FnZXMgPSAodGlkKSA9PiBxKHNiLmZyb20oJ21lc3NhZ2VzJykuc2VsZWN0KCcqJykuZXEoJ3RyYWluZWVfaWQnLCB0aWQpLm9yZGVyKCdjcmVhdGVkX2F0JywgeyBhc2NlbmRpbmc6IHRydWUgfSkpOwoKZnVuY3Rpb24gcHJvZ3JhbVdlZWtzKHQpIHsKICBpZiAoIXQuc3RhcnRfZGF0ZSkgcmV0dXJuIG51bGw7CiAgY29uc3QgcyA9IHBhcnNlRGF0ZSh0LnN0YXJ0X2RhdGUpOyBjb25zdCBub3cgPSBwYXJzZURhdGUodG9kYXlJU08oKSk7CiAgY29uc3QgdG90YWwgPSB0LmVuZF9kYXRlID8gTWF0aC5tYXgoMSwgTWF0aC5yb3VuZCgocGFyc2VEYXRlKHQuZW5kX2RhdGUpIC0gcykgLyAoNyAqIERBWSkpKSA6IG51bGw7CiAgbGV0IGN1ciA9IE1hdGguZmxvb3IoKG5vdyAtIHMpIC8gKDcgKiBEQVkpKSArIDE7CiAgaWYgKGN1ciA8IDEpIGN1ciA9IDA7CiAgaWYgKHRvdGFsICYmIGN1ciA+IHRvdGFsKSBjdXIgPSB0b3RhbDsKICByZXR1cm4geyBjdXIsIHRvdGFsLCBzdGFydGVkOiBub3cgPj0gcyB9Owp9CmZ1bmN0aW9uIG5leHRXb3Jrb3V0RGF5KHBsYW4sIGxvZ3MpIHsKICBjb25zdCBkYXlzID0gKHBsYW4gJiYgcGxhbi5kYXlzKSB8fCBbXTsKICBpZiAoIWRheXMubGVuZ3RoKSByZXR1cm4gbnVsbDsKICBjb25zdCBsYXN0ID0gbG9ncyAmJiBsb2dzWzBdOwogIGxldCBpZHggPSBsYXN0ID8gZGF5cy5maW5kSW5kZXgoKGQpID0+IGQubmFtZSA9PT0gbGFzdC5kYXlfbmFtZSkgOiAtMTsKICBjb25zdCBkb25lVG9kYXkgPSAhIShsYXN0ICYmIGxhc3QubG9nX2RhdGUgPT09IHRvZGF5SVNPKCkpOwogIHJldHVybiB7IGRheTogZGF5c1soaWR4ICsgMSkgJSBkYXlzLmxlbmd0aF0sIGluZGV4OiAoaWR4ICsgMSkgJSBkYXlzLmxlbmd0aCwgZG9uZVRvZGF5LCBsYXN0RGF5OiBkb25lVG9kYXkgPyBsYXN0LmRheV9uYW1lIDogbnVsbCB9Owp9CmNvbnN0IGRheUxldHRlciA9IChuYW1lLCBpKSA9PiB7IGNvbnN0IG0gPSAv15nXldedXHMrKFtBLVphLXrXkC3XqjAtOV0pLy5leGVjKG5hbWUgfHwgJycpOyByZXR1cm4gbSA\/IG1bMV0gOiBTdHJpbmcoaSArIDEpOyB9OwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBUUkFJTkVFOiBIT01FCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KYXN5bmMgZnVuY3Rpb24gdmlld0hvbWUodmksIHNlcSkgewogIGNvbnN0IG1lID0gUy5tZTsKICBkb2N1bWVudC50aXRsZSA9ICfXkdeZ16ogfCDXlNeQ15bXldeoINeU15DXmdep15knOwogIGNvbnN0IFtwbGFuLCBsb2dzLCBwcm9ncmVzcywgbXNnc10gPSBhd2FpdCBQcm9taXNlLmFsbChbCiAgICBnZXRBY3RpdmVXb3Jrb3V0UGxhbihtZS5pZCksIGdldFdvcmtvdXRMb2dzKG1lLmlkLCAxMCksIGdldFByb2dyZXNzKG1lLmlkKSwKICAgIHEoc2IuZnJvbSgnbWVzc2FnZXMnKS5zZWxlY3QoJyonKS5lcSgndHJhaW5lZV9pZCcsIG1lLmlkKS5lcSgnc2VuZGVyJywgJ2NvYWNoJykub3JkZXIoJ2NyZWF0ZWRfYXQnLCB7IGFzY2VuZGluZzogZmFsc2UgfSkubGltaXQoMSkpCiAgXSk7CiAgaWYgKHNlcSAhPT0gcm91dGVTZXEpIHJldHVybjsKICBjb25zdCB3ID0gcHJvZ3JhbVdlZWtzKG1lKTsKICBjb25zdCBueHQgPSBuZXh0V29ya291dERheShwbGFuLCBsb2dzKTsKICBjb25zdCB3ZWlnaHRzID0gcHJvZ3Jlc3MuZmlsdGVyKChwKSA9PiBwLndlaWdodCAhPSBudWxsKTsKICBjb25zdCBsYXRlc3QgPSB3ZWlnaHRzW3dlaWdodHMubGVuZ3RoIC0gMV07CiAgY29uc3Qgc3RhcnRXID0gbWUuc3RhcnRfd2VpZ2h0ICE9IG51bGwgPyBOdW1iZXIobWUuc3RhcnRfd2VpZ2h0KSA6ICh3ZWlnaHRzWzBdID8gTnVtYmVyKHdlaWdodHNbMF0ud2VpZ2h0KSA6IG51bGwpOwogIGNvbnN0IGRlbHRhID0gbGF0ZXN0ICYmIHN0YXJ0VyAhPSBudWxsID8gTnVtYmVyKGxhdGVzdC53ZWlnaHQpIC0gc3RhcnRXIDogbnVsbDsKICBjb25zdCBsYXN0TXNnID0gbXNnc1swXTsKICBjb25zdCBob3VyID0gbmV3IERhdGUoKS5nZXRIb3VycygpOwogIGNvbnN0IGdyZWV0ID0gaG91ciA8IDEyID8gJ9eR15XXp9eoINeY15XXkScgOiBob3VyIDwgMTcgPyAn16bXlNeo15nXmdedINeY15XXkdeZ150nIDogJ9ei16jXkSDXmNeV15EnOwogIGNvbnN0IHBjdCA9IHcgJiYgdy50b3RhbCA\/IE1hdGgubWluKDEwMCwgTWF0aC5yb3VuZCgody5jdXIgLyB3LnRvdGFsKSAqIDEwMCkpIDogMDsKCiAgdmkuaW5uZXJIVE1MID0gYAogIDxzZWN0aW9uIGNsYXNzPSJoZXJvIj4KICAgIDxkaXYgY2xhc3M9ImV5ZWJyb3ciPiR7ZXNjKGdyZWV0KX08L2Rpdj4KICAgIDxoMT7Xqdec15XXnSwgJHtlc2MoZmlyc3ROYW1lKG1lLmZ1bGxfbmFtZSkpfTwvaDE+CiAgICA8cCBjbGFzcz0ibXV0ZWQiIHN0eWxlPSJtYXJnaW46MCI+JHttZS5nb2FsID8gJ9eU157XmNeo15Q6ICcgKyBlc2MobWUuZ29hbCkgOiAn15vXkNefINee16rXl9eZ15zXmdedINec16LXkdeV15MnfTwvcD4KICA8L3NlY3Rpb24+CiAgPGRpdiBjbGFzcz0iZ3JpZCBncmlkLTIiPgogICAgPHNlY3Rpb24gY2xhc3M9ImNhcmQgZW1iZXIiIGFyaWEtbGFiZWxsZWRieT0iaC1wcm9nIj4KICAgICAgPGRpdiBjbGFzcz0iZXllYnJvdyI+15TXqteV15vXoNeZ16og16nXnNeZPC9kaXY+CiAgICAgIDxoMiBpZD0iaC1wcm9nIj4ke2VzYyhtZS5wcm9ncmFtIHx8ICfXqteV15vXoNeZ16og15DXmdep15nXqicpfTwvaDI+CiAgICAgICR7dyA\/ICh3LnN0YXJ0ZWQgPyBgCiAgICAgICAgPGRpdiBjbGFzcz0icm93IGJldHdlZW4gc21hbGwiIHN0eWxlPSJtYXJnaW4tYm90dG9tOjhweCI+PHNwYW4+16nXkdeV16IgPGIgY2xhc3M9Im51bSI+JHt3LmN1cn08L2I+JHt3LnRvdGFsID8gYCDXnteq15XXmiA8YiBjbGFzcz0ibnVtIj4ke3cudG90YWx9PC9iPmAgOiAnJ308L3NwYW4+JHt3LnRvdGFsID8gYDxzcGFuIGNsYXNzPSJtdXRlZCBudW0iPiR7cGN0fSU8L3NwYW4+YCA6ICcnfTwvZGl2PgogICAgICAgICR7dy50b3RhbCA\/IGA8ZGl2IGNsYXNzPSJwcm9ncmVzcyIgcm9sZT0icHJvZ3Jlc3NiYXIiIGFyaWEtdmFsdWVtaW49IjAiIGFyaWEtdmFsdWVtYXg9IiR7dy50b3RhbH0iIGFyaWEtdmFsdWVub3c9IiR7dy5jdXJ9IiBhcmlhLWxhYmVsPSLXlNeq16fXk9ee15XXqiDXkdeq15XXm9eg15nXqiI+PHNwYW4gc3R5bGU9IndpZHRoOiR7cGN0fSUiPjwvc3Bhbj48L2Rpdj5gIDogJyd9CiAgICAgICAgPHAgY2xhc3M9Im11dGVkIHNtYWxsIiBzdHlsZT0ibWFyZ2luOjEwcHggMCAwIj4ke2ZtdERhdGUobWUuc3RhcnRfZGF0ZSl9JHttZS5lbmRfZGF0ZSA\/ICcg4oCTICcgKyBmbXREYXRlKG1lLmVuZF9kYXRlKSA6ICcnfTwvcD5gCiAgICAgICAgOiBgPHAgY2xhc3M9Im11dGVkIj7XlNeq15XXm9eg15nXqiDXnteq15fXmdec15Qg15EtJHtmbXREYXRlKG1lLnN0YXJ0X2RhdGUpfTwvcD5gKSA6ICc8cCBjbGFzcz0ibXV0ZWQiPteq15DXqNeZ15vXmSDXlNeq15XXm9eg15nXqiDXmdei15XXk9eb16DXlSDXkden16jXldeRPC9wPid9CiAgICA8L3NlY3Rpb24+CiAgICA8c2VjdGlvbiBjbGFzcz0iY2FyZCIgYXJpYS1sYWJlbGxlZGJ5PSJoLW5leHQiPgogICAgICA8ZGl2IGNsYXNzPSJleWVicm93Ij4ke254dCAmJiBueHQuZG9uZVRvZGF5ID8gJ9eU15DXmdee15XXnyDXlNeR15AnIDogJ9eU15DXmdee15XXnyDXqdecINeU15nXldedJ308L2Rpdj4KICAgICAgJHtueHQgPyBgCiAgICAgICAgJHtueHQuZG9uZVRvZGF5ID8gYDxwIGNsYXNzPSJmb3JtLW9rIiBzdHlsZT0ibWFyZ2luOjAgMCA4cHgiPiR7aWMoJ2NoZWNrJyl9INeh15nXmdee16og15TXmdeV150g15DXqiAke2VzYyhueHQubGFzdERheSl9LiDXm9ecINeU15vXkdeV15MhPC9wPmAgOiAnJ30KICAgICAgICA8aDIgaWQ9ImgtbmV4dCI+JHtlc2Mobnh0LmRheS5uYW1lKX08L2gyPgogICAgICAgIDxwIGNsYXNzPSJtdXRlZCBzbWFsbCI+JHsobnh0LmRheS5leGVyY2lzZXMgfHwgW10pLmxlbmd0aH0g16rXqNeS15nXnNeZ1508L3A+CiAgICAgICAgPGEgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgaHJlZj0iIy93b3Jrb3V0cy8ke254dC5pbmRleH0iPiR7aWMoJ2R1bWJiZWxsJyl9ICR7bnh0LmRvbmVUb2RheSA\/ICfXnNem16TXmdeZ15Qg15HXkNeZ157XldefJyA6ICfXnNeQ15nXnteV158nfTwvYT5gCiAgICAgICAgOiBgPGgyIGlkPSJoLW5leHQiPteQ15nXnyDXoteT15nXmdefINeq15XXm9eg15nXqiDXkNeZ157Xldeg15nXnTwvaDI+PHAgY2xhc3M9Im11dGVkIj7XlNeq15XXm9eg15nXqiDXqdec15og16rXldek15nXoiDXm9eQ158g15HXqNeS16Ig16nXlNee15DXnteg16og16rXotec15Qg15DXldeq15QuPC9wPmB9CiAgICA8L3NlY3Rpb24+CiAgICA8c2VjdGlvbiBjbGFzcz0iY2FyZCIgYXJpYS1sYWJlbGxlZGJ5PSJoLXciPgogICAgICA8ZGl2IGNsYXNzPSJjYXJkLWhlYWQiPjxoMiBpZD0iaC13Ij7Xntep16fXnDwvaDI+JHtpYygnc2NhbGUnLCAnaWNvbiBpY29uLWxnJyl9PC9kaXY+CiAgICAgICR7bGF0ZXN0ID8gYAogICAgICAgIDxkaXYgY2xhc3M9InJvdyIgc3R5bGU9ImdhcDoyOHB4O2FsaWduLWl0ZW1zOmZsZXgtZW5kIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXQiPjxzcGFuIGNsYXNzPSJ2IG51bSI+JHtudW0obGF0ZXN0LndlaWdodCl9PC9zcGFuPjxzcGFuIGNsYXNzPSJsIj7XpyLXkiDCtyAke2ZtdERhdGUobGF0ZXN0LmxvZ19kYXRlKX08L3NwYW4+PC9kaXY+CiAgICAgICAgICAke2RlbHRhICE9PSBudWxsID8gYDxkaXYgY2xhc3M9InN0YXQiPjxzcGFuIGNsYXNzPSJkZWx0YSAke2RlbHRhIDw9IDAgPyAnZG93bicgOiAndXAnfSI+PHNwYW4gY2xhc3M9Im51bSI+JHtkZWx0YSA+IDAgPyAnKycgOiAnJ30ke251bShkZWx0YSl9PC9zcGFuPiDXpyLXkjwvc3Bhbj48c3BhbiBjbGFzcz0ibCI+157XkNeWINeU15TXqteX15zXlCAoJHtudW0oc3RhcnRXKX0pPC9zcGFuPjwvZGl2PmAgOiAnJ30KICAgICAgICAgICR7bWUudGFyZ2V0X3dlaWdodCA\/IGA8ZGl2IGNsYXNzPSJzdGF0Ij48c3BhbiBjbGFzcz0idiBudW0iIHN0eWxlPSJmb250LXNpemU6MS4zcmVtIj4ke251bShtZS50YXJnZXRfd2VpZ2h0KX08L3NwYW4+PHNwYW4gY2xhc3M9ImwiPteZ16LXkzwvc3Bhbj48L2Rpdj5gIDogJyd9CiAgICAgICAgPC9kaXY+YCA6ICc8cCBjbGFzcz0ibXV0ZWQiPtei15XXkyDXnNeQINeU15XXlteg15Ug157Xk9eT15nXnS4g15HXldeQ15kg16DXqteX15nXnC48L3A+J30KICAgICAgPGEgY2xhc3M9ImJ0biIgc3R5bGU9Im1hcmdpbi10b3A6MTRweCIgaHJlZj0iIy9wcm9ncmVzcy9uZXciPiR7aWMoJ3BsdXMnKX0g16LXk9eb15XXnyDXnteT15PXmdedPC9hPgogICAgPC9zZWN0aW9uPgogICAgPHNlY3Rpb24gY2xhc3M9ImNhcmQiIGFyaWEtbGFiZWxsZWRieT0iaC1tIj4KICAgICAgPGRpdiBjbGFzcz0iY2FyZC1oZWFkIj48aDIgaWQ9ImgtbSI+15TXldeT16LXlCDXnteU157XkNee16DXqjwvaDI+JHtTLnVucmVhZCA\/IGA8c3BhbiBjbGFzcz0iYmFkZ2UiPiR7Uy51bnJlYWR9PC9zcGFuPmAgOiAnJ308L2Rpdj4KICAgICAgJHtsYXN0TXNnID8gYDxwIGNsYXNzPSJxdW90ZSI+JHtlc2MobGFzdE1zZy5ib2R5Lmxlbmd0aCA+IDIyMCA\/IGxhc3RNc2cuYm9keS5zbGljZSgwLCAyMjApICsgJ+KApicgOiBsYXN0TXNnLmJvZHkpfTwvcD48cCBjbGFzcz0ibXV0ZWQgc21hbGwiPiR7Zm10RFQobGFzdE1zZy5jcmVhdGVkX2F0KX08L3A+YCA6ICc8cCBjbGFzcz0ibXV0ZWQiPteQ15nXnyDXoteT15nXmdefINeU15XXk9ei15XXqi48L3A+J30KICAgICAgPGEgY2xhc3M9ImJ0biIgaHJlZj0iIy9tZXNzYWdlcyI+JHtpYygnY2hhdCcpfSDXnNeb15wg15TXlNeV15PXoteV16o8L2E+CiAgICA8L3NlY3Rpb24+CiAgPC9kaXY+YDsKfQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBUUkFJTkVFOiBXT1JLT1VUUwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCmZ1bmN0aW9uIGV4ZXJjaXNlSFRNTChleCkgewogIGNvbnN0IGNoaXBzID0gW107CiAgaWYgKGV4LnNldHMgfHwgZXgucmVwcykgY2hpcHMucHVzaChgPHNwYW4gY2xhc3M9ImNoaXAgZW1iZXIiPjxzcGFuIGNsYXNzPSJudW0iPiR7ZXNjKGV4LnNldHMgfHwgJycpfSR7ZXguc2V0cyAmJiBleC5yZXBzID8gJyDDlyAnIDogJyd9JHtlc2MoZXgucmVwcyB8fCAnJyl9PC9zcGFuPjwvc3Bhbj5gKTsKICBpZiAoZXgucmVzdF9zZWMpIGNoaXBzLnB1c2goYDxzcGFuIGNsYXNzPSJjaGlwIj4ke2ljKCdjbG9jaycpfSDXnteg15XXl9eUIDxzcGFuIGNsYXNzPSJudW0iPiR7ZXNjKGV4LnJlc3Rfc2VjKX08L3NwYW4+INep16AnPC9zcGFuPmApOwogIGlmIChleC50ZW1wbykgY2hpcHMucHVzaChgPHNwYW4gY2xhc3M9ImNoaXAiPteY157XpNeVIDxzcGFuIGNsYXNzPSJudW0iPiR7ZXNjKGV4LnRlbXBvKX08L3NwYW4+PC9zcGFuPmApOwogIGNvbnN0IHNhZmVVcmwgPSAvXmh0dHBzPzpcL1wvL2kudGVzdChleC52aWRlb191cmwgfHwgJycpID8gZXgudmlkZW9fdXJsIDogJyc7CiAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJleCI+PGRpdiBjbGFzcz0iZXgtbmFtZSI+JHtlc2MoZXgubmFtZSl9PC9kaXY+PGRpdiBjbGFzcz0iY2hpcHMiPiR7Y2hpcHMuam9pbignJyl9PC9kaXY+CiAgICAke2V4Lm5vdGVzID8gYDxkaXYgY2xhc3M9ImV4LW5vdGVzIj4ke2VzYyhleC5ub3Rlcyl9PC9kaXY+YCA6ICcnfQogICAgJHtzYWZlVXJsID8gYDxhIGNsYXNzPSJ2aWRlby1saW5rIiBocmVmPSIke2VzYyhzYWZlVXJsKX0iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIj4ke2ljKCdwbGF5Jyl9INeh16jXmNeV158g15TXk9eS157XlDwvYT5gIDogJyd9PC9kaXY+YDsKfQpmdW5jdGlvbiBwbGFuRGF5c0hUTUwocGxhbiwgb3BlbklkeCwgd2l0aERvbmUpIHsKICByZXR1cm4gKHBsYW4uZGF5cyB8fCBbXSkubWFwKChkLCBpKSA9PiBgCiAgICA8ZGV0YWlscyBjbGFzcz0iZGF5IiAke2kgPT09IG9wZW5JZHggPyAnb3BlbicgOiAnJ30gZGF0YS1kYXk9IiR7aX0iPgogICAgICA8c3VtbWFyeT48c3BhbiBjbGFzcz0iZGF5LWxldHRlciI+JHtlc2MoZGF5TGV0dGVyKGQubmFtZSwgaSkpfTwvc3Bhbj48c3Bhbj48Yj4ke2VzYyhkLm5hbWUpfTwvYj48YnI+PHNwYW4gY2xhc3M9Im11dGVkIHNtYWxsIj4keyhkLmV4ZXJjaXNlcyB8fCBbXSkubGVuZ3RofSDXqteo15LXmdec15nXnTwvc3Bhbj48L3NwYW4+JHtpYygnY2hldnJvbicsICdpY29uIGNoZXYnKX08L3N1bW1hcnk+CiAgICAgIDxkaXYgY2xhc3M9ImRheS1ib2R5Ij4KICAgICAgICAkeyhkLmV4ZXJjaXNlcyB8fCBbXSkubWFwKGV4ZXJjaXNlSFRNTCkuam9pbignJykgfHwgJzxwIGNsYXNzPSJtdXRlZCI+15DXmdefINeq16jXkteZ15zXmdedINeR15nXldedINeU15bXlDwvcD4nfQogICAgICAgICR7d2l0aERvbmUgPyBgPGRpdiBjbGFzcz0iZG9uZS16b25lIiBzdHlsZT0ibWFyZ2luLXRvcDoxNHB4Ij48YnV0dG9uIGNsYXNzPSJidG4gYnRuLXByaW1hcnkgYnRuLWJsb2NrIGpzLWRvbmUiIGRhdGEtZGF5PSIke2l9Ij4ke2ljKCdjaGVjaycpfSDXodeZ15nXnteq15kg15DXqiDXlNeQ15nXnteV1588L2J1dHRvbj48L2Rpdj5gIDogJyd9CiAgICAgIDwvZGl2PgogICAgPC9kZXRhaWxzPmApLmpvaW4oJycpOwp9CmZ1bmN0aW9uIGxvZ3NMaXN0SFRNTChsb2dzKSB7CiAgaWYgKCFsb2dzLmxlbmd0aCkgcmV0dXJuIGVtcHR5SFRNTCgn16LXldeTINec15Ag16DXqNep157XlSDXkNeZ157Xldeg15nXnScsICdkdW1iYmVsbCcpOwogIHJldHVybiBgPHVsIGNsYXNzPSJsaXN0Ij4ke2xvZ3MubWFwKChsKSA9PiBgPGxpPgogICAgPHNwYW4gY2xhc3M9ImRheS1sZXR0ZXIiIHN0eWxlPSJ3aWR0aDozNnB4O2hlaWdodDozNnB4Ij4ke2ljKCdjaGVjaycpfTwvc3Bhbj4KICAgIDxkaXYgc3R5bGU9ImZsZXg6MTttaW4td2lkdGg6MCI+PGRpdj48Yj4ke2VzYyhsLmRheV9uYW1lIHx8ICfXkNeZ157XldefJyl9PC9iPjwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJtdXRlZCBzbWFsbCI+JHtmbXREYXRlKGwubG9nX2RhdGUpfSR7bC5yYXRpbmcgPyBgIMK3INeT15nXqNeV15IgPHNwYW4gY2xhc3M9Im51bSI+JHtsLnJhdGluZ30vNTwvc3Bhbj5gIDogJyd9JHtsLm5vdGVzID8gJyDCtyAnICsgZXNjKGwubm90ZXMpIDogJyd9PC9kaXY+PC9kaXY+PC9saT5gKS5qb2luKCcnKX08L3VsPmA7Cn0KYXN5bmMgZnVuY3Rpb24gdmlld1dvcmtvdXRzKHZpLCBzZXEsIGFyZ3MpIHsKICBkb2N1bWVudC50aXRsZSA9ICfXkNeZ157Xldeg15nXnSB8INeU15DXlteV16gg15TXkNeZ16nXmSc7CiAgY29uc3QgW3BsYW4sIGxvZ3NdID0gYXdhaXQgUHJvbWlzZS5hbGwoW2dldEFjdGl2ZVdvcmtvdXRQbGFuKFMubWUuaWQpLCBnZXRXb3Jrb3V0TG9ncyhTLm1lLmlkLCAyMCldKTsKICBpZiAoc2VxICE9PSByb3V0ZVNlcSkgcmV0dXJuOwogIGlmICghcGxhbikgeyB2aS5pbm5lckhUTUwgPSBgPGgxPteQ15nXnteV16DXmdedPC9oMT48ZGl2IGNsYXNzPSJjYXJkIj4ke2VtcHR5SFRNTCgn16rXldeb16DXmdeqINeU15DXmdee15XXoNeZ150g16nXnNeaINei15XXkyDXkdeU15vXoNeULiDXlNeZ15Ag16rXldek15nXoiDXm9eQ158g15HXqNeS16Ig16nXqtei15zXlC4nLCAnZHVtYmJlbGwnKX08L2Rpdj5gOyByZXR1cm47IH0KICBjb25zdCBueHQgPSBuZXh0V29ya291dERheShwbGFuLCBsb2dzKTsKICBjb25zdCBvcGVuSWR4ID0gYXJnc1swXSAhPT0gdW5kZWZpbmVkICYmIGFyZ3NbMF0gIT09ICcnID8gTnVtYmVyKGFyZ3NbMF0pIDogKG54dCA\/IG54dC5pbmRleCA6IDApOwogIHZpLmlubmVySFRNTCA9IGAKICAgIDxoMT4ke2VzYyhwbGFuLnRpdGxlKX08L2gxPgogICAgJHtwbGFuLm5vdGVzID8gYDxwIGNsYXNzPSJtdXRlZCI+JHtlc2MocGxhbi5ub3Rlcyl9PC9wPmAgOiAnJ30KICAgIDxkaXYgaWQ9ImRheXMiPiR7cGxhbkRheXNIVE1MKHBsYW4sIG9wZW5JZHgsIHRydWUpfTwvZGl2PgogICAgPHNlY3Rpb24gY2xhc3M9ImNhcmQiIHN0eWxlPSJtYXJnaW4tdG9wOjIwcHgiPjxoMj7XlNeZ16HXmNeV16jXmdeZ16og15DXmdee15XXoNeZ1508L2gyPjxkaXYgaWQ9IndsIj4ke2xvZ3NMaXN0SFRNTChsb2dzKX08L2Rpdj48L3NlY3Rpb24+YDsKICAkJCgnLmpzLWRvbmUnLCB2aSkuZm9yRWFjaCgoYnRuKSA9PiAoYnRuLm9uY2xpY2sgPSAoKSA9PiBvcGVuRG9uZUZvcm0oYnRuLCBwbGFuKSkpOwp9CmZ1bmN0aW9uIG9wZW5Eb25lRm9ybShidG4sIHBsYW4pIHsKICBjb25zdCBpID0gTnVtYmVyKGJ0bi5kYXRhc2V0LmRheSk7IGNvbnN0IGRheSA9IHBsYW4uZGF5c1tpXTsKICBjb25zdCB6b25lID0gYnRuLnBhcmVudEVsZW1lbnQ7CiAgbGV0IHJhdGluZyA9IDA7CiAgem9uZS5pbm5lckhUTUwgPSBgCiAgICA8Zm9ybSBjbGFzcz0iZWRpdG9yLWJsb2NrIiBzdHlsZT0ibWFyZ2luOjAiPgogICAgICA8ZGl2IGNsYXNzPSJsYWJlbCIgaWQ9InJ0LSR7aX0iPteQ15nXmiDXlNeZ15Qg15TXkNeZ157XldefPyAo15zXkCDXl9eV15HXlCk8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0icmF0aW5nIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbGxlZGJ5PSJydC0ke2l9IiBzdHlsZT0ibWFyZ2luOjhweCAwIDEycHgiPiR7WzEsIDIsIDMsIDQsIDVdLm1hcCgobikgPT4gYDxidXR0b24gdHlwZT0iYnV0dG9uIiBhcmlhLXByZXNzZWQ9ImZhbHNlIiBkYXRhLXI9IiR7bn0iIGFyaWEtbGFiZWw9IteT15nXqNeV15IgJHtufSDXnteq15XXmiA1Ij4ke259PC9idXR0b24+YCkuam9pbignJyl9PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWwgZm9yPSJ3bi0ke2l9Ij7XlNei16jXldeqICjXnNeQINeX15XXkdeUKTwvbGFiZWw+PHRleHRhcmVhIGNsYXNzPSJpbnB1dCIgaWQ9InduLSR7aX0iIHJvd3M9IjIiIHBsYWNlaG9sZGVyPSLXntep16fXnNeZ150sINeq15fXldep15QsINee15Qg15TXmdeUINen16nXlOKApiI+PC90ZXh0YXJlYT48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0icm93Ij48YnV0dG9uIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiIHR5cGU9InN1Ym1pdCI+16nXnteZ16jXlDwvYnV0dG9uPjxidXR0b24gY2xhc3M9ImJ0biBidG4tZ2hvc3QiIHR5cGU9ImJ1dHRvbiIgZGF0YS1jYW5jZWw+15HXmdeY15XXnDwvYnV0dG9uPjwvZGl2PgogICAgPC9mb3JtPmA7CiAgJCQoJy5yYXRpbmcgYnV0dG9uJywgem9uZSkuZm9yRWFjaCgoYikgPT4gKGIub25jbGljayA9ICgpID0+IHsgcmF0aW5nID0gTnVtYmVyKGIuZGF0YXNldC5yKTsgJCQoJy5yYXRpbmcgYnV0dG9uJywgem9uZSkuZm9yRWFjaCgoeCkgPT4geC5zZXRBdHRyaWJ1dGUoJ2FyaWEtcHJlc3NlZCcsIFN0cmluZyhOdW1iZXIoeC5kYXRhc2V0LnIpID09PSByYXRpbmcpKSk7IH0pKTsKICAkKCdbZGF0YS1jYW5jZWxdJywgem9uZSkub25jbGljayA9ICgpID0+IHsgem9uZS5pbm5lckhUTUwgPSBgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IGJ0bi1ibG9jayBqcy1kb25lIiBkYXRhLWRheT0iJHtpfSI+JHtpYygnY2hlY2snKX0g16HXmdeZ157XqteZINeQ16og15TXkNeZ157XldefPC9idXR0b24+YDsgJCgnLmpzLWRvbmUnLCB6b25lKS5vbmNsaWNrID0gKGUpID0+IG9wZW5Eb25lRm9ybShlLmN1cnJlbnRUYXJnZXQsIHBsYW4pOyB9OwogICQoJ2Zvcm0nLCB6b25lKS5vbnN1Ym1pdCA9IGFzeW5jIChlKSA9PiB7CiAgICBlLnByZXZlbnREZWZhdWx0KCk7IGNvbnN0IHNidG4gPSAkKCdidXR0b25bdHlwZT1zdWJtaXRdJywgem9uZSk7IHNldEJ1c3koc2J0biwgdHJ1ZSwgJ9ep15XXnteo16rigKYnKTsKICAgIHRyeSB7CiAgICAgIGF3YWl0IHEoc2IuZnJvbSgnd29ya291dF9sb2dzJykuaW5zZXJ0KHsgdHJhaW5lZV9pZDogUy5tZS5pZCwgZGF5X25hbWU6IGRheS5uYW1lLCBsb2dfZGF0ZTogdG9kYXlJU08oKSwgY29tcGxldGVkOiB0cnVlLCByYXRpbmc6IHJhdGluZyB8fCBudWxsLCBub3RlczogdmFsT3JOdWxsKCQoYCN3bi0ke2l9YCkudmFsdWUpIH0pKTsKICAgICAgdG9hc3QoJ9eU15DXmdee15XXnyDXoNeo16nXnS4g15vXnCDXlNeb15HXldeTIScpOwogICAgICByb3V0ZSgpOwogICAgfSBjYXRjaCAoZXgpIHsgdG9hc3QoZXJyTXNnKGV4KSwgJ2VycicpOyBzZXRCdXN5KHNidG4sIGZhbHNlKTsgfQogIH07Cn0KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgVFJBSU5FRTogTlVUUklUSU9OCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KZnVuY3Rpb24gbnV0cml0aW9uSFRNTChwKSB7CiAgY29uc3Qga2NhbCA9IE51bWJlcihwLmNhbG9yaWVzKSB8fCAwOwogIGNvbnN0IG1hY3JvcyA9IFsKICAgIHsgazogJ3Byb3RlaW5fZycsIGw6ICfXl9ec15HXldefJywgYzogJyNGRjVBMUYnLCBrYzogNCB9LAogICAgeyBrOiAnY2FyYnNfZycsIGw6ICfXpNeX157Xmdee15XXqicsIGM6ICcjZjViODRhJywga2M6IDQgfSwKICAgIHsgazogJ2ZhdF9nJywgbDogJ9ep15XXntefJywgYzogJyNlOGQ1YzQnLCBrYzogOSB9CiAgXTsKICBjb25zdCB0b3RhbEsgPSBtYWNyb3MucmVkdWNlKChzLCBtKSA9PiBzICsgKE51bWJlcihwW20ua10pIHx8IDApICogbS5rYywgMCkgfHwgMTsKICBjb25zdCBSID0gNTQsIEMgPSAyICogTWF0aC5QSSAqIFI7IGxldCBvZmYgPSAwOwogIGNvbnN0IHNlZ3MgPSBtYWNyb3MubWFwKChtKSA9PiB7IGNvbnN0IGZyYWMgPSAoKE51bWJlcihwW20ua10pIHx8IDApICogbS5rYykgLyB0b3RhbEs7IGNvbnN0IGxlbiA9IGZyYWMgKiBDOyBjb25zdCBzID0gYDxjaXJjbGUgY3g9IjY2IiBjeT0iNjYiIHI9IiR7Un0iIGZpbGw9Im5vbmUiIHN0cm9rZT0iJHttLmN9IiBzdHJva2Utd2lkdGg9IjEyIiBzdHJva2UtZGFzaGFycmF5PSIke01hdGgubWF4KDAsIGxlbiAtIDMpfSAke0N9IiBzdHJva2UtZGFzaG9mZnNldD0iJHstb2ZmfSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+YDsgb2ZmICs9IGxlbjsgcmV0dXJuIHM7IH0pLmpvaW4oJycpOwogIHJldHVybiBgCiAgPHNlY3Rpb24gY2xhc3M9ImNhcmQgZW1iZXIiPgogICAgPGRpdiBjbGFzcz0ibWFjcm8td3JhcCI+CiAgICAgIDxkaXYgY2xhc3M9InJpbmciIHJvbGU9ImltZyIgYXJpYS1sYWJlbD0iJHtrY2FsfSDXp9ec15XXqNeZ15XXqiDXkdeZ15XXnSI+CiAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMTMyIDEzMiI+PGNpcmNsZSBjeD0iNjYiIGN5PSI2NiIgcj0iJHtSfSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMWExMTBiIiBzdHJva2Utd2lkdGg9IjEyIi8+JHtzZWdzfTwvc3ZnPgogICAgICAgIDxkaXYgY2xhc3M9ImNlbnRlciI+PGIgY2xhc3M9Im51bSI+JHtrY2FsID8ga2NhbC50b0xvY2FsZVN0cmluZygnaGUtSUwnKSA6ICfigJQnfTwvYj48c3Bhbj7Xp9ec15XXqNeZ15XXqiDXkdeZ15XXnTwvc3Bhbj48L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImJhcnMiPgogICAgICAgICR7bWFjcm9zLm1hcCgobSkgPT4geyBjb25zdCBnID0gTnVtYmVyKHBbbS5rXSkgfHwgMDsgY29uc3QgcGMgPSBNYXRoLnJvdW5kKCgoZyAqIG0ua2MpIC8gdG90YWxLKSAqIDEwMCk7IHJldHVybiBgCiAgICAgICAgICA8ZGl2IGNsYXNzPSJiYXItcm93Ij48ZGl2IGNsYXNzPSJ0b3AiPjxzcGFuPiR7bS5sfTwvc3Bhbj48c3Bhbj48YiBjbGFzcz0ibnVtIj4ke2d9PC9iPiDXkteoJyA8c3BhbiBjbGFzcz0ibXV0ZWQgbnVtIj7CtyAke3BjfSU8L3NwYW4+PC9zcGFuPjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iYmFyIj48c3BhbiBzdHlsZT0id2lkdGg6JHtwY30lO2JhY2tncm91bmQ6JHttLmN9Ij48L3NwYW4+PC9kaXY+PC9kaXY+YDsgfSkuam9pbignJyl9CiAgICAgICAgJHtwLndhdGVyX2wgPyBgPGRpdiBjbGFzcz0icm93IHNtYWxsIiBzdHlsZT0iZ2FwOjhweCI+JHtpYygnd2F0ZXInKX08c3Bhbj7Xmdei15Mg157XmdedOiA8YiBjbGFzcz0ibnVtIj4ke251bShwLndhdGVyX2wpfTwvYj4g15zXmdeY16gg15HXmdeV1508L3NwYW4+PC9kaXY+YCA6ICcnfQogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvc2VjdGlvbj4KICA8c2VjdGlvbiBzdHlsZT0ibWFyZ2luLXRvcDoyMnB4Ij48aDI+15TXkNeo15XXl9eV16og16nXnNeZPC9oMj4KICAgICR7KHAubWVhbHMgfHwgW10pLmxlbmd0aCA\/IGA8ZGl2IGNsYXNzPSJ0aW1lbGluZSI+JHtwLm1lYWxzLm1hcCgobSkgPT4gYAogICAgICA8YXJ0aWNsZSBjbGFzcz0ibWVhbCBjYXJkIGNhcmQtdGlnaHQiPgogICAgICAgIDxkaXYgY2xhc3M9InJvdyBiZXR3ZWVuIj48aDMgc3R5bGU9Im1hcmdpbjowIj4ke2VzYyhtLm5hbWUpfTwvaDM+JHttLnRpbWUgPyBgPHNwYW4gY2xhc3M9ImNoaXAgbnVtIj4ke2VzYyhtLnRpbWUpfTwvc3Bhbj5gIDogJyd9PC9kaXY+CiAgICAgICAgJHsobS5pdGVtcyB8fCBbXSkubGVuZ3RoID8gYDx1bD4ke20uaXRlbXMubWFwKCh4KSA9PiBgPGxpPiR7ZXNjKHgpfTwvbGk+YCkuam9pbignJyl9PC91bD5gIDogJyd9CiAgICAgICAgJHsobS5hbHRlcm5hdGl2ZXMgfHwgW10pLmZpbHRlcihCb29sZWFuKS5sZW5ndGggPyBgPGRpdiBjbGFzcz0iYWx0cyI+PGI+15fXnNeV16TXldeqOjwvYj48dWw+JHttLmFsdGVybmF0aXZlcy5maWx0ZXIoQm9vbGVhbikubWFwKCh4KSA9PiBgPGxpPiR7ZXNjKHgpfTwvbGk+YCkuam9pbignJyl9PC91bD48L2Rpdj5gIDogJyd9CiAgICAgIDwvYXJ0aWNsZT5gKS5qb2luKCcnKX08L2Rpdj5gIDogZW1wdHlIVE1MKCfXkNeZ158g15DXqNeV15fXldeqINeR16rXpNeo15nXmCDXoteT15nXmdefJywgJ2FwcGxlJyl9CiAgPC9zZWN0aW9uPgogICR7cC5ub3RlcyA\/IGA8c2VjdGlvbiBjbGFzcz0iY2FyZCIgc3R5bGU9Im1hcmdpbi10b3A6NnB4Ij48aDI+15TXoteo15XXqiDXlNee15DXnteg16o8L2gyPjxwIGNsYXNzPSJxdW90ZSI+JHtlc2MocC5ub3Rlcyl9PC9wPjwvc2VjdGlvbj5gIDogJyd9YDsKfQphc3luYyBmdW5jdGlvbiB2aWV3TnV0cml0aW9uKHZpLCBzZXEpIHsKICBkb2N1bWVudC50aXRsZSA9ICfXqteW15XXoNeUIHwg15TXkNeW15XXqCDXlNeQ15nXqdeZJzsKICBjb25zdCBwID0gYXdhaXQgZ2V0QWN0aXZlTnV0cml0aW9uUGxhbihTLm1lLmlkKTsKICBpZiAoc2VxICE9PSByb3V0ZVNlcSkgcmV0dXJuOwogIGlmICghcCkgeyB2aS5pbm5lckhUTUwgPSBgPGgxPteq15bXldeg15Q8L2gxPjxkaXYgY2xhc3M9ImNhcmQiPiR7ZW1wdHlIVE1MKCfXlNeq16TXqNeZ15gg16nXnNeaINei15XXkyDXkdeU15vXoNeULiDXlNeV15Ag15nXldek15nXoiDXm9eQ158g15HXqNeS16Ig16nXmdei15zXlC4nLCAnYXBwbGUnKX08L2Rpdj5gOyByZXR1cm47IH0KICB2aS5pbm5lckhUTUwgPSBgPGgxPiR7ZXNjKHAudGl0bGUpfTwvaDE+JHtudXRyaXRpb25IVE1MKHApfWA7Cn0KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgUFJPR1JFU1MgKHNoYXJlZCBieSB0cmFpbmVlICsgYWRtaW4pCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KY29uc3QgTUVBUyA9IFsKICBbJ3dlaWdodCcsICfXntep16fXnCAo16ci15IpJ10sIFsnYm9keV9mYXQnLCAn15DXl9eV15Yg16nXldee158nXSwgWyd3YWlzdCcsICfXnteV16rXoNeZ15nXnSddLCBbJ2hpcHMnLCAn15DXktefJ10sCiAgWydjaGVzdCcsICfXl9eW15QnXSwgWydhcm0nLCAn15bXqNeV16InXSwgWyd0aGlnaCcsICfXmdeo15onXSwgWydnbHV0ZXMnLCAn15nXqdeR158nXQpdOwphc3luYyBmdW5jdGlvbiByZW5kZXJQcm9ncmVzc1NlY3Rpb24oYm94LCB0cmFpbmVlLCBvcHRzID0ge30pIHsKICBjb25zdCB0aWQgPSB0cmFpbmVlLmlkOwogIGJveC5pbm5lckhUTUwgPSBsb2FkaW5nSFRNTCgpOwogIGNvbnN0IGxvZ3MgPSBhd2FpdCBnZXRQcm9ncmVzcyh0aWQpOwogIGNvbnN0IHdpdGhQaG90b3MgPSBsb2dzLmZpbHRlcigobCkgPT4gKGwucGhvdG9fcGF0aHMgfHwgW10pLmxlbmd0aCk7CiAgY29uc3QgZm9ybU9wZW4gPSAhIW9wdHMub3BlbkZvcm07CiAgYm94LmlubmVySFRNTCA9IGAKICA8c2VjdGlvbiBjbGFzcz0iY2FyZCIgc3R5bGU9Im1hcmdpbi1ib3R0b206MTZweCI+CiAgICA8ZGl2IGNsYXNzPSJjYXJkLWhlYWQiPjxoMj7XoteT15vXldefINee15PXk9eZ1508L2gyPjxidXR0b24gY2xhc3M9ImJ0biBidG4tc20gJHtmb3JtT3BlbiA\/ICdidG4tZ2hvc3QnIDogJ2J0bi1wcmltYXJ5J30iIGlkPSJwZi10b2dnbGUiIGFyaWEtZXhwYW5kZWQ9IiR7Zm9ybU9wZW59IiBhcmlhLWNvbnRyb2xzPSJwZiI+JHtmb3JtT3BlbiA\/ICfXodeS15nXqNeUJyA6IGljKCdwbHVzJykgKyAnINee15PXmdeT15Qg15fXk9ep15QnfTwvYnV0dG9uPjwvZGl2PgogICAgPGZvcm0gaWQ9InBmIiBjbGFzcz0iJHtmb3JtT3BlbiA\/ICcnIDogJ2hpZGRlbid9IiBub3ZhbGlkYXRlPgogICAgICA8ZGl2IGNsYXNzPSJmaWVsZHMtMiI+CiAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbCBmb3I9InBmLWRhdGUiPteq15DXqNeZ15o8L2xhYmVsPjxpbnB1dCBjbGFzcz0iaW5wdXQiIHR5cGU9ImRhdGUiIGlkPSJwZi1kYXRlIiB2YWx1ZT0iJHt0b2RheUlTTygpfSIgbWF4PSIke3RvZGF5SVNPKCl9IiByZXF1aXJlZD48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsIGZvcj0icGYtd2VpZ2h0Ij7Xntep16fXnCAo16ci15IpPC9sYWJlbD48aW5wdXQgY2xhc3M9ImlucHV0IiBpZD0icGYtd2VpZ2h0IiBpbnB1dG1vZGU9ImRlY2ltYWwiIHBsYWNlaG9sZGVyPSLXnNeT15XXktee15QgNjIuNCI+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGV0YWlscyBzdHlsZT0ibWFyZ2luLWJvdHRvbToxMnB4Ij48c3VtbWFyeSBjbGFzcz0ibGlua2lzaCIgc3R5bGU9ImRpc3BsYXk6aW5saW5lLWJsb2NrIj7XlNeZ16fXpNeZ150g15XXkNeX15XXliDXqdeV157XnyAo16Ei154pPC9zdW1tYXJ5PgogICAgICAgIDxkaXYgY2xhc3M9ImZpZWxkcy0zIiBzdHlsZT0ibWFyZ2luLXRvcDo4cHgiPiR7TUVBUy5zbGljZSgxKS5tYXAoKFtrLCBsXSkgPT4gYDxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWwgZm9yPSJwZi0ke2t9Ij4ke2x9PC9sYWJlbD48aW5wdXQgY2xhc3M9ImlucHV0IiBpZD0icGYtJHtrfSIgaW5wdXRtb2RlPSJkZWNpbWFsIj48L2Rpdj5gKS5qb2luKCcnKX08L2Rpdj4KICAgICAgPC9kZXRhaWxzPgogICAgICA8ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsIGZvcj0icGYtbm90ZXMiPteU16LXqNeV16o8L2xhYmVsPjx0ZXh0YXJlYSBjbGFzcz0iaW5wdXQiIGlkPSJwZi1ub3RlcyIgcm93cz0iMiI+PC90ZXh0YXJlYT48L2Rpdj4KICAgICAgPGxhYmVsIGNsYXNzPSJmaWxlLWRyb3AiIGZvcj0icGYtcGhvdG9zIj4ke2ljKCdjYW1lcmEnLCAnaWNvbiBpY29uLWxnJyl9PHNwYW4+PGI+16rXnteV16DXldeqINeU16rXp9eT157XldeqPC9iPjxicj48c3BhbiBjbGFzcz0ibXV0ZWQgc21hbGwiIGlkPSJwZi1waG90b3MtbGJsIj7Xl9eW15nXqiwg16bXkyDXldeS15Eg4oCTINeR15DXldeq15Qg16rXkNeV16jXlCAo15zXkCDXl9eV15HXlCk8L3NwYW4+PC9zcGFuPjwvbGFiZWw+CiAgICAgIDxpbnB1dCBjbGFzcz0ic3Itb25seSIgdHlwZT0iZmlsZSIgaWQ9InBmLXBob3RvcyIgYWNjZXB0PSJpbWFnZS9qcGVnLGltYWdlL3BuZyxpbWFnZS93ZWJwLGltYWdlL2hlaWMsaW1hZ2UvaGVpZiIgbXVsdGlwbGU+CiAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZXJyb3IiIGlkPSJwZi1lcnIiIHJvbGU9ImFsZXJ0Ij48L2Rpdj4KICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IGJ0bi1ibG9jayIgdHlwZT0ic3VibWl0Ij7Xqdee15nXqNeqINee15PXmdeT15Q8L2J1dHRvbj4KICAgIDwvZm9ybT4KICA8L3NlY3Rpb24+CiAgPHNlY3Rpb24gY2xhc3M9ImNhcmQiIHN0eWxlPSJtYXJnaW4tYm90dG9tOjE2cHgiPjxoMj7XnteS157XqiDXntep16fXnDwvaDI+CiAgICAke2xvZ3MuZmlsdGVyKChsKSA9PiBsLndlaWdodCAhPSBudWxsKS5sZW5ndGggPj0gMiA\/IGA8ZGl2IGNsYXNzPSJjaGFydC1ib3giPjxjYW52YXMgaWQ9IndjaGFydCIgYXJpYS1sYWJlbD0i15LXqNejINee16nXp9ecINec15DXldeo15og15bXntefIiByb2xlPSJpbWciPjwvY2FudmFzPjwvZGl2PmAgOiBgPHAgY2xhc3M9Im11dGVkIj7XlNeS16jXoyDXmdeV16TXmdeiINeQ15fXqNeZINep16rXmSDXnteT15nXk9eV16og157Xqden15wg15zXpNeX15XXqi48L3A+YH0KICA8L3NlY3Rpb24+CiAgPHNlY3Rpb24gY2xhc3M9ImNhcmQiIHN0eWxlPSJtYXJnaW4tYm90dG9tOjE2cHgiPjxoMj7Xm9ecINeU157Xk9eZ15PXldeqPC9oMj4KICAgICR7bG9ncy5sZW5ndGggPyBgPGRpdiBjbGFzcz0idGFibGUtd3JhcCI+PHRhYmxlIGNsYXNzPSJkYXRhIj48dGhlYWQ+PHRyPjx0aCBzY29wZT0iY29sIj7XqteQ16jXmdeaPC90aD4ke01FQVMubWFwKChbLCBsXSkgPT4gYDx0aCBzY29wZT0iY29sIj4ke2x9PC90aD5gKS5qb2luKCcnKX08dGggc2NvcGU9ImNvbCI+16rXnteV16DXldeqPC90aD48dGggc2NvcGU9ImNvbCI+15TXoteo15XXqjwvdGg+PHRoIHNjb3BlPSJjb2wiPjxzcGFuIGNsYXNzPSJzci1vbmx5Ij7XpNei15XXnNeV16o8L3NwYW4+PC90aD48L3RyPjwvdGhlYWQ+CiAgICA8dGJvZHk+JHtsb2dzLnNsaWNlKCkucmV2ZXJzZSgpLm1hcCgobCkgPT4gYDx0cj48dGQ+JHtmbXREYXRlKGwubG9nX2RhdGUpfTwvdGQ+JHtNRUFTLm1hcCgoW2tdKSA9PiBgPHRkIGNsYXNzPSJudW0iPiR7bnVtKGxba10pfTwvdGQ+YCkuam9pbignJyl9PHRkIGNsYXNzPSJudW0iPiR7KGwucGhvdG9fcGF0aHMgfHwgW10pLmxlbmd0aCB8fCAn4oCUJ308L3RkPjx0ZCBzdHlsZT0id2hpdGUtc3BhY2U6bm9ybWFsO21pbi13aWR0aDoxNDBweCI+JHtlc2MobC5ub3RlcyB8fCAnJyl9PC90ZD4KICAgICAgPHRkPjxidXR0b24gY2xhc3M9Imljb24tYnRuIGpzLWRlbC1sb2ciIGRhdGEtaWQ9IiR7bC5pZH0iIGFyaWEtbGFiZWw9Itee15fXmden16og157Xk9eZ15PXlCDXni0ke2ZtdERhdGUobC5sb2dfZGF0ZSl9Ij4ke2ljKCd0cmFzaCcpfTwvYnV0dG9uPjwvdGQ+PC90cj5gKS5qb2luKCcnKX08L3Rib2R5PjwvdGFibGU+PC9kaXY+YCA6IGVtcHR5SFRNTCgn16LXldeTINeQ15nXnyDXnteT15nXk9eV16onLCAnY2hhcnQnKX0KICA8L3NlY3Rpb24+CiAgPHNlY3Rpb24gY2xhc3M9ImNhcmQiPjxoMj7XnNek16DXmSAvINeQ15fXqNeZPC9oMj4KICAgICR7d2l0aFBob3Rvcy5sZW5ndGggPyBgCiAgICAgIDxkaXYgY2xhc3M9ImZpZWxkcy0yIj4KICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsIGZvcj0iY21wLWEiPtec16TXoNeZPC9sYWJlbD48c2VsZWN0IGNsYXNzPSJpbnB1dCIgaWQ9ImNtcC1hIj4ke3dpdGhQaG90b3MubWFwKChsLCBpKSA9PiBgPG9wdGlvbiB2YWx1ZT0iJHtsLmlkfSIgJHtpID09PSAwID8gJ3NlbGVjdGVkJyA6ICcnfT4ke2ZtdERhdGUobC5sb2dfZGF0ZSl9PC9vcHRpb24+YCkuam9pbignJyl9PC9zZWxlY3Q+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbCBmb3I9ImNtcC1iIj7XkNeX16jXmTwvbGFiZWw+PHNlbGVjdCBjbGFzcz0iaW5wdXQiIGlkPSJjbXAtYiI+JHt3aXRoUGhvdG9zLm1hcCgobCwgaSkgPT4gYDxvcHRpb24gdmFsdWU9IiR7bC5pZH0iICR7aSA9PT0gd2l0aFBob3Rvcy5sZW5ndGggLSAxID8gJ3NlbGVjdGVkJyA6ICcnfT4ke2ZtdERhdGUobC5sb2dfZGF0ZSl9PC9vcHRpb24+YCkuam9pbignJyl9PC9zZWxlY3Q+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGlkPSJjbXAiIGNsYXNzPSJjb21wYXJlIj48L2Rpdj5gIDogYDxwIGNsYXNzPSJtdXRlZCI+15vXqdeq16LXnNeZINeq157Xldeg15XXqiDXkdee15PXmdeT15XXqiwg16rXldeb15zXmSDXnNeU16nXldeV16og15vXkNefINeR15nXnyDXqteQ16jXmdeb15nXnS48L3A+YH0KICA8L3NlY3Rpb24+YDsKCiAgY29uc3QgdG9nZ2xlID0gJCgnI3BmLXRvZ2dsZScsIGJveCk7CiAgdG9nZ2xlLm9uY2xpY2sgPSAoKSA9PiB7CiAgICBjb25zdCBmID0gJCgnI3BmJywgYm94KTsgY29uc3Qgb3BlbiA9IGYuY2xhc3NMaXN0LnRvZ2dsZSgnaGlkZGVuJykgPT09IGZhbHNlOwogICAgdG9nZ2xlLnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsIFN0cmluZyhvcGVuKSk7CiAgICB0b2dnbGUuY2xhc3NOYW1lID0gJ2J0biBidG4tc20gJyArIChvcGVuID8gJ2J0bi1naG9zdCcgOiAnYnRuLXByaW1hcnknKTsKICAgIHRvZ2dsZS5pbm5lckhUTUwgPSBvcGVuID8gJ9eh15LXmdeo15QnIDogaWMoJ3BsdXMnKSArICcg157Xk9eZ15PXlCDXl9eT16nXlCc7CiAgICBpZiAob3BlbikgJCgnI3BmLXdlaWdodCcsIGJveCkuZm9jdXMoKTsKICB9OwogIGlmIChmb3JtT3Blbikgc2V0VGltZW91dCgoKSA9PiAkKCcjcGYtd2VpZ2h0JywgYm94KSAmJiAkKCcjcGYtd2VpZ2h0JywgYm94KS5mb2N1cygpLCA1MCk7CiAgJCgnI3BmLXBob3RvcycsIGJveCkub25jaGFuZ2UgPSAoZSkgPT4geyBjb25zdCBuID0gZS50YXJnZXQuZmlsZXMubGVuZ3RoOyAkKCcjcGYtcGhvdG9zLWxibCcsIGJveCkudGV4dENvbnRlbnQgPSBuID8gYNeg15HXl9eo15UgJHtufSDXqtee15XXoNeV16pgIDogJ9eX15bXmdeqLCDXpteTINeV15LXkSDigJMg15HXkNeV16rXlCDXqteQ15XXqNeUICjXnNeQINeX15XXkdeUKSc7IH07CiAgJCgnI3BmJywgYm94KS5vbnN1Ym1pdCA9IGFzeW5jIChlKSA9PiB7CiAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICBjb25zdCBidG4gPSAkKCcjcGYgYnV0dG9uW3R5cGU9c3VibWl0XScsIGJveCk7IGNvbnN0IGVyciA9ICQoJyNwZi1lcnInLCBib3gpOyBlcnIudGV4dENvbnRlbnQgPSAnJzsKICAgIGNvbnN0IHJvdyA9IHsgdHJhaW5lZV9pZDogdGlkLCBsb2dfZGF0ZTogJCgnI3BmLWRhdGUnLCBib3gpLnZhbHVlIHx8IHRvZGF5SVNPKCksIG5vdGVzOiB2YWxPck51bGwoJCgnI3BmLW5vdGVzJywgYm94KS52YWx1ZSkgfTsKICAgIE1FQVMuZm9yRWFjaCgoW2tdKSA9PiB7IHJvd1trXSA9IG51bU9yTnVsbCgkKCcjcGYtJyArIGssIGJveCkudmFsdWUpOyB9KTsKICAgIGlmIChNRUFTLmV2ZXJ5KChba10pID0+IHJvd1trXSA9PT0gbnVsbCkgJiYgIXJvdy5ub3RlcyAmJiAhJCgnI3BmLXBob3RvcycsIGJveCkuZmlsZXMubGVuZ3RoKSB7IGVyci50ZXh0Q29udGVudCA9ICfXmdepINec157XnNeQINec16TXl9eV16og157Xk9eTINeQ15fXkywg15TXoteo15Qg15DXlSDXqtee15XXoNeUJzsgcmV0dXJuOyB9CiAgICBpZiAocm93LndlaWdodCAhPT0gbnVsbCAmJiAocm93LndlaWdodCA8IDMwIHx8IHJvdy53ZWlnaHQgPiAyNTApKSB7IGVyci50ZXh0Q29udGVudCA9ICfXntep16fXnCDXnNeQINeq16fXmdefJzsgcmV0dXJuOyB9CiAgICBzZXRCdXN5KGJ0biwgdHJ1ZSwgJ9ep15XXnteo16rigKYnKTsKICAgIHRyeSB7CiAgICAgIGNvbnN0IGZpbGVzID0gQXJyYXkuZnJvbSgkKCcjcGYtcGhvdG9zJywgYm94KS5maWxlcyB8fCBbXSk7CiAgICAgIGNvbnN0IHBhdGhzID0gW107CiAgICAgIGZvciAoY29uc3QgZiBvZiBmaWxlcykgewogICAgICAgIGlmIChmLnNpemUgPiAxMCAqIDEwMjQgKiAxMDI0KSB0aHJvdyBuZXcgRXJyb3IoYNeU16fXldeR16UgJHtmLm5hbWV9INeS15PXldecINeeLTEwTUJgKTsKICAgICAgICBjb25zdCBleHQgPSAoZi5uYW1lLnNwbGl0KCcuJykucG9wKCkgfHwgJ2pwZycpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvW15hLXowLTldL2csICcnKS5zbGljZSgwLCA1KSB8fCAnanBnJzsKICAgICAgICBjb25zdCBwYXRoID0gYCR7dGlkfS8ke3Jvdy5sb2dfZGF0ZX0tJHsoY3J5cHRvLnJhbmRvbVVVSUQgPyBjcnlwdG8ucmFuZG9tVVVJRCgpIDogRGF0ZS5ub3coKSArICctJyArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpKX0uJHtleHR9YDsKICAgICAgICBjb25zdCB7IGVycm9yIH0gPSBhd2FpdCBzYi5zdG9yYWdlLmZyb20oQlVDS0VUKS51cGxvYWQocGF0aCwgZiwgeyBjb250ZW50VHlwZTogZi50eXBlIHx8ICdpbWFnZS9qcGVnJywgdXBzZXJ0OiBmYWxzZSB9KTsKICAgICAgICBpZiAoZXJyb3IpIHRocm93IGVycm9yOwogICAgICAgIHBhdGhzLnB1c2gocGF0aCk7CiAgICAgIH0KICAgICAgcm93LnBob3RvX3BhdGhzID0gcGF0aHM7CiAgICAgIGF3YWl0IHEoc2IuZnJvbSgncHJvZ3Jlc3NfbG9ncycpLmluc2VydChyb3cpKTsKICAgICAgdG9hc3QoJ9eU157Xk9eZ15PXlCDXoNep157XqNeUJyk7CiAgICAgIHJlbmRlclByb2dyZXNzU2VjdGlvbihib3gsIHRyYWluZWUsIG9wdHMuYWRtaW4gPyB7IGFkbWluOiB0cnVlIH0gOiB7fSk7CiAgICB9IGNhdGNoIChleCkgeyBlcnIudGV4dENvbnRlbnQgPSBlcnJNc2coZXgpOyBzZXRCdXN5KGJ0biwgZmFsc2UpOyB9CiAgfTsKICAkJCgnLmpzLWRlbC1sb2cnLCBib3gpLmZvckVhY2goKGIpID0+IChiLm9uY2xpY2sgPSBhc3luYyAoKSA9PiB7CiAgICBpZiAoIWNvbmZpcm0oJ9ec157Xl9eV16cg15DXqiDXlNee15PXmdeT15Qg15TXlteVPycpKSByZXR1cm47CiAgICBjb25zdCBsb2cgPSBsb2dzLmZpbmQoKGwpID0+IGwuaWQgPT09IGIuZGF0YXNldC5pZCk7CiAgICB0cnkgewogICAgICBpZiAobG9nICYmIChsb2cucGhvdG9fcGF0aHMgfHwgW10pLmxlbmd0aCkgYXdhaXQgc2Iuc3RvcmFnZS5mcm9tKEJVQ0tFVCkucmVtb3ZlKGxvZy5waG90b19wYXRocyk7CiAgICAgIGF3YWl0IHEoc2IuZnJvbSgncHJvZ3Jlc3NfbG9ncycpLmRlbGV0ZSgpLmVxKCdpZCcsIGIuZGF0YXNldC5pZCkpOwogICAgICB0b2FzdCgn15TXnteT15nXk9eUINeg157Xl9en15QnKTsKICAgICAgcmVuZGVyUHJvZ3Jlc3NTZWN0aW9uKGJveCwgdHJhaW5lZSwgb3B0cy5hZG1pbiA\/IHsgYWRtaW46IHRydWUgfSA6IHt9KTsKICAgIH0gY2F0Y2ggKGV4KSB7IHRvYXN0KGVyck1zZyhleCksICdlcnInKTsgfQogIH0pKTsKCiAgLy8gY2hhcnQKICBjb25zdCB3bCA9IGxvZ3MuZmlsdGVyKChsKSA9PiBsLndlaWdodCAhPSBudWxsKTsKICBpZiAod2wubGVuZ3RoID49IDIgJiYgd2luZG93LkNoYXJ0ICYmICQoJyN3Y2hhcnQnLCBib3gpKSB7CiAgICBkZXN0cm95Q2hhcnRzKCk7CiAgICBjb25zdCBjdHggPSAkKCcjd2NoYXJ0JywgYm94KS5nZXRDb250ZXh0KCcyZCcpOwogICAgY29uc3QgZ3JhZCA9IGN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLCAwLCAwLCAyNjApOwogICAgZ3JhZC5hZGRDb2xvclN0b3AoMCwgJ3JnYmEoMjU1LDkwLDMxLC4zNSknKTsgZ3JhZC5hZGRDb2xvclN0b3AoMSwgJ3JnYmEoMjU1LDkwLDMxLDApJyk7CiAgICBjb25zdCBkcyA9IFt7IGxhYmVsOiAn157Xqden15wnLCBkYXRhOiB3bC5tYXAoKGwpID0+IE51bWJlcihsLndlaWdodCkpLCBib3JkZXJDb2xvcjogJyNGRjVBMUYnLCBiYWNrZ3JvdW5kQ29sb3I6IGdyYWQsIGZpbGw6IHRydWUsIHRlbnNpb246IDAuMzUsIHBvaW50UmFkaXVzOiA0LCBwb2ludEJhY2tncm91bmRDb2xvcjogJyMwNTA0MDMnLCBwb2ludEJvcmRlckNvbG9yOiAnI0ZGNUExRicsIHBvaW50Qm9yZGVyV2lkdGg6IDIsIGJvcmRlcldpZHRoOiAyLjUgfV07CiAgICBpZiAodHJhaW5lZS50YXJnZXRfd2VpZ2h0KSBkcy5wdXNoKHsgbGFiZWw6ICfXmdei15MnLCBkYXRhOiB3bC5tYXAoKCkgPT4gTnVtYmVyKHRyYWluZWUudGFyZ2V0X3dlaWdodCkpLCBib3JkZXJDb2xvcjogJ3JnYmEoMTU1LDE0NiwxMzgsLjcpJywgYm9yZGVyRGFzaDogWzYsIDZdLCBwb2ludFJhZGl1czogMCwgYm9yZGVyV2lkdGg6IDEuNSwgZmlsbDogZmFsc2UgfSk7CiAgICBTLmNoYXJ0ID0gbmV3IENoYXJ0KGN0eCwgewogICAgICB0eXBlOiAnbGluZScsCiAgICAgIGRhdGE6IHsgbGFiZWxzOiB3bC5tYXAoKGwpID0+IGZtdFNob3J0KGwubG9nX2RhdGUpKSwgZGF0YXNldHM6IGRzIH0sCiAgICAgIG9wdGlvbnM6IHsKICAgICAgICByZXNwb25zaXZlOiB0cnVlLCBtYWludGFpbkFzcGVjdFJhdGlvOiBmYWxzZSwgYW5pbWF0aW9uOiB7IGR1cmF0aW9uOiA1MDAgfSwgbGF5b3V0OiB7IHBhZGRpbmc6IHsgbGVmdDogMTIsIHJpZ2h0OiA0IH0gfSwKICAgICAgICBwbHVnaW5zOiB7IGxlZ2VuZDogeyBkaXNwbGF5OiBkcy5sZW5ndGggPiAxLCBsYWJlbHM6IHsgY29sb3I6ICcjOWI5MjhhJywgZm9udDogeyBmYW1pbHk6ICdIZWVibycgfSwgYm94V2lkdGg6IDE0IH0gfSwgdG9vbHRpcDogeyBydGw6IHRydWUsIGNhbGxiYWNrczogeyBsYWJlbDogKGMpID0+IGAke2MuZGF0YXNldC5sYWJlbH06ICR7Yy5wYXJzZWQueX0g16ci15JgIH0gfSB9LAogICAgICAgIHNjYWxlczogewogICAgICAgICAgeDogeyByZXZlcnNlOiB0cnVlLCB0aWNrczogeyBjb2xvcjogJyM5YjkyOGEnLCBmb250OiB7IGZhbWlseTogJ0hlZWJvJyB9IH0sIGdyaWQ6IHsgY29sb3I6ICdyZ2JhKDQyLDI5LDIxLC42KScgfSB9LAogICAgICAgICAgeTogeyBwb3NpdGlvbjogJ3JpZ2h0JywgdGlja3M6IHsgY29sb3I6ICcjOWI5MjhhJywgZm9udDogeyBmYW1pbHk6ICdIZWVibycgfSB9LCBncmlkOiB7IGNvbG9yOiAncmdiYSg0MiwyOSwyMSwuNiknIH0gfQogICAgICAgIH0KICAgICAgfQogICAgfSk7CiAgfQoKICAvLyBiZWZvcmUvYWZ0ZXIKICBpZiAod2l0aFBob3Rvcy5sZW5ndGgpIHsKICAgIGNvbnN0IHVybENhY2hlID0ge307CiAgICBjb25zdCBzaWduID0gYXN5bmMgKHBhdGhzKSA9PiB7CiAgICAgIGNvbnN0IG5lZWQgPSBwYXRocy5maWx0ZXIoKHApID0+ICF1cmxDYWNoZVtwXSk7CiAgICAgIGlmIChuZWVkLmxlbmd0aCkgewogICAgICAgIGNvbnN0IHsgZGF0YSwgZXJyb3IgfSA9IGF3YWl0IHNiLnN0b3JhZ2UuZnJvbShCVUNLRVQpLmNyZWF0ZVNpZ25lZFVybHMobmVlZCwgMzYwMCk7CiAgICAgICAgaWYgKGVycm9yKSB0aHJvdyBlcnJvcjsKICAgICAgICAoZGF0YSB8fCBbXSkuZm9yRWFjaCgoZCkgPT4geyBpZiAoZC5zaWduZWRVcmwpIHVybENhY2hlW2QucGF0aF0gPSBkLnNpZ25lZFVybDsgfSk7CiAgICAgIH0KICAgICAgcmV0dXJuIHBhdGhzLm1hcCgocCkgPT4gdXJsQ2FjaGVbcF0pOwogICAgfTsKICAgIGNvbnN0IGRyYXcgPSBhc3luYyAoKSA9PiB7CiAgICAgIGNvbnN0IGEgPSB3aXRoUGhvdG9zLmZpbmQoKGwpID0+IGwuaWQgPT09ICQoJyNjbXAtYScsIGJveCkudmFsdWUpOwogICAgICBjb25zdCBiMiA9IHdpdGhQaG90b3MuZmluZCgobCkgPT4gbC5pZCA9PT0gJCgnI2NtcC1iJywgYm94KS52YWx1ZSk7CiAgICAgIGNvbnN0IGNtcCA9ICQoJyNjbXAnLCBib3gpOwogICAgICBjbXAuaW5uZXJIVE1MID0gYDxkaXYgY2xhc3M9InBoIiBzdHlsZT0iZ3JpZC1jb2x1bW46MS8tMTthc3BlY3QtcmF0aW86YXV0byI+JHtsb2FkaW5nSFRNTCgn15jXldei158g16rXnteV16DXldeq4oCmJyl9PC9kaXY+YDsKICAgICAgdHJ5IHsKICAgICAgICBjb25zdCBbdWEsIHViXSA9IGF3YWl0IFByb21pc2UuYWxsKFtzaWduKGEucGhvdG9fcGF0aHMpLCBzaWduKGIyLnBob3RvX3BhdGhzKV0pOwogICAgICAgIGNvbnN0IGZpZyA9IChsLCB1cmxzLCBsYWJlbCkgPT4gYDxmaWd1cmU+PGRpdiBjbGFzcz0icGgiPiR7dXJsc1swXSA\/IGA8aW1nIHNyYz0iJHtlc2ModXJsc1swXSl9IiBhbHQ9IiR7bGFiZWx9IOKAkyAke2ZtdERhdGUobC5sb2dfZGF0ZSl9IiBsb2FkaW5nPSJsYXp5Ij5gIDogJ9eU16rXnteV16DXlCDXnNeQINeW157Xmdeg15QnfTwvZGl2PgogICAgICAgICAgPGZpZ2NhcHRpb24+JHtsYWJlbH0gwrcgJHtmbXREYXRlKGwubG9nX2RhdGUpfSR7bC53ZWlnaHQgPyBgIMK3IDxzcGFuIGNsYXNzPSJudW0iPiR7bnVtKGwud2VpZ2h0KX08L3NwYW4+INenIteSYCA6ICcnfTwvZmlnY2FwdGlvbj4KICAgICAgICAgICR7dXJscy5sZW5ndGggPiAxID8gYDxkaXYgY2xhc3M9InRodW1icyIgc3R5bGU9Im1hcmdpbi10b3A6NnB4Ij4ke3VybHMuc2xpY2UoMSkubWFwKCh1LCBpKSA9PiB1ID8gYDxhIGhyZWY9IiR7ZXNjKHUpfSIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPjxpbWcgc3JjPSIke2VzYyh1KX0iIGFsdD0i16rXnteV16DXlCDXoNeV16HXpNeqICR7aSArIDJ9IiBsb2FkaW5nPSJsYXp5Ij48L2E+YCA6ICcnKS5qb2luKCcnKX08L2Rpdj5gIDogJyd9PC9maWd1cmU+YDsKICAgICAgICBjbXAuaW5uZXJIVE1MID0gZmlnKGEsIHVhLCAn15zXpNeg15knKSArIGZpZyhiMiwgdWIsICfXkNeX16jXmScpOwogICAgICB9IGNhdGNoIChleCkgeyBjbXAuaW5uZXJIVE1MID0gZXJyb3JIVE1MKGV4KTsgfQogICAgfTsKICAgICQoJyNjbXAtYScsIGJveCkub25jaGFuZ2UgPSBkcmF3OyAkKCcjY21wLWInLCBib3gpLm9uY2hhbmdlID0gZHJhdzsKICAgIGRyYXcoKTsKICB9Cn0KYXN5bmMgZnVuY3Rpb24gdmlld1Byb2dyZXNzKHZpLCBzZXEsIGFyZ3MpIHsKICBkb2N1bWVudC50aXRsZSA9ICfXntei16fXkSB8INeU15DXlteV16gg15TXkNeZ16nXmSc7CiAgdmkuaW5uZXJIVE1MID0gYDxoMT7Xntei16fXkSDXlNeq16fXk9ee15XXqjwvaDE+PGRpdiBpZD0icGJveCI+PC9kaXY+YDsKICBhd2FpdCByZW5kZXJQcm9ncmVzc1NlY3Rpb24oJCgnI3Bib3gnLCB2aSksIFMubWUsIHsgb3BlbkZvcm06IGFyZ3NbMF0gPT09ICduZXcnIH0pOwp9CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIE1FU1NBR0VTIChzaGFyZWQpCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KYXN5bmMgZnVuY3Rpb24gcmVuZGVyVGhyZWFkKGJveCwgdHJhaW5lZUlkLCBhcykgewogIGJveC5pbm5lckhUTUwgPSBsb2FkaW5nSFRNTCgpOwogIGNvbnN0IG1zZ3MgPSBhd2FpdCBnZXRNZXNzYWdlcyh0cmFpbmVlSWQpOwogIGNvbnN0IG1pbmVTZW5kZXIgPSBhcyA9PT0gJ2NvYWNoJyA\/ICdjb2FjaCcgOiAndHJhaW5lZSc7CiAgYm94LmlubmVySFRNTCA9IGAKICAgIDxkaXYgY2xhc3M9ImNhcmQiPgogICAgICA8ZGl2IGNsYXNzPSJ0aHJlYWQiIGlkPSJ0aHJlYWQiIGFyaWEtbGl2ZT0icG9saXRlIj4KICAgICAgICAke21zZ3MubGVuZ3RoID8gbXNncy5tYXAoKG0pID0+IGA8ZGl2IGNsYXNzPSJidWJibGUgJHttLnNlbmRlciA9PT0gbWluZVNlbmRlciA\/ICdtaW5lJyA6ICd0aGVpcnMnfSI+PHNwYW4gY2xhc3M9InNyLW9ubHkiPiR7bS5zZW5kZXIgPT09ICdjb2FjaCcgPyAn15TXnteQ157XoNeqJyA6ICfXlNee16rXkNee16DXqid9Ojwvc3Bhbj4ke2VzYyhtLmJvZHkpfTxzcGFuIGNsYXNzPSJtZXRhIj4ke20uc2VuZGVyID09PSAnY29hY2gnID8gJ9eU157XkNee16DXqicgOiAoYXMgPT09ICdjb2FjaCcgPyAn15TXnteq15DXnteg16onIDogJ9eQ16DXmScpfSDCtyAke2ZtdERUKG0uY3JlYXRlZF9hdCl9PC9zcGFuPjwvZGl2PmApLmpvaW4oJycpIDogZW1wdHlIVE1MKCfXkNeZ158g16LXk9eZ15nXnyDXlNeV15PXoteV16ouINeQ16TXqdeoINec15vXqteV15Eg15vXkNefINep15DXnNeUINec157XkNee16DXqi4nLCAnY2hhdCcpfQogICAgICA8L2Rpdj4KICAgICAgPGZvcm0gY2xhc3M9ImNvbXBvc2VyIiBpZD0iY29tcG9zZXIiPgogICAgICAgIDxsYWJlbCBmb3I9Im1zZy1ib2R5IiBjbGFzcz0ic3Itb25seSI+15TXldeT16LXlDwvbGFiZWw+CiAgICAgICAgPHRleHRhcmVhIGNsYXNzPSJpbnB1dCIgaWQ9Im1zZy1ib2R5IiByb3dzPSIxIiBtYXhsZW5ndGg9IjQwMDAiIHBsYWNlaG9sZGVyPSIke2FzID09PSAnY29hY2gnID8gJ9eb16rXmdeR16og15TXldeT16LXlCDXnNee16rXkNee16DXquKApicgOiAn15vXqteR15kg15TXldeT16LXlCDXnNee15DXnteg16rigKYnfSIgcmVxdWlyZWQ+PC90ZXh0YXJlYT4KICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiIHR5cGU9InN1Ym1pdCIgYXJpYS1sYWJlbD0i16nXnNeZ15fXlCIgc3R5bGU9InBhZGRpbmc6MCAxNnB4Ij4ke2ljKCdzZW5kJyl9PC9idXR0b24+CiAgICAgIDwvZm9ybT4KICAgIDwvZGl2PmA7CiAgY29uc3QgdGggPSAkKCcjdGhyZWFkJywgYm94KTsgdGguc2Nyb2xsVG9wID0gdGguc2Nyb2xsSGVpZ2h0OwogIGNvbnN0IHRhID0gJCgnI21zZy1ib2R5JywgYm94KTsKICB0YS5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGUpID0+IHsgaWYgKGUua2V5ID09PSAnRW50ZXInICYmIChlLmN0cmxLZXkgfHwgZS5tZXRhS2V5KSkgJCgnI2NvbXBvc2VyJywgYm94KS5yZXF1ZXN0U3VibWl0KCk7IH0pOwogICQoJyNjb21wb3NlcicsIGJveCkub25zdWJtaXQgPSBhc3luYyAoZSkgPT4gewogICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgY29uc3QgYm9keSA9IHRhLnZhbHVlLnRyaW0oKTsgaWYgKCFib2R5KSByZXR1cm47CiAgICBjb25zdCBidG4gPSAkKCcjY29tcG9zZXIgYnV0dG9uJywgYm94KTsgYnRuLmRpc2FibGVkID0gdHJ1ZTsKICAgIHRyeSB7CiAgICAgIGF3YWl0IHEoc2IuZnJvbSgnbWVzc2FnZXMnKS5pbnNlcnQoeyB0cmFpbmVlX2lkOiB0cmFpbmVlSWQsIHNlbmRlcjogbWluZVNlbmRlciwgYm9keSB9KSk7CiAgICAgIGF3YWl0IHJlbmRlclRocmVhZChib3gsIHRyYWluZWVJZCwgYXMpOwogICAgICAkKCcjbXNnLWJvZHknLCBib3gpLmZvY3VzKCk7CiAgICB9IGNhdGNoIChleCkgeyB0b2FzdChlcnJNc2coZXgpLCAnZXJyJyk7IGJ0bi5kaXNhYmxlZCA9IGZhbHNlOyB9CiAgfTsKICBjb25zdCB1bnJlYWRPdGhlciA9IG1zZ3Muc29tZSgobSkgPT4gbS5zZW5kZXIgIT09IG1pbmVTZW5kZXIgJiYgIW0ucmVhZF9hdCk7CiAgaWYgKHVucmVhZE90aGVyKSB7IHNiLnJwYygnbWFya190aHJlYWRfcmVhZCcsIHsgcF90cmFpbmVlOiB0cmFpbmVlSWQgfSkudGhlbigoKSA9PiByZWZyZXNoVW5yZWFkKCkpOyB9Cn0KYXN5bmMgZnVuY3Rpb24gdmlld01lc3NhZ2VzKHZpKSB7CiAgZG9jdW1lbnQudGl0bGUgPSAn15TXldeT16LXldeqIHwg15TXkNeW15XXqCDXlNeQ15nXqdeZJzsKICB2aS5pbm5lckhUTUwgPSBgPGgxPteU15XXk9ei15XXqjwvaDE+PHAgY2xhc3M9Im11dGVkIj7XqdeZ15fXlCDXmdep15nXqNeUINei150g15TXnteQ157XoNeqPC9wPjxkaXYgaWQ9InRib3giPjwvZGl2PmA7CiAgYXdhaXQgcmVuZGVyVGhyZWFkKCQoJyN0Ym94JywgdmkpLCBTLm1lLmlkLCAndHJhaW5lZScpOwp9CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIFBST0ZJTEUKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwphc3luYyBmdW5jdGlvbiB2aWV3UHJvZmlsZSh2aSwgc2VxKSB7CiAgZG9jdW1lbnQudGl0bGUgPSAn16TXqNeV16TXmdecIHwg15TXkNeW15XXqCDXlNeQ15nXqdeZJzsKICBjb25zdCBtZSA9IGF3YWl0IHEoc2IuZnJvbSgndHJhaW5lZXMnKS5zZWxlY3QoJyonKS5lcSgnaWQnLCBTLm1lLmlkKS5zaW5nbGUoKSk7CiAgaWYgKHNlcSAhPT0gcm91dGVTZXEpIHJldHVybjsKICBTLm1lID0gbWU7CiAgdmkuaW5uZXJIVE1MID0gYAogIDxoMT7XlNek16jXldek15nXnCDXqdec15k8L2gxPgogIDxkaXYgY2xhc3M9ImdyaWQgZ3JpZC0yIj4KICAgIDxzZWN0aW9uIGNsYXNzPSJjYXJkIj4KICAgICAgPGgyPtek16jXmNeZ150g15DXmdep15nXmdedPC9oMj4KICAgICAgPGZvcm0gaWQ9InByIiBub3ZhbGlkYXRlPgogICAgICAgIDxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWwgZm9yPSJwci1uYW1lIj7XqdedINee15zXkDwvbGFiZWw+PGlucHV0IGNsYXNzPSJpbnB1dCIgaWQ9InByLW5hbWUiIGF1dG9jb21wbGV0ZT0ibmFtZSIgdmFsdWU9IiR7ZXNjKG1lLmZ1bGxfbmFtZSl9IiByZXF1aXJlZCBtYXhsZW5ndGg9IjEyMCI+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbCBmb3I9InByLXBob25lIj7XmNec16TXldefPC9sYWJlbD48aW5wdXQgY2xhc3M9ImlucHV0IiBpZD0icHItcGhvbmUiIHR5cGU9InRlbCIgYXV0b2NvbXBsZXRlPSJ0ZWwiIHZhbHVlPSIke2VzYyhtZS5waG9uZSB8fCAnJyl9IiBtYXhsZW5ndGg9IjMwIj48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZHMtMiI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsIGZvcj0icHItYmlydGgiPteq15DXqNeZ15og15zXmdeT15Q8L2xhYmVsPjxpbnB1dCBjbGFzcz0iaW5wdXQiIGlkPSJwci1iaXJ0aCIgdHlwZT0iZGF0ZSIgdmFsdWU9IiR7ZXNjKG1lLmJpcnRoX2RhdGUgfHwgJycpfSI+PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsIGZvcj0icHItaGVpZ2h0Ij7XkteV15HXlCAo16Ei154pPC9sYWJlbD48aW5wdXQgY2xhc3M9ImlucHV0IiBpZD0icHItaGVpZ2h0IiBpbnB1dG1vZGU9ImRlY2ltYWwiIHZhbHVlPSIke2VzYyhtZS5oZWlnaHRfY20gPz8gJycpfSI+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1lcnJvciIgaWQ9InByLWVyciIgcm9sZT0iYWxlcnQiPjwvZGl2PgogICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgdHlwZT0ic3VibWl0Ij7Xqdee15nXqNeqINep15nXoNeV15nXmdedPC9idXR0b24+CiAgICAgIDwvZm9ybT4KICAgIDwvc2VjdGlvbj4KICAgIDxzZWN0aW9uIGNsYXNzPSJjYXJkIj4KICAgICAgPGgyPteU16rXldeb16DXmdeqINep15zXmTwvaDI+CiAgICAgIDxkbCBzdHlsZT0ibWFyZ2luOjA7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczphdXRvIDFmcjtnYXA6MTBweCAxNnB4Ij4KICAgICAgICA8ZHQgY2xhc3M9Im11dGVkIj7XkNeZ157XmdeZ15w8L2R0PjxkZCBzdHlsZT0ibWFyZ2luOjAiIGNsYXNzPSJsdHIiPiR7ZXNjKG1lLmVtYWlsKX08L2RkPgogICAgICAgIDxkdCBjbGFzcz0ibXV0ZWQiPteq15XXm9eg15nXqjwvZHQ+PGRkIHN0eWxlPSJtYXJnaW46MCI+JHtlc2MobWUucHJvZ3JhbSB8fCAn4oCUJyl9PC9kZD4KICAgICAgICA8ZHQgY2xhc3M9Im11dGVkIj7XnteY16jXlDwvZHQ+PGRkIHN0eWxlPSJtYXJnaW46MCI+JHtlc2MobWUuZ29hbCB8fCAn4oCUJyl9PC9kZD4KICAgICAgICA8ZHQgY2xhc3M9Im11dGVkIj7XlNeq15fXnNeUPC9kdD48ZGQgc3R5bGU9Im1hcmdpbjowIj4ke2ZtdERhdGUobWUuc3RhcnRfZGF0ZSl9PC9kZD4KICAgICAgICA8ZHQgY2xhc3M9Im11dGVkIj7XodeZ15XXnTwvZHQ+PGRkIHN0eWxlPSJtYXJnaW46MCI+JHtmbXREYXRlKG1lLmVuZF9kYXRlKX08L2RkPgogICAgICAgIDxkdCBjbGFzcz0ibXV0ZWQiPtee16nXp9ecINeU16rXl9ec16rXmTwvZHQ+PGRkIHN0eWxlPSJtYXJnaW46MCIgY2xhc3M9Im51bSI+JHtudW0obWUuc3RhcnRfd2VpZ2h0KX08L2RkPgogICAgICAgIDxkdCBjbGFzcz0ibXV0ZWQiPtee16nXp9ecINeZ16LXkzwvZHQ+PGRkIHN0eWxlPSJtYXJnaW46MCIgY2xhc3M9Im51bSI+JHtudW0obWUudGFyZ2V0X3dlaWdodCl9PC9kZD4KICAgICAgPC9kbD4KICAgICAgPHAgY2xhc3M9ImhpbnQiIHN0eWxlPSJtYXJnaW4tdG9wOjEycHgiPtec16nXmdeg15XXmSDXpNeo15jXmSDXlNeq15XXm9eg15nXqiDXkNeVINeU15DXmdee15nXmdecIOKAkyDXpNeg15kg15zXnteQ157XoNeqLjwvcD4KICAgIDwvc2VjdGlvbj4KICAgIDxzZWN0aW9uIGNsYXNzPSJjYXJkIj4KICAgICAgPGgyPtep15nXoNeV15kg16HXmdeh157XlDwvaDI+CiAgICAgIDxmb3JtIGlkPSJwdyIgbm92YWxpZGF0ZT4KICAgICAgICA8aW5wdXQgdHlwZT0iZW1haWwiIGF1dG9jb21wbGV0ZT0idXNlcm5hbWUiIHZhbHVlPSIke2VzYyhtZS5lbWFpbCl9IiBjbGFzcz0ic3Itb25seSIgdGFiaW5kZXg9Ii0xIiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbCBmb3I9InB3LTEiPteh15nXodee15Qg15fXk9ep15Q8L2xhYmVsPjxpbnB1dCBjbGFzcz0iaW5wdXQiIGlkPSJwdy0xIiB0eXBlPSJwYXNzd29yZCIgYXV0b2NvbXBsZXRlPSJuZXctcGFzc3dvcmQiIG1pbmxlbmd0aD0iOCIgcmVxdWlyZWQ+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbCBmb3I9InB3LTIiPteQ15nXnteV16og16HXmdeh157XlDwvbGFiZWw+PGlucHV0IGNsYXNzPSJpbnB1dCIgaWQ9InB3LTIiIHR5cGU9InBhc3N3b3JkIiBhdXRvY29tcGxldGU9Im5ldy1wYXNzd29yZCIgbWlubGVuZ3RoPSI4IiByZXF1aXJlZD48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWVycm9yIiBpZD0icHctZXJyIiByb2xlPSJhbGVydCI+PC9kaXY+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIiB0eXBlPSJzdWJtaXQiPiR7aWMoJ2tleScpfSDXoteT15vXldefINeh15nXodee15Q8L2J1dHRvbj4KICAgICAgPC9mb3JtPgogICAgPC9zZWN0aW9uPgogICAgPHNlY3Rpb24gY2xhc3M9ImNhcmQiPgogICAgICA8aDI+15nXpteZ15DXlDwvaDI+CiAgICAgIDxwIGNsYXNzPSJtdXRlZCI+15TXqteg16rXp9eV16og157XlNee15vXqdeZ16gg15TXlteULjwvcD4KICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kYW5nZXIiIGlkPSJsb2dvdXQiPiR7aWMoJ2xvZ291dCcpfSDXlNeq16DXqten15XXqjwvYnV0dG9uPgogICAgICA8cCBzdHlsZT0ibWFyZ2luLXRvcDoxNnB4Ij48YSBocmVmPSIke01BSU5fU0lURX0iPiR7aWMoJ2V4dGVybmFsJyl9INec15DXqteoINeU16jXkNep15k8L2E+PC9wPgogICAgPC9zZWN0aW9uPgogIDwvZGl2PmA7CiAgJCgnI3ByJykub25zdWJtaXQgPSBhc3luYyAoZSkgPT4gewogICAgZS5wcmV2ZW50RGVmYXVsdCgpOyBjb25zdCBidG4gPSAkKCcjcHIgYnV0dG9uW3R5cGU9c3VibWl0XScpOyBjb25zdCBlcnIgPSAkKCcjcHItZXJyJyk7IGVyci50ZXh0Q29udGVudCA9ICcnOwogICAgY29uc3QgZnVsbF9uYW1lID0gJCgnI3ByLW5hbWUnKS52YWx1ZS50cmltKCk7CiAgICBpZiAoIWZ1bGxfbmFtZSkgeyBlcnIudGV4dENvbnRlbnQgPSAn15nXqSDXnNee15zXkCDXqdedJzsgcmV0dXJuOyB9CiAgICBjb25zdCBoID0gbnVtT3JOdWxsKCQoJyNwci1oZWlnaHQnKS52YWx1ZSk7CiAgICBpZiAoaCAhPT0gbnVsbCAmJiAoaCA8IDEwMCB8fCBoID4gMjMwKSkgeyBlcnIudGV4dENvbnRlbnQgPSAn15LXldeR15Qg15zXkCDXqten15nXnyAoMTAw4oCTMjMwINehIteeKSc7IHJldHVybjsgfQogICAgc2V0QnVzeShidG4sIHRydWUsICfXqdeV157XqNeq4oCmJyk7CiAgICB0cnkgewogICAgICBTLm1lID0gYXdhaXQgcShzYi5mcm9tKCd0cmFpbmVlcycpLnVwZGF0ZSh7IGZ1bGxfbmFtZSwgcGhvbmU6IHZhbE9yTnVsbCgkKCcjcHItcGhvbmUnKS52YWx1ZSksIGJpcnRoX2RhdGU6IHZhbE9yTnVsbCgkKCcjcHItYmlydGgnKS52YWx1ZSksIGhlaWdodF9jbTogaCB9KS5lcSgnaWQnLCBtZS5pZCkuc2VsZWN0KCcqJykuc2luZ2xlKCkpOwogICAgICB0b2FzdCgn15TXpNeo15jXmdedINeg16nXnteo15UnKTsKICAgIH0gY2F0Y2ggKGV4KSB7IGVyci50ZXh0Q29udGVudCA9IGVyck1zZyhleCk7IH0KICAgIHNldEJ1c3koYnRuLCBmYWxzZSk7CiAgfTsKICAkKCcjcHcnKS5vbnN1Ym1pdCA9IGFzeW5jIChlKSA9PiB7CiAgICBlLnByZXZlbnREZWZhdWx0KCk7IGNvbnN0IGJ0biA9ICQoJyNwdyBidXR0b25bdHlwZT1zdWJtaXRdJyk7IGNvbnN0IGVyciA9ICQoJyNwdy1lcnInKTsgZXJyLnRleHRDb250ZW50ID0gJyc7CiAgICBjb25zdCBhID0gJCgnI3B3LTEnKS52YWx1ZSwgYiA9ICQoJyNwdy0yJykudmFsdWU7CiAgICBpZiAoYS5sZW5ndGggPCA4KSB7IGVyci50ZXh0Q29udGVudCA9ICfXlNeh15nXodee15Qg16bXqNeZ15vXlCDXnNeU15vXmdecINec16TXl9eV16ogOCDXqteV15XXmdedJzsgcmV0dXJuOyB9CiAgICBpZiAoYSAhPT0gYikgeyBlcnIudGV4dENvbnRlbnQgPSAn15TXodeZ16HXnteQ15XXqiDXkNeZ16DXnyDXqteV15DXnteV16onOyByZXR1cm47IH0KICAgIHNldEJ1c3koYnRuLCB0cnVlLCAn157XoteT15vXoNeq4oCmJyk7CiAgICB0cnkgeyBjb25zdCB7IGVycm9yIH0gPSBhd2FpdCBzYi5hdXRoLnVwZGF0ZVVzZXIoeyBwYXNzd29yZDogYSB9KTsgaWYgKGVycm9yKSB0aHJvdyBlcnJvcjsgdG9hc3QoJ9eU16HXmdeh157XlCDXoteV15PXm9eg15QnKTsgJCgnI3B3JykucmVzZXQoKTsgfQogICAgY2F0Y2ggKGV4KSB7IGVyci50ZXh0Q29udGVudCA9IGVyck1zZyhleCk7IH0KICAgIHNldEJ1c3koYnRuLCBmYWxzZSk7CiAgfTsKICAkKCcjbG9nb3V0Jykub25jbGljayA9IGFzeW5jICgpID0+IHsgYXdhaXQgc2IuYXV0aC5zaWduT3V0KCk7IGxvY2F0aW9uLmhhc2ggPSAnJzsgfTsKfQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBRE1JTjogTElTVCArIEFERAogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCmNvbnN0IHN0YXR1c1BpbGwgPSAocykgPT4gYDxzcGFuIGNsYXNzPSJwaWxsICR7ZXNjKHMpfSI+JHtlc2MoU1RBVFVTW3NdIHx8IHMpfTwvc3Bhbj5gOwpmdW5jdGlvbiB3YUludml0ZUxpbmsodCwgY29kZSkgewogIGNvbnN0IG1zZyA9IGDXlNeZ15kgJHtmaXJzdE5hbWUodC5mdWxsX25hbWUpfSwg15TXkNeW15XXqCDXlNeQ15nXqdeZINep15zXmiDXkS1FTUEgR0FMSU0g157Xldeb158uXG5cbteb16DXmdeh15Q6ICR7bWVtYmVyc1VybCgpfVxu15HXnNep15XXoNeZ16ogIteU16TXotec16og15fXqdeR15XXnyIg157XlteZ16DXmdedOlxu15DXmdee15nXmdecOiAke3QuZW1haWx9XG7Xp9eV15Mg15TXpNei15zXlDogJHtjb2RlfVxu15XXkdeV15fXqNeZ150g16HXmdeh157XlCDXkNeZ16nXmdeqLlxuXG7XkdeU16bXnNeX15QhYDsKICBjb25zdCBwID0gd2FQaG9uZSh0LnBob25lKTsKICByZXR1cm4gYGh0dHBzOi8vd2EubWUvJHtwfT90ZXh0PSR7ZW5jb2RlVVJJQ29tcG9uZW50KG1zZyl9YDsKfQpmdW5jdGlvbiBjb2RlQ2FyZEhUTUwodCwgY29kZSwgdGl0bGUgPSAn16fXldeTINeU16TXotec15QnKSB7CiAgcmV0dXJuIGA8c2VjdGlvbiBjbGFzcz0iY2FyZCBlbWJlciIgaWQ9ImNvZGUtY2FyZCI+CiAgICA8ZGl2IGNsYXNzPSJleWVicm93Ij4ke2VzYyh0aXRsZSl9PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJjb2RlLWJveCBudW0iIGFyaWEtbGFiZWw9Iten15XXkyDXlNek16LXnNeUICR7ZXNjKGNvZGUuc3BsaXQoJycpLmpvaW4oJyAnKSl9Ij4ke2VzYyhjb2RlKX08L2Rpdj4KICAgIDxwIGNsYXNzPSJtdXRlZCBzbWFsbCIgc3R5bGU9Im1hcmdpbjoxMHB4IDAiPtep15zXl9eZINecJHtlc2MoZmlyc3ROYW1lKHQuZnVsbF9uYW1lKSl9INeQ16og15TXp9eV15MuINeU15nXkCDXqteW15nXnyDXkNeV16rXlSDXotedINeU15DXmdee15nXmdecIDxzcGFuIGNsYXNzPSJsdHIiPiR7ZXNjKHQuZW1haWwpfTwvc3Bhbj4g15HXnNep15XXoNeZ16ogIteU16TXotec16og15fXqdeR15XXnyIg15XXqteR15fXqCDXodeZ16HXnteULjwvcD4KICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgIDxhIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIiBocmVmPSIke2VzYyh3YUludml0ZUxpbmsodCwgY29kZSkpfSI+JHtpYygnd2hhdHNhcHAnKX0g16nXnNeZ15fXlCDXkdeV15XXkNeY16HXkNekPC9hPgogICAgICA8YnV0dG9uIGNsYXNzPSJidG4ganMtY29weSIgdHlwZT0iYnV0dG9uIiBkYXRhLWNvcHk9IiR7ZXNjKGNvZGUpfSI+JHtpYygnY29weScpfSDXlNei16rXp9eqINen15XXkzwvYnV0dG9uPgogICAgPC9kaXY+CiAgICAkeyF0LnBob25lID8gJzxwIGNsYXNzPSJoaW50IiBzdHlsZT0ibWFyZ2luLXRvcDo4cHgiPteQ15nXnyDXnteh16TXqCDXmNec16TXldefIOKAkyDXldeV15DXmNeh15DXpCDXmdeZ16TXqteXINec15HXl9eZ16jXqiDXkNeZ16kg16fXqdeoLjwvcD4nIDogJyd9CiAgPC9zZWN0aW9uPmA7Cn0KZnVuY3Rpb24gYmluZENvcHkocm9vdCkgewogICQkKCcuanMtY29weScsIHJvb3QpLmZvckVhY2goKGIpID0+IChiLm9uY2xpY2sgPSBhc3luYyAoKSA9PiB7CiAgICB0cnkgeyBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChiLmRhdGFzZXQuY29weSk7IHRvYXN0KCfXlNeV16LXqtenJyk7IH0gY2F0Y2ggKF8pIHsgcHJvbXB0KCfXlNei16rXmden15k6JywgYi5kYXRhc2V0LmNvcHkpOyB9CiAgfSkpOwp9CmFzeW5jIGZ1bmN0aW9uIHZpZXdBZG1pbkxpc3QodmksIHNlcSkgewogIGRvY3VtZW50LnRpdGxlID0gJ9ee16rXkNee16DXldeqIHwg16DXmdeU15XXnCc7CiAgY29uc3Qgcm93cyA9IGF3YWl0IHEoc2IuZnJvbSgndHJhaW5lZV9vdmVydmlldycpLnNlbGVjdCgnKicpLm9yZGVyKCdjcmVhdGVkX2F0JywgeyBhc2NlbmRpbmc6IGZhbHNlIH0pKTsKICBpZiAoc2VxICE9PSByb3V0ZVNlcSkgcmV0dXJuOwogIHZpLmlubmVySFRNTCA9IGAKICAgIDxkaXYgY2xhc3M9InJvdyBiZXR3ZWVuIiBzdHlsZT0ibWFyZ2luLWJvdHRvbToxMnB4Ij48aDEgc3R5bGU9Im1hcmdpbjowIj7Xnteq15DXnteg15XXqjwvaDE+PGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IiBpZD0iYWRkLWJ0biIgYXJpYS1leHBhbmRlZD0iZmFsc2UiIGFyaWEtY29udHJvbHM9ImFkZC1ib3giPiR7aWMoJ3BsdXMnKX0g15TXldeh16TXqiDXnteq15DXnteg16o8L2J1dHRvbj48L2Rpdj4KICAgIDxkaXYgaWQ9ImFkZC1ib3giIGNsYXNzPSJoaWRkZW4iIHN0eWxlPSJtYXJnaW4tYm90dG9tOjE2cHgiPjwvZGl2PgogICAgPGRpdiBjbGFzcz0idG9vbGJhciIgcm9sZT0ic2VhcmNoIj4KICAgICAgPGxhYmVsIGNsYXNzPSJzci1vbmx5IiBmb3I9ImYtcSI+15fXmdek15XXqTwvbGFiZWw+PGlucHV0IGNsYXNzPSJpbnB1dCIgaWQ9ImYtcSIgdHlwZT0ic2VhcmNoIiBwbGFjZWhvbGRlcj0i15fXmdek15XXqSDXnNek15kg16nXnSwg15DXmdee15nXmdecINeQ15Ug15jXnNek15XXnyI+CiAgICAgIDxsYWJlbCBjbGFzcz0ic3Itb25seSIgZm9yPSJmLXMiPteh15jXmNeV16E8L2xhYmVsPjxzZWxlY3QgY2xhc3M9ImlucHV0IiBpZD0iZi1zIj48b3B0aW9uIHZhbHVlPSIiPteb15wg15TXodeY15jXldeh15nXnTwvb3B0aW9uPiR7T2JqZWN0LmVudHJpZXMoU1RBVFVTKS5tYXAoKFtrLCB2XSkgPT4gYDxvcHRpb24gdmFsdWU9IiR7a30iPiR7dn08L29wdGlvbj5gKS5qb2luKCcnKX08L3NlbGVjdD4KICAgICAgPGxhYmVsIGNsYXNzPSJzci1vbmx5IiBmb3I9ImYtcCI+16rXldeb16DXmdeqPC9sYWJlbD48c2VsZWN0IGNsYXNzPSJpbnB1dCIgaWQ9ImYtcCI+PG9wdGlvbiB2YWx1ZT0iIj7Xm9ecINeU16rXldeb16DXmdeV16o8L29wdGlvbj4ke1BST0dSQU1TLm1hcCgocCkgPT4gYDxvcHRpb24+JHtlc2MocCl9PC9vcHRpb24+YCkuam9pbignJyl9PC9zZWxlY3Q+CiAgICA8L2Rpdj4KICAgIDxkaXYgaWQ9InQtbGlzdCI+PC9kaXY+YDsKICBjb25zdCBkcmF3ID0gKCkgPT4gewogICAgY29uc3QgcXEgPSAkKCcjZi1xJykudmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCk7IGNvbnN0IHN0ID0gJCgnI2YtcycpLnZhbHVlOyBjb25zdCBwciA9ICQoJyNmLXAnKS52YWx1ZTsKICAgIGNvbnN0IGYgPSByb3dzLmZpbHRlcigocikgPT4gKCFzdCB8fCByLnN0YXR1cyA9PT0gc3QpICYmICghcHIgfHwgci5wcm9ncmFtID09PSBwcikgJiYgKCFxcSB8fCBbci5mdWxsX25hbWUsIHIuZW1haWwsIHIucGhvbmVdLnNvbWUoKHgpID0+IFN0cmluZyh4IHx8ICcnKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHFxKSkpKTsKICAgICQoJyN0LWxpc3QnKS5pbm5lckhUTUwgPSBmLmxlbmd0aCA\/IGYubWFwKChyKSA9PiB7CiAgICAgIGNvbnN0IGxhc3QgPSBbci5sYXN0X3Byb2dyZXNzX2RhdGUsIHIubGFzdF93b3Jrb3V0X2RhdGVdLmZpbHRlcihCb29sZWFuKS5zb3J0KCkucG9wKCk7CiAgICAgIHJldHVybiBgPGEgY2xhc3M9InQtcm93IiBocmVmPSIjL2FkbWluL3QvJHtyLmlkfSI+CiAgICAgICAgPHNwYW4gY2xhc3M9ImF2YXRhciIgYXJpYS1oaWRkZW49InRydWUiPiR7ZXNjKGluaXRpYWxzKHIuZnVsbF9uYW1lKSl9PC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJ0LW1haW4iPjxzcGFuIGNsYXNzPSJuIj4ke2VzYyhyLmZ1bGxfbmFtZSl9PC9zcGFuPjxzcGFuIGNsYXNzPSJzIj4ke2VzYyhyLnByb2dyYW0gfHwgJ9ec15zXkCDXqteV15vXoNeZ16onKX0gwrcgJHtsYXN0ID8gJ9ei15PXm9eV158g15DXl9eo15XXnyAnICsgZm10RGF0ZShsYXN0KSA6ICfXkNeZ158g16LXk9eb15XXoNeZ150nfTwvc3Bhbj48L3NwYW4+CiAgICAgICAgJHtyLnVucmVhZF9mcm9tX3RyYWluZWUgPiAwID8gYDxzcGFuIGNsYXNzPSJiYWRnZSIgYXJpYS1sYWJlbD0iJHtyLnVucmVhZF9mcm9tX3RyYWluZWV9INeU15XXk9ei15XXqiDXqdec15Ag16DXp9eo15DXlSI+JHtyLnVucmVhZF9mcm9tX3RyYWluZWV9PC9zcGFuPmAgOiAnJ30KICAgICAgICAke3IuYWN0aXZhdGVkX2F0ID8gc3RhdHVzUGlsbChyLnN0YXR1cykgOiAnPHNwYW4gY2xhc3M9InBpbGwgcGVuZGluZyI+157Xnteq15nXoNeUINec15TXpNei15zXlDwvc3Bhbj4nfQogICAgICA8L2E+YDsgfSkuam9pbignJykgOiBlbXB0eUhUTUwocm93cy5sZW5ndGggPyAn15DXmdefINeq15XXpteQ15XXqiDXnNeh15nXoNeV158g15TXlteUJyA6ICfXoteV15Mg15DXmdefINee16rXkNee16DXldeqLiDXlNeV16HXmdek15kg15DXqiDXlNeo15DXqdeV16DXlC4nLCAndXNlcnMnKTsKICB9OwogIFsnZi1xJywgJ2YtcycsICdmLXAnXS5mb3JFYWNoKChpZCkgPT4gJCgnIycgKyBpZCkuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBkcmF3KSk7CiAgZHJhdygpOwogICQoJyNhZGQtYnRuJykub25jbGljayA9ICgpID0+IHsKICAgIGNvbnN0IGJveCA9ICQoJyNhZGQtYm94Jyk7IGNvbnN0IG9wZW4gPSBib3guY2xhc3NMaXN0LnRvZ2dsZSgnaGlkZGVuJykgPT09IGZhbHNlOwogICAgJCgnI2FkZC1idG4nKS5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCBTdHJpbmcob3BlbikpOwogICAgaWYgKG9wZW4pIHJlbmRlckFkZEZvcm0oYm94KTsKICB9Owp9CmZ1bmN0aW9uIGFkZE1vbnRocyhpc28sIG0pIHsgY29uc3QgZCA9IHBhcnNlRGF0ZShpc28pOyBkLnNldE1vbnRoKGQuZ2V0TW9udGgoKSArIG0pOyBkLnNldE1pbnV0ZXMoZC5nZXRNaW51dGVzKCkgLSBkLmdldFRpbWV6b25lT2Zmc2V0KCkpOyByZXR1cm4gZC50b0lTT1N0cmluZygpLnNsaWNlKDAsIDEwKTsgfQpmdW5jdGlvbiByZW5kZXJBZGRGb3JtKGJveCkgewogIGJveC5pbm5lckhUTUwgPSBgPHNlY3Rpb24gY2xhc3M9ImNhcmQgZW1iZXIiPjxoMj7Xnteq15DXnteg16og15fXk9ep15Q8L2gyPgogICAgPGZvcm0gaWQ9ImFkZC1mb3JtIiBub3ZhbGlkYXRlPgogICAgICA8ZGl2IGNsYXNzPSJmaWVsZHMtMiI+CiAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbCBmb3I9ImEtbmFtZSI+16nXnSDXntec15AgKjwvbGFiZWw+PGlucHV0IGNsYXNzPSJpbnB1dCIgaWQ9ImEtbmFtZSIgcmVxdWlyZWQgbWF4bGVuZ3RoPSIxMjAiPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWwgZm9yPSJhLXBob25lIj7XmNec16TXldefICjXnNeV15XXkNeY16HXkNekKTwvbGFiZWw+PGlucHV0IGNsYXNzPSJpbnB1dCIgaWQ9ImEtcGhvbmUiIHR5cGU9InRlbCIgcGxhY2Vob2xkZXI9IjA1WC1YWFhYWFhYIj48L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWwgZm9yPSJhLWVtYWlsIj7XkNeZ157XmdeZ15wgKjwvbGFiZWw+PGlucHV0IGNsYXNzPSJpbnB1dCIgaWQ9ImEtZW1haWwiIHR5cGU9ImVtYWlsIiByZXF1aXJlZD48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iZmllbGRzLTIiPgogICAgICAgIDxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWwgZm9yPSJhLXByb2dyYW0iPteq15XXm9eg15nXqjwvbGFiZWw+PHNlbGVjdCBjbGFzcz0iaW5wdXQiIGlkPSJhLXByb2dyYW0iPjxvcHRpb24gdmFsdWU9IiI+15HXl9eZ16jXlOKApjwvb3B0aW9uPiR7UFJPR1JBTVMubWFwKChwKSA9PiBgPG9wdGlvbj4ke2VzYyhwKX08L29wdGlvbj5gKS5qb2luKCcnKX08L3NlbGVjdD48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsIGZvcj0iYS1nb2FsIj7XnteY16jXlDwvbGFiZWw+PHNlbGVjdCBjbGFzcz0iaW5wdXQiIGlkPSJhLWdvYWwiPjxvcHRpb24gdmFsdWU9IiI+15HXl9eZ16jXlOKApjwvb3B0aW9uPiR7R09BTFMubWFwKChwKSA9PiBgPG9wdGlvbj4ke2VzYyhwKX08L29wdGlvbj5gKS5qb2luKCcnKX08L3NlbGVjdD48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsIGZvcj0iYS1zdGFydCI+16rXkNeo15nXmiDXlNeq15fXnNeUPC9sYWJlbD48aW5wdXQgY2xhc3M9ImlucHV0IiBpZD0iYS1zdGFydCIgdHlwZT0iZGF0ZSIgdmFsdWU9IiR7dG9kYXlJU08oKX0iPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWwgZm9yPSJhLWVuZCI+16rXkNeo15nXmiDXodeZ15XXnTwvbGFiZWw+PGlucHV0IGNsYXNzPSJpbnB1dCIgaWQ9ImEtZW5kIiB0eXBlPSJkYXRlIj48L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImZpZWxkcy0zIj4KICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsIGZvcj0iYS1oZWlnaHQiPteS15XXkdeUPC9sYWJlbD48aW5wdXQgY2xhc3M9ImlucHV0IiBpZD0iYS1oZWlnaHQiIGlucHV0bW9kZT0iZGVjaW1hbCI+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbCBmb3I9ImEtc3ciPtee16nXp9ecINeU16rXl9ec16rXmTwvbGFiZWw+PGlucHV0IGNsYXNzPSJpbnB1dCIgaWQ9ImEtc3ciIGlucHV0bW9kZT0iZGVjaW1hbCI+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbCBmb3I9ImEtdHciPtee16nXp9ecINeZ16LXkzwvbGFiZWw+PGlucHV0IGNsYXNzPSJpbnB1dCIgaWQ9ImEtdHciIGlucHV0bW9kZT0iZGVjaW1hbCI+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJmb3JtLWVycm9yIiBpZD0iYS1lcnIiIHJvbGU9ImFsZXJ0Ij48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0icm93Ij48YnV0dG9uIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiIHR5cGU9InN1Ym1pdCI+15nXpteZ16jXlCDXlden15HXnNeqINen15XXkzwvYnV0dG9uPjxidXR0b24gY2xhc3M9ImJ0biBidG4tZ2hvc3QiIHR5cGU9ImJ1dHRvbiIgaWQ9ImEtY2FuY2VsIj7XkdeZ15jXldecPC9idXR0b24+PC9kaXY+CiAgICA8L2Zvcm0+PC9zZWN0aW9uPmA7CiAgY29uc3Qgc2V0RW5kID0gKCkgPT4geyBjb25zdCBtID0gUFJPR1JBTV9NT05USFNbJCgnI2EtcHJvZ3JhbScpLnZhbHVlXTsgaWYgKG0gJiYgJCgnI2Etc3RhcnQnKS52YWx1ZSkgJCgnI2EtZW5kJykudmFsdWUgPSBhZGRNb250aHMoJCgnI2Etc3RhcnQnKS52YWx1ZSwgbSk7IH07CiAgJCgnI2EtcHJvZ3JhbScpLm9uY2hhbmdlID0gc2V0RW5kOyAkKCcjYS1zdGFydCcpLm9uY2hhbmdlID0gc2V0RW5kOwogICQoJyNhLWNhbmNlbCcpLm9uY2xpY2sgPSAoKSA9PiB7IGJveC5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTsgJCgnI2FkZC1idG4nKS5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAnZmFsc2UnKTsgfTsKICAkKCcjYWRkLWZvcm0nKS5vbnN1Ym1pdCA9IGFzeW5jIChlKSA9PiB7CiAgICBlLnByZXZlbnREZWZhdWx0KCk7IGNvbnN0IGJ0biA9ICQoJyNhZGQtZm9ybSBidXR0b25bdHlwZT1zdWJtaXRdJyk7IGNvbnN0IGVyciA9ICQoJyNhLWVycicpOyBlcnIudGV4dENvbnRlbnQgPSAnJzsKICAgIGNvbnN0IHJvdyA9IHsKICAgICAgZnVsbF9uYW1lOiAkKCcjYS1uYW1lJykudmFsdWUudHJpbSgpLCBlbWFpbDogJCgnI2EtZW1haWwnKS52YWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKSwgcGhvbmU6IHZhbE9yTnVsbCgkKCcjYS1waG9uZScpLnZhbHVlKSwKICAgICAgcHJvZ3JhbTogdmFsT3JOdWxsKCQoJyNhLXByb2dyYW0nKS52YWx1ZSksIGdvYWw6IHZhbE9yTnVsbCgkKCcjYS1nb2FsJykudmFsdWUpLCBzdGFydF9kYXRlOiB2YWxPck51bGwoJCgnI2Etc3RhcnQnKS52YWx1ZSksIGVuZF9kYXRlOiB2YWxPck51bGwoJCgnI2EtZW5kJykudmFsdWUpLAogICAgICBoZWlnaHRfY206IG51bU9yTnVsbCgkKCcjYS1oZWlnaHQnKS52YWx1ZSksIHN0YXJ0X3dlaWdodDogbnVtT3JOdWxsKCQoJyNhLXN3JykudmFsdWUpLCB0YXJnZXRfd2VpZ2h0OiBudW1Pck51bGwoJCgnI2EtdHcnKS52YWx1ZSkKICAgIH07CiAgICBpZiAoIXJvdy5mdWxsX25hbWUpIHsgZXJyLnRleHRDb250ZW50ID0gJ9eZ16kg15zXntec15Ag16nXnSc7IHJldHVybjsgfQogICAgaWYgKCEvXlteXHNAXStAW15cc0BdK1wuW15cc0BdKyQvLnRlc3Qocm93LmVtYWlsKSkgeyBlcnIudGV4dENvbnRlbnQgPSAn15nXqSDXnNeU15bXmdefINeQ15nXnteZ15nXnCDXqten15nXnyc7IHJldHVybjsgfQogICAgc2V0QnVzeShidG4sIHRydWUsICfXmdeV16bXqNeq4oCmJyk7CiAgICB0cnkgewogICAgICBjb25zdCB0ID0gYXdhaXQgcShzYi5mcm9tKCd0cmFpbmVlcycpLmluc2VydChyb3cpLnNlbGVjdCgnKicpLnNpbmdsZSgpKTsKICAgICAgYm94LmlubmVySFRNTCA9IGNvZGVDYXJkSFRNTCh0LCB0LmFjdGl2YXRpb25fY29kZSwgYCR7dC5mdWxsX25hbWV9INeg15XXodek15Qg4oCTINen15XXkyDXlNek16LXnNeUYCkgKyBgPGRpdiBjbGFzcz0icm93IiBzdHlsZT0ibWFyZ2luLXRvcDoxMHB4Ij48YSBjbGFzcz0iYnRuIiBocmVmPSIjL2FkbWluL3QvJHt0LmlkfSI+15zXm9eo15jXmdehINeU157XqteQ157XoNeqPC9hPjwvZGl2PmA7CiAgICAgIGJpbmRDb3B5KGJveCk7CiAgICAgIHRvYXN0KCfXlNee16rXkNee16DXqiDXoNeV16HXpNeUJyk7CiAgICB9IGNhdGNoIChleCkgeyBlcnIudGV4dENvbnRlbnQgPSBlcnJNc2coZXgpOyBzZXRCdXN5KGJ0biwgZmFsc2UpOyB9CiAgfTsKICAkKCcjYS1uYW1lJykuZm9jdXMoKTsKfQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBRE1JTjogVFJBSU5FRSBERVRBSUwKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwpjb25zdCBBRE1JTl9UQUJTID0gW1snZGV0YWlscycsICfXpNeo15jXmdedJ10sIFsnd29ya291dCcsICfXkNeZ157Xldeg15nXnSddLCBbJ251dHJpdGlvbicsICfXqteW15XXoNeUJ10sIFsncHJvZ3Jlc3MnLCAn157Xoten15EnXSwgWydsb2dzJywgJ9eZ15XXntefINeQ15nXnteV16DXmdedJ10sIFsnbWVzc2FnZXMnLCAn15TXldeT16LXldeqJ11dOwphc3luYyBmdW5jdGlvbiB2aWV3QWRtaW5UcmFpbmVlKHZpLCBpZCwgdGFiLCBzZXEpIHsKICBjb25zdCB0ID0gYXdhaXQgcShzYi5mcm9tKCd0cmFpbmVlcycpLnNlbGVjdCgnKicpLmVxKCdpZCcsIGlkKS5tYXliZVNpbmdsZSgpKTsKICBpZiAoc2VxICE9PSByb3V0ZVNlcSkgcmV0dXJuOwogIGlmICghdCkgeyB2aS5pbm5lckhUTUwgPSBgPGEgY2xhc3M9ImJhY2siIGhyZWY9IiMvYWRtaW4iPiR7aWMoJ2JhY2snKX0g15fXlteo15Qg15zXqNep15nXnteUPC9hPiR7ZW1wdHlIVE1MKCfXlNee16rXkNee16DXqiDXnNeQINeg157XpteQ15QnLCAndXNlcnMnKX1gOyByZXR1cm47IH0KICBkb2N1bWVudC50aXRsZSA9IGAke3QuZnVsbF9uYW1lfSB8INeg15nXlNeV15xgOwogIHZpLmlubmVySFRNTCA9IGAKICAgIDxhIGNsYXNzPSJiYWNrIiBocmVmPSIjL2FkbWluIj4ke2ljKCdiYWNrJyl9INeb15wg15TXnteq15DXnteg15XXqjwvYT4KICAgIDxkaXYgY2xhc3M9InJvdyIgc3R5bGU9Im1hcmdpbi1ib3R0b206MTRweCI+PHNwYW4gY2xhc3M9ImF2YXRhciIgYXJpYS1oaWRkZW49InRydWUiPiR7ZXNjKGluaXRpYWxzKHQuZnVsbF9uYW1lKSl9PC9zcGFuPgogICAgICA8ZGl2IHN0eWxlPSJmbGV4OjE7bWluLXdpZHRoOjAiPjxoMSBzdHlsZT0ibWFyZ2luOjA7Zm9udC1zaXplOjEuNnJlbSI+JHtlc2ModC5mdWxsX25hbWUpfTwvaDE+PGRpdiBjbGFzcz0ibXV0ZWQgc21hbGwiPiR7ZXNjKHQucHJvZ3JhbSB8fCAn15zXnNeQINeq15XXm9eg15nXqicpfTwvZGl2PjwvZGl2PgogICAgICAke3QuYWN0aXZhdGVkX2F0ID8gc3RhdHVzUGlsbCh0LnN0YXR1cykgOiAnPHNwYW4gY2xhc3M9InBpbGwgcGVuZGluZyI+157Xnteq15nXoNeUINec15TXpNei15zXlDwvc3Bhbj4nfTwvZGl2PgogICAgPG5hdiBjbGFzcz0ic3VidGFicyIgYXJpYS1sYWJlbD0i15DXlteV16jXmSDXm9eo15jXmdehINee16rXkNee16DXqiI+JHtBRE1JTl9UQUJTLm1hcCgoW2ssIGxdKSA9PiBgPGEgaHJlZj0iIy9hZG1pbi90LyR7dC5pZH0vJHtrfSIgJHtrID09PSB0YWIgPyAnYXJpYS1jdXJyZW50PSJwYWdlIicgOiAnJ30+JHtsfTwvYT5gKS5qb2luKCcnKX08L25hdj4KICAgIDxkaXYgaWQ9InRhYi1ib2R5Ij4ke2xvYWRpbmdIVE1MKCl9PC9kaXY+YDsKICBjb25zdCBib2R5ID0gJCgnI3RhYi1ib2R5JywgdmkpOwogIGlmICh0YWIgPT09ICd3b3Jrb3V0JykgcmV0dXJuIGFkbWluV29ya291dEVkaXRvcihib2R5LCB0KTsKICBpZiAodGFiID09PSAnbnV0cml0aW9uJykgcmV0dXJuIGFkbWluTnV0cml0aW9uRWRpdG9yKGJvZHksIHQpOwogIGlmICh0YWIgPT09ICdwcm9ncmVzcycpIHJldHVybiByZW5kZXJQcm9ncmVzc1NlY3Rpb24oYm9keSwgdCwgeyBhZG1pbjogdHJ1ZSB9KTsKICBpZiAodGFiID09PSAnbG9ncycpIHsgY29uc3QgbG9ncyA9IGF3YWl0IGdldFdvcmtvdXRMb2dzKHQuaWQsIDEwMCk7IGJvZHkuaW5uZXJIVE1MID0gYDxzZWN0aW9uIGNsYXNzPSJjYXJkIj48aDI+15nXldee158g15DXmdee15XXoNeZ1508L2gyPiR7bG9nc0xpc3RIVE1MKGxvZ3MpfTwvc2VjdGlvbj5gOyByZXR1cm47IH0KICBpZiAodGFiID09PSAnbWVzc2FnZXMnKSByZXR1cm4gcmVuZGVyVGhyZWFkKGJvZHksIHQuaWQsICdjb2FjaCcpOwogIHJldHVybiBhZG1pbkRldGFpbHMoYm9keSwgdCk7Cn0KCmZ1bmN0aW9uIGFkbWluRGV0YWlscyhib2R5LCB0KSB7CiAgY29uc3Qgb3B0ID0gKGFyciwgY3VyKSA9PiBgPG9wdGlvbiB2YWx1ZT0iIj7igJQ8L29wdGlvbj5gICsgYXJyLm1hcCgocCkgPT4gYDxvcHRpb24gJHtwID09PSBjdXIgPyAnc2VsZWN0ZWQnIDogJyd9PiR7ZXNjKHApfTwvb3B0aW9uPmApLmpvaW4oJycpOwogIGJvZHkuaW5uZXJIVE1MID0gYAogIDxkaXYgY2xhc3M9ImdyaWQgZ3JpZC0yIj4KICAgIDxzZWN0aW9uIGNsYXNzPSJjYXJkIj4KICAgICAgPGgyPtek16jXmNeZINee16rXkNee16DXqjwvaDI+CiAgICAgIDxmb3JtIGlkPSJhZCIgbm92YWxpZGF0ZT4KICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsIGZvcj0iZC1uYW1lIj7XqdedINee15zXkDwvbGFiZWw+PGlucHV0IGNsYXNzPSJpbnB1dCIgaWQ9ImQtbmFtZSIgdmFsdWU9IiR7ZXNjKHQuZnVsbF9uYW1lKX0iIG1heGxlbmd0aD0iMTIwIj48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZHMtMiI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsIGZvcj0iZC1waG9uZSI+15jXnNek15XXnzwvbGFiZWw+PGlucHV0IGNsYXNzPSJpbnB1dCIgaWQ9ImQtcGhvbmUiIHR5cGU9InRlbCIgdmFsdWU9IiR7ZXNjKHQucGhvbmUgfHwgJycpfSI+PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsIGZvcj0iZC1zdGF0dXMiPteh15jXmNeV16E8L2xhYmVsPjxzZWxlY3QgY2xhc3M9ImlucHV0IiBpZD0iZC1zdGF0dXMiPiR7T2JqZWN0LmVudHJpZXMoU1RBVFVTKS5tYXAoKFtrLCB2XSkgPT4gYDxvcHRpb24gdmFsdWU9IiR7a30iICR7ayA9PT0gdC5zdGF0dXMgPyAnc2VsZWN0ZWQnIDogJyd9PiR7dn08L29wdGlvbj5gKS5qb2luKCcnKX08L3NlbGVjdD48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsIGZvcj0iZC1lbWFpbCI+15DXmdee15nXmdecPC9sYWJlbD48aW5wdXQgY2xhc3M9ImlucHV0IiBpZD0iZC1lbWFpbCIgdHlwZT0iZW1haWwiIHZhbHVlPSIke2VzYyh0LmVtYWlsKX0iICR7dC51c2VyX2lkID8gJ3JlYWRvbmx5IGFyaWEtZGVzY3JpYmVkYnk9ImQtZW1haWwtaCInIDogJyd9PiR7dC51c2VyX2lkID8gJzxzcGFuIGNsYXNzPSJoaW50IiBpZD0iZC1lbWFpbC1oIj7XlNeX16nXkdeV158g15vXkdeoINeU15XXpNei15wg4oCTINeU15DXmdee15nXmdecINeg16LXldecLjwvc3Bhbj4nIDogJyd9PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZmllbGRzLTIiPgogICAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbCBmb3I9ImQtcHJvZ3JhbSI+16rXldeb16DXmdeqPC9sYWJlbD48c2VsZWN0IGNsYXNzPSJpbnB1dCIgaWQ9ImQtcHJvZ3JhbSI+JHtvcHQoUFJPR1JBTVMsIHQucHJvZ3JhbSl9PC9zZWxlY3Q+PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsIGZvcj0iZC1nb2FsIj7XnteY16jXlDwvbGFiZWw+PHNlbGVjdCBjbGFzcz0iaW5wdXQiIGlkPSJkLWdvYWwiPiR7b3B0KEdPQUxTLCB0LmdvYWwpfTwvc2VsZWN0PjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbCBmb3I9ImQtc3RhcnQiPteU16rXl9ec15Q8L2xhYmVsPjxpbnB1dCBjbGFzcz0iaW5wdXQiIGlkPSJkLXN0YXJ0IiB0eXBlPSJkYXRlIiB2YWx1ZT0iJHtlc2ModC5zdGFydF9kYXRlIHx8ICcnKX0iPjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbCBmb3I9ImQtZW5kIj7XodeZ15XXnTwvbGFiZWw+PGlucHV0IGNsYXNzPSJpbnB1dCIgaWQ9ImQtZW5kIiB0eXBlPSJkYXRlIiB2YWx1ZT0iJHtlc2ModC5lbmRfZGF0ZSB8fCAnJyl9Ij48L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWwgZm9yPSJkLWJpcnRoIj7XqteQ16jXmdeaINec15nXk9eUPC9sYWJlbD48aW5wdXQgY2xhc3M9ImlucHV0IiBpZD0iZC1iaXJ0aCIgdHlwZT0iZGF0ZSIgdmFsdWU9IiR7ZXNjKHQuYmlydGhfZGF0ZSB8fCAnJyl9Ij48L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWwgZm9yPSJkLWhlaWdodCI+15LXldeR15QgKNehIteeKTwvbGFiZWw+PGlucHV0IGNsYXNzPSJpbnB1dCIgaWQ9ImQtaGVpZ2h0IiBpbnB1dG1vZGU9ImRlY2ltYWwiIHZhbHVlPSIke2VzYyh0LmhlaWdodF9jbSA\/PyAnJyl9Ij48L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWwgZm9yPSJkLXN3Ij7Xntep16fXnCDXlNeq15fXnNeq15k8L2xhYmVsPjxpbnB1dCBjbGFzcz0iaW5wdXQiIGlkPSJkLXN3IiBpbnB1dG1vZGU9ImRlY2ltYWwiIHZhbHVlPSIke2VzYyh0LnN0YXJ0X3dlaWdodCA\/PyAnJyl9Ij48L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWwgZm9yPSJkLXR3Ij7Xntep16fXnCDXmdei15M8L2xhYmVsPjxpbnB1dCBjbGFzcz0iaW5wdXQiIGlkPSJkLXR3IiBpbnB1dG1vZGU9ImRlY2ltYWwiIHZhbHVlPSIke2VzYyh0LnRhcmdldF93ZWlnaHQgPz8gJycpfSI+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbCBmb3I9ImQtbm90ZXMiPteU16LXqNeV16og157XkNee16DXqiAo16TXoNeZ157XmSk8L2xhYmVsPjx0ZXh0YXJlYSBjbGFzcz0iaW5wdXQiIGlkPSJkLW5vdGVzIiByb3dzPSIzIj4ke2VzYyh0LmNvYWNoX25vdGVzIHx8ICcnKX08L3RleHRhcmVhPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZXJyb3IiIGlkPSJkLWVyciIgcm9sZT0iYWxlcnQiPjwvZGl2PgogICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgdHlwZT0ic3VibWl0Ij7Xqdee15nXqNeUPC9idXR0b24+CiAgICAgIDwvZm9ybT4KICAgIDwvc2VjdGlvbj4KICAgIDxkaXYgY2xhc3M9InN0YWNrIj4KICAgICAgPHNlY3Rpb24gY2xhc3M9ImNhcmQiPgogICAgICAgIDxoMj7XkteZ16nXlCDXnNeQ15bXldeoINeU15DXmdep15k8L2gyPgogICAgICAgIDxwIGNsYXNzPSJtdXRlZCI+JHt0LmFjdGl2YXRlZF9hdCA\/IGDXlNeX16nXkdeV158g15TXldek16LXnCDXkS0ke2ZtdERhdGUodC5hY3RpdmF0ZWRfYXQuc2xpY2UoMCwgMTApKX0uYCA6ICfXlNeX16nXkdeV158g16LXldeTINec15Ag15TXldek16LXnC4nfTwvcD4KICAgICAgICA8ZGl2IGlkPSJhY2Nlc3MtYm94Ij4ke3QuYWN0aXZhdGlvbl9jb2RlID8gY29kZUNhcmRIVE1MKHQsIHQuYWN0aXZhdGlvbl9jb2RlLCB0LmFjdGl2YXRlZF9hdCA\/ICfXp9eV15Mg15zXkNeZ16TXldehINeh15nXodee15QgKNek16LXmdecKScgOiAn16fXldeTINeU16TXotec15QnKSA6ICcnfTwvZGl2PgogICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biIgaWQ9InJlc2V0LWFjY2VzcyIgc3R5bGU9Im1hcmdpbi10b3A6MTJweCI+JHtpYygna2V5Jyl9ICR7dC5hY3RpdmF0ZWRfYXQgPyAn15DXmdek15XXoSDXkteZ16nXlCDigJMg16fXldeTINeX15PXqScgOiAn15TXpNen16og16fXldeTINeX15PXqSd9PC9idXR0b24+CiAgICAgICAgPHAgY2xhc3M9ImhpbnQiIHN0eWxlPSJtYXJnaW4tdG9wOjhweCI+16fXldeTINeX15PXqSDXnteR15jXnCDXkNeqINeU16fXldeT150uINei150g15TXp9eV15Mg15TXnteq15DXnteg16og15HXldeX16jXqiDXodeZ16HXnteUINeX15PXqdeUINeR15zXqdeV16DXmdeqICLXlNek16LXnNeqINeX16nXkdeV158iLjwvcD4KICAgICAgPC9zZWN0aW9uPgogICAgICAke3QuaWQgIT09IFMubWUuaWQgPyBgPHNlY3Rpb24gY2xhc3M9ImNhcmQiPjxoMj7XnteX15nXp9eUPC9oMj48cCBjbGFzcz0ibXV0ZWQgc21hbGwiPtee15XXl9enINeQ16og15vXqNeY15nXoSDXlNee16rXkNee16DXqiDXldeb15wg15TXoNeq15XXoNeZ150g16nXnNeULiDXpNei15XXnNeUINeR15zXqteZINeU16TXmdeb15QuPC9wPjxidXR0b24gY2xhc3M9ImJ0biBidG4tZGFuZ2VyIiBpZD0iZGVsLXQiPiR7aWMoJ3RyYXNoJyl9INee15fXmden16og157XqteQ157XoNeqPC9idXR0b24+PC9zZWN0aW9uPmAgOiAnJ30KICAgIDwvZGl2PgogIDwvZGl2PmA7CiAgYmluZENvcHkoYm9keSk7CiAgJCgnI2FkJykub25zdWJtaXQgPSBhc3luYyAoZSkgPT4gewogICAgZS5wcmV2ZW50RGVmYXVsdCgpOyBjb25zdCBidG4gPSAkKCcjYWQgYnV0dG9uW3R5cGU9c3VibWl0XScpOyBjb25zdCBlcnIgPSAkKCcjZC1lcnInKTsgZXJyLnRleHRDb250ZW50ID0gJyc7CiAgICBjb25zdCByb3cgPSB7CiAgICAgIGZ1bGxfbmFtZTogJCgnI2QtbmFtZScpLnZhbHVlLnRyaW0oKSwgcGhvbmU6IHZhbE9yTnVsbCgkKCcjZC1waG9uZScpLnZhbHVlKSwgc3RhdHVzOiAkKCcjZC1zdGF0dXMnKS52YWx1ZSwKICAgICAgcHJvZ3JhbTogdmFsT3JOdWxsKCQoJyNkLXByb2dyYW0nKS52YWx1ZSksIGdvYWw6IHZhbE9yTnVsbCgkKCcjZC1nb2FsJykudmFsdWUpLCBzdGFydF9kYXRlOiB2YWxPck51bGwoJCgnI2Qtc3RhcnQnKS52YWx1ZSksIGVuZF9kYXRlOiB2YWxPck51bGwoJCgnI2QtZW5kJykudmFsdWUpLAogICAgICBiaXJ0aF9kYXRlOiB2YWxPck51bGwoJCgnI2QtYmlydGgnKS52YWx1ZSksIGhlaWdodF9jbTogbnVtT3JOdWxsKCQoJyNkLWhlaWdodCcpLnZhbHVlKSwgc3RhcnRfd2VpZ2h0OiBudW1Pck51bGwoJCgnI2Qtc3cnKS52YWx1ZSksIHRhcmdldF93ZWlnaHQ6IG51bU9yTnVsbCgkKCcjZC10dycpLnZhbHVlKSwKICAgICAgY29hY2hfbm90ZXM6IHZhbE9yTnVsbCgkKCcjZC1ub3RlcycpLnZhbHVlKQogICAgfTsKICAgIGlmICghdC51c2VyX2lkKSByb3cuZW1haWwgPSAkKCcjZC1lbWFpbCcpLnZhbHVlLnRyaW0oKS50b0xvd2VyQ2FzZSgpOwogICAgaWYgKCFyb3cuZnVsbF9uYW1lKSB7IGVyci50ZXh0Q29udGVudCA9ICfXmdepINec157XnNeQINep150nOyByZXR1cm47IH0KICAgIHNldEJ1c3koYnRuLCB0cnVlLCAn16nXldee16jXquKApicpOwogICAgdHJ5IHsgY29uc3QgbnQgPSBhd2FpdCBxKHNiLmZyb20oJ3RyYWluZWVzJykudXBkYXRlKHJvdykuZXEoJ2lkJywgdC5pZCkuc2VsZWN0KCcqJykuc2luZ2xlKCkpOyBPYmplY3QuYXNzaWduKHQsIG50KTsgaWYgKHQuaWQgPT09IFMubWUuaWQpIFMubWUgPSBudDsgdG9hc3QoJ9eg16nXnteoJyk7IH0KICAgIGNhdGNoIChleCkgeyBlcnIudGV4dENvbnRlbnQgPSBlcnJNc2coZXgpOyB9CiAgICBzZXRCdXN5KGJ0biwgZmFsc2UpOwogIH07CiAgJCgnI3Jlc2V0LWFjY2VzcycpLm9uY2xpY2sgPSBhc3luYyAoZSkgPT4gewogICAgaWYgKHQuYWN0aXZhdGVkX2F0ICYmICFjb25maXJtKCfXnNeU16TXmdenINen15XXkyDXl9eT16k\/INeU16HXmdeh157XlCDXlNeg15XXm9eX15nXqiDXqtee16nXmdeaINec16LXkdeV15Mg16LXkyDXqdeU157XqteQ157XoNeqINeq15HXl9eoINeh15nXodee15Qg15fXk9ep15Qg16LXnSDXlNen15XXky4nKSkgcmV0dXJuOwogICAgY29uc3QgYnRuID0gZS5jdXJyZW50VGFyZ2V0OyBzZXRCdXN5KGJ0biwgdHJ1ZSwgJ9ee16TXmden15TigKYnKTsKICAgIHRyeSB7CiAgICAgIGNvbnN0IGNvZGUgPSBhd2FpdCBxKHNiLnJwYygnYWRtaW5fcmVzZXRfYWNjZXNzJywgeyBwX3RyYWluZWU6IHQuaWQgfSkpOwogICAgICB0LmFjdGl2YXRpb25fY29kZSA9IGNvZGU7CiAgICAgICQoJyNhY2Nlc3MtYm94JykuaW5uZXJIVE1MID0gY29kZUNhcmRIVE1MKHQsIGNvZGUsICfXp9eV15Mg15fXk9epJyk7IGJpbmRDb3B5KCQoJyNhY2Nlc3MtYm94JykpOwogICAgICB0b2FzdCgn15TXldek16cg16fXldeTINeX15PXqScpOwogICAgfSBjYXRjaCAoZXgpIHsgdG9hc3QoZXJyTXNnKGV4KSwgJ2VycicpOyB9CiAgICBzZXRCdXN5KGJ0biwgZmFsc2UpOwogIH07CiAgY29uc3QgZGVsID0gJCgnI2RlbC10Jyk7CiAgaWYgKGRlbCkgZGVsLm9uY2xpY2sgPSBhc3luYyAoKSA9PiB7CiAgICBpZiAoIWNvbmZpcm0oYNec157Xl9eV16cg15DXqiAke3QuZnVsbF9uYW1lfSDXldeb15wg15TXoNeq15XXoNeZ150g16nXnNeUP2ApKSByZXR1cm47CiAgICB0cnkgeyBhd2FpdCBxKHNiLmZyb20oJ3RyYWluZWVzJykuZGVsZXRlKCkuZXEoJ2lkJywgdC5pZCkpOyB0b2FzdCgn16DXnteX16fXlCcpOyBsb2NhdGlvbi5oYXNoID0gJyMvYWRtaW4nOyB9CiAgICBjYXRjaCAoZXgpIHsgdG9hc3QoZXJyTXNnKGV4KSwgJ2VycicpOyB9CiAgfTsKfQoKLyogLS0tLS0tLS0tLSB3b3Jrb3V0IHBsYW4gZWRpdG9yIC0tLS0tLS0tLS0gKi8KYXN5bmMgZnVuY3Rpb24gYWRtaW5Xb3Jrb3V0RWRpdG9yKGJvZHksIHQpIHsKICBjb25zdCBwbGFuID0gYXdhaXQgZ2V0QWN0aXZlV29ya291dFBsYW4odC5pZCk7CiAgY29uc3QgZWQgPSBwbGFuID8gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh7IHRpdGxlOiBwbGFuLnRpdGxlLCBub3RlczogcGxhbi5ub3RlcyB8fCAnJywgZGF5czogcGxhbi5kYXlzIHx8IFtdIH0pKSA6IHsgdGl0bGU6ICfXqteV15vXoNeZ16og15DXmdee15XXoNeZ150nLCBub3RlczogJycsIGRheXM6IFt7IG5hbWU6ICfXmdeV150gQScsIGV4ZXJjaXNlczogW3sgbmFtZTogJycsIHNldHM6IDMsIHJlcHM6ICcxMC0xMicsIHJlc3Rfc2VjOiA2MCwgdGVtcG86ICcnLCBub3RlczogJycsIHZpZGVvX3VybDogJycgfV0gfV0gfTsKICBjb25zdCBleEZpZWxkcyA9IFtbJ25hbWUnLCAn16nXnSDXlNeq16jXkteZ15wnLCAndGV4dCddLCBbJ3NldHMnLCAn16HXmNeZ150nLCAnbnVtJ10sIFsncmVwcycsICfXl9eW16jXldeqJywgJ3RleHQnXSwgWydyZXN0X3NlYycsICfXnteg15XXl9eUICjXqdegXCcpJywgJ251bSddLCBbJ3RlbXBvJywgJ9eY157XpNeVJywgJ3RleHQnXSwgWyd2aWRlb191cmwnLCAn16fXmdep15XXqCDXnNeh16jXmNeV158nLCAndXJsJ10sIFsnbm90ZXMnLCAn15TXoteo15XXqicsICd0ZXh0J11dOwogIGNvbnN0IGRyYXcgPSAoKSA9PiB7CiAgICBib2R5LmlubmVySFRNTCA9IGAKICAgIDxzZWN0aW9uIGNsYXNzPSJjYXJkIj4KICAgICAgPGRpdiBjbGFzcz0iY2FyZC1oZWFkIj48aDI+JHtwbGFuID8gJ9ei16jXmdeb16og16rXldeb16DXmdeqINeQ15nXnteV16DXmdedJyA6ICfXqteV15vXoNeZ16og15DXmdee15XXoNeZ150g15fXk9ep15QnfTwvaDI+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWwgZm9yPSJ3ZS10aXRsZSI+16nXnSDXlNeq15XXm9eg15nXqjwvbGFiZWw+PGlucHV0IGNsYXNzPSJpbnB1dCIgaWQ9IndlLXRpdGxlIiBkYXRhLWY9InRpdGxlIiB2YWx1ZT0iJHtlc2MoZWQudGl0bGUpfSI+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWwgZm9yPSJ3ZS1ub3RlcyI+15TXoteo15XXqiDXm9ec15zXmdeV16o8L2xhYmVsPjx0ZXh0YXJlYSBjbGFzcz0iaW5wdXQiIGlkPSJ3ZS1ub3RlcyIgZGF0YS1mPSJub3RlcyIgcm93cz0iMiI+JHtlc2MoZWQubm90ZXMpfTwvdGV4dGFyZWE+PC9kaXY+CiAgICAgICR7ZWQuZGF5cy5tYXAoKGQsIGRpKSA9PiBgCiAgICAgICAgPGRpdiBjbGFzcz0iZWRpdG9yLWJsb2NrIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyIgc3R5bGU9ImFsaWduLWl0ZW1zOmZsZXgtZW5kIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQiIHN0eWxlPSJmbGV4OjE7bWFyZ2luOjAiPjxsYWJlbCBmb3I9IndkLSR7ZGl9Ij7XqdedINeU15nXldedPC9sYWJlbD48aW5wdXQgY2xhc3M9ImlucHV0IiBpZD0id2QtJHtkaX0iIGRhdGEtZGF5PSIke2RpfSIgZGF0YS1mPSJuYW1lIiB2YWx1ZT0iJHtlc2MoZC5uYW1lKX0iPjwvZGl2PgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJpY29uLWJ0biIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0icm0tZGF5IiBkYXRhLWRheT0iJHtkaX0iIGFyaWEtbGFiZWw9Itee15fXmden16ogJHtlc2MoZC5uYW1lIHx8ICfXmdeV150nKX0iPiR7aWMoJ3RyYXNoJyl9PC9idXR0b24+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICR7KGQuZXhlcmNpc2VzIHx8IFtdKS5tYXAoKHgsIHhpKSA9PiBgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImV4LWVkaXQiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyBiZXR3ZWVuIj48YiBjbGFzcz0ic21hbGwiPteq16jXkteZ15wgJHt4aSArIDF9PC9iPjxidXR0b24gY2xhc3M9Imljb24tYnRuIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJybS1leCIgZGF0YS1kYXk9IiR7ZGl9IiBkYXRhLWV4PSIke3hpfSIgYXJpYS1sYWJlbD0i157Xl9eZ16fXqiDXqteo15LXmdecICR7eGkgKyAxfSI+JHtpYygndHJhc2gnKX08L2J1dHRvbj48L2Rpdj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsIGZvcj0ieC0ke2RpfS0ke3hpfS1uYW1lIj7XqdedINeU16rXqNeS15nXnDwvbGFiZWw+PGlucHV0IGNsYXNzPSJpbnB1dCIgaWQ9IngtJHtkaX0tJHt4aX0tbmFtZSIgZGF0YS1kYXk9IiR7ZGl9IiBkYXRhLWV4PSIke3hpfSIgZGF0YS1mPSJuYW1lIiB2YWx1ZT0iJHtlc2MoeC5uYW1lKX0iPjwvZGl2PgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZpZWxkcy0zIj4ke2V4RmllbGRzLnNsaWNlKDEsIDUpLm1hcCgoW2YsIGwsIHR5XSkgPT4gYDxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWwgZm9yPSJ4LSR7ZGl9LSR7eGl9LSR7Zn0iPiR7bH08L2xhYmVsPjxpbnB1dCBjbGFzcz0iaW5wdXQiIGlkPSJ4LSR7ZGl9LSR7eGl9LSR7Zn0iICR7dHkgPT09ICdudW0nID8gJ2lucHV0bW9kZT0ibnVtZXJpYyInIDogJyd9IGRhdGEtZGF5PSIke2RpfSIgZGF0YS1leD0iJHt4aX0iIGRhdGEtZj0iJHtmfSIgZGF0YS10PSIke3R5fSIgdmFsdWU9IiR7ZXNjKHhbZl0gPz8gJycpfSI+PC9kaXY+YCkuam9pbignJyl9PC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmllbGRzLTIiPiR7ZXhGaWVsZHMuc2xpY2UoNSkubWFwKChbZiwgbCwgdHldKSA9PiBgPGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbCBmb3I9IngtJHtkaX0tJHt4aX0tJHtmfSI+JHtsfTwvbGFiZWw+PGlucHV0IGNsYXNzPSJpbnB1dCAke3R5ID09PSAndXJsJyA\/ICdsdHItaW5wdXQnIDogJyd9IiAke3R5ID09PSAndXJsJyA\/ICd0eXBlPSJ1cmwiIHBsYWNlaG9sZGVyPSJodHRwczovLyInIDogJyd9IGlkPSJ4LSR7ZGl9LSR7eGl9LSR7Zn0iIGRhdGEtZGF5PSIke2RpfSIgZGF0YS1leD0iJHt4aX0iIGRhdGEtZj0iJHtmfSIgdmFsdWU9IiR7ZXNjKHhbZl0gPz8gJycpfSI+PC9kaXY+YCkuam9pbignJyl9PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PmApLmpvaW4oJycpfQogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1zbSIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iYWRkLWV4IiBkYXRhLWRheT0iJHtkaX0iIHN0eWxlPSJtYXJnaW4tdG9wOjEycHgiPiR7aWMoJ3BsdXMnKX0g15TXldeh16TXqiDXqteo15LXmdecPC9idXR0b24+CiAgICAgICAgPC9kaXY+YCkuam9pbignJyl9CiAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJhZGQtZGF5Ij4ke2ljKCdwbHVzJyl9INeU15XXodek16og15nXldedPC9idXR0b24+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IiB0eXBlPSJidXR0b24iIGlkPSJ3ZS1zYXZlIj7Xqdee15nXqNeqINeU16rXldeb16DXmdeqPC9idXR0b24+CiAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPmA7CiAgICAkJCgnW2RhdGEtZl0nLCBib2R5KS5mb3JFYWNoKChpbnApID0+IGlucC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHsKICAgICAgY29uc3QgZiA9IGlucC5kYXRhc2V0LmY7IGxldCB2ID0gaW5wLnZhbHVlOwogICAgICBpZiAoaW5wLmRhdGFzZXQudCA9PT0gJ251bScpIHYgPSB2ID09PSAnJyA\/ICcnIDogKE51bWJlci5pc0Zpbml0ZShOdW1iZXIodikpID8gTnVtYmVyKHYpIDogdik7CiAgICAgIGlmIChpbnAuZGF0YXNldC5leCAhPT0gdW5kZWZpbmVkKSBlZC5kYXlzWytpbnAuZGF0YXNldC5kYXldLmV4ZXJjaXNlc1sraW5wLmRhdGFzZXQuZXhdW2ZdID0gdjsKICAgICAgZWxzZSBpZiAoaW5wLmRhdGFzZXQuZGF5ICE9PSB1bmRlZmluZWQpIGVkLmRheXNbK2lucC5kYXRhc2V0LmRheV1bZl0gPSB2OwogICAgICBlbHNlIGVkW2ZdID0gdjsKICAgIH0pKTsKICAgICQkKCdbZGF0YS1hY3RdJywgYm9keSkuZm9yRWFjaCgoYikgPT4gKGIub25jbGljayA9ICgpID0+IHsKICAgICAgY29uc3QgZGkgPSArYi5kYXRhc2V0LmRheSwgeGkgPSArYi5kYXRhc2V0LmV4OwogICAgICBjb25zdCBhID0gYi5kYXRhc2V0LmFjdDsKICAgICAgaWYgKGEgPT09ICdhZGQtZGF5JykgeyBjb25zdCBMID0gJ0FCQ0RFRkcnW2VkLmRheXMubGVuZ3RoXSB8fCBlZC5kYXlzLmxlbmd0aCArIDE7IGVkLmRheXMucHVzaCh7IG5hbWU6IGDXmdeV150gJHtMfWAsIGV4ZXJjaXNlczogW10gfSk7IH0KICAgICAgaWYgKGEgPT09ICdybS1kYXknICYmIGNvbmZpcm0oJ9ec157Xl9eV16cg15DXqiDXlNeZ15XXnSDXlNeW15Q\/JykpIGVkLmRheXMuc3BsaWNlKGRpLCAxKTsKICAgICAgaWYgKGEgPT09ICdhZGQtZXgnKSBlZC5kYXlzW2RpXS5leGVyY2lzZXMucHVzaCh7IG5hbWU6ICcnLCBzZXRzOiAzLCByZXBzOiAnMTAtMTInLCByZXN0X3NlYzogNjAsIHRlbXBvOiAnJywgbm90ZXM6ICcnLCB2aWRlb191cmw6ICcnIH0pOwogICAgICBpZiAoYSA9PT0gJ3JtLWV4JykgZWQuZGF5c1tkaV0uZXhlcmNpc2VzLnNwbGljZSh4aSwgMSk7CiAgICAgIGRyYXcoKTsKICAgIH0pKTsKICAgICQoJyN3ZS1zYXZlJywgYm9keSkub25jbGljayA9IGFzeW5jIChlKSA9PiB7CiAgICAgIGNvbnN0IGJ0biA9IGUuY3VycmVudFRhcmdldDsKICAgICAgY29uc3QgZGF5cyA9IGVkLmRheXMubWFwKChkKSA9PiAoeyBuYW1lOiBTdHJpbmcoZC5uYW1lIHx8ICcnKS50cmltKCkgfHwgJ9eZ15XXnScsIGV4ZXJjaXNlczogKGQuZXhlcmNpc2VzIHx8IFtdKS5maWx0ZXIoKHgpID0+IFN0cmluZyh4Lm5hbWUgfHwgJycpLnRyaW0oKSkubWFwKCh4KSA9PiAoeyBuYW1lOiBTdHJpbmcoeC5uYW1lKS50cmltKCksIHNldHM6IHguc2V0cyA9PT0gJycgPyBudWxsIDogeC5zZXRzLCByZXBzOiBTdHJpbmcoeC5yZXBzID8\/ICcnKS50cmltKCksIHJlc3Rfc2VjOiB4LnJlc3Rfc2VjID09PSAnJyA\/IG51bGwgOiB4LnJlc3Rfc2VjLCB0ZW1wbzogU3RyaW5nKHgudGVtcG8gfHwgJycpLnRyaW0oKSwgbm90ZXM6IFN0cmluZyh4Lm5vdGVzIHx8ICcnKS50cmltKCksIHZpZGVvX3VybDogU3RyaW5nKHgudmlkZW9fdXJsIHx8ICcnKS50cmltKCkgfSkpIH0pKTsKICAgICAgc2V0QnVzeShidG4sIHRydWUsICfXqdeV157XqNeq4oCmJyk7CiAgICAgIHRyeSB7CiAgICAgICAgY29uc3Qgcm93ID0geyB0aXRsZTogU3RyaW5nKGVkLnRpdGxlIHx8ICcnKS50cmltKCkgfHwgJ9eq15XXm9eg15nXqiDXkNeZ157Xldeg15nXnScsIG5vdGVzOiB2YWxPck51bGwoZWQubm90ZXMpLCBkYXlzIH07CiAgICAgICAgaWYgKHBsYW4pIGF3YWl0IHEoc2IuZnJvbSgnd29ya291dF9wbGFucycpLnVwZGF0ZShyb3cpLmVxKCdpZCcsIHBsYW4uaWQpKTsKICAgICAgICBlbHNlIGF3YWl0IHEoc2IuZnJvbSgnd29ya291dF9wbGFucycpLmluc2VydCh7IC4uLnJvdywgdHJhaW5lZV9pZDogdC5pZCwgaXNfYWN0aXZlOiB0cnVlIH0pKTsKICAgICAgICB0b2FzdCgn15TXqteV15vXoNeZ16og16DXqdee16jXlCcpOwogICAgICAgIGFkbWluV29ya291dEVkaXRvcihib2R5LCB0KTsKICAgICAgfSBjYXRjaCAoZXgpIHsgdG9hc3QoZXJyTXNnKGV4KSwgJ2VycicpOyBzZXRCdXN5KGJ0biwgZmFsc2UpOyB9CiAgICB9OwogIH07CiAgZHJhdygpOwp9CgovKiAtLS0tLS0tLS0tIG51dHJpdGlvbiBlZGl0b3IgLS0tLS0tLS0tLSAqLwphc3luYyBmdW5jdGlvbiBhZG1pbk51dHJpdGlvbkVkaXRvcihib2R5LCB0KSB7CiAgY29uc3QgcGxhbiA9IGF3YWl0IGdldEFjdGl2ZU51dHJpdGlvblBsYW4odC5pZCk7CiAgY29uc3QgZWQgPSBwbGFuID8gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwbGFuKSkgOiB7IHRpdGxlOiAn16rXpNeo15nXmCDXqteW15XXoNeUJywgY2Fsb3JpZXM6ICcnLCBwcm90ZWluX2c6ICcnLCBjYXJic19nOiAnJywgZmF0X2c6ICcnLCB3YXRlcl9sOiAnJywgbm90ZXM6ICcnLCBtZWFsczogW3sgbmFtZTogJ9eQ16jXldeX16og15HXlden16gnLCB0aW1lOiAnMDg6MDAnLCBpdGVtczogW10sIGFsdGVybmF0aXZlczogW10gfV0gfTsKICBjb25zdCBtYWNyb0YgPSBbWydjYWxvcmllcycsICfXp9ec15XXqNeZ15XXqiddLCBbJ3Byb3RlaW5fZycsICfXl9ec15HXldefICjXkteoXCcpJ10sIFsnY2FyYnNfZycsICfXpNeX157Xmdee15XXqiAo15LXqFwnKSddLCBbJ2ZhdF9nJywgJ9ep15XXntefICjXkteoXCcpJ10sIFsnd2F0ZXJfbCcsICfXnteZ150gKNec15nXmNeoKSddXTsKICBjb25zdCBkcmF3ID0gKCkgPT4gewogICAgYm9keS5pbm5lckhUTUwgPSBgCiAgICA8c2VjdGlvbiBjbGFzcz0iY2FyZCI+CiAgICAgIDxoMj4ke3BsYW4gPyAn16LXqNeZ15vXqiDXqtek16jXmdeYJyA6ICfXqtek16jXmdeYINeX15PXqSd9PC9oMj4KICAgICAgPGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbCBmb3I9Im5lLXRpdGxlIj7XqdedINeU16rXpNeo15nXmDwvbGFiZWw+PGlucHV0IGNsYXNzPSJpbnB1dCIgaWQ9Im5lLXRpdGxlIiBkYXRhLWY9InRpdGxlIiB2YWx1ZT0iJHtlc2MoZWQudGl0bGUpfSI+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImZpZWxkcy0zIj4ke21hY3JvRi5tYXAoKFtmLCBsXSkgPT4gYDxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWwgZm9yPSJuZS0ke2Z9Ij4ke2x9PC9sYWJlbD48aW5wdXQgY2xhc3M9ImlucHV0IiBpZD0ibmUtJHtmfSIgaW5wdXRtb2RlPSJkZWNpbWFsIiBkYXRhLWY9IiR7Zn0iIHZhbHVlPSIke2VzYyhlZFtmXSA\/PyAnJyl9Ij48L2Rpdj5gKS5qb2luKCcnKX08L2Rpdj4KICAgICAgPHAgY2xhc3M9ImhpbnQiIGlkPSJuZS1jYWxjIj48L3A+CiAgICAgIDxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWwgZm9yPSJuZS1ub3RlcyI+15TXoteo15XXqiDXlNee15DXnteg16o8L2xhYmVsPjx0ZXh0YXJlYSBjbGFzcz0iaW5wdXQiIGlkPSJuZS1ub3RlcyIgZGF0YS1mPSJub3RlcyIgcm93cz0iMyI+JHtlc2MoZWQubm90ZXMgfHwgJycpfTwvdGV4dGFyZWE+PC9kaXY+CiAgICAgICR7KGVkLm1lYWxzIHx8IFtdKS5tYXAoKG0sIG1pKSA9PiBgCiAgICAgICAgPGRpdiBjbGFzcz0iZWRpdG9yLWJsb2NrIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyIgc3R5bGU9ImFsaWduLWl0ZW1zOmZsZXgtZW5kIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQiIHN0eWxlPSJmbGV4OjI7bWFyZ2luOjAiPjxsYWJlbCBmb3I9Im0tJHttaX0tbmFtZSI+16nXnSDXlNeQ16jXldeX15Q8L2xhYmVsPjxpbnB1dCBjbGFzcz0iaW5wdXQiIGlkPSJtLSR7bWl9LW5hbWUiIGRhdGEtbT0iJHttaX0iIGRhdGEtZj0ibmFtZSIgdmFsdWU9IiR7ZXNjKG0ubmFtZSl9Ij48L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQiIHN0eWxlPSJmbGV4OjE7bWFyZ2luOjA7bWluLXdpZHRoOjk2cHgiPjxsYWJlbCBmb3I9Im0tJHttaX0tdGltZSI+16nXoteUPC9sYWJlbD48aW5wdXQgY2xhc3M9ImlucHV0IiBpZD0ibS0ke21pfS10aW1lIiB0eXBlPSJ0aW1lIiBkYXRhLW09IiR7bWl9IiBkYXRhLWY9InRpbWUiIHZhbHVlPSIke2VzYyhtLnRpbWUgfHwgJycpfSI+PC9kaXY+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9Imljb24tYnRuIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJybS1tZWFsIiBkYXRhLW09IiR7bWl9IiBhcmlhLWxhYmVsPSLXnteX15nXp9eqICR7ZXNjKG0ubmFtZSB8fCAn15DXqNeV15fXlCcpfSI+JHtpYygndHJhc2gnKX08L2J1dHRvbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQiIHN0eWxlPSJtYXJnaW4tdG9wOjEycHgiPjxsYWJlbCBmb3I9Im0tJHttaX0taXRlbXMiPtee15Qg15DXldeb15zXmdedICjXpNeo15nXmCDXkdeb15wg16nXldeo15QpPC9sYWJlbD48dGV4dGFyZWEgY2xhc3M9ImlucHV0IiBpZD0ibS0ke21pfS1pdGVtcyIgZGF0YS1tPSIke21pfSIgZGF0YS1mPSJpdGVtcyIgZGF0YS1saW5lcz0iMSIgcm93cz0iNCI+JHtlc2MoKG0uaXRlbXMgfHwgW10pLmpvaW4oJ1xuJykpfTwvdGV4dGFyZWE+PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZCIgc3R5bGU9Im1hcmdpbjowIj48bGFiZWwgZm9yPSJtLSR7bWl9LWFsdHMiPteX15zXldek15XXqiAo15fXnNeV16TXlCDXkdeb15wg16nXldeo15QpPC9sYWJlbD48dGV4dGFyZWEgY2xhc3M9ImlucHV0IiBpZD0ibS0ke21pfS1hbHRzIiBkYXRhLW09IiR7bWl9IiBkYXRhLWY9ImFsdGVybmF0aXZlcyIgZGF0YS1saW5lcz0iMSIgcm93cz0iMiI+JHtlc2MoKG0uYWx0ZXJuYXRpdmVzIHx8IFtdKS5qb2luKCdcbicpKX08L3RleHRhcmVhPjwvZGl2PgogICAgICAgIDwvZGl2PmApLmpvaW4oJycpfQogICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iYWRkLW1lYWwiPiR7aWMoJ3BsdXMnKX0g15TXldeh16TXqiDXkNeo15XXl9eUPC9idXR0b24+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IiB0eXBlPSJidXR0b24iIGlkPSJuZS1zYXZlIj7Xqdee15nXqNeqINeU16rXpNeo15nXmDwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj5gOwogICAgY29uc3QgY2FsYyA9ICgpID0+IHsgY29uc3QgayA9IChOdW1iZXIoZWQucHJvdGVpbl9nKSB8fCAwKSAqIDQgKyAoTnVtYmVyKGVkLmNhcmJzX2cpIHx8IDApICogNCArIChOdW1iZXIoZWQuZmF0X2cpIHx8IDApICogOTsgJCgnI25lLWNhbGMnLCBib2R5KS50ZXh0Q29udGVudCA9IGsgPyBg15zXpNeZINeU157XkNen16jXlTog15stJHtNYXRoLnJvdW5kKGspLnRvTG9jYWxlU3RyaW5nKCdoZS1JTCcpfSDXp9ec15XXqNeZ15XXqmAgOiAnJzsgfTsKICAgIGNhbGMoKTsKICAgICQkKCdbZGF0YS1mXScsIGJvZHkpLmZvckVhY2goKGlucCkgPT4gaW5wLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4gewogICAgICBjb25zdCBmID0gaW5wLmRhdGFzZXQuZjsgbGV0IHYgPSBpbnAudmFsdWU7CiAgICAgIGlmIChpbnAuZGF0YXNldC5saW5lcykgdiA9IHYuc3BsaXQoJ1xuJykubWFwKChzKSA9PiBzLnRyaW0oKSkuZmlsdGVyKEJvb2xlYW4pOwogICAgICBpZiAoaW5wLmRhdGFzZXQubSAhPT0gdW5kZWZpbmVkKSBlZC5tZWFsc1sraW5wLmRhdGFzZXQubV1bZl0gPSB2OyBlbHNlIGVkW2ZdID0gdjsKICAgICAgY2FsYygpOwogICAgfSkpOwogICAgJCQoJ1tkYXRhLWFjdF0nLCBib2R5KS5mb3JFYWNoKChiKSA9PiAoYi5vbmNsaWNrID0gKCkgPT4gewogICAgICBpZiAoYi5kYXRhc2V0LmFjdCA9PT0gJ2FkZC1tZWFsJykgZWQubWVhbHMucHVzaCh7IG5hbWU6ICcnLCB0aW1lOiAnJywgaXRlbXM6IFtdLCBhbHRlcm5hdGl2ZXM6IFtdIH0pOwogICAgICBpZiAoYi5kYXRhc2V0LmFjdCA9PT0gJ3JtLW1lYWwnICYmIGNvbmZpcm0oJ9ec157Xl9eV16cg15DXqiDXlNeQ16jXldeX15Q\/JykpIGVkLm1lYWxzLnNwbGljZSgrYi5kYXRhc2V0Lm0sIDEpOwogICAgICBkcmF3KCk7CiAgICB9KSk7CiAgICAkKCcjbmUtc2F2ZScsIGJvZHkpLm9uY2xpY2sgPSBhc3luYyAoZSkgPT4gewogICAgICBjb25zdCBidG4gPSBlLmN1cnJlbnRUYXJnZXQ7IHNldEJ1c3koYnRuLCB0cnVlLCAn16nXldee16jXquKApicpOwogICAgICB0cnkgewogICAgICAgIGNvbnN0IHJvdyA9IHsKICAgICAgICAgIHRpdGxlOiBTdHJpbmcoZWQudGl0bGUgfHwgJycpLnRyaW0oKSB8fCAn16rXpNeo15nXmCDXqteW15XXoNeUJywgY2Fsb3JpZXM6IGludE9yTnVsbChlZC5jYWxvcmllcyksIHByb3RlaW5fZzogaW50T3JOdWxsKGVkLnByb3RlaW5fZyksIGNhcmJzX2c6IGludE9yTnVsbChlZC5jYXJic19nKSwgZmF0X2c6IGludE9yTnVsbChlZC5mYXRfZyksIHdhdGVyX2w6IG51bU9yTnVsbChlZC53YXRlcl9sKSwgbm90ZXM6IHZhbE9yTnVsbChlZC5ub3RlcyksCiAgICAgICAgICBtZWFsczogZWQubWVhbHMubWFwKChtKSA9PiAoeyBuYW1lOiBTdHJpbmcobS5uYW1lIHx8ICcnKS50cmltKCkgfHwgJ9eQ16jXldeX15QnLCB0aW1lOiBtLnRpbWUgfHwgJycsIGl0ZW1zOiBtLml0ZW1zIHx8IFtdLCBhbHRlcm5hdGl2ZXM6IG0uYWx0ZXJuYXRpdmVzIHx8IFtdIH0pKQogICAgICAgIH07CiAgICAgICAgaWYgKHBsYW4pIGF3YWl0IHEoc2IuZnJvbSgnbnV0cml0aW9uX3BsYW5zJykudXBkYXRlKHJvdykuZXEoJ2lkJywgcGxhbi5pZCkpOwogICAgICAgIGVsc2UgYXdhaXQgcShzYi5mcm9tKCdudXRyaXRpb25fcGxhbnMnKS5pbnNlcnQoeyAuLi5yb3csIHRyYWluZWVfaWQ6IHQuaWQsIGlzX2FjdGl2ZTogdHJ1ZSB9KSk7CiAgICAgICAgdG9hc3QoJ9eU16rXpNeo15nXmCDXoNep157XqCcpOwogICAgICAgIGFkbWluTnV0cml0aW9uRWRpdG9yKGJvZHksIHQpOwogICAgICB9IGNhdGNoIChleCkgeyB0b2FzdChlcnJNc2coZXgpLCAnZXJyJyk7IHNldEJ1c3koYnRuLCBmYWxzZSk7IH0KICAgIH07CiAgfTsKICBkcmF3KCk7Cn0KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQURNSU46IExFQURTCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KYXN5bmMgZnVuY3Rpb24gdmlld0xlYWRzKHZpLCBzZXEpIHsKICBkb2N1bWVudC50aXRsZSA9ICfXnNeZ15PXmdedIHwg16DXmdeU15XXnCc7CiAgY29uc3QgbGVhZHMgPSBhd2FpdCBxKHNiLmZyb20oJ2xlYWRzJykuc2VsZWN0KCcqJykub3JkZXIoJ2NyZWF0ZWRfYXQnLCB7IGFzY2VuZGluZzogZmFsc2UgfSkubGltaXQoNTAwKSk7CiAgaWYgKHNlcSAhPT0gcm91dGVTZXEpIHJldHVybjsKICB2aS5pbm5lckhUTUwgPSBgPGRpdiBjbGFzcz0icm93IGJldHdlZW4iIHN0eWxlPSJtYXJnaW4tYm90dG9tOjEycHgiPjxoMSBzdHlsZT0ibWFyZ2luOjAiPtec15nXk9eZ150g157XlNeQ16rXqDwvaDE+PHNwYW4gY2xhc3M9Im11dGVkIHNtYWxsIj4ke2xlYWRzLmxlbmd0aH0g15zXmdeT15nXnSDCtyAke2xlYWRzLmZpbHRlcigobCkgPT4gIWwuaGFuZGxlZCkubGVuZ3RofSDXl9eT16nXmdedPC9zcGFuPjwvZGl2PgogICAgPGRpdiBjbGFzcz0idG9vbGJhciI+PGxhYmVsIGNsYXNzPSJzci1vbmx5IiBmb3I9ImwtcSI+15fXmdek15XXqTwvbGFiZWw+PGlucHV0IGNsYXNzPSJpbnB1dCIgaWQ9ImwtcSIgdHlwZT0ic2VhcmNoIiBwbGFjZWhvbGRlcj0i15fXmdek15XXqSDXkdec15nXk9eZ150iPgogICAgICA8bGFiZWwgY2xhc3M9ImNoZWNrIj48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJsLW9wZW4iPiDXqNenINec15Ag157XmNeV16TXnNeZ1508L2xhYmVsPjwvZGl2PgogICAgPGRpdiBpZD0ibC1saXN0Ij48L2Rpdj5gOwogIGNvbnN0IGRyYXcgPSAoKSA9PiB7CiAgICBjb25zdCBxcSA9ICQoJyNsLXEnKS52YWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKTsgY29uc3Qgb25seU9wZW4gPSAkKCcjbC1vcGVuJykuY2hlY2tlZDsKICAgIGNvbnN0IGYgPSBsZWFkcy5maWx0ZXIoKGwpID0+ICghb25seU9wZW4gfHwgIWwuaGFuZGxlZCkgJiYgKCFxcSB8fCBbbC5mdWxsX25hbWUsIGwucGhvbmUsIGwuZW1haWwsIGwuZ29hbCwgbC5wcm9ncmFtLCBsLnNvdXJjZV0uc29tZSgoeCkgPT4gU3RyaW5nKHggfHwgJycpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXEpKSkpOwogICAgJCgnI2wtbGlzdCcpLmlubmVySFRNTCA9IGYubGVuZ3RoID8gZi5tYXAoKGwpID0+IHsKICAgICAgY29uc3Qgd2EgPSB3YVBob25lKGwucGhvbmUpOwogICAgICBjb25zdCBtc2cgPSBg15TXmdeZICR7Zmlyc3ROYW1lKGwuZnVsbF9uYW1lKX0sINeb15DXnyBFTUEgR0FMSU0g4oCTINeo15DXmdeq15kg16nXlNep15DXqNeqINek16jXmNeZ150g15HXkNeq16guYDsKICAgICAgcmV0dXJuIGA8YXJ0aWNsZSBjbGFzcz0ibGVhZC1jYXJkICR7bC5oYW5kbGVkID8gJ2hhbmRsZWQnIDogJyd9Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJyb3cgYmV0d2VlbiI+PGI+JHtlc2MobC5mdWxsX25hbWUpfTwvYj48c3BhbiBjbGFzcz0ibXV0ZWQgc21hbGwiPiR7Zm10RFQobC5jcmVhdGVkX2F0KX08L3NwYW4+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic21hbGwgbXV0ZWQiIHN0eWxlPSJtYXJnaW46NHB4IDAgOHB4Ij4ke1tsLmdvYWwsIGwucHJvZ3JhbSwgbC5zb3VyY2UgPyAn157Xp9eV16g6ICcgKyBsLnNvdXJjZSA6ICcnXS5maWx0ZXIoQm9vbGVhbikubWFwKGVzYykuam9pbignIMK3ICcpIHx8ICfigJQnfTwvZGl2PgogICAgICAgICR7bC5lbWFpbCA\/IGA8ZGl2IGNsYXNzPSJzbWFsbCBsdHIiIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij4ke2VzYyhsLmVtYWlsKX08L2Rpdj5gIDogJyd9CiAgICAgICAgPGRpdiBjbGFzcz0icm93IiBzdHlsZT0ibWFyZ2luLXRvcDo4cHgiPgogICAgICAgICAgJHtsLnBob25lID8gYDxhIGNsYXNzPSJidG4gYnRuLXNtIiBocmVmPSJ0ZWw6JHtlc2MoU3RyaW5nKGwucGhvbmUpLnJlcGxhY2UoL1teXGQrXS9nLCAnJykpfSI+JHtpYygncGhvbmUnKX0gPHNwYW4gY2xhc3M9Im51bSI+JHtlc2MobC5waG9uZSl9PC9zcGFuPjwvYT5gIDogJyd9CiAgICAgICAgICAke3dhID8gYDxhIGNsYXNzPSJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciIgaHJlZj0iaHR0cHM6Ly93YS5tZS8ke3dhfT90ZXh0PSR7ZW5jb2RlVVJJQ29tcG9uZW50KG1zZyl9Ij4ke2ljKCd3aGF0c2FwcCcpfSDXldeV15DXmNeh15DXpDwvYT5gIDogJyd9CiAgICAgICAgICA8bGFiZWwgY2xhc3M9ImNoZWNrIj48aW5wdXQgdHlwZT0iY2hlY2tib3giIGRhdGEtaWQ9IiR7bC5pZH0iICR7bC5oYW5kbGVkID8gJ2NoZWNrZWQnIDogJyd9PiDXmNeV16TXnDwvbGFiZWw+CiAgICAgICAgPC9kaXY+PC9hcnRpY2xlPmA7IH0pLmpvaW4oJycpIDogZW1wdHlIVE1MKGxlYWRzLmxlbmd0aCA\/ICfXkNeZ158g16rXldem15DXldeqJyA6ICfXoteV15Mg15zXkCDXlNeS15nXoteVINec15nXk9eZ150g157XlNeQ16rXqCcsICdpbmJveCcpOwogICAgJCQoJyNsLWxpc3QgaW5wdXRbdHlwZT1jaGVja2JveF0nKS5mb3JFYWNoKChjYikgPT4gKGNiLm9uY2hhbmdlID0gYXN5bmMgKCkgPT4gewogICAgICBjb25zdCBsID0gbGVhZHMuZmluZCgoeCkgPT4geC5pZCA9PT0gY2IuZGF0YXNldC5pZCk7CiAgICAgIHRyeSB7IGF3YWl0IHEoc2IuZnJvbSgnbGVhZHMnKS51cGRhdGUoeyBoYW5kbGVkOiBjYi5jaGVja2VkIH0pLmVxKCdpZCcsIGwuaWQpKTsgbC5oYW5kbGVkID0gY2IuY2hlY2tlZDsgZHJhdygpOyB9CiAgICAgIGNhdGNoIChleCkgeyB0b2FzdChlcnJNc2coZXgpLCAnZXJyJyk7IGNiLmNoZWNrZWQgPSAhY2IuY2hlY2tlZDsgfQogICAgfSkpOwogIH07CiAgJCgnI2wtcScpLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgZHJhdyk7ICQoJyNsLW9wZW4nKS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBkcmF3KTsKICBkcmF3KCk7Cn0KCn0pKCk7Cgo=\"><\/script>\n<script src=\"data:text\/javascript;charset=utf-8;base64,Ci8qIE5ldXRyYWxpc2UgdGhlIHRoZW1lJ3MgcGluayAoI2MzNikgYnV0dG9uIGhvdmVyL2ZvY3VzIHJlc2V0ICovCihmdW5jdGlvbigpe2Z1bmN0aW9uIGsoKXtmb3IodmFyIGE9MDthPGRvY3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aDthKyspe3ZhciBzPWRvY3VtZW50LnN0eWxlU2hlZXRzW2FdLHI7dHJ5e3I9cy5jc3NSdWxlc31jYXRjaChlKXtjb250aW51ZX1pZighciljb250aW51ZTtmb3IodmFyIGk9ci5sZW5ndGgtMTtpPj0wO2ktLSl7dmFyIHg9cltpXTtpZih4LnNlbGVjdG9yVGV4dCYmLyhidXR0b258XFt0eXBlPVsiJ10\/KGJ1dHRvbnxzdWJtaXQpWyInXT9cXSk6KGhvdmVyfGZvY3VzKS8udGVzdCh4LnNlbGVjdG9yVGV4dCkmJnguc3R5bGUmJi9yZ2JcKDIwNCwgNTEsIDEwMlwpfCNjMzZcYi9pLnRlc3QoeC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3J8fCcnKSl7dHJ5e3MuZGVsZXRlUnVsZShpKX1jYXRjaChlKXt9fX19fWsoKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJyxrKTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsayk7fSkoKTsK\"><\/script>\n","protected":false},"excerpt":{"rendered":"<p>\u05d8\u05d5\u05e2\u05df\u2026<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"_joinchat":[],"footnotes":""},"class_list":["post-1168","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/eg-missfitness.co.il\/index.php?rest_route=\/wp\/v2\/pages\/1168","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/eg-missfitness.co.il\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/eg-missfitness.co.il\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/eg-missfitness.co.il\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/eg-missfitness.co.il\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1168"}],"version-history":[{"count":6,"href":"https:\/\/eg-missfitness.co.il\/index.php?rest_route=\/wp\/v2\/pages\/1168\/revisions"}],"predecessor-version":[{"id":1296,"href":"https:\/\/eg-missfitness.co.il\/index.php?rest_route=\/wp\/v2\/pages\/1168\/revisions\/1296"}],"wp:attachment":[{"href":"https:\/\/eg-missfitness.co.il\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1168"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}