diff --git a/Tutorial/.vscode/settings.json b/Tutorial/.vscode/settings.json new file mode 100644 index 00000000..9eadbfd4 --- /dev/null +++ b/Tutorial/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "jslint.enable": false +} \ No newline at end of file diff --git a/Tutorial/Manifests/Tutorial Complete.trex b/Tutorial/Manifests/Tutorial Complete.trex new file mode 100644 index 00000000..4e91b926 --- /dev/null +++ b/Tutorial/Manifests/Tutorial Complete.trex @@ -0,0 +1,22 @@ + + + + en_US + + Demonstrates getting the selected marks and responding to user input + + + + + 0.6 + + http://localhost:8765/Tutorial/Part_6/MarksSelection.html + + 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 + + + + Tutorial - Complete + + + diff --git a/Tutorial/Manifests/Tutorial_Part_0.trex b/Tutorial/Manifests/Tutorial_Part_0.trex new file mode 100644 index 00000000..057b7b6c --- /dev/null +++ b/Tutorial/Manifests/Tutorial_Part_0.trex @@ -0,0 +1,22 @@ + + + + en_US + + Demonstrates getting the selected marks and responding to user input + + + + + 0.6 + + http://localhost:8765/Tutorial/Part_0/MarksSelection.html + + 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 + + + + Tutorial - Part 0 + + + diff --git a/Tutorial/Manifests/Tutorial_Part_1.trex b/Tutorial/Manifests/Tutorial_Part_1.trex new file mode 100644 index 00000000..9a0d24fe --- /dev/null +++ b/Tutorial/Manifests/Tutorial_Part_1.trex @@ -0,0 +1,22 @@ + + + + en_US + + Demonstrates getting the selected marks and responding to user input + + + + + 0.6 + + http://localhost:8765/Tutorial/Part_1/MarksSelection.html + + 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 + + + + Tutorial - Part 1 + + + diff --git a/Tutorial/Manifests/Tutorial_Part_2.trex b/Tutorial/Manifests/Tutorial_Part_2.trex new file mode 100644 index 00000000..6c32ed7f --- /dev/null +++ b/Tutorial/Manifests/Tutorial_Part_2.trex @@ -0,0 +1,22 @@ + + + + en_US + + Demonstrates getting the selected marks and responding to user input + + + + + 0.6 + + http://localhost:8765/Tutorial/Part_2/MarksSelection.html + + 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 + + + + Tutorial - Part 2 + + + diff --git a/Tutorial/Manifests/Tutorial_Part_3.trex b/Tutorial/Manifests/Tutorial_Part_3.trex new file mode 100644 index 00000000..bc8a68e3 --- /dev/null +++ b/Tutorial/Manifests/Tutorial_Part_3.trex @@ -0,0 +1,22 @@ + + + + en_US + + Demonstrates getting the selected marks and responding to user input + + + + + 0.6 + + http://localhost:8765/Tutorial/Part_3/MarksSelection.html + + iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAq9UlEQVR42u19B1hUZ/Y3Mdn9f1u/3dTN7ubL7n9NYmFmAPvGJJoYjV3QmTsDih0p00BQLIAl9m7sDQQRG6hgAZFmQUBUQEERQbEgahQLdvB857zD4J2hTVVMuM/zPigww5172u90G5umq+lqupqupqvparqarjf3estGLP7tf3yHfChSSO1FCs5JqJL5idSy9XZqWZKdQnLeTs7dxHPXzosrF3lJnuC/dY5ITt+TPMSv9/D8jP++JFJymXYqWZSdymWuQMm5CZXS70Q+3OfNFS5/tunS5R32d5uu13SJxW+3QqJ/4Nnlj628B7YW+nCuQpVkuUghSbdTcHeQyJV2XhKw1KH3q2KOEwIVt0roLR3ZYryL4P1x/f7UKkj8W7qfJqJY+wrq8o7Qd8gfhAqnf7ZScv0FCm6VnZLLtSPptSCxDT/cU9QS5wRK6XpkCnFLL6dPW3mK/2jj1uY3TcSyoHoXDunOiG7rw/VBFb9OqJAUi+Rc5esheh2H7kfOXUPzs0mocBlUzQxBNs2aSGjKhTa2hZfje595iu2EKulEfLAnUNKf162ixUgEPEop2KudoY3vEGjnPwzaB4yEjoGjoONUNzxjoOM0d+jEjofecdf8DH+n0xT8vaDR+NrR0G7SCGgzzhXajB0MiCcA8QSZAxB5iutkBns5V4FmKBcZdUYrhbh9c4X4A9JeTUQ1kPAt3Zw+bq2UdEX1uholvbRWgjMCiDXEkHMaovsNgbaThkOHKW6MoP+d7mGxQ+9H79t2soYhHJAZEA+we7DzrJshCFAiAwfbeom//0Le7+9V4LHpqk3Vt1QP/thWJf6e1Cg+uAe1EZ1JOv1fyYGDbxXBgyxPcEMOaZT2k0eitnEFO5VUw4x1a4eHyNARreWSHl/IpX9vMg28S+Dv/NfWasmXSNS1+ADLa5V2lDa0/0h0F6aWO6KaftUEr5cZkAE1zDAERCpOc79edTGCBEGj5Gsycb9uyiNaFnnLWgvV0gmoxq/WKvGo3tGfh7bjhqJddmtURK+TGaaMhrbjh73EDLVoBNRy14VySZCtSiZkbuSv7RK6O35oq5Q6ChVcPD6QCn1Ax+y6jzO0nTCMqdo3gfA1GWEMtJ04nMcINWMLqPVSbOVSjszfr8SXD2rWUsnZihTiqagmS/gBG62qJ0DXDh9cx2lvJuFrmgcNI9irXRhw5GsE/PcLdB9vCZTcnFbuA+1/0SDxY7c+v7dVcN1R6iMRPT/CB/CCJw1gj0Cq7XjXXwzha4JGd2jjP1SjEeQ1zN0ToZzb10ou7tdc0fPPv0yVr5CMQNV+Aon9TEfqFYjo0YXr8IbYePNNgxt+XlewR09GFx+InyMuyLNVShQU+PrFEN/Wj/sPgp5A/HDFOiqfvhLAmzAc3bgxr8WVe51eA5k5O29nHW1QlXO4jlpyrhBN5Rvv2zsgykXi/4Qf6qaIr/LJ1o8dDO0DRkHH6b8ewusHl9oHjWbxDNKCPJPwAp/VHRSYEKGHpCM+xzcwZhBk00zgJe4kUkjC8APd0VH5So2try9i12vBWAiKXA5hR3bA7hN7YUdGNPx0IBRGrf8RusxUNFqi9lvoBxO3L4GQQ9tgZ2YMRB2PgRUHw/B7S8FlZSB89aNnDSYgk9DGf1hVMEnM1wb3ESDuFHoN+u7NCiUT8VWSrxHUROIHuqdDfJUzU/l1uXZfTvcE6YoAiMuJh+JbZ+Dh42KAyutQ8fwa/HyvALIupUPo4e0wdM3URkX4LrMU4BuxEPZmxUJhaQ6UP7oElRUlUFFxDe48KISiGzmQWZgK65O2QLc5ypraYKrWU3DWmEbt8ZSUi7y4OIFS0uvNyDIi8Vsrnbqi5O/GD/KA79vbo71rN2kks391Pcje88dCbFYcPHt2lRFe/7yoLIF75UVw9Pwh8Nm8oFEQ/4f5PrA0biPkl5yCJ08v13rf2nMg5wD0mOdTu0lAL4GSVw5oGkW6gaNH+P/E1p6Svo2bCZD4LRTib/Bmo2sQ38eFfbj6gB5J//C101B6iut9iHSeIoOcuXIcxm9dXEOtvsrTB1X+mqTNUHrnLJP4hu675PZZUITNZZ+1zqRT0CgNLvDieG6i5DEKVaKtQtq7scYK3hKoZZ0Q3EXpEF+OLp4Pgr3AUdCpAbDXZaYcZsasafAhas9zNAv5104y+/rVDK9XT/wFfrAuKQJu3j3PNJOh97375D40Gcq6wSGeDgQO0TUW8eMFcskjNKsHBArnbjZim8ZVgdSK8vZySTja+ft8ySdOJo42xMXrNkcNURl72EOqROI+fngJT/3agLDBRbSvs2JWs9e/UuInR8Cte/UT//nTK/Co/CL7+qJKQxiitTSaYDRLcYvkeskkBRdNyTObxlKT2Mpb3FyoEK/AmyvTUfvk5hlIfIb80ZaeuXwcnjy6DCdPHIWdUVGwa9dOSDgYC/lnj8PDBxdrZwIEWjfKzsG2tF0gWT7R6sSXrQxAdL8H7ty/UCvxK5+XwPVruXAsNQliYnbDzshI2L8vBm7fymdMMGP3KuhsgNliHkKVJtCLFTyglPkXqoHC1078f6tkHwkU4qnk5+tIPhK/Q+Aoo4I7Tkv94e6DC/jw8iAsNBzWbwiFDRvCICQkDMLDI2Dfvj1wqSiLaYfawOGDxxch5WwSuAXPQJNgOVwwYPF4mBW9Ghbs2wCbU6Mg90omwym1Ef/unUJIPZoE27Zth40bw9n9b1gfyk5yUhxjbo+QGYgBjChEYbECXWCIz7tMpJAubDnW+dPXRvyPfLv/QaAYNEYoF1/RBnko48UAX+DoBm2+/nFGybpZlg/37xZBcnI8rF+vYQD6qv33tm3b4MzptDqZ4Amq2utlZ2F9yhZwD54JXhtnw0b0ySmm0HWWJn5AsQRu+eRa76H7XG9Uz146ZmnB3vVM2u+VF6JbegnNTu0q/8b1s3Agbh8jvPaetfcdEbEVLhaegopn12Du3nVGAVeGCVCY9LwDChbdsJVLfAUezn99DaVbNu8QIkVQkq0N7zK1r5ZBu8kjWZ2dcZLmDtLlk5gb9aj8EpMi7cPTHu0DpYeZl5tRp90lRqD4AfnfdxjRihnxzl7NhAulWXD7fgE7ZDb0z827+XDtdh5kXUyH9IKjcB5du/sPLzYI8spuFzBTRdpqwwa9+8b/b0SNdrP0LDMBd/Bvd5+rNr4kDYWKXGlt/oAyiShwF2zlYo76Il4p/VvLOZFAzsXY8RI7LMJHadypxod2CcVPiVrOHjQ9pPt3C+HIoYN1MsHOnVFQfDHbYORN70tYgU5DxGS/ixqGnYprDXsjqHXSjiVBcHAYrFu3sdZ7vlKcg9J/lX02ev++i3xNCB17MOGyU0v5SaQKoUKS3MprYIdXifj/JlRKZ6LkP+a7e23HD2URLVPsbLfZSjiUl1j9UB+iFjh6JLGGKq1mApQq+vmj8mKDmcBaJ/dMBkRs3sqIrz38+96xIxJu3jjHwKH2Nf0W+ZmcRKIiGZFSJ0bwVKCQLLP1kX5ifer37Pk/tiopZ6cH+gjxd5hqejqXAiNkm18i6WtQgkh6164oRuiMtJQakrVpU0S9puBVHDJXh1LidQhODBAXuw9OnTyCnkwknDh+mLmzL3iBou9mq8wqRnUYp+seojDeFSgHDbfx7vQ766r+MZxIqOQOsUqWqvi+vUrGkKq56dye83zgFNpeelBldwpQrSYzyblReo55ALWp1vS0ZHj25PJrlP50xoj690bmICf7GJTfL4LTOWlorrLQVLwMb387W2lmFtEN7BBs8/EAmoLM1p5cO6sR/x9eju8JVNxUnb47hbQqn29+SrfX/LGQceGoxk5SIgUR85XLp2H79h11YoEjhxPqjA+8ipOddawa9fPvj93julDGxGTO+IEgOj3n+5iXSp5OeGAE2OPz59cSoHDO+Y+744eWp75Y/La9UvqdvZy7pRvpczUJ9NWWTQuIXKYLxvCB3SsrhJSUg9UxAT4DhIRsQilLe60m4Erxadi9e1cNnKLVApd54I//uqFrpphfT4Cek74pQNNchuC8p8XzBVSihMAvVCe1q7aM6ie/e9quVTXROD60B/eKIDU1CUJDN1cFVbTED2OBFXK/XjsIRBxCrikxKZ9RD8bvhxvX85gmq5EPyNwL38yUm80EVFNBdOCXlgkV3DbqTbSg9Lf6LXXjosQ/4dW1MzRqiUhb97k+zEev7eE+e3IFck+n6wSFSLLi8eHeupn/2onPQtFI4OxTR2Hz5ggdJti3Lwbu/Hy+hvRrD2U+LfH82qEJttM1BU8pNtAcAbtF6P8fz/6faCp5edLvLas3r2+UCzhHBXtO7q/j4V6FgvwTjOha4sfG7oXS62cbBfFfxgKuwonMIyxkrQ0EEZPeLbtQJwNocgKWqTbmA8Iqtzy2hXrAv8ynfps2v6FqFCpKeAn8OBbwsQTxSQ0GRa2AZ8+u1PqQKHael5vOVCwRf+/eGAYMGxPxtecx3mt6ejJsQiYIDQuHyB07qqN/tbqQT4pZuPq/FqiJZAEi3brCZyJ015v3bG6eFiBEKVBwYdX2xWsQK1uyhPRTRozKqB4/qT2YQ7GAOz8XQOrRRAgL28yIT6CqMRK/mgnQ309LS0LXcDNER++Ci4VZzIzVxQQFpVnQY563BQChR1WugKcFFNIYkbv4H+bQvxn6lh1RnZRZQ/r7Lx4PN8ry6yY+ArzDKfEM7e/fvwcuN1LJry04lJ6WgphgC+xAF/ZSUXYNN5Cfyh67eb5lsABqARFPC4i8uMdCpfgHmyAb0zwCmr8jUMlmvXzDQSzZY4nOXJL+hbHBtcfiq3IBJPkUZElMjIPSkrw3gvjVJWuPr0BWVipERUXB3j3R7P5ry2BSGVlyXiL0NTE0rB8gYskivhZQchv+pR7wF9NcP7n43zQDh9/I0dbfMsh/2NopcP9hUZ3SX1qiSa2ePHGExQLeJOLzvQOS/uSkeBayJlNQq6eDQJfK37+fa35FU7uJI/RDxDdoiJbx1UMI/oRKZykbd6Jt1UZXo4NFpN8DYnNi6yyiJA1A4I9iAG8i4WvTBsTEtcUD+IBw3r4NOrUIpuYJavQXeHNyo8Hg+yP6/UmolG7Xr/KxhPSLl01kdfPGFFL+0g8Jw4Xr2fDdbPO1gIP/UN3qIaX04P/z6G1c0UhL5cDPEFDc5LdytZ80wgJunwLCjkbC8+dXmwivxwDX75wDv4hF5kcHg0az9DyPdg9aqcV2hpsBsc3bArV0mF11mRe1c8ksMqhBHjoH7jy40CT9dVQ4n758HNxDZlocDKIr72NwfoAmcApVsnB+5I8mY5lLfEqBJuclNUl/fXgB3cXks0nguNTfrGdNxTl8BhAquNh/ig2sFfint/hdfEEx3/63mzzKbAagki+qr2sidP2HnhH1HNTVPWSQGQgcBUL9cXWjDJs50Iw6fLRzezToX2K2+h+xbjqqtwym5pqI3DAeyCnOMKtohCK1IpVUp+Vc4OPcy7BSb6XUW7+vz5yU7/A10yA5N5GVbDcR2LBz424+TN21wjxvgHoJeAkiWyX3Y4OzBljwRyHZyp9f0wbtiak34bhkPMSdjofHr7Fs6008hJMyC4+BbGWg6ThgwnAdd1Ao5w42ONVcpBR3Rhciv3rurVJqlv2nVmgq82oCfsYfaoMPObzdZCxAzTlC3RTxdRu3Nr+vXwN4y4YiYHhYzQCo/qnqxORqnxmekFZwmHXyNhHVeCxAAzHEyyaY7A4KFTpDKp//r3LgZ/UygJ23bC5/lg+5f53MsEPqTfOg+OZp/DBNBDUlLpBZdIy1zJn6/NlIOr4Z8JX1rZ8BlNI9/Be0MyP1S/1vCbkJ8PTZ6wF/VC5+7copOJl5AM7mHoKnjy+bGMsvhktFx+EEvs/Fwgwov19YZ37f0hqAxsr0NqOCWDNogscAaqlv/Qyg4HL4L+gQMNoMJOoO+7NjGxybYrEHhhJThATasnk1+Hi7Q4/uXaFtGxHYtm4BImFr/J4H3L1z3qj3fPigCLZtXVv9Pg72Aviua2cY4+YK69YsgLwzKYxBrPWZSsvOwayYtWYAwWG6DKDgljfEANf4L+hohv2nrF8Sun9Pn70aAEiSmZwYBdOmjIPevbrBP//xd3jn7XfgLZu32Pni88+gtMS4iqKfb+bB1Cl+1e/R7K1m8MH778G3Xb4EP18v2BkVwt7TWhqBzEBq/iHmTZkEBCeN0J1IquSi6/cCFC+HPDAGMLHmn4i/KDaYddy+qrg/FZDev1vACHKxKAPO5h2G9GP7IHpXCGwKXQ6nTsQb3UVElTwXzqfB9q2rIWrHejhyOJpJfdGFdCi5moUaJZ+ZFmuahOziDJCumGyyJ6AzqVwlS6+fAXgegIYBTI8ALj8YxvrqX29RxlV48qiYjWmhfLwphKL3oHE19D61NXlYFcfg34s/cxC+nmFaDwFpcB0GUHJFDTGAzgYucyKA8/euh1t3zzcherOA4DVIO38YeppYOMpKxnVrA0rrxwBy7pkOA5jR9rU+OQLulhc2EdKMQ9rm2s95MDN6jWmxAD0GoNH09TOA3vIG4yd9vDykup49a4r/mw8ES9jk1M4mzEOkpJD+Eqv6TYDexk1TTQA1e1Isu6nwwwJaAJ/h4XMpRo+V0UYD9baU3H4lDDBt10o2FfNNULH6pzEywLGCw9Bv0TjTooG6JuCOkQxgWq/fpiM70P433qpeChoRqr91IxfduiNw7Uo23CzNZS4dlW/X183zqs/V27nw4+6VJvURGq0BKGFgrgag7BV5ABQDaKzEP3UyEfzG+sA43/GwaMFiWLZ0OaxdvRbWr10HYRtDYGvEBrh6OatRMAFVUG9JjYKvZnhYHwPgLz01lwEcl/jDgdMHG2UNABH0YuFxcBowEFYsWwFpqWlwPP04ZGZkspORlgHJicn4s5Xgo1bCnZ/PGREvuMZ6AJ4/vWZxxkm/cNSkaKDxXoB+IMiEBU4UtKDyb0pkWKvjhpow6dTXbFGX9Ht5jIHu3XqAs9QFpX0T7NuzH+Lj4tmJ3hUDs2fOht49+8JAx4GwOXyNQcSk9716OQcy0lOgsOBkjaFQ5hWHXIO0giMweFWg+RrAgDjAXUtEAnsv9IXsS+lWkWBquT58OAGSEuOg4PxxFuUzJrTb4/vu8N5f34P33n0POv/3a+jXZwASWwzigRIkfB8QCezg3b+8C59+8in4+ihr7emrUcJVmgfbtkXAihVrITh4ExRdOGXQ6ww5JXfOwtqkCJPGytSMBEobiAQquOuWSAYNWjqBDX62xiCGUyePslFsP06fDRPGo7mJ3cESQYYywIfvv1+d3Pk///M76NOrH2OCvr37w7ddurGED/3snWbv4Pd6NEhICg9v3xoC4/38Ycni5WyQxdncDJ2pYOacy7fOwNSdK5hrbXwuYJR+LiCtoWxgvk46ONC0dDANbC64nmWVPjuaxLF2bQgEBk6DwS5DYYzbGIjbv53F6w1hgE8/+QQJ3Iydv/zfv+gwQLdvv4c//O4P0Ax/9vvf/Q6GDuF0BjzWSqBLJ2DalMng4zOOaQBigPxzmRZjAAKBm49Gmj44gm8CVNLdDRWEJPNf0H7SSNPiAFEr2cxda2kAYgDSAkuWLEcG8ETpGwvZp5KYNDZkqzmxGD7+29/xfAxdvu7KCK9lgF4/9IE29m3hbx9+DG0d2qA3sK6BWQAXYWPwCnAd7ApTp8xg90UzAUqu5loMA1BhSOKZBJMSQtTNrbuzWLqsgaJQ6Xr+C0xtB6d257rav8114c7nZ7K5AcQA9MAnTghE+y2FxQvnMH++vgdPP9sVFQaDnAYygmuJrz3a79HxUSuQkDn13EsJnDiegDjBG1TKsbB8+RoID9/C1D9pKksGgo6wSKC32RVBIpVkbP0MgL/AX+lKHcGdTEwF00Ruq1TLlhWynnstAyxGuzt6lAdD7RHha/Hn5xtgohJYunguSu0QJHp/dviE7993AIweOQLfa129GqW05DQsWjALhroOh5kz5jLwR1POabiFJd1Acqf3Z8VB34V+5tcEqhuoCRSpuD58V5DmAXUwwROwlhdQrQXQxm7Zso0xwerVG0CNEti/ryOMHD4cEuJ3sjEt9dcLXoGoHaHMdvuN9a4+/uN8Yc6sabB/71Z48uhSvdVHO7aFMNU/zncCrFkdDPv2xrCdAZaOAdBKnMDI5WyXorlVwf/xFjdvcAw8vy+ARsC3CxhpUjDotBW8gJcEuMhGyNDkMNIC06bOBGfZEJTgfogHfCDrZGKD1T9EqNu3zqLKPsLCwXQKCzKYBqmPiMQ86cdiWaDIdfAwmDVzHmzdug0uoP9vbFzCkEN9FT3nj0UM4GVWXwC6+CUN9gV8Plb2vkgh2cKfC2BKZxAFLc5ePWnViN5lGtO6SzOmldA3gUGtGp8+NYAxwRMDVtCxiSS3zsFzA3IXBEKJUaYGTQLH/gNRa/jDmjUbIDU1kTGlNT5resERll8xGgBO1OsMUnAHGuwMsnFz+43Qm1PxW8PtvY3vDaQ1qZmF1u0IevbkKlsuFboxnGkBP1TFTgMGMbeOmGCi/zjYGRkGOVnJUH4nH17o+fNE+Ec3cqE0cRecnTMNLqxcCKUJUfCgMAOeIbrX1wJUIZyZEQ/TpwXAgH6OMMx1BMyZvYAtr6CFENbKG6SeP2zSWFkHP93eQIFaOs2QIRHNhD6SjuZ2BxPHbkjZAmUPLlhVC5DNJdtLWGDBgqWMKMQA2sOJpTDORw1pc6dDMbp0Nw5Gwc3k3VAaHwkXw9fA6emT4ciggRBv1xbi27SHI44DINtPDdnL5sH+3eGQeHAnJCfuhjM5hxB3pEFQwETohyCRSb8f2v41wSz8a4imMTUMHH/6oPndwXKuUjDWpafB8wHQX7xk7nyAEWuns3WqlVbMqBFKz85KZe4XMcEE/wB08TgdJhj8fS/Y3qYDJH3TBVKdnOCYRAxHHR0hofPXcIAIr3fi8AR37AyDxRyMGDYcbb0K9u3ZCqlH9oOL82CmXUYMHw3z5y1mq+2KL1lP+h88uggRqZEmjonRTQI1Vxg2H4BNCBEpZZt0JoT4uZqUFKKt37Rpy5oZvtu3zrP5wYQFflq6EkaNGMOIpGGAvjD9y28gxr5dDULXdXY5tAfvLt2gb5Up8UUNQtJPTECexkAnCYwfP4lJPwFRa66toarq1QnhRj/7NvoTQuSS/QZPCKEZQUKVzFVnRhCqE1MSQysSNqEZsG5hKCHvzOOH2Uh50gLkEcg4F02Qp2dfCGnXiUm1IcSn39uAvz+gZ5/qINGUwElw60YebAxexb5HDLZo4U9sT9C5vOMNhorNOVRVTf0Vxi6XstOfEaSSqY3aIcCmhPGXQ6A6MdYdpE1g8TkH4KmVW8M0WCAP9uyJZlpg1ar14OWhRKDmBF5du8MOVP+GSv9ulH5lV430E/FlnDOEbFiJrmIqagIfNC8SmDB+MgOdBw/GWnVfAZnO89dPsQZbY90/86aE1TUn0G+IkUBQDfuzYuscBm3pHMHhQwerx8rPm7sIBksHwzK05fuNkP7gtp2gP2oNrfQr5XLIP5vGQr6ug4ei9LuxyKNmX1GKxRI+tfYlPi6G6BP7jC4GdUD1L9SN/ycYPSdQMyZe6qw7KZQzKj1MGoA2e9Nq9VdR6VNUmAVRkVFsVj9J6AqlJ0T/t7PB0h+NOMHr2+46ySGKDNJOooy0A+hhDEfXMoCZGVoNez7/hFVLxmgr+dw960ybFOo56CUDqGUKk8bGCzyc/lfESw9TUKGdkVtCpu7UVAe/ivkAFP6lJQ20sSN4bTDk+rvB1cE94HCHhk0AeQOb0VT040k/ncDJ/iyxk5wYDW6j3GEpgkyS/sSEOKvPML504zR4bpxj/Kxg3RrAGy2VjrYmbRp/f8SXf0JfcjZ/WjglF4wBgx4hM8Fn80I4d+1knTt3LZkjOHYsCTZu3ASH5k6B+35SeK7oCyWybpDSvn29DLAXpZ/Zfh7xpRIZbFi3DEquZsOypQvAz9e/eikkJX2srf5jsw6AzIimUEra0UQXPfQfYrz65wWFWniJO9FSQv6+AGOGRnSZpWQDkHdn7rF6kSipYxrLnrQ1DC5PGgUV6gHwQt0fnsn7QG7PryDBoW7p34kMwJB/n5fq323UKDieHg9ZJ5NApVTDokXLGPFpeUXWqVSrqv+rP+eCatNcxFGGj4ojkG6nsy9A8lTgNbCXyfsCtBtDhEpJKH9jCLkYxm4MicqIYUENa3cKPbt2Cu6h1Dz1dmLEp1Op6gfl7r3gUB2mIBZPwNffskQSnwG8VVQVnI9McADGjPZkWUdigD0x0WyrqTU/R2FpjlGzgZj0jx2iK/1K6T6hocGfunMDNDZe+oOdF1fO3xNs7OgYamyYs3eNVYpEqk3A3XNQuXkOVPqJq4nPZ4K7I3+As72/hgR7XQbYh9I/kGx/n/46hSFDh7hC1I5NELd/B7i7eVWr/+SkAwaVn5kzHWxN4majagApUkuZW97+wOdCtUzWXGGBzWGfu4v/IVBIX2YIPcRVWMBwLfDtbAWrarXWvIAXjy9BZdRSqBwnqUF8PhM89eoDZSN+gGNfdtCx/9qwMd8DoFz/2tVLYcmiuTBxQoDOttIKK049oSJQJyN6AEgb2/sM1tsdKDnwGYJ4y+wN7NLlnZYKcW+0KeV8LNDGf6jRNQJx2fEW7xh+gcSoPBAMlZNc6iS+PiM89ugNaZ07Mvu/xaE9C/zw8wfEBGNGu8Gm0NWglKuq7T+tiT2eccgq9p+GQRTdyIGC66fYNnVj0r5W3RvIIoNuTh8L5NxqvRJj6Gjk5lBaFHXPgj2DrKEzLwEqF6qh0gDi62sDYoCJX3WtriPgM4GLbDAEBUwGlUJdbf81yZ9s6+Q07hfA4JWB0NuIyp8OtESawr56m0NbuFtiZyD/CrJpJlCIv0HJL9HdHTzE6FqBVQnh1VrgzgPzQqmVDy5A5Zb58MJ7gMHE5zPB+QFdq+P+fCYY7OwKO7ZFsq4h9zGeVfZ/IyQkxDZYbmbqmPiIY7uM3h3chu0O5qy/O5iliUf2eFcglwbodBAraY3cMKOYgH633yI/GLFuKniEzDZL+isTN0HlBJnRxNeeJ8gE4/z8YeWKVRC2MQw2Bm+EwMlBcOZ0HuSezmXBHyr41Nr/FASAlrb/5BlR0qfnfG+jUH+7SbQ9nNPdHi6XzPv3qH4fWW2FfAu5WCBSSJNoX311xRCagvYmLpEeuX6aSa4hI34Zov6IeSYTv1LVHyrCl0DF8wqofF7JvrLzrAIuFV1iqn/48NFM/ZMG2LJlK9v+ZemED8VHKGRujACR6nfwean6iR5I/BOtPbl2Nla9xK1+a6uUSFDV3KxOF1eZAlNmClOggzqInhkpVYwBjmyDyslDTGaACmSAW5dogtgjdsoflMOV4iuwbcs2Vlk0FI828UMMQGvsLKn+ifEpTxJ6eDubqmpMvx+tjbeT64R8UfUPGm7Tp4GiT0tctqp+H6GbMQNvgLdPWMLWlJgyVIpWp25B+0dMYOhY2RePi6EyeoXJxKfzWO3E6gaGDx3BVD1V+HISZxb0CQr6sQr4hVVtLg+FQykHLdbwSaVeFO0b9NMko2b/kOtN0z9FSp7q95Q8FaqkS2w9+39i86ouVj6u4KLtvMTPea3HLEBkiimg8Se0VILSxw8NCBm/+PkMVIbPNl3940mdpanqoQQPHersWV8V7NGuq9eurKcNoJcvWW5vMY1+c1kRYHShB7Xq0fZWHuqvQNCX1Eo1sIPNK73ENm+j79kbVU+OFhSyMCTeXPvJI02eLjZgyTgIO7qDJUPqZYDzKfBiiY/JDPBUPQCC1wVXE7muo2WG+AP769z8aQjCJ4mnPcEUDifAJ/5povHEDxyl2QbGs/uohQvI5yfTbPOqr4+GdP+DQMGNQSa4oh0xL6wqI28fMMrkAVPkB29P340qMq/O/AH5/i/mK02W/oJAD9iA0m4IA1DyJzPjsNHBH2JimvVL0z0Kb2RD7pXjsD4pgnk+xiyB0II+Fu3TnfdzQ6iU+go8nP9q87ouW5XsI2SCqSj9t14mjGjLqAt0MIMJaNHEkFVBsOnoTnx4OSxIQoygrTB+UZQKL1b4m2b7vZ1g0+o1sIGn5usiPlUYUekXFYUYQvQnVdJOyD42Ow5yLmeAPHQ2TN+1CgYsHm/SkKcOgW6sKJdPfDx3hXJucQu19F82r/vS1A9KVtrx0sZUQ8g8A1Rb5iycoM1Z1GSyKDYEzpWchCu3clmV8fO7+fBi2yLjpd/HEc7P9IHQDRt1VLz+Ccaf0fr3uNi9cO3qGYOkn1R9JjImLcg4kp/CNqW5rAyAriYMdngp+aM1xJfr+PsP7JSS8NY+jiKbxnK1VDs5COXiCLy5+7z99ayOsAOLEZi3c5AyY1IETZN3LIOdx2MgC9Xq7cil8MLHyXAGmCCFirUBcOJwPKQkH4D9+/fC3r0xEBO9G6J372ZtZnRiYnYzm5+TnQb3yhpOXlHV872HRWy9S0DkT7AqYROMXDfNrL1/WrXfBp8fP8eP55FIIdnTSinubFKVjxWvt1p5ijsL5ZLd6JaU88vIaH0ZARhzBk/XYIblk2E9MsT1ANeGpX7sQKic7Q4vdi2DF5SN5EkzuXVU119+v4hV+NJpaMATSTqpePqdO+WFsDVtF2KWXTBp+0+sI8rUyd41ie+qvwr+MbrfCa1Vkh4Ewm0a3SUWv41a4Fs8+/iZQ/oQ9ogJNEzgYREmYPED9J/DJrtCeR2Ef+7rBJWz3KFy0yyozD0IL8yoSHrw6BLb5Ue9jrlXMlnHLk1AiTi2E7hlkxhw/X6u+Zu/6fnQWB4yn3qA7zEi/hRkgL5Uo2HTaK8uXd4RKCTdUBPsZbaKpwns0Dtoh35sx6nuFmMC98ARkOk7ECr0iF+CpiEPvYSb6FJWmJB9JMBJ5ey37p1nhzqcVqJqTzmbBIFRy8A7fAHMjlkLjksnWOyzkOST90QAWof4nij5ckmyQC4ZQF1bNo3+Qk3QWunUFSV/J3oH1ZiA9aqrnFn+2hKbyNlmkmljYNbEwXAVwZ2W+Pe9B8DaCc7gu3YKLIkLgciM3RCbc4BJrTbSSEMXtO4lfSXJpmFM9HNS71kX0yHmxD5YGrcRfooLhV4LfNmABvGyiRYjeA3iU5BHL7Vr5yV+iMSPt1WIe9u8EcTnpY9byyVfCr2km/GDlOm0m6uk0Ga8K5s8Yglc0HvKaFjn78Kk/oa3I0SOl8KgoNE1upVdVwfB0fOH2AoWWmRNu3hKy/IRtZ+BKASWtN8g/Ggkup6RMCZ4JvRbPK569K01iK4T3vUfxpZ08mv6SINStNVWJf7eJsgK6d1XAQxFCqk9+qvLkfC3tBlETbcKpwGHqPI6TjefCQYhE8ycOATmojYYMKXu0XZuG2aA50ZNIGbI6imoxtcxZvh2tqp605mxkzjMA3ujq5E+X/KREcpQg4baKqX/JWGyeZOvVt7i5qjGgvAU82sJRGwGkYztuO00bYzFvIQ34bDQLpVyqV10s3r4fJDw19HVmy9UcrY2v5RL6DvkQ1RlI0Vy7gR+yGd8k0DcT9PI2geO/lUQv8MUjdTbK6T69v45ass8WzmnsvWRfmLzS7s+duvze/JhhQpxJIEb/jg6ZvuqsIGlAGJjO1S924YGN6pkOlJfJQhPUBD2CZRc/+YKlz/b/GIvqi2UiwVkElAbXNVfUMFCyN4yBopMmVTeOAk/BtpOGq5B+HJ9W4+fXy65gS7eHKEX52CVWr7GeDVXiD8QqiV9ESTu0V9SwTqR5ZoZhe3wwXV4QxmB0D3V7Tl4o51XMn9ed3Czl6QCwXCiUC0d1MpP/DebX92F3G6r5loKlFJvOzlXoPdwmFlgSRBUmdSDQOHRNwEoUmkcVe2wwg2SeC8x1Phscu6aQCWZTNqQJrPZ/JovsnmtvAZ2sFNyi1Ed3q7xsEhlyjXNKA6+LkwrNDac0HGKOyuEcfB1ZU0amhh+rYR/IFRx64QK6VfoHb1r03S9jBlQbYGtfFAXGliND/BubYyglSaqiaM4AqlYkrhXrRno71FxJo1jd9D68aSxtAzrpa/uxQ+R+BGt5ZIeX4yT/r2xZfIaVRi5laf4b9SEIlJxq9BGltZ8mFUP2VMjZcIqvODg54oEGcFMRUcLM4Q2Q0cEJ0+FATpF1f141kV0CnhJyvBzhCFD9/jcvc8/fjUgzxKM0MLL8T2hl5ODSCULREY4QR2vtT1kvnagr5RzIKYg7EBaggjWDr0KirVTgQppjA5T3ZgZ0R72PSQwRSZp5TrlK9oSoWncutqZqXT2Nzzrk/LqmXwVeHLRp58j8BJ3Ero7fti4M3iN+2qGGuGPVPJsq5D2Fqqka5C4RahOK+skwOs4eD9UGymk8K2ac6LevC9G9PvTGx/GbWxeAzGDUOHyT5EX10eg4n4SKqXZaH8fvQ6iIxM+Rjf2DN7DSsQtji29nD6l+2uS9leFFYLEv/3As8sfBWNlLQTeUmc7FbcYCXFIpOlaqrAwwStQun8WqiSp+HeWC71lQ0XeA1vTHCU2hKHBKdxNl9W9CKZukRBUrt7Sz/kzka9Ld9FYqTtih3l2NPpWJY1BVzMdbXouumqX7ZWyK9rD/q+SnbVTSjMQO+zF3w9HCV8gHCvzFPoN/qGFj+vnH4hRuonQGrXehOKbrqar6Wq6mq43+fr//vinddM/CIoAAAAASUVORK5CYII= + + + + Tutorial - Part 3 + + + diff --git a/Tutorial/Manifests/Tutorial_Part_4.trex b/Tutorial/Manifests/Tutorial_Part_4.trex new file mode 100644 index 00000000..4bcd550e --- /dev/null +++ b/Tutorial/Manifests/Tutorial_Part_4.trex @@ -0,0 +1,22 @@ + + + + en_US + + Demonstrates getting the selected marks and responding to user input + + + + + 0.6 + + http://localhost:8765/Tutorial/Part_4/MarksSelection.html + + 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 + + + + Tutorial - Part 4 + + + diff --git a/Tutorial/Manifests/Tutorial_Part_5.trex b/Tutorial/Manifests/Tutorial_Part_5.trex new file mode 100644 index 00000000..8d9dd7a0 --- /dev/null +++ b/Tutorial/Manifests/Tutorial_Part_5.trex @@ -0,0 +1,22 @@ + + + + en_US + + Demonstrates getting the selected marks and responding to user input + + + + + 0.6 + + http://localhost:8765/Tutorial/Part_5/MarksSelection.html + + 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 + + + + Tutorial - Part 5 + + + diff --git a/Tutorial/Manifests/Tutorial_Part_6.trex b/Tutorial/Manifests/Tutorial_Part_6.trex new file mode 100644 index 00000000..02f59d00 --- /dev/null +++ b/Tutorial/Manifests/Tutorial_Part_6.trex @@ -0,0 +1,22 @@ + + + + en_US + + Demonstrates getting the selected marks and responding to user input + + + + + 0.6 + + http://localhost:8765/Tutorial/Part_6/MarksSelection.html + + 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 + + + + Tutorial - Part 6 + + + diff --git a/Tutorial/Part_0/MarksSelection.css b/Tutorial/Part_0/MarksSelection.css new file mode 100644 index 00000000..e69de29b diff --git a/Tutorial/Part_0/MarksSelection.html b/Tutorial/Part_0/MarksSelection.html new file mode 100644 index 00000000..70a97bc3 --- /dev/null +++ b/Tutorial/Part_0/MarksSelection.html @@ -0,0 +1,21 @@ + + + + + + + + + + + + Tutorial - Part 0 + + + + + + + Hello Extensions! + + \ No newline at end of file diff --git a/Tutorial/Part_0/MarksSelection.js b/Tutorial/Part_0/MarksSelection.js new file mode 100644 index 00000000..36fc4059 --- /dev/null +++ b/Tutorial/Part_0/MarksSelection.js @@ -0,0 +1,11 @@ +"use strict"; + +// Wrap everything in an anonymous function to avoid poluting the global namespace +(function() { + + // Use the jQuery document ready signal to know when everything has been initialized + $(document).ready(function() { + // Add your startup code here + + }); +})(); \ No newline at end of file diff --git a/Tutorial/Part_0/readme.md b/Tutorial/Part_0/readme.md new file mode 100644 index 00000000..66c5ce92 --- /dev/null +++ b/Tutorial/Part_0/readme.md @@ -0,0 +1,19 @@ +## Part 0 - Starting the Server & Registering a Manifest + +This section contains a couple of very basic files which will become the basis of our extensions. There is a simple HTML page which includes jquery and some other libraries, a javascript file where we will write our code, and an empty css file. At the end of the section, we'll be able to see our extension show up in Tableau, and load this basic html page inside a dashboard. + +#### Starting the Server + +Extensions are simply web pages, so the first thing we'll need to do is make sure we have a web server up and running to serve our content. To do that, navigate to the root of the extensions repository in a command prompt, and run `npm start`. This command will start a simple http server listening on port 8765 and just serving up the contents of this repository over http. + +#### Registering the Manifest + +The very first thing you need to do is to provide an extension, or manifest file (`.trex`). If you cloned or downloaded the `.zip` file for the repository, you can find the manifests for the tutorial inside the Manifests folder. The `.trex` file contains basic information like the name of the extensions (as it will appear in Tableau) and the url where the extension is hosted. To have the extension show up in Tableau, you must copy the `.trex` file into your `My Tableau Repository (Beta)/Extensions` fodler and restart Tableau. When Tableau start up again, you should see the extensions listed when authoring a dashboard. + +#### Testing It Out + +After starting the server, copying the manifest file over, and restarting Tableau, you should now see your extension in the dashboard authoring pane on the left side of Tableau. Drag out the extension onto a dashboard, and you should see "Hello Extensions" on your dashboard. + +![Part 0 Screenshot](../assets/Part_0.png) + +[Next Section (Part 1 - Initialization)](../Part_1/readme.md) \ No newline at end of file diff --git a/Tutorial/Part_1/MarksSelection.css b/Tutorial/Part_1/MarksSelection.css new file mode 100644 index 00000000..b4261c76 --- /dev/null +++ b/Tutorial/Part_1/MarksSelection.css @@ -0,0 +1,11 @@ +h4, h5 { + text-align: center; +} + +div.DTS div.dataTables_scrollBody { + background: white; +} + +.sheet_name { + font-weight: bold; +} \ No newline at end of file diff --git a/Tutorial/Part_1/MarksSelection.html b/Tutorial/Part_1/MarksSelection.html new file mode 100644 index 00000000..fb937ca0 --- /dev/null +++ b/Tutorial/Part_1/MarksSelection.html @@ -0,0 +1,26 @@ + + + + + + + + Tutorial - Part 1 + + + + + + + + + + + + + +
+

Hello from

+
+ + \ No newline at end of file diff --git a/Tutorial/Part_1/MarksSelection.js b/Tutorial/Part_1/MarksSelection.js new file mode 100644 index 00000000..0a220c14 --- /dev/null +++ b/Tutorial/Part_1/MarksSelection.js @@ -0,0 +1,17 @@ +"use strict"; + +// Wrap everything in an anonymous function to avoid poluting the global namespace +(function() { + + // Use the jQuery document ready signal to know when everything has been initialized + $(document).ready(function() { + + // Tell Tableau we'd like to initialize our extension + tableau.extensions.initializeAsync().then(function() { + + // Get the dashboard name from the tableau namespace and set it as our title + const dashboardName = tableau.extensions.dashboardContent.dashboard.name; + $('#choose_sheet_title').text(dashboardName); + }); + }); +})(); \ No newline at end of file diff --git a/Tutorial/Part_1/readme.md b/Tutorial/Part_1/readme.md new file mode 100644 index 00000000..10d43e7a --- /dev/null +++ b/Tutorial/Part_1/readme.md @@ -0,0 +1,25 @@ +## Part 1 - Initialization + +Now that we have our extension registered with Tableau, we need to add some things to it in order to initialize communication with Tableau and get everythign ready. + +#### Adding the Tableau Extensions Library + +A requirement of every extension is to include the Tableau Extensions JavaScript library with their extension. This library is reponsible for providing the API which your extension will communicate through. We include the library by adding a script tag to our html document with the path to the libary `` (TODO - This will change once we have a CDN). + +In Part 0, we includes some external JavaScript libraries which will help make writing our extension easier. The JavaScript libraries we included were Bootstrap, DataTables, and JQuery. Data Tables has a convenient download builder [here](https://datatables.net/download/) which we used to bundle all this together. + +#### Telling Tableau we want to initialize + +The final step for writing a complete extension is to call the Extension API method `tableau.extensions.initializeAsync()` when the page has loaded. This indicates to Tableau that this is a real extension and everything is working as expected. The method call also triggers Tableau to configure the rest of the Extensions API. A common pattern in the Extensions API is to have function names which end with `Async()`. When you see this in a function signature, it means that function will return a JavaScript [promise](https://scotch.io/tutorials/javascript-promises-for-dummies) which will resolved when complete. + +#### Getting the Dashboard's Name + +The final change we make is to add some code which will be executed once our initialize promise has resolved. This code grabs the name of the dashboard from `tableau.extensions.dashboardContent.dashboard.name` and displays it to the user. + +#### Trying it out + +Drag out the extensiosn for Part 1 and you should see the name of your dashboard in the zone. + +![Part 1 Screenshot](../assets/Part_1.png) + +[Next Section (Part 2 - Ask the User to Select a Sheet)](../Part_2/readme.md) \ No newline at end of file diff --git a/Tutorial/Part_2/MarksSelection.css b/Tutorial/Part_2/MarksSelection.css new file mode 100644 index 00000000..b4261c76 --- /dev/null +++ b/Tutorial/Part_2/MarksSelection.css @@ -0,0 +1,11 @@ +h4, h5 { + text-align: center; +} + +div.DTS div.dataTables_scrollBody { + background: white; +} + +.sheet_name { + font-weight: bold; +} \ No newline at end of file diff --git a/Tutorial/Part_2/MarksSelection.html b/Tutorial/Part_2/MarksSelection.html new file mode 100644 index 00000000..1d5ebde1 --- /dev/null +++ b/Tutorial/Part_2/MarksSelection.html @@ -0,0 +1,37 @@ + + + + + + + + Tutorial - Part 2 + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Tutorial/Part_2/MarksSelection.js b/Tutorial/Part_2/MarksSelection.js new file mode 100644 index 00000000..4fa7e551 --- /dev/null +++ b/Tutorial/Part_2/MarksSelection.js @@ -0,0 +1,61 @@ +"use strict"; + +// Wrap everything in an anonymous function to avoid poluting the global namespace +(function() { + + // Use the jQuery document ready signal to know when everything has been initialized + $(document).ready(function() { + + // Tell Tableau we'd like to initialize our extension + tableau.extensions.initializeAsync().then(function() { + + // Once the extensions is initialized, ask the user to choose a sheet + showChooseSheetDialog(); + }); + }); + + /** + * Shows the choose sheet UI. Once a sheet is selected, the data table for the sheet is shown + */ + function showChooseSheetDialog() { + // Clear out the existing list of sheets + $('#choose_sheet_buttons').empty(); + + // Set the dashboard's name in the title + const dashboardName = tableau.extensions.dashboardContent.dashboard.name; + $('#choose_sheet_title').text(dashboardName); + + // The first step in choosing a sheet will be asking Tableau what sheets are available + const worksheets = tableau.extensions.dashboardContent.dashboard.worksheets; + + // Next, we loop through all of these worksheets add add radio buttons for each one + worksheets.forEach(function(worksheet) { + + // Declare our new button which contains the sheet name + const button = $(" + +
+
+
No marks selected
+
+ + + + + + + \ No newline at end of file diff --git a/Tutorial/Part_3/MarksSelection.js b/Tutorial/Part_3/MarksSelection.js new file mode 100644 index 00000000..f1131114 --- /dev/null +++ b/Tutorial/Part_3/MarksSelection.js @@ -0,0 +1,137 @@ +"use strict"; + +// Wrap everything in an anonymous function to avoid poluting the global namespace +(function() { + + // Use the jQuery document ready signal to know when everything has been initialized + $(document).ready(function() { + + // Tell Tableau we'd like to initialize our extension + tableau.extensions.initializeAsync().then(function() { + + // Once the extensions is initialized, ask the user to choose a sheet + showChooseSheetDialog(); + + initializeButtons(); + }); + }); + + /** + * Shows the choose sheet UI. Once a sheet is selected, the data table for the sheet is shown + */ + function showChooseSheetDialog() { + // Clear out the existing list of sheets + $('#choose_sheet_buttons').empty(); + + // Set the dashboard's name in the title + const dashboardName = tableau.extensions.dashboardContent.dashboard.name; + $('#choose_sheet_title').text(dashboardName); + + // The first step in choosing a sheet will be asking Tableau what sheets are available + const worksheets = tableau.extensions.dashboardContent.dashboard.worksheets; + + // Next, we loop through all of these worksheets add add radio buttons for each one + worksheets.forEach(function(worksheet) { + + // Declare our new button which contains the sheet name + const button = createButton(worksheet.name); + + // Create an event handler for when this button is clicked + button.click(function() { + + // Get the worksheet name which was selected + const worksheetName = worksheet.name; + + // Close the dialog and show the data table for this worksheet + $('#choose_sheet_dialog').modal('toggle'); + loadSelectedMarks(worksheetName); + }); + + // Add our button to the list of worksheets to choose from + $('#choose_sheet_buttons').append(button); + }); + + // Show the dialog + $('#choose_sheet_dialog').modal('toggle'); + } + + function createButton(buttonTitle) { + const button = + $(``); + + return button; + } + + function loadSelectedMarks(worksheetName) { + // Get the worksheet object we want to get the selectd marks for + const worksheet = getSelectedSheet(worksheetName); + + // Set our title to an appropriate value + $('#selected_marks_title').text(worksheet.name); + + // Call to get the selected marks for our sheet + worksheet.getSelectedMarksAsync().then(function(marks) { + + // Get the first DataTable for our selected marks (usually there is just one) + const worksheetData = marks.data[0]; + + // Map our data into the format which the data table component expects it + const data = worksheetData.data.map(function(row, index) { + const rowData = row.map(function(cell) { + return cell.formattedValue; + }); + + return rowData; + }); + + const columns = worksheetData.columns.map(function(column) { + return { title: column.fieldName } + }); + + // Populate the data table with the rows and columns we just pulled out + populateDataTable(data, columns); + }); + } + + function populateDataTable(data, columns) { + // Do some UI setup here change the visible section and reinitialize the table + $('#data_table_wrapper').empty(); + + if (data.length > 0) { + $('#no_data_message').css('display', 'none'); + $('#data_table_wrapper').append(`
`); + + // Do some math to compute the height we want the data table to be + var top = $('#data_table_wrapper')[0].getBoundingClientRect().top; + var height = $(document).height() - top - 130; + + // Initialize our data table with what we just gathered + $('#data_table').DataTable({ + data: data, + columns: columns, + autoWidth: false, + deferRender: true, + scroller: true, + scrollY: height, + scrollX: true, + dom: "<'row'<'col-sm-6'i><'col-sm-6'f>><'row'<'col-sm-12'tr>>" // Do some custom styling + }); + } else { + // If we didn't get any rows back, there must be no marks selected + $('#no_data_message').css('display', 'inline'); + } + } + + function initializeButtons() { + $('#show_choose_sheet_button').click(showChooseSheetDialog); + } + + function getSelectedSheet(worksheetName) { + // go through all the worksheets in the dashboard and find the one we want + return tableau.extensions.dashboardContent.dashboard.worksheets.find(function(sheet){ + return sheet.name === worksheetName; + }); + } +})(); \ No newline at end of file diff --git a/Tutorial/Part_3/readme.md b/Tutorial/Part_3/readme.md new file mode 100644 index 00000000..3fde7075 --- /dev/null +++ b/Tutorial/Part_3/readme.md @@ -0,0 +1,17 @@ +## Part 3 - Getting and Displaying the Data + +Now that the user has selected a sheet, we want to change the UI that is displayed and populate a data grid with the data for the selected marks, or a message indicating no marks are selected. We also set up some other UI components, such as hooking up a button for switching which sheet to get data from. + +#### Getting the Data + +Once the right UI is showing, we need to ask Tableau for the data of the sheet the user picked. The first step is to find the worksheet object by name inside the `tableau.extensions.dashboardContent.dashboard.worksheets` array. After we have the sheet, we call the `worksheet.getSelectedMarksAsync()` API to get the data for the marks that are selected. This is an asynchronous call which returns a promise. We can consult the Extensions API documentation to find out what format the returned data will have. + +#### Displaying the Data + +The final step is to process the returned data into a format that Data Tables expects and pass the data over. We do this by mapping the data into rows and column headers before initializing the data table component. [DataTables](https://datatables.net/) has great documentation, so we won't go into details about how we configured the table. + +#### Trying it out + +![Part 3 Screenshot](../assets/Part_3.gif) + +[Next Section (Part 4 - Responding to Selection Changes)](../Part_4/readme.md) \ No newline at end of file diff --git a/Tutorial/Part_4/MarksSelection.css b/Tutorial/Part_4/MarksSelection.css new file mode 100644 index 00000000..b4261c76 --- /dev/null +++ b/Tutorial/Part_4/MarksSelection.css @@ -0,0 +1,11 @@ +h4, h5 { + text-align: center; +} + +div.DTS div.dataTables_scrollBody { + background: white; +} + +.sheet_name { + font-weight: bold; +} \ No newline at end of file diff --git a/Tutorial/Part_4/MarksSelection.html b/Tutorial/Part_4/MarksSelection.html new file mode 100644 index 00000000..2165c8bb --- /dev/null +++ b/Tutorial/Part_4/MarksSelection.html @@ -0,0 +1,53 @@ + + + + + + + + Tutorial - Part 4 + + + + + + + + + + + + + +
+ +
+

+ Marks for Sheet Name + +

+
+
+
No marks selected
+
+
+
+ + + + + \ No newline at end of file diff --git a/Tutorial/Part_4/MarksSelection.js b/Tutorial/Part_4/MarksSelection.js new file mode 100644 index 00000000..e1ab8bfe --- /dev/null +++ b/Tutorial/Part_4/MarksSelection.js @@ -0,0 +1,152 @@ +"use strict"; + +// Wrap everything in an anonymous function to avoid poluting the global namespace +(function() { + + // Use the jQuery document ready signal to know when everything has been initialized + $(document).ready(function() { + + // Tell Tableau we'd like to initialize our extension + tableau.extensions.initializeAsync().then(function() { + + // Once the extensions is initialized, ask the user to choose a sheet + showChooseSheetDialog(); + + initializeButtons(); + }); + }); + + /** + * Shows the choose sheet UI. Once a sheet is selected, the data table for the sheet is shown + */ + function showChooseSheetDialog() { + // Clear out the existing list of sheets + $('#choose_sheet_buttons').empty(); + + // Set the dashboard's name in the title + const dashboardName = tableau.extensions.dashboardContent.dashboard.name; + $('#choose_sheet_title').text(dashboardName); + + // The first step in choosing a sheet will be asking Tableau what sheets are available + const worksheets = tableau.extensions.dashboardContent.dashboard.worksheets; + + // Next, we loop through all of these worksheets add add radio buttons for each one + worksheets.forEach(function(worksheet) { + + // Declare our new button which contains the sheet name + const button = createButton(worksheet.name); + + // Create an event handler for when this button is clicked + button.click(function() { + + // Get the worksheet name which was selected + const worksheetName = worksheet.name; + + // Close the dialog and show the data table for this worksheet + $('#choose_sheet_dialog').modal('toggle'); + loadSelectedMarks(worksheetName); + }); + + // Add our button to the list of worksheets to choose from + $('#choose_sheet_buttons').append(button); + }); + + // Show the dialog + $('#choose_sheet_dialog').modal('toggle'); + } + + function createButton(buttonTitle) { + const button = + $(``); + + return button; + } + + // This variable will save off the function we can call to unregister listening to marks-selected events + let unregisterEventHandlerFunction = undefined; + + function loadSelectedMarks(worksheetName) { + + // Remove any existing event listeners + if (unregisterEventHandlerFunction) { + unregisterEventHandlerFunction(); + } + + // Get the worksheet object we want to get the selectd marks for + const worksheet = getSelectedSheet(worksheetName); + + // Set our title to an appropriate value + $('#selected_marks_title').text(worksheet.name); + + // Call to get the selected marks for our sheet + worksheet.getSelectedMarksAsync().then(function(marks) { + + // Get the first DataTable for our selected marks (usually there is just one) + const worksheetData = marks.data[0]; + + // Map our data into the format which the data table component expects it + const data = worksheetData.data.map(function(row, index) { + const rowData = row.map(function(cell) { + return cell.formattedValue; + }); + + return rowData; + }); + + const columns = worksheetData.columns.map(function(column) { + return { title: column.fieldName } + }); + + // Populate the data table with the rows and columns we just pulled out + populateDataTable(data, columns); + }); + + // Add an event listener for the selection changed event on this sheet. + unregisterEventHandlerFunction = worksheet.addEventListener(tableau.TableauEventType.MarkSelectionChanged, function(selectionEvent) { + // When the selection changes, reload the data + loadSelectedMarks(worksheetName); + }); + } + + function populateDataTable(data, columns) { + // Do some UI setup here change the visible section and reinitialize the table + $('#data_table_wrapper').empty(); + + if (data.length > 0) { + $('#no_data_message').css('display', 'none'); + $('#data_table_wrapper').append(`
`); + + // Do some math to compute the height we want the data table to be + var top = $('#data_table_wrapper')[0].getBoundingClientRect().top; + var height = $(document).height() - top - 130; + + // Initialize our data table with what we just gathered + $('#data_table').DataTable({ + data: data, + columns: columns, + autoWidth: false, + deferRender: true, + scroller: true, + scrollY: height, + scrollX: true, + dom: "<'row'<'col-sm-6'i><'col-sm-6'f>><'row'<'col-sm-12'tr>>" // Do some custom styling + }); + } else { + // If we didn't get any rows back, there must be no marks selected + $('#no_data_message').css('display', 'inline'); + } + } + + function initializeButtons() { + $('#show_choose_sheet_button').click(showChooseSheetDialog); + } + + function getSelectedSheet(worksheetName) { + // go through all the worksheets in the dashboard and find the one we want + return tableau.extensions.dashboardContent.dashboard.worksheets.find(function(sheet){ + return sheet.name === worksheetName; + }); + } +})(); \ No newline at end of file diff --git a/Tutorial/Part_4/readme.md b/Tutorial/Part_4/readme.md new file mode 100644 index 00000000..203baf10 --- /dev/null +++ b/Tutorial/Part_4/readme.md @@ -0,0 +1,15 @@ +## Part 4 - Responding to Selection Changes + +We now have a fully working example which allows us to get the selected marks for a sheet. Unfortunately, when the mark selection changes we don't update to those changes. The next part of our tutorial covers responding to user selection changes. This is actually an extremely simple process. + +#### Adding the event listener + +Throughout the extensions API, we provide ways to register for notifications about events occuring. The general signature is `object.addEventListener('event_name', callbackFunction)`. For selection changes, we get the worksheet object we want to listen on, and then call `worksheet.addEventListener(tableau.TableauEventType.MarkSelectionChanged, handler)`. Whenever this sheet has a new selection, our `handler` function will be called and we can reload the data table with new data. In this case, our handler just triggers us to fetch the data gain. + +The other important aspect of the `addEventListener` function is that it returns a helper function that makes it easy to remove the event listner. When we re-initialize the data table, we check to see if our `unregisterEventHandlerFunction` function is defined, if it is, we unregister it, so we are only listening to one sheet at a time. + +#### Trying it out + +![Part 4 Screenshot](../assets/Part_4.gif) + +[Next Section (Part 5 - Persisting Settings in the Workbook)](../Part_5/readme.md) \ No newline at end of file diff --git a/Tutorial/Part_5/MarksSelection.css b/Tutorial/Part_5/MarksSelection.css new file mode 100644 index 00000000..b4261c76 --- /dev/null +++ b/Tutorial/Part_5/MarksSelection.css @@ -0,0 +1,11 @@ +h4, h5 { + text-align: center; +} + +div.DTS div.dataTables_scrollBody { + background: white; +} + +.sheet_name { + font-weight: bold; +} \ No newline at end of file diff --git a/Tutorial/Part_5/MarksSelection.html b/Tutorial/Part_5/MarksSelection.html new file mode 100644 index 00000000..50af80a3 --- /dev/null +++ b/Tutorial/Part_5/MarksSelection.html @@ -0,0 +1,56 @@ + + + + + + + + Tutorial - Part 5 + + + + + + + + + + + + + +
+ +
+

+ Marks for Sheet Name + + +

+
+
+
No marks selected
+
+
+
+ + + + + \ No newline at end of file diff --git a/Tutorial/Part_5/MarksSelection.js b/Tutorial/Part_5/MarksSelection.js new file mode 100644 index 00000000..d3833552 --- /dev/null +++ b/Tutorial/Part_5/MarksSelection.js @@ -0,0 +1,162 @@ +"use strict"; + +// Wrap everything in an anonymous function to avoid poluting the global namespace +(function() { + + // Use the jQuery document ready signal to know when everything has been initialized + $(document).ready(function() { + + // Tell Tableau we'd like to initialize our extension + tableau.extensions.initializeAsync().then(function() { + + // Fetch the saved sheet name from settings. this will be undefined if there isn't one configured yet + const savedSheetName = tableau.extensions.settings.get('sheet'); + if (savedSheetName) { + // We have a saved sheet name, show its selected marks + loadSelectedMarks(savedSheetName); + } else { + // if there isn't a sheet saved in settings, show the dialog + showChooseSheetDialog(); + } + + initializeButtons(); + }); + }); + + /** + * Shows the choose sheet UI. Once a sheet is selected, the data table for the sheet is shown + */ + function showChooseSheetDialog() { + // Clear out the existing list of sheets + $('#choose_sheet_buttons').empty(); + + // Set the dashboard's name in the title + const dashboardName = tableau.extensions.dashboardContent.dashboard.name; + $('#choose_sheet_title').text(dashboardName); + + // The first step in choosing a sheet will be asking Tableau what sheets are available + const worksheets = tableau.extensions.dashboardContent.dashboard.worksheets; + + // Next, we loop through all of these worksheets add add radio buttons for each one + worksheets.forEach(function(worksheet) { + + // Declare our new button which contains the sheet name + const button = createButton(worksheet.name); + + // Create an event handler for when this button is clicked + button.click(function() { + + // Get the worksheet name and save it to settings. + const worksheetName = worksheet.name; + tableau.extensions.settings.set('sheet', worksheetName); + tableau.extensions.settings.saveAsync().then(function() { + + // Once the save has completed, close the dialog and show the data table for this worksheet + $('#choose_sheet_dialog').modal('toggle'); + loadSelectedMarks(worksheetName); + }); + }); + + // Add our button to the list of worksheets to choose from + $('#choose_sheet_buttons').append(button); + }); + + // Show the dialog + $('#choose_sheet_dialog').modal('toggle'); + } + + function createButton(buttonTitle) { + const button = + $(``); + + return button; + } + + // This variable will save off the function we can call to unregister listening to marks-selected events + let unregisterEventHandlerFunction = undefined; + + function loadSelectedMarks(worksheetName) { + + // Remove any existing event listeners + if (unregisterEventHandlerFunction) { + unregisterEventHandlerFunction(); + } + + // Get the worksheet object we want to get the selectd marks for + const worksheet = getSelectedSheet(worksheetName); + + // Set our title to an appropriate value + $('#selected_marks_title').text(worksheet.name); + + // Call to get the selected marks for our sheet + worksheet.getSelectedMarksAsync().then(function(marks) { + + // Get the first DataTable for our selected marks (usually there is just one) + const worksheetData = marks.data[0]; + + // Map our data into the format which the data table component expects it + const data = worksheetData.data.map(function(row, index) { + const rowData = row.map(function(cell) { + return cell.formattedValue; + }); + + return rowData; + }); + + const columns = worksheetData.columns.map(function(column) { + return { title: column.fieldName } + }); + + // Populate the data table with the rows and columns we just pulled out + populateDataTable(data, columns); + }); + + // Add an event listener for the selection changed event on this sheet. + unregisterEventHandlerFunction = worksheet.addEventListener(tableau.TableauEventType.MarkSelectionChanged, function(selectionEvent) { + // When the selection changes, reload the data + loadSelectedMarks(worksheetName); + }); + } + + function populateDataTable(data, columns) { + // Do some UI setup here change the visible section and reinitialize the table + $('#data_table_wrapper').empty(); + + if (data.length > 0) { + $('#no_data_message').css('display', 'none'); + $('#data_table_wrapper').append(`
`); + + // Do some math to compute the height we want the data table to be + var top = $('#data_table_wrapper')[0].getBoundingClientRect().top; + var height = $(document).height() - top - 130; + + // Initialize our data table with what we just gathered + $('#data_table').DataTable({ + data: data, + columns: columns, + autoWidth: false, + deferRender: true, + scroller: true, + scrollY: height, + scrollX: true, + dom: "<'row'<'col-sm-6'i><'col-sm-6'f>><'row'<'col-sm-12'tr>>" // Do some custom styling + }); + } else { + // If we didn't get any rows back, there must be no marks selected + $('#no_data_message').css('display', 'inline'); + } + } + + function initializeButtons() { + $('#show_choose_sheet_button').click(showChooseSheetDialog); + } + + function getSelectedSheet(worksheetName) { + // go through all the worksheets in the dashboard and find the one we want + return tableau.extensions.dashboardContent.dashboard.worksheets.find(function(sheet){ + return sheet.name === worksheetName; + }); + } +})(); \ No newline at end of file diff --git a/Tutorial/Part_5/readme.md b/Tutorial/Part_5/readme.md new file mode 100644 index 00000000..d384aa6d --- /dev/null +++ b/Tutorial/Part_5/readme.md @@ -0,0 +1,19 @@ +## Part 5 - Performing Actions + +As you may have noticed when playing with our sample up to this point, when the extension reloads or the workbook is reloaded, we lose track of which sheet the user has selected to view data for. This creates a suboptimal user experience and would be quite unusable if your extensions had a lot of customization or if you want to publish your workbook or send it to someone and have them see what you saw. Luckily, the Extensions API includes a settings API which allows you to persiste key/value pairs into a workbook to be used again when the extensions is reloaded. + +#### Saving Settings + +To take advantage of the settings API, we add calls to `tableau.extensions.settings.set('sheet', worksheetName)` and `tableau.extensions.settings.saveAsync()` once the user has selected their sheet. These APIs together will persist the sheet name into the workbook for it to be available between reloads and will go with the workbook if you publish to server or send to another user. + +#### Retrieving values + +To retrieve these values, we add a call to `tableau.extensions.settings.get('sheet')` in our initialization code. If we have a saved sheet name, we immediately switch to the data table view instead of showing the configuration dialog. + +#### Trying it out + +To see our changes in action, we can either click the reload button in the zone, or save our workbook, close Tableau, and reopen it to see our extension back in the state it was. + +![Part 5 Screenshot](../assets/Part_5.gif) + +[Next Section (Part 6 - Persisting Settings in the Workbook)](../Part_6/readme.md) \ No newline at end of file diff --git a/Tutorial/Part_6/MarksSelection.css b/Tutorial/Part_6/MarksSelection.css new file mode 100644 index 00000000..b4261c76 --- /dev/null +++ b/Tutorial/Part_6/MarksSelection.css @@ -0,0 +1,11 @@ +h4, h5 { + text-align: center; +} + +div.DTS div.dataTables_scrollBody { + background: white; +} + +.sheet_name { + font-weight: bold; +} \ No newline at end of file diff --git a/Tutorial/Part_6/MarksSelection.html b/Tutorial/Part_6/MarksSelection.html new file mode 100644 index 00000000..fbcf911f --- /dev/null +++ b/Tutorial/Part_6/MarksSelection.html @@ -0,0 +1,56 @@ + + + + + + + + Tutorial - Part 6 + + + + + + + + + + + + + +
+ +
+

+ Marks for Sheet Name + + +

+
+
+
No marks selected
+
+
+
+ + + + + \ No newline at end of file diff --git a/Tutorial/Part_6/MarksSelection.js b/Tutorial/Part_6/MarksSelection.js new file mode 100644 index 00000000..16db29f1 --- /dev/null +++ b/Tutorial/Part_6/MarksSelection.js @@ -0,0 +1,212 @@ +"use strict"; + +// Wrap everything in an anonymous function to avoid poluting the global namespace +(function() { + + // Use the jQuery document ready signal to know when everything has been initialized + $(document).ready(function() { + + // Tell Tableau we'd like to initialize our extension + tableau.extensions.initializeAsync().then(function() { + + // Fetch the saved sheet name from settings. this will be undefined if there isn't one configured yet + const savedSheetName = tableau.extensions.settings.get('sheet'); + if (savedSheetName) { + // We have a saved sheet name, show its selected marks + loadSelectedMarks(savedSheetName); + } else { + // if there isn't a sheet saved in settings, show the dialog + showChooseSheetDialog(); + } + + initializeButtons(); + }); + }); + + /** + * Shows the choose sheet UI. Once a sheet is selected, the data table for the sheet is shown + */ + function showChooseSheetDialog() { + // Clear out the existing list of sheets + $('#choose_sheet_buttons').empty(); + + // Set the dashboard's name in the title + const dashboardName = tableau.extensions.dashboardContent.dashboard.name; + $('#choose_sheet_title').text(dashboardName); + + // The first step in choosing a sheet will be asking Tableau what sheets are available + const worksheets = tableau.extensions.dashboardContent.dashboard.worksheets; + + // Next, we loop through all of these worksheets add add radio buttons for each one + worksheets.forEach(function(worksheet) { + + // Declare our new button which contains the sheet name + const button = createButton(worksheet.name); + + // Create an event handler for when this button is clicked + button.click(function() { + + // Get the worksheet name and save it to settings. + filteredColumns = []; + const worksheetName = worksheet.name; + tableau.extensions.settings.set('sheet', worksheetName); + tableau.extensions.settings.saveAsync().then(function() { + + // Once the save has completed, close the dialog and show the data table for this worksheet + $('#choose_sheet_dialog').modal('toggle'); + loadSelectedMarks(worksheetName); + }); + }); + + // Add our button to the list of worksheets to choose from + $('#choose_sheet_buttons').append(button); + }); + + // Show the dialog + $('#choose_sheet_dialog').modal('toggle'); + } + + function createButton(buttonTitle) { + const button = + $(``); + + return button; + } + + // This variable will save off the function we can call to unregister listening to marks-selected events + let unregisterEventHandlerFunction = undefined; + + function loadSelectedMarks(worksheetName) { + + // Remove any existing event listeners + if (unregisterEventHandlerFunction) { + unregisterEventHandlerFunction(); + } + + // Get the worksheet object we want to get the selectd marks for + const worksheet = getSelectedSheet(worksheetName); + + // Set our title to an appropriate value + $('#selected_marks_title').text(worksheet.name); + + // Call to get the selected marks for our sheet + worksheet.getSelectedMarksAsync().then(function(marks) { + + // Get the first DataTable for our selected marks (usually there is just one) + const worksheetData = marks.data[0]; + + // Map our data into the format which the data table component expects it + const data = worksheetData.data.map(function(row, index) { + const rowData = row.map(function(cell) { + return cell.formattedValue; + }); + + return rowData; + }); + + const columns = worksheetData.columns.map(function(column) { + return { title: column.fieldName } + }); + + // Populate the data table with the rows and columns we just pulled out + populateDataTable(data, columns); + }); + + // Add an event listener for the selection changed event on this sheet. + unregisterEventHandlerFunction = worksheet.addEventListener(tableau.TableauEventType.MarkSelectionChanged, function(selectionEvent) { + // When the selection changes, reload the data + loadSelectedMarks(worksheetName); + }); + } + + function populateDataTable(data, columns) { + // Do some UI setup here change the visible section and reinitialize the table + $('#data_table_wrapper').empty(); + + if (data.length > 0) { + $('#no_data_message').css('display', 'none'); + $('#data_table_wrapper').append(`
`); + + // Do some math to compute the height we want the data table to be + var top = $('#data_table_wrapper')[0].getBoundingClientRect().top; + var height = $(document).height() - top - 130; + + const headerCallback = function(thead, data) { + const headers = $(thead).find('th'); + for (let i = 0; i < headers.length; i++) { + const header = $(headers[i]); + if (header.children().length === 0) { + const fieldName = header.text(); + const button = $(`${fieldName}`); + button.click(function() { + filterByColumn(i, fieldName); + }); + + header.html(button); + } + } + } + + // Initialize our data table with what we just gathered + $('#data_table').DataTable({ + data: data, + columns: columns, + autoWidth: false, + deferRender: true, + scroller: true, + scrollY: height, + scrollX: true, + headerCallback: headerCallback, + dom: "<'row'<'col-sm-6'i><'col-sm-6'f>><'row'<'col-sm-12'tr>>" // Do some custom styling + }); + } else { + // If we didn't get any rows back, there must be no marks selected + $('#no_data_message').css('display', 'inline'); + } + } + + function initializeButtons() { + $('#show_choose_sheet_button').click(showChooseSheetDialog); + $('#reset_filters_button').click(resetFilters); + } + + // Save the columns we've applied filters to so we can reset them + let filteredColumns = []; + + function filterByColumn(columnIndex, fieldName) { + + // Grab our column of data from the data table and filter out to just unique values + const dataTable = $('#data_table').DataTable({ retrieve: true }); + const column = dataTable.column(columnIndex); + const columnDomain = column.data().toArray().filter(function(value, index, self) { + return self.indexOf(value) === index; + }); + + const worksheet = getSelectedSheet(tableau.extensions.settings.get('sheet')); + worksheet.applyFilterAsync(fieldName, columnDomain, tableau.FilterUpdateType.Replace); + filteredColumns.push(fieldName); + return false; + } + + function resetFilters() { + const worksheet = getSelectedSheet(tableau.extensions.settings.get('sheet')); + filteredColumns.forEach(function(columnName) { + worksheet.clearFilterAsync(columnName); + }); + + filteredColumns = []; + } + + function getSelectedSheet(worksheetName) { + if (!worksheetName) { + worksheetName = tableau.extensions.settings.get('sheet'); + } + + // go through all the worksheets in the dashboard and find the one we want + return tableau.extensions.dashboardContent.dashboard.worksheets.find(function(sheet){ + return sheet.name === worksheetName; + }); + } +})(); \ No newline at end of file diff --git a/Tutorial/Part_6/readme.md b/Tutorial/Part_6/readme.md new file mode 100644 index 00000000..70ed7e37 --- /dev/null +++ b/Tutorial/Part_6/readme.md @@ -0,0 +1,26 @@ +## Part 6 - Persisting Settings in the Workbook + +The final step of our tutorial will be about performing actions on our dashboard. For our example, this will mean filtering a viz based on the values in a selected column. When the user has some marks selected, we want to allow them to select a column in the data tabl and then filter their entire visualization down to just the values in that column. + +#### Converting the Headers to Buttons + +The DataTables component we are using to display our data makes it a bit tricky to enable header buttons, but we do so by disabling sorting of the column and by adding a headerCallback function which reformats the headers as clickable link buttons + +#### Doing the Filtering + +For our filtering code, we first need to get the domain (unique values) of the column which the user has clicked on. Then we get our worksheet object and make a call to `worksheet.applyFilterAsync(fieldName, columnDomain, tableau.FilterUpdateType.Replace)`. + +#### Reseting the Filter + +The final thing we want to add is an ability to clear the filter we have just applied. We do this by first keeping track of all the columns which we have filtered by. The next step is to add a button which the user can click to reset the filter. The final step is to add the `resetFilters()` function which calls `worksheet.clearFilterAsync(columnName)` for each filtered column. + +#### Trying it out + +To see this part in action, click the header of categorical column and see the viz get filtered. + +![Part 6 Screenshot](../assets/Part_6.gif) + +That's it! We hope this tutorial was helpful and please open issues for anything which was confusing or incorrect. + + +[Back to Intro](../readme.md) diff --git a/Tutorial/React/README.md b/Tutorial/React/README.md deleted file mode 100644 index bb64e928..00000000 --- a/Tutorial/React/README.md +++ /dev/null @@ -1 +0,0 @@ -TODO, explain how to setup React sample. \ No newline at end of file diff --git a/Tutorial/ReactVersion/.babelrc b/Tutorial/ReactVersion/.babelrc new file mode 100644 index 00000000..974a1ca3 --- /dev/null +++ b/Tutorial/ReactVersion/.babelrc @@ -0,0 +1,7 @@ +{ + "presets": [ + "es2015", + "stage-0", + "react" + ] +} diff --git a/Tutorial/ReactVersion/.editorconfig b/Tutorial/ReactVersion/.editorconfig new file mode 100644 index 00000000..4a7ea303 --- /dev/null +++ b/Tutorial/ReactVersion/.editorconfig @@ -0,0 +1,12 @@ +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false diff --git a/Tutorial/ReactVersion/.eslintrc b/Tutorial/ReactVersion/.eslintrc new file mode 100644 index 00000000..b542daaf --- /dev/null +++ b/Tutorial/ReactVersion/.eslintrc @@ -0,0 +1,35 @@ +{ + "parser": "babel-eslint", + "plugins": [ + "react" + ], + "parserOptions": { + "ecmaVersion": 6, + "sourceType": "module", + "ecmaFeatures": { + "jsx": true + } + }, + "env": { + "browser": true, + "amd": true, + "es6": true, + "node": true, + "mocha": true + }, + "rules": { + "comma-dangle": 1, + "quotes": [ 1, "single" ], + "no-undef": 1, + "global-strict": 0, + "no-extra-semi": 1, + "no-underscore-dangle": 0, + "no-console": 1, + "no-unused-vars": 1, + "no-trailing-spaces": [1, { "skipBlankLines": true }], + "no-unreachable": 1, + "no-alert": 0, + "react/jsx-uses-react": 1, + "react/jsx-uses-vars": 1 + } +} diff --git a/Tutorial/ReactVersion/.gitignore b/Tutorial/ReactVersion/.gitignore new file mode 100644 index 00000000..fb1fbda4 --- /dev/null +++ b/Tutorial/ReactVersion/.gitignore @@ -0,0 +1,33 @@ +# Logs +logs +*.log + +# Runtime data +pids +*.pid +*.seed + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directory +# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git +node_modules + +# Bower +bower_components/ + +# IDE/Editor data +.idea diff --git a/Tutorial/ReactVersion/.yo-rc.json b/Tutorial/ReactVersion/.yo-rc.json new file mode 100644 index 00000000..bb15adab --- /dev/null +++ b/Tutorial/ReactVersion/.yo-rc.json @@ -0,0 +1,3 @@ +{ + "generator-react-webpack": {} +} \ No newline at end of file diff --git a/Tutorial/ReactVersion/README.md b/Tutorial/ReactVersion/README.md new file mode 100644 index 00000000..5dc671bc --- /dev/null +++ b/Tutorial/ReactVersion/README.md @@ -0,0 +1,15 @@ +# React Tutorial + +This folder contains a version of our finalized tutorial written in React instead of using jQuery and more traditional javascript techniques. The demo is functionally the same, but highlights some best practices and techniques for building an extensions using React + +## Setup + +- Navigate to this folder in a command prompt +- run `npm install` +- Copy `TutorialReact.trex` file to `~/My Tableau Repository (Beta)/Extensions` +- run `npm start` to start the web server and compile the code (automatic updates are enabled) +- Restart Tableau to use the extension + +## Project Structure + +This project was created using the [yo react-webpack](https://github.com/react-webpack-generators/generator-react-webpack#readme) yeoman generator. Most of the interesting code is inside of `./src/components` folder which has the main components of the extension. diff --git a/Tutorial/React/TutorialReact.trex b/Tutorial/ReactVersion/TutorialReact.trex similarity index 89% rename from Tutorial/React/TutorialReact.trex rename to Tutorial/ReactVersion/TutorialReact.trex index f62d75e9..74967281 100644 --- a/Tutorial/React/TutorialReact.trex +++ b/Tutorial/ReactVersion/TutorialReact.trex @@ -3,20 +3,20 @@ en_US - Extensions Tutorial (React) + Tutorial (React) 1.1 - http://localhost:8765/tutorial/react/index.html + http://localhost:8000/index.html iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAlhJREFUOI2Nkt9vy1EYh5/3bbsvRSySCZbIxI+ZCKsN2TKtSFyIrV2WuRCJuBiJWxfuxCVXbvwFgiEtposgLFJElnbU1SxIZIIRJDKTrdu+53Uhra4mce7Oe57Pcz7JOULFisViwZ+29LAzOSjQYDgz1ZcCvWuXV11MJpN+OS/lm6179teqH0yDqxPTCyKSA8DcDsyOmOprnCaeP7459pdgy969i0LTC3IO/RQMyoHcQN+3cnljW3dNIFC47qDaK3g7BwdTkwBaBELT4ZPOUVWgKl4ZBnjxJPUlMDnTDrp0pmr6RHFeEjjcUUXPDGeSEwDN0Xg8sivxMhJNjGzbHd8PkM3eHRfkrBM5NkcQaY2vUnTlrDIA0NoaX+KLXFFlowr14tvVpqb2MICzmQcKqxvbumv+NAhZGCCIPwEw6QWXKYRL/VUXO0+rAUJiPwAk5MIlgVfwPjjHLCL1APmHN94ZdqeYN+NW/mn6I4BvwQYchcLnwFhJMDiYmlRxAzjpKWZkYkUCcZ2I61wi37tLbYyjiN0fHk5Oz3nGSLSzBbNHCF35R7f6K1/hN9PRhek11FrymfQQQKB4+Gl05P2qNRtmETlXW7e+b2z01dfycGNbfFMAbqNyKp9Jp4rzOT8RYFs0njJkc2iqsCObvTsOsDWWqA5C1uFy+Uz/oXJeKwVT4h0RmPUXhi79vuC0Ku6yOffTK3g9lfxfDQAisY516sg5kfOCiJk7HoLt2cf9b/9LANAc7dznm98PagG1fUOZ9IP5uMB8Q4CPoyNvausapkTt3rNMuvdf3C/o6+czhtdwmwAAAABJRU5ErkJggg== - Extensions Tutorial (React) + Tutorial (React) diff --git a/Tutorial/ReactVersion/cfg/base.js b/Tutorial/ReactVersion/cfg/base.js new file mode 100644 index 00000000..751648fd --- /dev/null +++ b/Tutorial/ReactVersion/cfg/base.js @@ -0,0 +1,43 @@ +'use strict'; +let path = require('path'); +let defaultSettings = require('./defaults'); + +// Additional npm or bower modules to include in builds +// Add all foreign plugins you may need into this array +// @example: +// let npmBase = path.join(__dirname, '../node_modules'); +// let additionalPaths = [ path.join(npmBase, 'react-bootstrap') ]; +let additionalPaths = []; + +module.exports = { + additionalPaths: additionalPaths, + port: defaultSettings.port, + debug: true, + devtool: 'eval', + output: { + path: path.join(__dirname, '/../dist/assets'), + filename: 'app.js', + publicPath: defaultSettings.publicPath + }, + devServer: { + contentBase: './src/', + historyApiFallback: true, + hot: true, + port: defaultSettings.port, + publicPath: defaultSettings.publicPath, + noInfo: false + }, + resolve: { + extensions: ['', '.js', '.jsx'], + alias: { + actions: `${defaultSettings.srcPath}/actions/`, + components: `${defaultSettings.srcPath}/components/`, + sources: `${defaultSettings.srcPath}/sources/`, + stores: `${defaultSettings.srcPath}/stores/`, + styles: `${defaultSettings.srcPath}/styles/`, + config: `${defaultSettings.srcPath}/config/` + process.env.REACT_WEBPACK_ENV, + 'react/lib/ReactMount': 'react-dom/lib/ReactMount' + } + }, + module: {} +}; diff --git a/Tutorial/ReactVersion/cfg/defaults.js b/Tutorial/ReactVersion/cfg/defaults.js new file mode 100644 index 00000000..67a43287 --- /dev/null +++ b/Tutorial/ReactVersion/cfg/defaults.js @@ -0,0 +1,64 @@ +/** + * Function that returns default values. + * Used because Object.assign does a shallow instead of a deep copy. + * Using [].push will add to the base array, so a require will alter + * the base array output. + */ +'use strict'; + +const path = require('path'); +const srcPath = path.join(__dirname, '/../src'); +const dfltPort = 8000; + +/** + * Get the default modules object for webpack + * @return {Object} + */ +function getDefaultModules() { + return { + preLoaders: [ + { + test: /\.(js|jsx)$/, + include: srcPath, + loader: 'eslint-loader' + } + ], + loaders: [ + { + test: /\.css$/, + loader: 'style-loader!css-loader' + }, + { + test: /\.sass/, + loader: 'style-loader!css-loader!sass-loader?outputStyle=expanded&indentedSyntax' + }, + { + test: /\.scss/, + loader: 'style-loader!css-loader!sass-loader?outputStyle=expanded' + }, + { + test: /\.less/, + loader: 'style-loader!css-loader!less-loader' + }, + { + test: /\.styl/, + loader: 'style-loader!css-loader!stylus-loader' + }, + { + test: /\.(png|jpg|gif|woff|woff2)$/, + loader: 'url-loader?limit=8192' + }, + { + test: /\.(mp4|ogg|svg)$/, + loader: 'file-loader' + } + ] + }; +} + +module.exports = { + srcPath: srcPath, + publicPath: '/assets/', + port: dfltPort, + getDefaultModules: getDefaultModules +}; diff --git a/Tutorial/ReactVersion/cfg/dev.js b/Tutorial/ReactVersion/cfg/dev.js new file mode 100644 index 00000000..14578a36 --- /dev/null +++ b/Tutorial/ReactVersion/cfg/dev.js @@ -0,0 +1,39 @@ +'use strict'; + +let path = require('path'); +let webpack = require('webpack'); +let baseConfig = require('./base'); +let defaultSettings = require('./defaults'); + +// Add needed plugins here +let BowerWebpackPlugin = require('bower-webpack-plugin'); + +let config = Object.assign({}, baseConfig, { + entry: [ + 'webpack-dev-server/client?http://127.0.0.1:' + defaultSettings.port, + 'webpack/hot/only-dev-server', + './src/index' + ], + cache: true, + devtool: 'inline-cheap-module-source-map', + plugins: [ + new webpack.HotModuleReplacementPlugin(), + new webpack.NoErrorsPlugin(), + new BowerWebpackPlugin({ + searchResolveModulesDirectories: false + }) + ], + module: defaultSettings.getDefaultModules() +}); + +// Add needed loaders to the defaults here +config.module.loaders.push({ + test: /\.(js|jsx)$/, + loader: 'react-hot!babel-loader', + include: [].concat( + config.additionalPaths, + [ path.join(__dirname, '/../src') ] + ) +}); + +module.exports = config; diff --git a/Tutorial/ReactVersion/cfg/dist.js b/Tutorial/ReactVersion/cfg/dist.js new file mode 100644 index 00000000..1fc19c4a --- /dev/null +++ b/Tutorial/ReactVersion/cfg/dist.js @@ -0,0 +1,42 @@ +'use strict'; + +let path = require('path'); +let webpack = require('webpack'); + +let baseConfig = require('./base'); +let defaultSettings = require('./defaults'); + +// Add needed plugins here +let BowerWebpackPlugin = require('bower-webpack-plugin'); + +let config = Object.assign({}, baseConfig, { + entry: path.join(__dirname, '../src/index'), + cache: false, + devtool: 'sourcemap', + plugins: [ + new webpack.optimize.DedupePlugin(), + new webpack.DefinePlugin({ + 'process.env.NODE_ENV': '"production"' + }), + new BowerWebpackPlugin({ + searchResolveModulesDirectories: false + }), + new webpack.optimize.UglifyJsPlugin(), + new webpack.optimize.OccurenceOrderPlugin(), + new webpack.optimize.AggressiveMergingPlugin(), + new webpack.NoErrorsPlugin() + ], + module: defaultSettings.getDefaultModules() +}); + +// Add needed loaders to the defaults here +config.module.loaders.push({ + test: /\.(js|jsx)$/, + loader: 'babel', + include: [].concat( + config.additionalPaths, + [ path.join(__dirname, '/../src') ] + ) +}); + +module.exports = config; diff --git a/Tutorial/ReactVersion/cfg/test.js b/Tutorial/ReactVersion/cfg/test.js new file mode 100644 index 00000000..f139c490 --- /dev/null +++ b/Tutorial/ReactVersion/cfg/test.js @@ -0,0 +1,58 @@ +'use strict'; + +let path = require('path'); +let srcPath = path.join(__dirname, '/../src/'); + +let baseConfig = require('./base'); + +// Add needed plugins here +let BowerWebpackPlugin = require('bower-webpack-plugin'); + +module.exports = { + devtool: 'eval', + module: { + preLoaders: [ + { + test: /\.(js|jsx)$/, + loader: 'isparta-instrumenter-loader', + include: [ + path.join(__dirname, '/../src') + ] + } + ], + loaders: [ + { + test: /\.(png|jpg|gif|woff|woff2|css|sass|scss|less|styl)$/, + loader: 'null-loader' + }, + { + test: /\.(js|jsx)$/, + loader: 'babel-loader', + include: [].concat( + baseConfig.additionalPaths, + [ + path.join(__dirname, '/../src'), + path.join(__dirname, '/../test') + ] + ) + } + ] + }, + resolve: { + extensions: [ '', '.js', '.jsx' ], + alias: { + actions: srcPath + 'actions/', + helpers: path.join(__dirname, '/../test/helpers'), + components: srcPath + 'components/', + sources: srcPath + 'sources/', + stores: srcPath + 'stores/', + styles: srcPath + 'styles/', + config: srcPath + 'config/' + process.env.REACT_WEBPACK_ENV + } + }, + plugins: [ + new BowerWebpackPlugin({ + searchResolveModulesDirectories: false + }) + ] +}; diff --git a/Tutorial/ReactVersion/dist/README.md b/Tutorial/ReactVersion/dist/README.md new file mode 100644 index 00000000..0d138c28 --- /dev/null +++ b/Tutorial/ReactVersion/dist/README.md @@ -0,0 +1,2 @@ +# About the dist folder +After building the dist version of your project, the generated files are stored in this folder. You should keep it under version control. diff --git a/Tutorial/ReactVersion/dist/static/README.md b/Tutorial/ReactVersion/dist/static/README.md new file mode 100644 index 00000000..c8eef650 --- /dev/null +++ b/Tutorial/ReactVersion/dist/static/README.md @@ -0,0 +1,6 @@ +# static + +Files and directories that you put in `static` will be copied to the +`dist/static` directory during the build step. Use it to provide +arbitrary static assets that can be referenced by path in your +application. diff --git a/Tutorial/ReactVersion/dist/static/favicon.ico b/Tutorial/ReactVersion/dist/static/favicon.ico new file mode 100644 index 00000000..65279053 Binary files /dev/null and b/Tutorial/ReactVersion/dist/static/favicon.ico differ diff --git a/Tutorial/ReactVersion/package.json b/Tutorial/ReactVersion/package.json new file mode 100644 index 00000000..f26e8b8a --- /dev/null +++ b/Tutorial/ReactVersion/package.json @@ -0,0 +1,71 @@ +{ + "private": true, + "version": "0.0.1", + "description": "YOUR DESCRIPTION - Generated by generator-react-webpack", + "main": "", + "scripts": { + "clean": "rimraf dist/*", + "copy": "copyfiles -f ./src/index.html ./src/favicon.ico ./dist", + "dist": "npm run copy & webpack --env=dist", + "lint": "eslint ./src", + "posttest": "npm run lint", + "release:major": "npm version major && npm publish && git push --follow-tags", + "release:minor": "npm version minor && npm publish && git push --follow-tags", + "release:patch": "npm version patch && npm publish && git push --follow-tags", + "serve": "node server.js --env=dev", + "serve:dist": "node server.js --env=dist", + "start": "node server.js --env=dev" + }, + "repository": "", + "keywords": [], + "author": "Your name here", + "devDependencies": { + "babel-core": "^6.0.0", + "babel-eslint": "^6.0.0", + "babel-loader": "^6.0.0", + "babel-polyfill": "^6.3.14", + "babel-preset-es2015": "^6.0.15", + "babel-preset-react": "^6.0.15", + "babel-preset-stage-0": "^6.5.0", + "bower-webpack-plugin": "^0.1.9", + "chai": "^3.2.0", + "copyfiles": "^1.0.0", + "css-loader": "^0.23.0", + "eslint": "^3.0.0", + "eslint-loader": "^1.0.0", + "eslint-plugin-react": "^6.0.0", + "file-loader": "^0.9.0", + "glob": "^7.0.0", + "isparta-instrumenter-loader": "^1.0.0", + "karma": "^1.0.0", + "karma-chai": "^0.1.0", + "karma-coverage": "^1.0.0", + "karma-mocha": "^1.0.0", + "karma-mocha-reporter": "^2.0.0", + "karma-phantomjs-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.5", + "karma-webpack": "^1.7.0", + "minimist": "^1.2.0", + "mocha": "^3.0.0", + "null-loader": "^0.1.1", + "open": "0.0.5", + "phantomjs-prebuilt": "^2.0.0", + "react-addons-test-utils": "^15.0.0", + "react-hot-loader": "^1.2.9", + "rimraf": "^2.4.3", + "style-loader": "^0.13.0", + "url-loader": "^0.5.6", + "webpack": "^1.12.0", + "webpack-dev-server": "^1.12.0" + }, + "dependencies": { + "core-js": "^2.0.0", + "normalize.css": "^4.0.0", + "react": "^15.0.0", + "react-bootstrap": "^0.31.3", + "react-data-grid": "^2.0.60", + "react-dom": "^15.0.0", + "react-spinkit": "^3.0.0", + "react-virtualized": "^9.10.1" + } +} diff --git a/Tutorial/ReactVersion/server.js b/Tutorial/ReactVersion/server.js new file mode 100644 index 00000000..becb3e6d --- /dev/null +++ b/Tutorial/ReactVersion/server.js @@ -0,0 +1,36 @@ +/*eslint no-console:0 */ +'use strict'; +require('core-js/fn/object/assign'); +const webpack = require('webpack'); +const WebpackDevServer = require('webpack-dev-server'); +const config = require('./webpack.config'); +const open = require('open'); + +/** + * Flag indicating whether webpack compiled for the first time. + * @type {boolean} + */ +let isInitialCompilation = true; + +const compiler = webpack(config); + +new WebpackDevServer(compiler, config.devServer) +.listen(config.port, 'localhost', (err) => { + if (err) { + console.log(err); + } + console.log('Listening at localhost:' + config.port); +}); + +compiler.plugin('done', () => { + if (isInitialCompilation) { + // Ensures that we log after webpack printed its stats (is there a better way?) + setTimeout(() => { + console.log('\n✓ The bundle is now ready for serving!\n'); + console.log(' Open in iframe mode:\t\x1b[33m%s\x1b[0m', 'http://localhost:' + config.port + '/webpack-dev-server/'); + console.log(' Open in inline mode:\t\x1b[33m%s\x1b[0m', 'http://localhost:' + config.port + '/\n'); + console.log(' \x1b[33mHMR is active\x1b[0m. The bundle will automatically rebuild and live-update on changes.') + }, 350); + } + isInitialCompilation = false; +}); diff --git a/Tutorial/ReactVersion/src/components/DataTableComponent.js b/Tutorial/ReactVersion/src/components/DataTableComponent.js new file mode 100644 index 00000000..0e3cf99a --- /dev/null +++ b/Tutorial/ReactVersion/src/components/DataTableComponent.js @@ -0,0 +1,60 @@ +'use strict'; + +import React from 'react'; +import PropTypes from 'prop-types'; +import { AutoSizer, MultiGrid } from 'react-virtualized'; + +require('styles//DataTable.css'); + +class DataTableComponent extends React.Component { + render() { + const cellRenderer = ({ columnIndex, key, rowIndex, style }) => { + if (rowIndex == 0) { + const onHeaderClicked = () => { + this.props.onHeaderClicked(this.props.headers[columnIndex]); + return false; + }; + + return (
+ {this.props.headers[columnIndex]} +
); + } else { + return (
+ {this.props.rows[rowIndex - 1][columnIndex]} +
); + } + } + + return ( +
+ + {({ height, width }) => ( + + )} + +
+ ); + } +} + +DataTableComponent.displayName = 'DataTableComponent'; + +DataTableComponent.propTypes = { + rows: PropTypes.array.isRequired, + headers: PropTypes.array.isRequired, + dataKey: PropTypes.number.isRequired, + onHeaderClicked: PropTypes.func.isRequired +}; + +export default DataTableComponent; diff --git a/Tutorial/ReactVersion/src/components/LoadingIndicatorComponent.js b/Tutorial/ReactVersion/src/components/LoadingIndicatorComponent.js new file mode 100644 index 00000000..84fbb543 --- /dev/null +++ b/Tutorial/ReactVersion/src/components/LoadingIndicatorComponent.js @@ -0,0 +1,23 @@ +'use strict'; + +import React from 'react'; +import PropTypes from 'prop-types'; +import Spinner from 'react-spinkit'; + +require('styles//LoadingIndicator.css'); + +class LoadingIndicatorComponent extends React.Component { + render() { + return ( +
+

{this.props.msg}

+ +
+ ); + } +} + +LoadingIndicatorComponent.displayName = 'LoadingIndicatorComponent'; +LoadingIndicatorComponent.propTypes = { msg: PropTypes.string.isRequired }; + +export default LoadingIndicatorComponent; diff --git a/Tutorial/ReactVersion/src/components/Main.js b/Tutorial/ReactVersion/src/components/Main.js new file mode 100644 index 00000000..982994f9 --- /dev/null +++ b/Tutorial/ReactVersion/src/components/Main.js @@ -0,0 +1,156 @@ +require('normalize.css/normalize.css'); +require('styles/App.css'); + +import React from 'react'; +import { Button, Glyphicon, Modal } from 'react-bootstrap'; + +import DataTableComponent from './DataTableComponent'; +import LoadingIndicatorComponent from './LoadingIndicatorComponent'; +import SheetListComponent from './SheetListComponent'; + +// Declare this so our linter knows that tableau is a global object +/*global tableau*/ + +class AppComponent extends React.Component { + constructor(props) { + super(props); + this.state = { + isLoading: true, + selectedSheet: undefined, + sheetNames: [], + rows: [], + headers: [], + dataKey: 1, + filteredFields: [], + dashboardName: '' + }; + + this.unregisterEventFn = undefined; + } + + componentWillMount() { + tableau.extensions.initializeAsync().then(() => { + const selectedSheet = tableau.extensions.settings.get('sheet'); + const sheetNames = tableau.extensions.dashboardContent.dashboard.worksheets.map(worksheet => worksheet.name); + const dashboardName = tableau.extensions.dashboardContent.dashboard.name; + const sheetSelected = !!selectedSheet; + this.setState({ + isLoading: sheetSelected, + selectedSheet: selectedSheet, + sheetNames: sheetNames, + dashboardName: dashboardName + }); + + if (sheetSelected) { + this.loadSelectedMarks(); + } + }); + } + + getSelectedSheet(selectedSheet) { + const sheetName = selectedSheet || this.state.selectedSheet; + return tableau.extensions.dashboardContent.dashboard.worksheets.find(worksheet => worksheet.name === sheetName); + } + + onSelectSheet(sheetName) { + tableau.extensions.settings.set('sheet', sheetName); + this.setState({ isLoading: true }); + tableau.extensions.settings.saveAsync().then(() => { + this.setState({ selectedSheet: sheetName, filteredFields: [] }, this.loadSelectedMarks.bind(this)); + }); + } + + loadSelectedMarks() { + if (this.unregisterEventFn) { + this.unregisterEventFn(); + } + + const worksheet = this.getSelectedSheet(); + worksheet.getSelectedMarksAsync().then(marks => { + + // Get the first DataTable for our selected marks (usually there is just one) + const worksheetData = marks.data[0]; + + // Map our data into the format which the data table component expects it + const rows = worksheetData.data.map(row => row.map(cell => cell.formattedValue)); + const headers = worksheetData.columns.map(column => column.fieldName); + + this.setState( { + rows: rows, + headers: headers, + dataKey: Date.now(), + isLoading: false + }); + + this.forceUpdate(); + }); + + this.unregisterEventFn = worksheet.addEventListener(tableau.TableauEventType.MarkSelectionChanged, () => { + this.setState({ isLoading: true }); + this.loadSelectedMarks(); + }); + } + + onHeaderClicked(fieldName) { + const headerIndex = this.state.headers.indexOf(fieldName); + const columnData = this.state.rows.map(row => row[headerIndex]); + const columnDomain = columnData.filter((value, index, self) => { + return self.indexOf(value) === index; + }); + + const worksheet = this.getSelectedSheet(); + this.setState({ isLoading: true }); + worksheet.applyFilterAsync(fieldName, columnDomain, tableau.FilterUpdateType.Replace).then(() => { + const updatedFilteredFields = this.state.filteredFields; + updatedFilteredFields.push(fieldName); + this.setState({ filteredFields: updatedFilteredFields, isLoading: false }); + }); + } + + onResetFilters() { + const worksheet = this.getSelectedSheet(); + this.setState({ isLoading: true }); + const promises = this.state.filteredFields.map(fieldName => worksheet.clearFilterAsync(fieldName)); + Promise.all(promises).then(() => { + this.setState({ filteredFields: [], isLoading: false }); + }); + } + + render() { + if (this.state.isLoading) { + return (); + } + + if (!this.state.selectedSheet) { + return ( + + + Choose a Sheet from {this.state.dashboardName} + + + + + ); + } + + const mainContent = this.state.rows.length > 0 ? + () : + (

No marks selected

); + + return ( +
+
+

+ Marks for {this.state.selectedSheet} + + +

+
+ {mainContent} +
+ ); + + } +} + +export default AppComponent; diff --git a/Tutorial/ReactVersion/src/components/SheetListComponent.js b/Tutorial/ReactVersion/src/components/SheetListComponent.js new file mode 100644 index 00000000..4a1961a2 --- /dev/null +++ b/Tutorial/ReactVersion/src/components/SheetListComponent.js @@ -0,0 +1,40 @@ +'use strict'; + +import React from 'react'; +import PropTypes from 'prop-types'; +import { Button } from 'react-bootstrap'; + +require('styles//SheetList.css'); + +class SheetListComponent extends React.Component { + constructor(props) { + super(props); + } + + makeSheetButton(sheetName) { + return ( + + ); + } + + render() { + const sheetButtons = this.props.sheetNames.map(sheetName => this.makeSheetButton(sheetName)); + return ( +
+ {sheetButtons} +
+ ); + } +} + +SheetListComponent.displayName = 'SheetListComponent'; + +SheetListComponent.propTypes = { + onSelectSheet: PropTypes.func, + sheetNames: PropTypes.array +}; + +export default SheetListComponent; diff --git a/Tutorial/ReactVersion/src/config/README.md b/Tutorial/ReactVersion/src/config/README.md new file mode 100644 index 00000000..c20fc5da --- /dev/null +++ b/Tutorial/ReactVersion/src/config/README.md @@ -0,0 +1,35 @@ +# About this folder + +This folder holds configuration files for different environments. +You can use it to provide your app with different settings based on the +current environment, e.g. to configure different API base urls depending on +whether your setup runs in dev mode or is built for distribution. +You can include the configuration into your code like this: + +**ES2015 Modules** + +```js +import config from 'config'; +``` + +**Common JS** + +Due to Babel6 we need to append `.default`. + +```js +let config = require('config').default; +``` + +**Example** + +```javascript +import React from 'react'; +import config from 'config'; + +class MyComponent extends React.Component { + constructor(props, ctx) { + super(props, ctx); + let currentAppEnv = config.appEnv; + } +} +``` diff --git a/Tutorial/ReactVersion/src/config/base.js b/Tutorial/ReactVersion/src/config/base.js new file mode 100644 index 00000000..65b6aff9 --- /dev/null +++ b/Tutorial/ReactVersion/src/config/base.js @@ -0,0 +1,5 @@ +'use strict'; + +// Settings configured here will be merged into the final config object. +export default { +} diff --git a/Tutorial/ReactVersion/src/config/dev.js b/Tutorial/ReactVersion/src/config/dev.js new file mode 100644 index 00000000..09f544cf --- /dev/null +++ b/Tutorial/ReactVersion/src/config/dev.js @@ -0,0 +1,9 @@ +'use strict'; + +import baseConfig from './base'; + +let config = { + appEnv: 'dev' // feel free to remove the appEnv property here +}; + +export default Object.freeze(Object.assign({}, baseConfig, config)); diff --git a/Tutorial/ReactVersion/src/config/dist.js b/Tutorial/ReactVersion/src/config/dist.js new file mode 100644 index 00000000..e9cc29db --- /dev/null +++ b/Tutorial/ReactVersion/src/config/dist.js @@ -0,0 +1,9 @@ +'use strict'; + +import baseConfig from './base'; + +let config = { + appEnv: 'dist' // feel free to remove the appEnv property here +}; + +export default Object.freeze(Object.assign({}, baseConfig, config)); diff --git a/Tutorial/ReactVersion/src/config/test.js b/Tutorial/ReactVersion/src/config/test.js new file mode 100644 index 00000000..3d17b759 --- /dev/null +++ b/Tutorial/ReactVersion/src/config/test.js @@ -0,0 +1,9 @@ +'use strict'; + +import baseConfig from './base'; + +let config = { + appEnv: 'test' // don't remove the appEnv property here +}; + +export default Object.freeze(Object.assign(baseConfig, config)); diff --git a/Tutorial/ReactVersion/src/index.html b/Tutorial/ReactVersion/src/index.html new file mode 100644 index 00000000..1b273a0e --- /dev/null +++ b/Tutorial/ReactVersion/src/index.html @@ -0,0 +1,21 @@ + + + + + Tutorial - React + + + + + + + + + + +
APPLICATION CONTENT
+ + + + + diff --git a/Tutorial/ReactVersion/src/index.js b/Tutorial/ReactVersion/src/index.js new file mode 100644 index 00000000..37c907c1 --- /dev/null +++ b/Tutorial/ReactVersion/src/index.js @@ -0,0 +1,7 @@ +import 'core-js/fn/object/assign'; +import React from 'react'; +import ReactDOM from 'react-dom'; +import App from './components/Main'; + +// Render the main component into the dom +ReactDOM.render(, document.getElementById('app')); diff --git a/Tutorial/ReactVersion/src/styles/App.css b/Tutorial/ReactVersion/src/styles/App.css new file mode 100644 index 00000000..941a0c14 --- /dev/null +++ b/Tutorial/ReactVersion/src/styles/App.css @@ -0,0 +1,16 @@ +h4, h5 { + text-align: center; +} + +.sheet_name { + font-weight: bold; +} + +.summary_header { + height: 50px; +} + +body, html { + padding: 0px; + margin: 0px; +} \ No newline at end of file diff --git a/Tutorial/ReactVersion/src/styles/DataTable.css b/Tutorial/ReactVersion/src/styles/DataTable.css new file mode 100644 index 00000000..7ebe62e6 --- /dev/null +++ b/Tutorial/ReactVersion/src/styles/DataTable.css @@ -0,0 +1,29 @@ +.cell { + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + line-height: 30px; + vertical-align: middle; + padding-left: 3px; +} + +.header { + font-weight: bold; + border-bottom: 1px solid #888888; +} + +.odd { + background: #EEEEEE; +} + +.grid { + outline: none; +} + +.interesting { + font-weight: 700; +} + +.dataTable { + height: calc(100vh - 60px); +} \ No newline at end of file diff --git a/Tutorial/ReactVersion/src/styles/LoadingIndicator.css b/Tutorial/ReactVersion/src/styles/LoadingIndicator.css new file mode 100644 index 00000000..50f90772 --- /dev/null +++ b/Tutorial/ReactVersion/src/styles/LoadingIndicator.css @@ -0,0 +1,8 @@ +.loadingIndicator { + width: 200px; + height: 200px; + text-align: center; + position: absolute; + left: calc(50vw - 100px); + top: calc(50vh - 100px); +} diff --git a/Tutorial/ReactVersion/src/styles/SheetList.css b/Tutorial/ReactVersion/src/styles/SheetList.css new file mode 100644 index 00000000..e69de29b diff --git a/Tutorial/ReactVersion/webpack.config.js b/Tutorial/ReactVersion/webpack.config.js new file mode 100644 index 00000000..6b6a9391 --- /dev/null +++ b/Tutorial/ReactVersion/webpack.config.js @@ -0,0 +1,32 @@ +'use strict'; + +const path = require('path'); +const args = require('minimist')(process.argv.slice(2)); + +// List of allowed environments +const allowedEnvs = ['dev', 'dist', 'test']; + +// Set the correct environment +let env; +if (args._.length > 0 && args._.indexOf('start') !== -1) { + env = 'test'; +} else if (args.env) { + env = args.env; +} else { + env = 'dev'; +} +process.env.REACT_WEBPACK_ENV = env; + +/** + * Build the webpack configuration + * @param {String} wantedEnv The wanted environment + * @return {Object} Webpack config + */ +function buildConfig(wantedEnv) { + let isValid = wantedEnv && wantedEnv.length > 0 && allowedEnvs.indexOf(wantedEnv) !== -1; + let validEnv = isValid ? wantedEnv : 'dev'; + let config = require(path.join(__dirname, 'cfg/' + validEnv)); + return config; +} + +module.exports = buildConfig(env); diff --git a/Tutorial/Standard/README.md b/Tutorial/Standard/README.md deleted file mode 100644 index 8504d567..00000000 --- a/Tutorial/Standard/README.md +++ /dev/null @@ -1 +0,0 @@ -link to actual tutorial \ No newline at end of file diff --git a/Tutorial/Standard/Tutorial.trex b/Tutorial/Standard/Tutorial.trex deleted file mode 100644 index 2df623a8..00000000 --- a/Tutorial/Standard/Tutorial.trex +++ /dev/null @@ -1,22 +0,0 @@ - - - - en_US - - Extensions Tutorial - - - - - 1.1 - - http://localhost:8765/tutorial/standard/index.html - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAlhJREFUOI2Nkt9vy1EYh5/3bbsvRSySCZbIxI+ZCKsN2TKtSFyIrV2WuRCJuBiJWxfuxCVXbvwFgiEtposgLFJElnbU1SxIZIIRJDKTrdu+53Uhra4mce7Oe57Pcz7JOULFisViwZ+29LAzOSjQYDgz1ZcCvWuXV11MJpN+OS/lm6179teqH0yDqxPTCyKSA8DcDsyOmOprnCaeP7459pdgy969i0LTC3IO/RQMyoHcQN+3cnljW3dNIFC47qDaK3g7BwdTkwBaBELT4ZPOUVWgKl4ZBnjxJPUlMDnTDrp0pmr6RHFeEjjcUUXPDGeSEwDN0Xg8sivxMhJNjGzbHd8PkM3eHRfkrBM5NkcQaY2vUnTlrDIA0NoaX+KLXFFlowr14tvVpqb2MICzmQcKqxvbumv+NAhZGCCIPwEw6QWXKYRL/VUXO0+rAUJiPwAk5MIlgVfwPjjHLCL1APmHN94ZdqeYN+NW/mn6I4BvwQYchcLnwFhJMDiYmlRxAzjpKWZkYkUCcZ2I61wi37tLbYyjiN0fHk5Oz3nGSLSzBbNHCF35R7f6K1/hN9PRhek11FrymfQQQKB4+Gl05P2qNRtmETlXW7e+b2z01dfycGNbfFMAbqNyKp9Jp4rzOT8RYFs0njJkc2iqsCObvTsOsDWWqA5C1uFy+Uz/oXJeKwVT4h0RmPUXhi79vuC0Ku6yOffTK3g9lfxfDQAisY516sg5kfOCiJk7HoLt2cf9b/9LANAc7dznm98PagG1fUOZ9IP5uMB8Q4CPoyNvausapkTt3rNMuvdf3C/o6+czhtdwmwAAAABJRU5ErkJggg== - - - - Extensions Tutorial - - - diff --git a/Tutorial/assets/Completed.gif b/Tutorial/assets/Completed.gif new file mode 100644 index 00000000..abeb835c Binary files /dev/null and b/Tutorial/assets/Completed.gif differ diff --git a/Tutorial/assets/Part_0.png b/Tutorial/assets/Part_0.png new file mode 100644 index 00000000..0258016a Binary files /dev/null and b/Tutorial/assets/Part_0.png differ diff --git a/Tutorial/assets/Part_1.png b/Tutorial/assets/Part_1.png new file mode 100644 index 00000000..f181ed13 Binary files /dev/null and b/Tutorial/assets/Part_1.png differ diff --git a/Tutorial/assets/Part_2.gif b/Tutorial/assets/Part_2.gif new file mode 100644 index 00000000..bf63e2cc Binary files /dev/null and b/Tutorial/assets/Part_2.gif differ diff --git a/Tutorial/assets/Part_3.gif b/Tutorial/assets/Part_3.gif new file mode 100644 index 00000000..568af921 Binary files /dev/null and b/Tutorial/assets/Part_3.gif differ diff --git a/Tutorial/assets/Part_4.gif b/Tutorial/assets/Part_4.gif new file mode 100644 index 00000000..4c38c7a5 Binary files /dev/null and b/Tutorial/assets/Part_4.gif differ diff --git a/Tutorial/assets/Part_5.gif b/Tutorial/assets/Part_5.gif new file mode 100644 index 00000000..5cd85c8d Binary files /dev/null and b/Tutorial/assets/Part_5.gif differ diff --git a/Tutorial/assets/Part_6.gif b/Tutorial/assets/Part_6.gif new file mode 100644 index 00000000..f550945c Binary files /dev/null and b/Tutorial/assets/Part_6.gif differ diff --git a/Tutorial/favicon.ico b/Tutorial/favicon.ico new file mode 100644 index 00000000..53d5aa5c Binary files /dev/null and b/Tutorial/favicon.ico differ diff --git a/Tutorial/readme.md b/Tutorial/readme.md new file mode 100644 index 00000000..0a593dc4 --- /dev/null +++ b/Tutorial/readme.md @@ -0,0 +1,43 @@ +# Dashboard Extensions Tutorial + +This project contains a tutorial designed to explain the various components of authoring nad using a Dashboard Extension in Tableau. + +This tutorial demonstrates a number of different aspects of the Dashboard Extensions API. The goal of this extenison is to display a data table summarizing the selected marks on a particular worksheet on a dashboard (similar to clicking view data on a tooltip). When the selected marks change, we want to update the data table with the newly selected marks. Then we will add functionality which allows the user to click on any column of data in the selected marks and filter the viz down to the domain of that column. + +### Prerequisites + +- Understanding of basic web development (this tutorial makes heavy use of [jQuery](https://jquery.com/) for javascript code and [Bootstrap](http://getbootstrap.com/) for styling) +- node and npm installed on your machine ([https://nodejs.org](https://nodejs.org)) +- Tableau Desktop with the Extensions feature (Alpha build) + +### Set Up + +- Copy the `.trex` files in the Manifests folder into your `My Tableau Repository/Extensions` folder and restart Tableau. +- In a command prompt, go to the root of the git repo (a directory above this one) +- Run `npm install` +- Run `npm start` to initialize the http server to server your content + +### Tutorial + +To make it easier to follow along, the tutorial is organized in seven parts. Each folder in this project contains the extension's code at the end of that part. In addition, there is a corresponding extension manifest file which allows you to see the extensions progress from within Tableau as you follow along. + +### Tutorial Sections + +0. [Starting the Server & Registering a Manifest](./Part_0/readme.md) +1. [Initialization](./Part_1/readme.md) +2. [Ask the User to Select a Sheet](./Part_2/readme.md) +3. [Getting and Displaying the Data](./Part_3/readme.md) +4. [Responding to Selection Changes](./Part_4/readme.md) +5. [Persisting Settings in the Workbook](./Part_5/readme.md) +6. [Performing Actions](./Part_6/readme.md) + +### Completed Extension + +If you just want to jump to the end, follow the set up steps, then inside of Tableau drag out the "Tutorial - Complete" dashboard extension. + +![Completed Screenshot](./assets/Completed.gif) + +### React Version + +Included is also a functionally equivalent version of this sample written using React instead of jQuery and DataTables. It can be found in the ReactVersion folder (it has its own setup steps). + diff --git a/lib/tableau-extensions-0.6.0.js b/lib/tableau-extensions-0.6.0.js new file mode 100644 index 00000000..d555ea35 --- /dev/null +++ b/lib/tableau-extensions-0.6.0.js @@ -0,0 +1,23158 @@ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["Main"] = factory(); + else + root["Main"] = factory(); +})(this, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) +/******/ return installedModules[moduleId].exports; +/******/ +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ exports: {}, +/******/ id: moduleId, +/******/ loaded: false +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.loaded = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = "/dist/"; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(0); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tableau = __webpack_require__(1); + var FrelardDesktopBootstrap_1 = __webpack_require__(66); + // This Main function will be executed when this module is loaded. Attempt to do our + // bootstrapping with qt and log any errors we encounter + FrelardDesktopBootstrap_1.doBootstrap().catch(function (e) { + console.error('Desktop bootstrapping failed: ' + e); + }); + window.tableau = tableau; + + +/***/ }, +/* 1 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + /** + * This is your main. This is where you re-export everything you want to be publicly available. + * + * The build enforces that the file has the same name as the global variable that is exported. + */ + Object.defineProperty(exports, "__esModule", { value: true }); + // Due to the way we configured webpack, we should be exporting things which will be under + // a global variable called "tableau". Export everything we want to be visible under tableau + // from this file. + var ExtensionsImpl_1 = __webpack_require__(2); + var Extensions_1 = __webpack_require__(65); + var extensionImpl = new ExtensionsImpl_1.ExtensionsImpl(); + exports.extensions = new Extensions_1.Extensions(extensionImpl); + // Export Enums + // These show up under the tableau object. I.e. tableau.ExtensionContext.Server + var api_external_contract_1 = __webpack_require__(53); + exports.ExtensionContext = api_external_contract_1.ExtensionContext; + exports.ExtensionMode = api_external_contract_1.ExtensionMode; + exports.AnalyticsObjectType = api_external_contract_1.AnalyticsObjectType; + exports.ColumnType = api_external_contract_1.ColumnType; + exports.DashboardObjectType = api_external_contract_1.DashboardObjectType; + exports.DataType = api_external_contract_1.DataType; + exports.DateRangeType = api_external_contract_1.DateRangeType; + exports.DialogEventType = api_external_contract_1.DialogEventType; + exports.EncodingType = api_external_contract_1.EncodingType; + exports.ErrorCodes = api_external_contract_1.ErrorCodes; + exports.FieldAggregationType = api_external_contract_1.FieldAggregationType; + exports.FieldRoleType = api_external_contract_1.FieldRoleType; + exports.FilterDomainType = api_external_contract_1.FilterDomainType; + exports.FilterType = api_external_contract_1.FilterType; + exports.FilterUpdateType = api_external_contract_1.FilterUpdateType; + exports.FilterNullOption = api_external_contract_1.FilterNullOption; + exports.MarkType = api_external_contract_1.MarkType; + exports.ParameterValueType = api_external_contract_1.ParameterValueType; + exports.PeriodType = api_external_contract_1.PeriodType; + exports.QuickTableCalcType = api_external_contract_1.QuickTableCalcType; + exports.SelectionUpdateType = api_external_contract_1.SelectionUpdateType; + exports.SheetType = api_external_contract_1.SheetType; + exports.SortDirection = api_external_contract_1.SortDirection; + exports.TableauEventType = api_external_contract_1.TableauEventType; + exports.TrendLineModelType = api_external_contract_1.TrendLineModelType; + + +/***/ }, +/* 2 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var api_internal_contract_1 = __webpack_require__(3); + var api_shared_1 = __webpack_require__(9); + var Dashboard_1 = __webpack_require__(43); + var DashboardContent_1 = __webpack_require__(45); + var Environment_1 = __webpack_require__(46); + var Settings_1 = __webpack_require__(47); + var RegisterAllExtensionsServices_1 = __webpack_require__(48); + var VersionNumber_1 = __webpack_require__(51); + var DashboardImpl_1 = __webpack_require__(52); + var SettingsImpl_1 = __webpack_require__(63); + var ExtensionsImpl = (function () { + function ExtensionsImpl() { + } + ExtensionsImpl.prototype.initializeAsync = function () { + var _this = this; + if (!this._initializationPromise) { + this._initializationPromise = new Promise(function (resolve, reject) { + // First thing we want to do is check to see if there is a desktop dispatcher already registered for us + if (api_internal_contract_1.InternalApiDispatcherHolder.hasDesktopApiDispatcherPromise()) { + // Running in desktop, use this promise + var desktopDispatcherPromise = api_internal_contract_1.InternalApiDispatcherHolder.getDesktopDispatcherPromise(); + desktopDispatcherPromise.then(_this.onDispatcherReceived.bind(_this)).then(function () { resolve(); }); + } + else { + reject('Not running in desktop. Server support coming soon!'); + } + }); + } + return this._initializationPromise; + }; + ExtensionsImpl.prototype.onDispatcherReceived = function (dispatcher) { + var _this = this; + dispatcher.setVersionNumber(VersionNumber_1.VersionNumber.Instance); + // Call to register all the services which will use the newly initialized dispatcher + api_shared_1.registerAllSharedServices(dispatcher); + RegisterAllExtensionsServices_1.registerAllExtensionsServices(dispatcher); + // Get the initialization service and initialize this extension + var initializationService = api_shared_1.ApiServiceRegistry.instance.getService("InitializationService" /* InitializationService */); + return initializationService.initializeDashboardExtensionsAsync().then(function (result) { + if (!result.extensionInstance.locator.dashboardPath) { + throw new Error('DashboardPath is undefined'); + } + _this.dashboardContent = _this.initializeDashboardContent(result.extensionDashboardInfo, result.extensionInstance.locator.dashboardPath); + _this.environment = new Environment_1.Environment(result.extensionEnvironment); + _this.settings = _this.initializeSettings(result.extensionSettingsInfo); + }); + }; + ExtensionsImpl.prototype.initializeDashboardContent = function (info, sheetPath) { + var dashboardImpl = new DashboardImpl_1.DashboardImpl(info, sheetPath); + var dashboard = new Dashboard_1.Dashboard(dashboardImpl); + return new DashboardContent_1.DashboardContent(dashboard); + }; + ExtensionsImpl.prototype.initializeSettings = function (settingsInfo) { + var settingsImpl = new SettingsImpl_1.SettingsImpl(settingsInfo); + return new Settings_1.Settings(settingsImpl); + }; + return ExtensionsImpl; + }()); + exports.ExtensionsImpl = ExtensionsImpl; + + +/***/ }, +/* 3 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + /** + * This is your main. This is where you re-export everything you want to be publicly available. + * + * The build enforces that the file has the same name as the global variable that is exported. + */ + function __export(m) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; + } + Object.defineProperty(exports, "__esModule", { value: true }); + __export(__webpack_require__(4)); + __export(__webpack_require__(5)); + __export(__webpack_require__(6)); + __export(__webpack_require__(7)); + __export(__webpack_require__(8)); + + +/***/ }, +/* 4 */ +/***/ function(module, exports) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var ExtensionContext; + (function (ExtensionContext) { + ExtensionContext["Desktop"] = "desktop"; + ExtensionContext["Server"] = "server"; + ExtensionContext["Unknown"] = "unknown"; + })(ExtensionContext = exports.ExtensionContext || (exports.ExtensionContext = {})); + var ExtensionMode; + (function (ExtensionMode) { + ExtensionMode["Authoring"] = "authoring"; + ExtensionMode["Viewing"] = "viewing"; + ExtensionMode["Unknown"] = "unknown"; + })(ExtensionMode = exports.ExtensionMode || (exports.ExtensionMode = {})); + var ColumnType; + (function (ColumnType) { + ColumnType["Discrete"] = "discrete"; + ColumnType["Continuous"] = "continuous"; + })(ColumnType = exports.ColumnType || (exports.ColumnType = {})); + var DashboardObjectType; + (function (DashboardObjectType) { + DashboardObjectType["Blank"] = "blank"; + DashboardObjectType["Worksheet"] = "worksheet"; + DashboardObjectType["QuickFilter"] = "quick-filter"; + DashboardObjectType["ParameterControl"] = "parameter-control"; + DashboardObjectType["PageFilter"] = "page-filter"; + DashboardObjectType["Legend"] = "legend"; + DashboardObjectType["Title"] = "title"; + DashboardObjectType["Text"] = "text"; + DashboardObjectType["Image"] = "image"; + DashboardObjectType["WebPage"] = "web-page"; + DashboardObjectType["Extension"] = "extension"; + })(DashboardObjectType = exports.DashboardObjectType || (exports.DashboardObjectType = {})); + var DataType; + (function (DataType) { + DataType["String"] = "string"; + DataType["Int"] = "int"; + DataType["Float"] = "float"; + DataType["Bool"] = "bool"; + DataType["Date"] = "date"; + DataType["DateTime"] = "date-time"; + DataType["Spatial"] = "spatial"; + })(DataType = exports.DataType || (exports.DataType = {})); + var EncodedDataType; + (function (EncodedDataType) { + EncodedDataType["Number"] = "number"; + EncodedDataType["String"] = "string"; + EncodedDataType["Date"] = "date"; + EncodedDataType["Boolean"] = "boolean"; + })(EncodedDataType = exports.EncodedDataType || (exports.EncodedDataType = {})); + var ErrorCode; + (function (ErrorCode) { + ErrorCode["ServerError"] = "server-error"; + ErrorCode["InvalidAggregationFieldName"] = "invalid-aggregation-field-name"; + ErrorCode["InvalidFilterFieldName"] = "invalid-filter-fieldname"; + ErrorCode["InvalidFilterFieldValue"] = "invalid-filter-field-value"; + })(ErrorCode = exports.ErrorCode || (exports.ErrorCode = {})); + var FieldAggregationType; + (function (FieldAggregationType) { + FieldAggregationType["Sum"] = "sum"; + FieldAggregationType["Avg"] = "avg"; + FieldAggregationType["Min"] = "min"; + FieldAggregationType["Max"] = "max"; + FieldAggregationType["Stdev"] = "stdev"; + FieldAggregationType["Stdevp"] = "stdevp"; + FieldAggregationType["Var"] = "var"; + FieldAggregationType["Varp"] = "varp"; + FieldAggregationType["Count"] = "count"; + FieldAggregationType["Countd"] = "countd"; + FieldAggregationType["Median"] = "median"; + FieldAggregationType["Attr"] = "attr"; + FieldAggregationType["None"] = "none"; + FieldAggregationType["Year"] = "year"; + FieldAggregationType["Qtr"] = "qtr"; + FieldAggregationType["Month"] = "month"; + FieldAggregationType["Day"] = "day"; + FieldAggregationType["Hour"] = "hour"; + FieldAggregationType["Minute"] = "minute"; + FieldAggregationType["Second"] = "second"; + FieldAggregationType["Week"] = "week"; + FieldAggregationType["Weekday"] = "weekday"; + FieldAggregationType["MonthYear"] = "month-year"; + FieldAggregationType["Mdy"] = "mdy"; + FieldAggregationType["End"] = "end"; + FieldAggregationType["TruncYear"] = "trunc-year"; + FieldAggregationType["TruncQtr"] = "trunc-qtr"; + FieldAggregationType["TruncMonth"] = "trunc-month"; + FieldAggregationType["TruncWeek"] = "trunc-week"; + FieldAggregationType["TruncDay"] = "trunc-day"; + FieldAggregationType["TruncHour"] = "trunc-hour"; + FieldAggregationType["TruncMinute"] = "trunc-minute"; + FieldAggregationType["TruncSecond"] = "trunc-second"; + FieldAggregationType["Quart1"] = "quart1"; + FieldAggregationType["Quart3"] = "quart3"; + FieldAggregationType["Skewness"] = "skewness"; + FieldAggregationType["Kurtosis"] = "kurtosis"; + FieldAggregationType["InOut"] = "in-out"; + FieldAggregationType["User"] = "user"; + })(FieldAggregationType = exports.FieldAggregationType || (exports.FieldAggregationType = {})); + var FieldRoleType; + (function (FieldRoleType) { + FieldRoleType["Dimension"] = "dimension"; + FieldRoleType["Measure"] = "measure"; + FieldRoleType["Unknown"] = "unknown"; + })(FieldRoleType = exports.FieldRoleType || (exports.FieldRoleType = {})); + /** + * The different update types for applying filter. + */ + var FilterUpdateType; + (function (FilterUpdateType) { + FilterUpdateType["Add"] = "add"; + FilterUpdateType["All"] = "all"; + FilterUpdateType["Replace"] = "replace"; + FilterUpdateType["Remove"] = "remove"; + })(FilterUpdateType = exports.FilterUpdateType || (exports.FilterUpdateType = {})); + var SheetType; + (function (SheetType) { + SheetType["Dashboard"] = "dashboard"; + SheetType["Story"] = "story"; + SheetType["Worksheet"] = "worksheet"; + })(SheetType = exports.SheetType || (exports.SheetType = {})); + var DomainRestrictionType; + (function (DomainRestrictionType) { + DomainRestrictionType["All"] = "all"; + DomainRestrictionType["List"] = "list"; + DomainRestrictionType["Range"] = "range"; + })(DomainRestrictionType = exports.DomainRestrictionType || (exports.DomainRestrictionType = {})); + var DateStepPeriod; + (function (DateStepPeriod) { + DateStepPeriod["Years"] = "years"; + DateStepPeriod["Quarters"] = "quarters"; + DateStepPeriod["Months"] = "months"; + DateStepPeriod["Weeks"] = "weeks"; + DateStepPeriod["Days"] = "days"; + DateStepPeriod["Hours"] = "hours"; + DateStepPeriod["Minutes"] = "minutes"; + DateStepPeriod["Seconds"] = "seconds"; + })(DateStepPeriod = exports.DateStepPeriod || (exports.DateStepPeriod = {})); + /** + * The option for specifying which values to include for filtering. + */ + var FilterNullOption; + (function (FilterNullOption) { + FilterNullOption["NullValues"] = "nullvalues"; + FilterNullOption["NonNullValues"] = "nonnullvalues"; + FilterNullOption["AllValues"] = "allvalues"; + })(FilterNullOption = exports.FilterNullOption || (exports.FilterNullOption = {})); + /** + * The type of filter domain + */ + var FilterDomainType; + (function (FilterDomainType) { + FilterDomainType["Relevant"] = "relevant"; + FilterDomainType["Database"] = "database"; + })(FilterDomainType = exports.FilterDomainType || (exports.FilterDomainType = {})); + /** + * Internal enum for specifying the selection type for select marks api. + */ + var SelectionUpdateType; + (function (SelectionUpdateType) { + SelectionUpdateType["Replace"] = "select-replace"; + SelectionUpdateType["Add"] = "select-add"; + SelectionUpdateType["Remove"] = "select-remove"; + })(SelectionUpdateType = exports.SelectionUpdateType || (exports.SelectionUpdateType = {})); + /** + * Internal enum for specifying the included values type for range selection. + */ + var QuantitativeIncludedValues; + (function (QuantitativeIncludedValues) { + QuantitativeIncludedValues["IncludeNull"] = "include-null"; + QuantitativeIncludedValues["IncludeNonNull"] = "include-non-null"; + QuantitativeIncludedValues["IncludeAll"] = "include-all"; + })(QuantitativeIncludedValues = exports.QuantitativeIncludedValues || (exports.QuantitativeIncludedValues = {})); + /** + * Type of mark for a given marks card in a viz. + */ + var MarkType; + (function (MarkType) { + MarkType["Bar"] = "bar"; + MarkType["Line"] = "line"; + MarkType["Area"] = "area"; + MarkType["Square"] = "square"; + MarkType["Circle"] = "circle"; + MarkType["Shape"] = "shape"; + MarkType["Text"] = "text"; + MarkType["Map"] = "map"; + MarkType["Pie"] = "pie"; + MarkType["GanttBar"] = "gantt-bar"; + MarkType["Polygon"] = "polygon"; + })(MarkType = exports.MarkType || (exports.MarkType = {})); + /** + * Internal enum for specifying the type of filter + */ + var FilterType; + (function (FilterType) { + FilterType["Categorical"] = "categorical"; + FilterType["Range"] = "range"; + FilterType["RelativeDate"] = "relativeDate"; + FilterType["Hierarchical"] = "hierarchical"; + })(FilterType = exports.FilterType || (exports.FilterType = {})); + /** + * Internal enum for specifying the DateRangeType of a relative date filter + */ + var DateRangeType; + (function (DateRangeType) { + /** + * Refers to the last day, week, month, etc. of the date period. + */ + DateRangeType["Last"] = "last"; + /** + * Refers to the last N days, weeks, months, etc. of the date period. + */ + DateRangeType["LastN"] = "lastN"; + /** + * Refers to the next day, week, month, etc. of the date period. + */ + DateRangeType["Next"] = "next"; + /** + * Refers to the next N days, weeks, months, etc. of the date period. + */ + DateRangeType["NextN"] = "nextN"; + /** + * Refers to the current day, week, month, etc. of the date period. + */ + DateRangeType["Current"] = "current"; + /** + * Refers to everything up to and including the current day, week, month, etc. of the date period. + */ + DateRangeType["ToDate"] = "toDate"; + })(DateRangeType = exports.DateRangeType || (exports.DateRangeType = {})); + + +/***/ }, +/* 5 */ +/***/ function(module, exports) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var InternalApiDispatcherHolder; + (function (InternalApiDispatcherHolder) { + function getDesktopDispatcherPromise() { + return window.__tableauDesktopDispatcher; + } + InternalApiDispatcherHolder.getDesktopDispatcherPromise = getDesktopDispatcherPromise; + function hasDesktopApiDispatcherPromise() { + return !!InternalApiDispatcherHolder.getDesktopDispatcherPromise(); + } + InternalApiDispatcherHolder.hasDesktopApiDispatcherPromise = hasDesktopApiDispatcherPromise; + function setDesktopDispatcherPromise(dispatcher) { + window.__tableauDesktopDispatcher = dispatcher; + } + InternalApiDispatcherHolder.setDesktopDispatcherPromise = setDesktopDispatcherPromise; + })(InternalApiDispatcherHolder = exports.InternalApiDispatcherHolder || (exports.InternalApiDispatcherHolder = {})); + + +/***/ }, +/* 6 */ +/***/ function(module, exports) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var NotificationId; + (function (NotificationId) { + NotificationId["SelectedMarksChanged"] = "selected-marks-changed"; + NotificationId["ParameterChanged"] = "parameter-changed"; + NotificationId["FilterChanged"] = "filter-changed"; + })(NotificationId = exports.NotificationId || (exports.NotificationId = {})); + + +/***/ }, +/* 7 */ +/***/ function(module, exports) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var ParameterId; + (function (ParameterId) { + ParameterId["ExtensionLocator"] = "extension-locator"; + ParameterId["ExtensionBootstrapInfo"] = "extension-bootstrap-info"; + ParameterId["ExtensionSettingsInfo"] = "extension-settings-info"; + ParameterId["VisualId"] = "visual-id"; + ParameterId["SheetPath"] = "sheet-path"; + ParameterId["IgnoreAliases"] = "ignore-aliases"; + ParameterId["IgnoreSelection"] = "ignore-selection"; + ParameterId["IncludeAllColumns"] = "include-all-columns"; + ParameterId["MaxRows"] = "max-rows"; + ParameterId["UnderlyingDataTable"] = "underlying-data-table"; + ParameterId["UnderlyingSummaryDataTable"] = "underlying-summary-data-table"; + ParameterId["DataSourceDataTable"] = "data-source-data-table"; + ParameterId["SettingsValues"] = "settings-values"; + ParameterId["SelectedData"] = "selected-data"; + ParameterId["HighlightedData"] = "highlighted-data"; + // Filter Params + ParameterId["FieldName"] = "field-name"; + ParameterId["FilterValues"] = "filter-values"; + ParameterId["FilterUpdateType"] = "filter-update-type"; + ParameterId["IsExcludeMode"] = "is-exclude"; + ParameterId["FilterRangeMin"] = "filter-range-min"; + ParameterId["FilterRangeMax"] = "filter-range-max"; + ParameterId["FilterRangeNullOption"] = "filter-range-null-option"; + ParameterId["WorksheetFilters"] = "worksheet-filters"; + ParameterId["FieldId"] = "field-id"; + ParameterId["DomainType"] = "domain-type"; + ParameterId["CategoricalDomain"] = "categorical-domain"; + ParameterId["QuantitativeDomain"] = "quantitative-dmain"; + ParameterId["WorksheetName"] = "worksheet-name"; + ParameterId["DashboardName"] = "dashboard"; + ParameterId["ParameterInfo"] = "parameter-info"; + ParameterId["ParameterInfos"] = "parameter-infos"; + ParameterId["ParameterCaption"] = "paremeter-caption"; + ParameterId["ParameterFieldName"] = "parameter-field-name"; + ParameterId["ParameterValue"] = "parameter-value"; + ParameterId["Selection"] = "selection"; + ParameterId["SelectionUpdateType"] = "selectionUpdateType"; + ParameterId["HierValSelectionModels"] = "hierarchicalValueSelectionModels"; + ParameterId["QuantRangeSelectionModels"] = "quantativeRangeSelectionModels"; + ParameterId["DimValSelectionModels"] = "dimensionValueSelectionModels"; + ParameterId["DataSourceId"] = "data-source-id"; + ParameterId["DataSchema"] = "data-schema"; + ParameterId["DataSourceName"] = "data-source-name"; + ParameterId["ColumnsToInclude"] = "columns-to-include"; + })(ParameterId = exports.ParameterId || (exports.ParameterId = {})); + + +/***/ }, +/* 8 */ +/***/ function(module, exports) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + // Declare this key type and export the NotificationId to make this behave like a string enum + var VerbId; + (function (VerbId) { + VerbId["ApplyCategoricalFilter"] = "categorical-filter"; + VerbId["ApplyRangeFilter"] = "range-filter"; + VerbId["ClearFilter"] = "clear-filter"; + VerbId["InitializeExtension"] = "initialize-extension"; + VerbId["GetDataSummaryData"] = "get-summary-data"; + VerbId["GetUnderlyingData"] = "get-underlying-data"; + VerbId["GetDataSourceData"] = "get-datasource-data"; + VerbId["SaveExtensionSettings"] = "save-extension-settings"; + VerbId["GetSelectedMarks"] = "get-selected-marks"; + VerbId["GetHighlightedMarks"] = "get-highlighted-marks"; + VerbId["GetParametersForSheet"] = "get-parameters-for-sheet"; + VerbId["FindParameter"] = "find-parameter"; + VerbId["ChangeParameterValue"] = "change-parameter-value"; + VerbId["ClearSelectedMarks"] = "clear-selected-marks"; + VerbId["SelectByValue"] = "select-by-value"; + VerbId["GetDataSources"] = "get-data-sources"; + VerbId["RefreshDataSource"] = "refresh-data-source"; + VerbId["GetFilters"] = "get-filters"; + VerbId["GetCategoricalDomain"] = "get-categorical-domain"; + VerbId["GetRangeDomain"] = "get-range-domain"; + })(VerbId = exports.VerbId || (exports.VerbId = {})); + + +/***/ }, +/* 9 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + /** + * This is your main. This is where you re-export everything you want to be publicly available. + * + * The build enforces that the file has the same name as the global variable that is exported. + */ + function __export(m) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; + } + Object.defineProperty(exports, "__esModule", { value: true }); + __export(__webpack_require__(10)); + __export(__webpack_require__(11)); + var Point_1 = __webpack_require__(12); + exports.Point = Point_1.Point; + var Size_1 = __webpack_require__(13); + exports.Size = Size_1.Size; + __export(__webpack_require__(14)); + __export(__webpack_require__(15)); + __export(__webpack_require__(16)); + __export(__webpack_require__(22)); + __export(__webpack_require__(21)); + __export(__webpack_require__(20)); + __export(__webpack_require__(19)); + __export(__webpack_require__(23)); + __export(__webpack_require__(24)); + __export(__webpack_require__(25)); + __export(__webpack_require__(35)); + __export(__webpack_require__(33)); + + +/***/ }, +/* 10 */ +/***/ function(module, exports) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + /** + * Class designed to register and unregister handlers from a user. Only those events + * which are added via AddNewEventType will be supported by this instance + */ + var EventListenerManager = (function () { + function EventListenerManager() { + this._eventListenerManagers = {}; + } + EventListenerManager.prototype.addEventListener = function (eventType, handler) { + if (!this._eventListenerManagers.hasOwnProperty(eventType)) { + throw new Error("Unsupported event type : " + eventType); + } + return this._eventListenerManagers[eventType].addEventListener(handler); + }; + EventListenerManager.prototype.removeEventListener = function (eventType, handler) { + if (!this._eventListenerManagers.hasOwnProperty(eventType)) { + throw new Error("Unsupported event type : " + eventType); + } + return this._eventListenerManagers[eventType].removeEventListener(handler); + }; + EventListenerManager.prototype.addNewEventType = function (eventManager) { + this._eventListenerManagers[eventManager.eventType] = eventManager; + }; + return EventListenerManager; + }()); + exports.EventListenerManager = EventListenerManager; + + +/***/ }, +/* 11 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + Object.defineProperty(exports, "__esModule", { value: true }); + var EventListenerManager_1 = __webpack_require__(10); + /** + * Implementation of the Parameter contract. Calls down to the impl + * class for almost all of the work it does. + */ + var Parameter = (function (_super) { + __extends(Parameter, _super); + function Parameter(parameterImpl, sheet) { + var _this = _super.call(this) || this; + _this.parameterImpl = parameterImpl; + // Initialize our event handling for this class + _this.parameterImpl.initializeEvents(sheet).forEach(function (e) { return _this.addNewEventType(e); }); + return _this; + } + Object.defineProperty(Parameter.prototype, "name", { + get: function () { + return this.parameterImpl.name; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Parameter.prototype, "currentValue", { + get: function () { + return this.parameterImpl.currentValue; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Parameter.prototype, "dataType", { + get: function () { + return this.parameterImpl.dataType; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Parameter.prototype, "allowableValues", { + get: function () { + return this.parameterImpl.allowableValues; + }, + enumerable: true, + configurable: true + }); + Parameter.prototype.changeValueAsync = function (newValue) { + return this.parameterImpl.changeValueAsync(newValue); + }; + return Parameter; + }(EventListenerManager_1.EventListenerManager)); + exports.Parameter = Parameter; + + +/***/ }, +/* 12 */ +/***/ function(module, exports) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var Point = (function () { + function Point(_x, _y) { + this._x = _x; + this._y = _y; + } + Object.defineProperty(Point.prototype, "x", { + get: function () { + return this._x; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Point.prototype, "y", { + get: function () { + return this._y; + }, + enumerable: true, + configurable: true + }); + return Point; + }()); + exports.Point = Point; + + +/***/ }, +/* 13 */ +/***/ function(module, exports) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var Size = (function () { + function Size(_height, _width) { + this._height = _height; + this._width = _width; + } + Object.defineProperty(Size.prototype, "height", { + get: function () { + return this._height; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Size.prototype, "width", { + get: function () { + return this._width; + }, + enumerable: true, + configurable: true + }); + return Size; + }()); + exports.Size = Size; + + +/***/ }, +/* 14 */ +/***/ function(module, exports) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var DataTable = (function () { + function DataTable(_data, _columns, _totalRowCount, _isSummaryData, _marksInfo) { + this._data = _data; + this._columns = _columns; + this._totalRowCount = _totalRowCount; + this._isSummaryData = _isSummaryData; + this._marksInfo = _marksInfo; + // TODO: get rid of this in redesign. + this._name = _isSummaryData ? 'Summary Data Table' : 'Underlying Data Table'; + } + Object.defineProperty(DataTable.prototype, "name", { + get: function () { + return this._name; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(DataTable.prototype, "data", { + get: function () { + return this._data; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(DataTable.prototype, "columns", { + get: function () { + return this._columns; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(DataTable.prototype, "marksInfo", { + get: function () { + return this._marksInfo; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(DataTable.prototype, "totalRowCount", { + get: function () { + return this._totalRowCount; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(DataTable.prototype, "isSummaryData", { + get: function () { + return this._isSummaryData; + }, + enumerable: true, + configurable: true + }); + return DataTable; + }()); + exports.DataTable = DataTable; + var MarkInfo = (function () { + function MarkInfo(_type, _color, _tupleId) { + this._type = _type; + this._color = _color; + this._tupleId = _tupleId; + } + Object.defineProperty(MarkInfo.prototype, "type", { + get: function () { + return this._type; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(MarkInfo.prototype, "color", { + get: function () { + return this._color; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(MarkInfo.prototype, "tupleId", { + get: function () { + return this._tupleId; + }, + enumerable: true, + configurable: true + }); + return MarkInfo; + }()); + exports.MarkInfo = MarkInfo; + var Column = (function () { + function Column(_fieldName, _dataType, // TODO: this shoudl be an enum type + _isReferenced, _index) { + this._fieldName = _fieldName; + this._dataType = _dataType; + this._isReferenced = _isReferenced; + this._index = _index; + } + Object.defineProperty(Column.prototype, "fieldName", { + get: function () { + return this._fieldName; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Column.prototype, "dataType", { + get: function () { + return this._dataType; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Column.prototype, "isReferenced", { + get: function () { + return this._isReferenced; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Column.prototype, "index", { + get: function () { + return this._index; + }, + enumerable: true, + configurable: true + }); + return Column; + }()); + exports.Column = Column; + var DataValue = (function () { + /* tslint:disable:no-any */ + function DataValue(_value, _formattedValue) { + this._value = _value; + this._formattedValue = _formattedValue; + } + Object.defineProperty(DataValue.prototype, "value", { + get: function () { + return this._value; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(DataValue.prototype, "formattedValue", { + get: function () { + return this._formattedValue; + }, + enumerable: true, + configurable: true + }); + return DataValue; + }()); + exports.DataValue = DataValue; + + +/***/ }, +/* 15 */ +/***/ function(module, exports) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var TableauExceptions = (function () { + function TableauExceptions() { + } + return TableauExceptions; + }()); + exports.TableauExceptions = TableauExceptions; + + +/***/ }, +/* 16 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + Object.defineProperty(exports, "__esModule", { value: true }); + var Contract = __webpack_require__(17); + var TableauWorksheetEvent_1 = __webpack_require__(19); + var FilterChangedEvent = (function (_super) { + __extends(FilterChangedEvent, _super); + function FilterChangedEvent(worksheet, _fieldName) { + var _this = _super.call(this, Contract.TableauEventType.FilterChanged, worksheet) || this; + _this._fieldName = _fieldName; + return _this; + } + Object.defineProperty(FilterChangedEvent.prototype, "fieldName", { + get: function () { + return this._fieldName; + }, + enumerable: true, + configurable: true + }); + FilterChangedEvent.prototype.getFilterAsync = function () { + var _this = this; + return this._worksheet.getFiltersAsync().then(function (filters) { + // TODO: Filtering of the filters should eventually be done platform side. + var eventedFilter = filters.find(function (filter) { return (filter.fieldName === _this._fieldName); }); + if (!eventedFilter) { + // We shouldn't hit this unless the filter was removed from the worksheet + // after the event was raised. + throw new Error('Internal Error: Filter no longer found in worksheet.'); + } + return eventedFilter; + }); + }; + return FilterChangedEvent; + }(TableauWorksheetEvent_1.TableauWorksheetEvent)); + exports.FilterChangedEvent = FilterChangedEvent; + + +/***/ }, +/* 17 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + /** + * This is your main. This is where you re-export everything you want to be publicly available. + * + * The build enforces that the file has the same name as the global variable that is exported. + */ + function __export(m) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; + } + Object.defineProperty(exports, "__esModule", { value: true }); + __export(__webpack_require__(18)); + + +/***/ }, +/* 18 */ +/***/ function(module, exports) { + + "use strict"; + // All enum values made available to Extensions developers. + // Enums should be kept in alphabetical order. + Object.defineProperty(exports, "__esModule", { value: true }); + /** + * The context in which the Extensions is currently running. + */ + var ExtensionContext; + (function (ExtensionContext) { + ExtensionContext["Desktop"] = "desktop"; + ExtensionContext["Server"] = "server"; + })(ExtensionContext = exports.ExtensionContext || (exports.ExtensionContext = {})); + /** + * The mode in which the Extensions is currently running. + */ + var ExtensionMode; + (function (ExtensionMode) { + ExtensionMode["Authoring"] = "authoring"; + ExtensionMode["Viewing"] = "viewing"; + })(ExtensionMode = exports.ExtensionMode || (exports.ExtensionMode = {})); + var AnalyticsObjectType; + (function (AnalyticsObjectType) { + AnalyticsObjectType["Cluster"] = "cluster"; + AnalyticsObjectType["Forecast"] = "forecast"; + AnalyticsObjectType["TrendLine"] = "trend-line"; + })(AnalyticsObjectType = exports.AnalyticsObjectType || (exports.AnalyticsObjectType = {})); + var ColumnType; + (function (ColumnType) { + ColumnType["Discrete"] = "discrete"; + ColumnType["Continuous"] = "continuous"; + })(ColumnType = exports.ColumnType || (exports.ColumnType = {})); + /** + * What the object represents in a dashboard. + */ + var DashboardObjectType; + (function (DashboardObjectType) { + DashboardObjectType["Blank"] = "blank"; + DashboardObjectType["Worksheet"] = "worksheet"; + DashboardObjectType["QuickFilter"] = "quick-filter"; + DashboardObjectType["ParameterControl"] = "parameter-control"; + DashboardObjectType["PageFilter"] = "page-filter"; + DashboardObjectType["Legend"] = "legend"; + DashboardObjectType["Title"] = "title"; + DashboardObjectType["Text"] = "text"; + DashboardObjectType["Image"] = "image"; + DashboardObjectType["WebPage"] = "web-page"; + DashboardObjectType["Extension"] = "extension"; + })(DashboardObjectType = exports.DashboardObjectType || (exports.DashboardObjectType = {})); + /** + * The different types of data a value can have + */ + var DataType; + (function (DataType) { + DataType["String"] = "string"; + DataType["Int"] = "int"; + DataType["Float"] = "float"; + DataType["Bool"] = "bool"; + DataType["Date"] = "date"; + DataType["DateTime"] = "date-time"; + DataType["Spatial"] = "spatial"; + })(DataType = exports.DataType || (exports.DataType = {})); + /** + * Valid date ranges for a relative date filter. + */ + var DateRangeType; + (function (DateRangeType) { + DateRangeType["Last"] = "last"; + DateRangeType["LastN"] = "last-n"; + DateRangeType["Next"] = "next"; + DateRangeType["NextN"] = "next-n"; + DateRangeType["Current"] = "current"; + DateRangeType["ToDate"] = "to-date"; + })(DateRangeType = exports.DateRangeType || (exports.DateRangeType = {})); + /** + * Types of dialog event for event listening between a parent Extensions and a popup dialog. + */ + var DialogEventType; + (function (DialogEventType) { + DialogEventType["DialogMessage"] = "dialog-message"; + DialogEventType["DialogEvent"] = "dialog-event"; + })(DialogEventType = exports.DialogEventType || (exports.DialogEventType = {})); + var EncodingType; + (function (EncodingType) { + EncodingType["Column"] = "column"; + EncodingType["Row"] = "row"; + EncodingType["Page"] = "page"; + EncodingType["Filter"] = "filter"; + EncodingType["MarksType"] = "marks-type"; + EncodingType["MeasureValues"] = "measure-values"; + EncodingType["Color"] = "color"; + EncodingType["Size"] = "size"; + EncodingType["Label"] = "label"; + EncodingType["Detail"] = "detail"; + EncodingType["Tooltip"] = "tooltip"; + EncodingType["Shape"] = "shape"; + EncodingType["Path"] = "path"; + EncodingType["Angle"] = "angle"; + })(EncodingType = exports.EncodingType || (exports.EncodingType = {})); + /** + * All error codes used by the Extensions API. + */ + var ErrorCodes; + (function (ErrorCodes) { + /** + * Only one dialog can be opened at time with the UI namespace functionality. + */ + ErrorCodes["DialogAlreadyOpen"] = "dialog-already-open"; + /** + * The open dialog was closed by the user. + */ + ErrorCodes["DialogClosedByUser"] = "dialog-closed-by-user"; + /** + * An error occurred while attempting to perform a filter operation. + */ + ErrorCodes["FilterCannotBePerformed"] = "filter-cannot-be-performed"; + /** + * An error occurred within the Tableau Extensions API. Contact Tableau Support. + */ + ErrorCodes["InternalError"] = "internal-error"; + /** + * An invalid aggregation was specified for the filter, such as setting a range filter to "SUM(Sales)" instead of "Sales". + */ + ErrorCodes["InvalidAggregationFieldName"] = "invalid-aggregation-field-name"; + /** + * A dialog must first launch to, and send messages from, the same domain as the parent Extensions. + */ + ErrorCodes["InvalidDomainDialog"] = "invalid-dialog-domain"; + /** + * An invalid date was specified in a method that required a date parameter. + */ + ErrorCodes["InvalidDateParameter"] = "invalid-date-parameter"; + /** + * A filter operation was attempted on a field that does not exist in the data source. + */ + ErrorCodes["InvalidFilterFieldName"] = "invalid-filter-field-name"; + /** + * A filter operation was attempted using a value that is the wrong data type or format. + */ + ErrorCodes["InvalidFilterFieldValue"] = "invalid-filter-field-value"; + /** + * A parameter is not the correct data type or format. The name of the parameter is specified in the Error.message field. + */ + ErrorCodes["InvalidParameter"] = "invalid-parameter"; + /** + * An invalid date value was specified in a Sheet.selectMarksAsync() call for a date field. + */ + ErrorCodes["InvalidSelectionDate"] = "invalid-selection-date"; + /** + * A field was specified in a Sheet.selectMarksAsync() call that does not exist in the data source. + */ + ErrorCodes["InvalidSelectionFieldName"] = "invalid-selection-field-name"; + /** + * An invalid value was specified in a Sheet.selectMarksAsync() call. + */ + ErrorCodes["InvalidSelectionValue"] = "invalid-selection-value"; + /** + * A required parameter was not specified, null, or an empty string/array. + */ + ErrorCodes["NullOrEmptyParameter"] = "null-or-empty-parameter"; + /** + * An unknown event name was specified in the call to Viz.addEventListeneror Viz.removeEventListener. + */ + ErrorCodes["UnsupportedEventName"] = "unsupported-event-name"; + })(ErrorCodes = exports.ErrorCodes || (exports.ErrorCodes = {})); + /** + * Type of aggregation on a field. + */ + var FieldAggregationType; + (function (FieldAggregationType) { + FieldAggregationType["Sum"] = "sum"; + FieldAggregationType["Avg"] = "avg"; + FieldAggregationType["Min"] = "min"; + FieldAggregationType["Max"] = "max"; + FieldAggregationType["Stdev"] = "stdev"; + FieldAggregationType["Stdevp"] = "stdevp"; + FieldAggregationType["Var"] = "var"; + FieldAggregationType["Varp"] = "varp"; + FieldAggregationType["Count"] = "count"; + FieldAggregationType["Countd"] = "countd"; + FieldAggregationType["Median"] = "median"; + FieldAggregationType["Attr"] = "attr"; + FieldAggregationType["None"] = "none"; + FieldAggregationType["Year"] = "year"; + FieldAggregationType["Qtr"] = "qtr"; + FieldAggregationType["Month"] = "month"; + FieldAggregationType["Day"] = "day"; + FieldAggregationType["Hour"] = "hour"; + FieldAggregationType["Minute"] = "minute"; + FieldAggregationType["Second"] = "second"; + FieldAggregationType["Week"] = "week"; + FieldAggregationType["Weekday"] = "weekday"; + FieldAggregationType["MonthYear"] = "month-year"; + FieldAggregationType["Mdy"] = "mdy"; + FieldAggregationType["End"] = "end"; + FieldAggregationType["TruncYear"] = "trunc-year"; + FieldAggregationType["TruncQtr"] = "trunc-qtr"; + FieldAggregationType["TruncMonth"] = "trunc-month"; + FieldAggregationType["TruncWeek"] = "trunc-week"; + FieldAggregationType["TruncDay"] = "trunc-day"; + FieldAggregationType["TruncHour"] = "trunc-hour"; + FieldAggregationType["TruncMinute"] = "trunc-minute"; + FieldAggregationType["TruncSecond"] = "trunc-second"; + FieldAggregationType["Quart1"] = "quart1"; + FieldAggregationType["Quart3"] = "quart3"; + FieldAggregationType["Skewness"] = "skewness"; + FieldAggregationType["Kurtosis"] = "kurtosis"; + FieldAggregationType["InOut"] = "in-out"; + FieldAggregationType["User"] = "user"; + })(FieldAggregationType = exports.FieldAggregationType || (exports.FieldAggregationType = {})); + /** + * Role of a field. + */ + var FieldRoleType; + (function (FieldRoleType) { + FieldRoleType["Dimension"] = "dimension"; + FieldRoleType["Measure"] = "measure"; + FieldRoleType["Unknown"] = "unknown"; + })(FieldRoleType = exports.FieldRoleType || (exports.FieldRoleType = {})); + /** + * An enumeration of the valid types of filters that can be applied. + */ + var FilterType; + (function (FilterType) { + FilterType["Categorical"] = "categorical"; + FilterType["Range"] = "range"; + FilterType["Hierarchical"] = "hierarchical"; + FilterType["RelativeDate"] = "relative-date"; + })(FilterType = exports.FilterType || (exports.FilterType = {})); + /** + * The different update types for applying filter + */ + var FilterUpdateType; + (function (FilterUpdateType) { + FilterUpdateType["Add"] = "add"; + FilterUpdateType["All"] = "all"; + FilterUpdateType["Replace"] = "replace"; + FilterUpdateType["Remove"] = "remove"; + })(FilterUpdateType = exports.FilterUpdateType || (exports.FilterUpdateType = {})); + /** + * The domain type for a filter + */ + var FilterDomainType; + (function (FilterDomainType) { + /** + * The domain values that are relevant to the specified filter + * i.e. the domain is restricted by a previous filter + */ + FilterDomainType["Relevant"] = "relevant"; + /** + * list of all possible domain values from database + */ + FilterDomainType["Database"] = "database"; + })(FilterDomainType = exports.FilterDomainType || (exports.FilterDomainType = {})); + /** + * The option for specifying which values to include for filtering + * Indicates what to do with null values for a given filter or mark selection call. + */ + var FilterNullOption; + (function (FilterNullOption) { + FilterNullOption["NullValues"] = "null-values"; + FilterNullOption["NonNullValues"] = "non-null-values"; + FilterNullOption["AllValues"] = "all-values"; + })(FilterNullOption = exports.FilterNullOption || (exports.FilterNullOption = {})); + /** + * Type of mark for a given marks card in a viz. + */ + var MarkType; + (function (MarkType) { + MarkType["Bar"] = "bar"; + MarkType["Line"] = "line"; + MarkType["Area"] = "area"; + MarkType["Square"] = "square"; + MarkType["Circle"] = "circle"; + MarkType["Shape"] = "shape"; + MarkType["Text"] = "text"; + MarkType["Map"] = "map"; + MarkType["Pie"] = "pie"; + MarkType["GanttBar"] = "gantt-bar"; + MarkType["Polygon"] = "polygon"; + })(MarkType = exports.MarkType || (exports.MarkType = {})); + /** + * An enumeration describing the different types of allowable values. + * This is used for restricting the domain of a parameter + */ + var ParameterValueType; + (function (ParameterValueType) { + ParameterValueType["All"] = "all"; + ParameterValueType["List"] = "list"; + ParameterValueType["Range"] = "range"; + })(ParameterValueType = exports.ParameterValueType || (exports.ParameterValueType = {})); + /** + * Date period used in filters and in parameters. + */ + var PeriodType; + (function (PeriodType) { + PeriodType["Years"] = "years"; + PeriodType["Quarters"] = "quarters"; + PeriodType["Months"] = "months"; + PeriodType["Weeks"] = "weeks"; + PeriodType["Days"] = "days"; + PeriodType["Hours"] = "hours"; + PeriodType["Minutes"] = "minutes"; + PeriodType["Seconds"] = "seconds"; + })(PeriodType = exports.PeriodType || (exports.PeriodType = {})); + var QuickTableCalcType; + (function (QuickTableCalcType) { + QuickTableCalcType["RunningTotal"] = "running-total"; + QuickTableCalcType["Difference"] = "difference"; + QuickTableCalcType["PercentDifference"] = "percent-difference"; + QuickTableCalcType["PercentOfTotal"] = "percent-of-total"; + QuickTableCalcType["Rank"] = "rank"; + QuickTableCalcType["Percentile"] = "percentile"; + QuickTableCalcType["MovingAverage"] = "moving-average"; + QuickTableCalcType["YTDTotal"] = "ytd-total"; + QuickTableCalcType["CompoundGrowthRate"] = "compound-growth-rate"; + QuickTableCalcType["YearOverYearGrowth"] = "year-over-year-growth"; + QuickTableCalcType["YTDGrowth"] = "ytd-growth"; + QuickTableCalcType["Undefined"] = "undefined"; + })(QuickTableCalcType = exports.QuickTableCalcType || (exports.QuickTableCalcType = {})); + /** + * Enum for specifying the selection type for select marks api. + */ + var SelectionUpdateType; + (function (SelectionUpdateType) { + SelectionUpdateType["Replace"] = "select-replace"; + SelectionUpdateType["Add"] = "select-add"; + SelectionUpdateType["Remove"] = "select-remove"; + })(SelectionUpdateType = exports.SelectionUpdateType || (exports.SelectionUpdateType = {})); + /** + * The type of sheet a Sheet object represents + */ + var SheetType; + (function (SheetType) { + SheetType["Dashboard"] = "dashboard"; + SheetType["Story"] = "story"; + SheetType["Worksheet"] = "worksheet"; + })(SheetType = exports.SheetType || (exports.SheetType = {})); + var SortDirection; + (function (SortDirection) { + SortDirection["Increasing"] = "increasing"; + SortDirection["Decreasing"] = "decreasing"; + })(SortDirection = exports.SortDirection || (exports.SortDirection = {})); + /** + * Represents a certain type of event which can be listened for + */ + var TableauEventType; + (function (TableauEventType) { + /** Raised when any filter has changed state.*/ + TableauEventType["FilterChanged"] = "filter-changed"; + /** The selected marks on a visualization has changed */ + TableauEventType["MarkSelectionChanged"] = "mark-selection-changed"; + /** A parameter has had its value modified */ + TableauEventType["ParameterChanged"] = "parameter-changed"; + })(TableauEventType = exports.TableauEventType || (exports.TableauEventType = {})); + var TrendLineModelType; + (function (TrendLineModelType) { + TrendLineModelType["Linear"] = "linear"; + TrendLineModelType["Logarithmic"] = "logarithmic"; + TrendLineModelType["Exponential"] = "exponential"; + TrendLineModelType["Polynomial"] = "polynomial"; + })(TrendLineModelType = exports.TrendLineModelType || (exports.TrendLineModelType = {})); + + +/***/ }, +/* 19 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + Object.defineProperty(exports, "__esModule", { value: true }); + var TableauSheetEvent_1 = __webpack_require__(20); + var TableauWorksheetEvent = (function (_super) { + __extends(TableauWorksheetEvent, _super); + function TableauWorksheetEvent(type, _worksheet) { + var _this = _super.call(this, type, _worksheet) || this; + _this._worksheet = _worksheet; + return _this; + } + Object.defineProperty(TableauWorksheetEvent.prototype, "worksheet", { + get: function () { + return this._worksheet; + }, + enumerable: true, + configurable: true + }); + return TableauWorksheetEvent; + }(TableauSheetEvent_1.TableauSheetEvent)); + exports.TableauWorksheetEvent = TableauWorksheetEvent; + + +/***/ }, +/* 20 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + Object.defineProperty(exports, "__esModule", { value: true }); + var TableauEvent_1 = __webpack_require__(21); + var TableauSheetEvent = (function (_super) { + __extends(TableauSheetEvent, _super); + function TableauSheetEvent(type, sheet) { + var _this = _super.call(this, type) || this; + _this._sheet = sheet; + return _this; + } + Object.defineProperty(TableauSheetEvent.prototype, "sheet", { + get: function () { + return this._sheet; + }, + enumerable: true, + configurable: true + }); + return TableauSheetEvent; + }(TableauEvent_1.TableauEvent)); + exports.TableauSheetEvent = TableauSheetEvent; + + +/***/ }, +/* 21 */ +/***/ function(module, exports) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var TableauEvent = (function () { + function TableauEvent(type) { + this._type = type; + } + Object.defineProperty(TableauEvent.prototype, "type", { + get: function () { + return this._type; + }, + enumerable: true, + configurable: true + }); + return TableauEvent; + }()); + exports.TableauEvent = TableauEvent; + + +/***/ }, +/* 22 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + Object.defineProperty(exports, "__esModule", { value: true }); + var Contract = __webpack_require__(17); + var TableauWorksheetEvent_1 = __webpack_require__(19); + var MarksSelectedEvent = (function (_super) { + __extends(MarksSelectedEvent, _super); + function MarksSelectedEvent(worksheet) { + return _super.call(this, Contract.TableauEventType.MarkSelectionChanged, worksheet) || this; + } + MarksSelectedEvent.prototype.getMarksAsync = function () { + return this.worksheet.getSelectedMarksAsync(); + }; + return MarksSelectedEvent; + }(TableauWorksheetEvent_1.TableauWorksheetEvent)); + exports.MarksSelectedEvent = MarksSelectedEvent; + + +/***/ }, +/* 23 */ +/***/ function(module, exports) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + /** + * This class implements the SingleEventManager interface for a single type of Tableau event + * + * @template TEventType The Tableau event type this class specializes + */ + var SingleEventManagerImpl = (function () { + function SingleEventManagerImpl(eventType) { + this._eventType = eventType; + this._handlers = []; + } + Object.defineProperty(SingleEventManagerImpl.prototype, "eventType", { + get: function () { + return this._eventType; + }, + enumerable: true, + configurable: true + }); + SingleEventManagerImpl.prototype.addEventListener = function (handler) { + var _this = this; + this._handlers.push(handler); + return function () { return _this.removeEventListener(handler); }; + }; + SingleEventManagerImpl.prototype.removeEventListener = function (handler) { + var beforeCount = this._handlers.length; + this._handlers = this._handlers.filter(function (h) { return h !== handler; }); + return beforeCount > this._handlers.length; + }; + SingleEventManagerImpl.prototype.triggerEvent = function (eventGenerator) { + for (var _i = 0, _a = this._handlers; _i < _a.length; _i++) { + var handler = _a[_i]; + try { + var eventModel = eventGenerator(); + handler(eventModel); + } + catch (e) { + // Since this handler could be outside our control, just catch anything it throws and continue on + continue; + } + } + }; + return SingleEventManagerImpl; + }()); + exports.SingleEventManagerImpl = SingleEventManagerImpl; + + +/***/ }, +/* 24 */ +/***/ function(module, exports) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + /** + * Defines which type of getData call to make. + */ + var GetDataType; + (function (GetDataType) { + GetDataType["Summary"] = "summary"; + GetDataType["Underlying"] = "underlying"; + })(GetDataType = exports.GetDataType || (exports.GetDataType = {})); + + +/***/ }, +/* 25 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var DataSourceServiceImpl_1 = __webpack_require__(26); + var FilterServiceImpl_1 = __webpack_require__(28); + var GetDataServiceImpl_1 = __webpack_require__(36); + var NotificationServiceImpl_1 = __webpack_require__(37); + var ParametersServiceImpl_1 = __webpack_require__(38); + var SelectionServiceImpl_1 = __webpack_require__(41); + var ServiceRegistry_1 = __webpack_require__(35); + function registerAllSharedServices(dispatcher) { + ServiceRegistry_1.ApiServiceRegistry.instance.registerService(new DataSourceServiceImpl_1.DataSourceServiceImpl(dispatcher)); + ServiceRegistry_1.ApiServiceRegistry.instance.registerService(new GetDataServiceImpl_1.GetDataServiceImpl(dispatcher)); + ServiceRegistry_1.ApiServiceRegistry.instance.registerService(new FilterServiceImpl_1.FilterServiceImpl(dispatcher)); + ServiceRegistry_1.ApiServiceRegistry.instance.registerService(new NotificationServiceImpl_1.NotificationServiceImpl(dispatcher)); + ServiceRegistry_1.ApiServiceRegistry.instance.registerService(new ParametersServiceImpl_1.ParametersServiceImpl(dispatcher)); + ServiceRegistry_1.ApiServiceRegistry.instance.registerService(new SelectionServiceImpl_1.SelectionServiceImpl(dispatcher)); + } + exports.registerAllSharedServices = registerAllSharedServices; + + +/***/ }, +/* 26 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var api_internal_contract_1 = __webpack_require__(27); + var DataSourceServiceImpl = (function () { + function DataSourceServiceImpl(_dispatcher) { + this._dispatcher = _dispatcher; + } + Object.defineProperty(DataSourceServiceImpl.prototype, "serviceName", { + get: function () { + return "data-source-service" /* DataSourceService */; + }, + enumerable: true, + configurable: true + }); + DataSourceServiceImpl.prototype.refreshAsync = function (dataSourceId) { + var parameters = (_a = {}, _a[api_internal_contract_1.ParameterId.DataSourceId] = dataSourceId, _a); + return this._dispatcher.execute(api_internal_contract_1.VerbId.RefreshDataSource, parameters).then(function (response) { + return; + }); + var _a; + }; + DataSourceServiceImpl.prototype.getDataSourcesAsync = function () { + return this._dispatcher.execute(api_internal_contract_1.VerbId.GetDataSources, {}).then(function (response) { + var dataSchema = response.result; + return dataSchema; + }); + }; + return DataSourceServiceImpl; + }()); + exports.DataSourceServiceImpl = DataSourceServiceImpl; + + +/***/ }, +/* 27 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + /** + * This is your main. This is where you re-export everything you want to be publicly available. + * + * The build enforces that the file has the same name as the global variable that is exported. + */ + function __export(m) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; + } + Object.defineProperty(exports, "__esModule", { value: true }); + __export(__webpack_require__(4)); + __export(__webpack_require__(5)); + __export(__webpack_require__(6)); + __export(__webpack_require__(7)); + __export(__webpack_require__(8)); + + +/***/ }, +/* 28 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var Contract = __webpack_require__(17); + var api_internal_contract_1 = __webpack_require__(27); + var api_utils_1 = __webpack_require__(29); + var ExternalToInternalEnumMappings_1 = __webpack_require__(32); + var InternalToExternalEnumMappings_1 = __webpack_require__(33); + var FilterModels_1 = __webpack_require__(34); + var GetDataModels_1 = __webpack_require__(14); + var FilterServiceImpl = (function () { + function FilterServiceImpl(dispatcher) { + this._dispatcher = dispatcher; + } + Object.defineProperty(FilterServiceImpl.prototype, "serviceName", { + get: function () { + return "filter-service" /* Filter */; + }, + enumerable: true, + configurable: true + }); + FilterServiceImpl.prototype.applyFilterAsync = function (visualId, fieldName, values, updateType, filterOptions) { + if (!api_utils_1.Param.isValidEnumValue(updateType, Contract.FilterUpdateType)) { + throw new Error('Invalid value for parameter FilterUpdateType'); + } + var verb = api_internal_contract_1.VerbId.ApplyCategoricalFilter; + var parameters = {}; + parameters[api_internal_contract_1.ParameterId.VisualId] = visualId; + parameters[api_internal_contract_1.ParameterId.FieldName] = fieldName; + parameters[api_internal_contract_1.ParameterId.FilterValues] = values; + parameters[api_internal_contract_1.ParameterId.FilterUpdateType] = updateType; + parameters[api_internal_contract_1.ParameterId.IsExcludeMode] = + (filterOptions === undefined || filterOptions.isExcludeMode === undefined) ? false : filterOptions.isExcludeMode; + return this._dispatcher.execute(verb, parameters).then(function (response) { + var error = response.result; + if (!(error.errorCode === null || error.errorCode === undefined)) { + // TODO: come back and implement error handling logic + throw new Error('Error Applying Filter: ' + error.errorCode); + } + return fieldName; + }); + }; + FilterServiceImpl.prototype.applyRangeFilterAsync = function (visualId, fieldName, filterOptions) { + if (!filterOptions) { + throw new Error('Missing Parameter: RangeFilterOptions'); + } + api_utils_1.Param.verifyRangeParamType(filterOptions.min, filterOptions.max); + var verb = api_internal_contract_1.VerbId.ApplyRangeFilter; + var parameters = {}; + if (filterOptions.min) { + var min = void 0; + if (filterOptions.min instanceof Date) { + min = api_utils_1.Param.serializeDateForPlatform(filterOptions.min); + } + else { + min = filterOptions.min; + } + parameters[api_internal_contract_1.ParameterId.FilterRangeMin] = min; + } + if (filterOptions.max) { + var max = void 0; + if (filterOptions.max instanceof Date) { + max = api_utils_1.Param.serializeDateForPlatform(filterOptions.max); + } + else { + max = filterOptions.max; + } + parameters[api_internal_contract_1.ParameterId.FilterRangeMax] = max; + } + if (filterOptions.nullOption) { + if (!api_utils_1.Param.isValidEnumValue(filterOptions.nullOption, Contract.FilterNullOption)) { + throw new Error('Invalid value for parameter NullOption'); + } + parameters[api_internal_contract_1.ParameterId.FilterRangeNullOption] = ExternalToInternalEnumMappings_1.ExternalToInternalEnumMappings.nullOptions.convert(filterOptions.nullOption); + } + parameters[api_internal_contract_1.ParameterId.FieldName] = fieldName; + parameters[api_internal_contract_1.ParameterId.VisualId] = visualId; + return this._dispatcher.execute(verb, parameters).then(function (response) { + return fieldName; + }); + }; + FilterServiceImpl.prototype.clearFilterAsync = function (visualId, fieldName) { + var verb = api_internal_contract_1.VerbId.ClearFilter; + var parameters = {}; + parameters[api_internal_contract_1.ParameterId.VisualId] = visualId; + parameters[api_internal_contract_1.ParameterId.FieldName] = fieldName; + return this._dispatcher.execute(verb, parameters).then(function (resposne) { + return fieldName; + }); + }; + FilterServiceImpl.prototype.getFiltersAsync = function (visualId) { + var _this = this; + var verb = api_internal_contract_1.VerbId.GetFilters; + var parameters = {}; + parameters[api_internal_contract_1.ParameterId.VisualId] = visualId; + return this._dispatcher.execute(verb, parameters).then(function (response) { + var filters = response.result; + return _this.convertDomainFilters(filters); + }); + }; + FilterServiceImpl.prototype.getCategoricalDomainAsync = function (worksheetName, fieldId, domainType) { + var _this = this; + if (!api_utils_1.Param.isValidEnumValue(domainType, Contract.FilterDomainType)) { + throw new Error('Invalid value for parameter FilterDomainType'); + } + var verb = api_internal_contract_1.VerbId.GetCategoricalDomain; + var parameters = {}; + parameters[api_internal_contract_1.ParameterId.VisualId] = { + worksheet: worksheetName + }; + parameters[api_internal_contract_1.ParameterId.FieldId] = fieldId; + parameters[api_internal_contract_1.ParameterId.DomainType] = domainType; + return this._dispatcher.execute(verb, parameters).then(function (response) { + var domain = response.result; + return _this.convertCategoricalDomain(domain, domainType); + }); + }; + FilterServiceImpl.prototype.getRangeDomainAsync = function (worksheetName, fieldId, domainType) { + var _this = this; + if (!api_utils_1.Param.isValidEnumValue(domainType, Contract.FilterDomainType)) { + throw new Error('Invalid value for parameter FilterDomainType'); + } + var verb = api_internal_contract_1.VerbId.GetRangeDomain; + var parameters = {}; + parameters[api_internal_contract_1.ParameterId.VisualId] = { + worksheet: worksheetName + }; + parameters[api_internal_contract_1.ParameterId.FieldId] = fieldId; + parameters[api_internal_contract_1.ParameterId.DomainType] = ExternalToInternalEnumMappings_1.ExternalToInternalEnumMappings.filterDomainType.convert(domainType); + return this._dispatcher.execute(verb, parameters).then(function (response) { + var domain = response.result; + return _this.convertRangeDomain(domain, domainType); + }); + }; + // Helper Methods + FilterServiceImpl.prototype.convertDomainFilters = function (domainFilters) { + var _this = this; + var filters = []; + domainFilters.forEach(function (domainFilter) { + switch (domainFilter.filterType) { + case api_internal_contract_1.FilterType.Categorical: { + var filter = domainFilter; + if (filter) { + filters.push(_this.convertCategoricalFilter(filter)); + } + else { + throw new Error('Invalid Categorical Filter'); + } + break; + } + case api_internal_contract_1.FilterType.Range: { + var filter = domainFilter; + if (filter) { + filters.push(_this.convertRangeFilter(filter)); + } + else { + throw new Error('Invalid Range Filter'); + } + break; + } + case api_internal_contract_1.FilterType.RelativeDate: { + var filter = domainFilter; + if (filter) { + filters.push(_this.convertRelativeDateFilter(filter)); + } + else { + throw new Error('Invalid Relative Date Filter'); + } + break; + } + default: { + break; + } + } + }); + return filters; + }; + FilterServiceImpl.prototype.convertCategoricalFilter = function (domainFilter) { + var appliedValues = domainFilter.values.map(function (dv) { + return new GetDataModels_1.DataValue(dv.value, dv.formattedValue); + }); + return new FilterModels_1.CategoricalFilter(domainFilter.visualId.worksheet, domainFilter.fieldCaption, domainFilter.fieldName, Contract.FilterType.Categorical, appliedValues, domainFilter.isExclude); + }; + FilterServiceImpl.prototype.convertRangeFilter = function (domainFilter) { + var minValue = new GetDataModels_1.DataValue(domainFilter.min.value, domainFilter.min.formattedValue); + var maxValue = new GetDataModels_1.DataValue(domainFilter.max.value, domainFilter.max.formattedValue); + return new FilterModels_1.RangeFilter(domainFilter.visualId.worksheet, domainFilter.fieldCaption, domainFilter.fieldName, Contract.FilterType.Range, minValue, maxValue, domainFilter.includeNullValues); + }; + FilterServiceImpl.prototype.convertRelativeDateFilter = function (domainFilter) { + var anchorDateValue = new GetDataModels_1.DataValue(domainFilter.anchorDate.value, domainFilter.anchorDate.formattedValue); + return new FilterModels_1.RelativeDateFilter(domainFilter.visualId.worksheet, domainFilter.fieldCaption, domainFilter.fieldName, Contract.FilterType.RelativeDate, anchorDateValue, InternalToExternalEnumMappings_1.InternalToExternalEnumMappings.dateStepPeriod.convert(domainFilter.periodType), InternalToExternalEnumMappings_1.InternalToExternalEnumMappings.dateRangeType.convert(domainFilter.rangeType), domainFilter.rangeN); + }; + FilterServiceImpl.prototype.convertCategoricalDomain = function (domain, domainType) { + var values = domain.values.map(function (domainDv) { + return new GetDataModels_1.DataValue(domainDv.value, domainDv.formattedValue); + }); + return new FilterModels_1.CategoricalDomain(values, domainType); + }; + FilterServiceImpl.prototype.convertRangeDomain = function (domain, domainType) { + var min = new GetDataModels_1.DataValue(domain.min.value, domain.min.formattedValue); + var max = new GetDataModels_1.DataValue(domain.max.value, domain.max.formattedValue); + return new FilterModels_1.RangeDomain(min, max, domainType); + }; + return FilterServiceImpl; + }()); + exports.FilterServiceImpl = FilterServiceImpl; + + +/***/ }, +/* 29 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + /** + * This is your main. This is where you re-export everything you want to be publicly available. + * + * The build enforces that the file has the same name as the global variable that is exported. + */ + Object.defineProperty(exports, "__esModule", { value: true }); + var EnumConverter_1 = __webpack_require__(30); + exports.EnumConverter = EnumConverter_1.EnumConverter; + var Param_1 = __webpack_require__(31); + exports.Param = Param_1.Param; + + +/***/ }, +/* 30 */ +/***/ function(module, exports) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + /** + * This class converts from a source enum value to destination enum + * value given a mapping from source to destination when constructed. + */ + var EnumConverter = (function () { + function EnumConverter(_mappings, _defaultVal) { + this._mappings = _mappings; + this._defaultVal = _defaultVal; + } + EnumConverter.prototype.convert = function (enumVal, throwIfMissing) { + if (this._mappings.hasOwnProperty(enumVal)) { + return this._mappings[enumVal]; + } + if (this._defaultVal !== undefined && !throwIfMissing) { + return this._defaultVal; + } + throw new Error('Mapping not found for ' + enumVal); + }; + return EnumConverter; + }()); + exports.EnumConverter = EnumConverter; + + +/***/ }, +/* 31 */ +/***/ function(module, exports) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var Param = (function () { + function Param() { + } + /** + * Verifies that an incoming parameter is 'truthy' and throws + * an error if it's not. This will throw an error if the value + * is null, undefined, NaN, the empty string, 0, or false. + * + * @param argumentValue value to verify + * @param argumentName name of argument to verify + */ + /*tslint:disable-next-line */ + Param.verifyValue = function (argumentValue, argumentName) { + if (!argumentValue) { + throw new Error('Value is invalid for argument: ' + argumentName); + } + }; + /** + * Verifies that a string is valid. Throws an error if the string is + * null, undefined, or NaN. + * + * @param argumentValue value to verify + * @param argumentName name of argument to verify + */ + Param.verifyString = function (argumentValue, argumentName) { + if (argumentValue === null || argumentValue === undefined) { + throw new Error('String value is invalid for argument: ' + argumentName); + } + }; + /** + * Verifies the value is part of the Enum + * + * String enums are {string : string} dictionaries which are not reverse mappable + * This is an ugly workaround + * @param value value to verify + * @param enumType enum to verify against + */ + /* tslint:disable:no-any */ + Param.isValidEnumValue = function (value, enumType) { + var isValid = false; + Object.keys(enumType).forEach(function (enumKey) { + if (enumType[enumKey] === value.toString()) { + isValid = true; + } + }); + return isValid; + }; + /* tslint:enable:no-any */ + /** + * serializes the date into the format that the server expects. + * @param date the date to serialize + */ + Param.serializeDateForPlatform = function (date) { + var year = date.getUTCFullYear(); + var month = date.getUTCMonth() + 1; + var day = date.getUTCDate(); + var hh = date.getUTCHours(); + var mm = date.getUTCMinutes(); + var sec = date.getUTCSeconds(); + return year + '-' + month + '-' + day + ' ' + hh + ':' + mm + ':' + sec; + }; + Param.serializeBooleanForPlatform = function (bool) { + return bool ? 'true' : 'false'; + }; + Param.serializeNumberForPlatform = function (num) { + return num.toString(10); + }; + /** + * Verifies the params min and max for applying range filter + * @param min range min + * @param max range max + */ + /* tslint:disable:no-any */ + Param.verifyRangeParamType = function (min, max) { + /* tslint:enable:no-any */ + if (!min && !max) { + throw new Error('Missing Parameter: At least one of min or max is required'); + } + if (!Param.isTypeNumber(min) && !Param.isTypeDate(min)) { + throw new Error('Invalid Parameter Type: Only Date and number are allowed for parameter min'); + } + if (!Param.isTypeNumber(max) && !Param.isTypeDate(max)) { + throw new Error('Invalid Parameter Type: Only Date and number are allowed for parameter max'); + } + if (typeof (min) !== typeof (max)) { + throw new Error('Invalid Parameter Type: Parameters min and max should be of the same type'); + } + }; + /** + * Verifies the input is a number + */ + /* tslint:disable:no-any */ + Param.isTypeNumber = function (input) { + return typeof (input) === 'number' || input instanceof Number; + }; + /* tslint:enable:no-any */ + /** + * Verifies the input is a Date + */ + /* tslint:disable:no-any */ + Param.isTypeDate = function (input) { + return input instanceof Date; + }; + /* tslint:enable:no-any */ + /* tslint:disable-next-line:no-any */ + Param.isTypeString = function (input) { + return typeof (input) === 'string' || input instanceof String; + }; + /* tslint:disable-next-line:no-any */ + Param.isTypeBool = function (input) { + return typeof (input) === 'boolean' || input instanceof Boolean; + }; + /* tslint:disable-next-line:no-any */ + Param.serializeParamterValue = function (value) { + if (Param.isTypeNumber(value)) { + return Param.serializeNumberForPlatform(value); + } + else if (Param.isTypeDate(value)) { + return Param.serializeDateForPlatform(value); + } + else if (Param.isTypeBool(value)) { + return Param.serializeBooleanForPlatform(value); + } + else if (Param.isTypeString(value)) { + return value; + } + else { + throw new Error('Value is invalid for argument: value'); + } + }; + return Param; + }()); + exports.Param = Param; + + +/***/ }, +/* 32 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var api_external_contract_1 = __webpack_require__(17); + var api_internal_contract_1 = __webpack_require__(27); + var api_utils_1 = __webpack_require__(29); + /* tslint:disable:typedef - Disable this to make declaring these classes a bit easier */ + /** + * Maps enums used by the external-api-contract to the enums used + * in the internal-api-contract, which developers code against. + */ + var ExternalToInternalEnumMappings = (function () { + function ExternalToInternalEnumMappings() { + } + ExternalToInternalEnumMappings.nullOptions = new api_utils_1.EnumConverter((_a = {}, + _a[api_external_contract_1.FilterNullOption.AllValues] = api_internal_contract_1.FilterNullOption.AllValues, + _a[api_external_contract_1.FilterNullOption.NonNullValues] = api_internal_contract_1.FilterNullOption.NonNullValues, + _a[api_external_contract_1.FilterNullOption.NonNullValues] = api_internal_contract_1.FilterNullOption.NullValues, + _a)); + ExternalToInternalEnumMappings.filterDomainType = new api_utils_1.EnumConverter((_b = {}, + _b[api_external_contract_1.FilterDomainType.Relevant] = api_internal_contract_1.FilterDomainType.Relevant, + _b[api_external_contract_1.FilterDomainType.Database] = api_internal_contract_1.FilterDomainType.Database, + _b)); + return ExternalToInternalEnumMappings; + }()); + exports.ExternalToInternalEnumMappings = ExternalToInternalEnumMappings; + var _a, _b; + /* tslint:enable:typedef */ + + +/***/ }, +/* 33 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var api_external_contract_1 = __webpack_require__(17); + var api_internal_contract_1 = __webpack_require__(27); + var api_utils_1 = __webpack_require__(29); + /* tslint:disable:typedef - Disable this to make declaring these classes a bit easier */ + /** + * Maps enums used by the internal-api-contract to the enums used + * in the external-api-contract, which developers code against. + */ + var InternalToExternalEnumMappings = (function () { + function InternalToExternalEnumMappings() { + } + InternalToExternalEnumMappings.extensionContext = new api_utils_1.EnumConverter((_a = {}, + _a[api_internal_contract_1.ExtensionContext.Desktop] = api_external_contract_1.ExtensionContext.Desktop, + _a[api_internal_contract_1.ExtensionContext.Server] = api_external_contract_1.ExtensionContext.Server, + _a)); + InternalToExternalEnumMappings.extensionMode = new api_utils_1.EnumConverter((_b = {}, + _b[api_internal_contract_1.ExtensionMode.Authoring] = api_external_contract_1.ExtensionMode.Authoring, + _b[api_internal_contract_1.ExtensionMode.Viewing] = api_external_contract_1.ExtensionMode.Viewing, + _b)); + InternalToExternalEnumMappings.columnType = new api_utils_1.EnumConverter((_c = {}, + _c[api_internal_contract_1.ColumnType.Continuous] = api_external_contract_1.ColumnType.Continuous, + _c[api_internal_contract_1.ColumnType.Discrete] = api_external_contract_1.ColumnType.Discrete, + _c)); + InternalToExternalEnumMappings.fieldAggregationType = new api_utils_1.EnumConverter((_d = {}, + _d[api_internal_contract_1.FieldAggregationType.Attr] = api_external_contract_1.FieldAggregationType.Attr, + _d[api_internal_contract_1.FieldAggregationType.Avg] = api_external_contract_1.FieldAggregationType.Avg, + _d[api_internal_contract_1.FieldAggregationType.Count] = api_external_contract_1.FieldAggregationType.Count, + _d[api_internal_contract_1.FieldAggregationType.Countd] = api_external_contract_1.FieldAggregationType.Countd, + _d[api_internal_contract_1.FieldAggregationType.Day] = api_external_contract_1.FieldAggregationType.Day, + _d[api_internal_contract_1.FieldAggregationType.End] = api_external_contract_1.FieldAggregationType.End, + _d[api_internal_contract_1.FieldAggregationType.Hour] = api_external_contract_1.FieldAggregationType.Hour, + _d[api_internal_contract_1.FieldAggregationType.InOut] = api_external_contract_1.FieldAggregationType.InOut, + _d[api_internal_contract_1.FieldAggregationType.Kurtosis] = api_external_contract_1.FieldAggregationType.Kurtosis, + _d[api_internal_contract_1.FieldAggregationType.Max] = api_external_contract_1.FieldAggregationType.Max, + _d[api_internal_contract_1.FieldAggregationType.Mdy] = api_external_contract_1.FieldAggregationType.Mdy, + _d[api_internal_contract_1.FieldAggregationType.Median] = api_external_contract_1.FieldAggregationType.Median, + _d[api_internal_contract_1.FieldAggregationType.Min] = api_external_contract_1.FieldAggregationType.Min, + _d[api_internal_contract_1.FieldAggregationType.Minute] = api_external_contract_1.FieldAggregationType.Minute, + _d[api_internal_contract_1.FieldAggregationType.MonthYear] = api_external_contract_1.FieldAggregationType.MonthYear, + _d[api_internal_contract_1.FieldAggregationType.None] = api_external_contract_1.FieldAggregationType.None, + _d[api_internal_contract_1.FieldAggregationType.Qtr] = api_external_contract_1.FieldAggregationType.Qtr, + _d[api_internal_contract_1.FieldAggregationType.Quart1] = api_external_contract_1.FieldAggregationType.Quart1, + _d[api_internal_contract_1.FieldAggregationType.Quart3] = api_external_contract_1.FieldAggregationType.Quart3, + _d[api_internal_contract_1.FieldAggregationType.Second] = api_external_contract_1.FieldAggregationType.Second, + _d[api_internal_contract_1.FieldAggregationType.Skewness] = api_external_contract_1.FieldAggregationType.Skewness, + _d[api_internal_contract_1.FieldAggregationType.Stdev] = api_external_contract_1.FieldAggregationType.Stdev, + _d[api_internal_contract_1.FieldAggregationType.Stdevp] = api_external_contract_1.FieldAggregationType.Stdevp, + _d[api_internal_contract_1.FieldAggregationType.Sum] = api_external_contract_1.FieldAggregationType.Sum, + _d[api_internal_contract_1.FieldAggregationType.TruncDay] = api_external_contract_1.FieldAggregationType.TruncDay, + _d[api_internal_contract_1.FieldAggregationType.TruncHour] = api_external_contract_1.FieldAggregationType.TruncHour, + _d[api_internal_contract_1.FieldAggregationType.TruncMinute] = api_external_contract_1.FieldAggregationType.TruncMinute, + _d[api_internal_contract_1.FieldAggregationType.TruncMonth] = api_external_contract_1.FieldAggregationType.TruncMonth, + _d[api_internal_contract_1.FieldAggregationType.TruncQtr] = api_external_contract_1.FieldAggregationType.TruncQtr, + _d[api_internal_contract_1.FieldAggregationType.TruncSecond] = api_external_contract_1.FieldAggregationType.TruncSecond, + _d[api_internal_contract_1.FieldAggregationType.TruncWeek] = api_external_contract_1.FieldAggregationType.TruncWeek, + _d[api_internal_contract_1.FieldAggregationType.TruncYear] = api_external_contract_1.FieldAggregationType.TruncYear, + _d[api_internal_contract_1.FieldAggregationType.User] = api_external_contract_1.FieldAggregationType.User, + _d[api_internal_contract_1.FieldAggregationType.Var] = api_external_contract_1.FieldAggregationType.Var, + _d[api_internal_contract_1.FieldAggregationType.Varp] = api_external_contract_1.FieldAggregationType.Varp, + _d[api_internal_contract_1.FieldAggregationType.Week] = api_external_contract_1.FieldAggregationType.Week, + _d[api_internal_contract_1.FieldAggregationType.Weekday] = api_external_contract_1.FieldAggregationType.Weekday, + _d[api_internal_contract_1.FieldAggregationType.Year] = api_external_contract_1.FieldAggregationType.Year, + _d)); + InternalToExternalEnumMappings.fieldRoleType = new api_utils_1.EnumConverter((_e = {}, + _e[api_internal_contract_1.FieldRoleType.Dimension] = api_external_contract_1.FieldRoleType.Dimension, + _e[api_internal_contract_1.FieldRoleType.Measure] = api_external_contract_1.FieldRoleType.Measure, + _e[api_internal_contract_1.FieldRoleType.Unknown] = api_external_contract_1.FieldRoleType.Unknown, + _e)); + InternalToExternalEnumMappings.sheetType = new api_utils_1.EnumConverter((_f = {}, + _f[api_internal_contract_1.SheetType.Dashboard] = api_external_contract_1.SheetType.Dashboard, + _f[api_internal_contract_1.SheetType.Story] = api_external_contract_1.SheetType.Story, + _f[api_internal_contract_1.SheetType.Worksheet] = api_external_contract_1.SheetType.Worksheet, + _f)); + InternalToExternalEnumMappings.dashboardObjectType = new api_utils_1.EnumConverter((_g = {}, + _g[api_internal_contract_1.DashboardObjectType.Extension] = api_external_contract_1.DashboardObjectType.Extension, + _g[api_internal_contract_1.DashboardObjectType.Blank] = api_external_contract_1.DashboardObjectType.Blank, + _g[api_internal_contract_1.DashboardObjectType.Image] = api_external_contract_1.DashboardObjectType.Image, + _g[api_internal_contract_1.DashboardObjectType.Legend] = api_external_contract_1.DashboardObjectType.Legend, + _g[api_internal_contract_1.DashboardObjectType.PageFilter] = api_external_contract_1.DashboardObjectType.PageFilter, + _g[api_internal_contract_1.DashboardObjectType.ParameterControl] = api_external_contract_1.DashboardObjectType.ParameterControl, + _g[api_internal_contract_1.DashboardObjectType.QuickFilter] = api_external_contract_1.DashboardObjectType.QuickFilter, + _g[api_internal_contract_1.DashboardObjectType.Text] = api_external_contract_1.DashboardObjectType.Text, + _g[api_internal_contract_1.DashboardObjectType.Title] = api_external_contract_1.DashboardObjectType.Title, + _g[api_internal_contract_1.DashboardObjectType.WebPage] = api_external_contract_1.DashboardObjectType.WebPage, + _g[api_internal_contract_1.DashboardObjectType.Worksheet] = api_external_contract_1.DashboardObjectType.Worksheet, + _g)); + InternalToExternalEnumMappings.dataType = new api_utils_1.EnumConverter((_h = {}, + _h[api_internal_contract_1.DataType.Bool] = api_external_contract_1.DataType.Bool, + _h[api_internal_contract_1.DataType.Date] = api_external_contract_1.DataType.Date, + _h[api_internal_contract_1.DataType.DateTime] = api_external_contract_1.DataType.DateTime, + _h[api_internal_contract_1.DataType.Float] = api_external_contract_1.DataType.Float, + _h[api_internal_contract_1.DataType.Int] = api_external_contract_1.DataType.Int, + _h[api_internal_contract_1.DataType.String] = api_external_contract_1.DataType.String, + _h)); + InternalToExternalEnumMappings.filterUpdateType = new api_utils_1.EnumConverter((_j = {}, + _j[api_internal_contract_1.FilterUpdateType.Add] = api_external_contract_1.FilterUpdateType.Add, + _j[api_internal_contract_1.FilterUpdateType.All] = api_external_contract_1.FilterUpdateType.All, + _j[api_internal_contract_1.FilterUpdateType.Remove] = api_external_contract_1.FilterUpdateType.Remove, + _j[api_internal_contract_1.FilterUpdateType.Replace] = api_external_contract_1.FilterUpdateType.Replace, + _j)); + InternalToExternalEnumMappings.allowableValues = new api_utils_1.EnumConverter((_k = {}, + _k[api_internal_contract_1.DomainRestrictionType.All] = api_external_contract_1.ParameterValueType.All, + _k[api_internal_contract_1.DomainRestrictionType.List] = api_external_contract_1.ParameterValueType.List, + _k[api_internal_contract_1.DomainRestrictionType.Range] = api_external_contract_1.ParameterValueType.Range, + _k)); + InternalToExternalEnumMappings.dateStepPeriod = new api_utils_1.EnumConverter((_l = {}, + _l[api_internal_contract_1.DateStepPeriod.Years] = api_external_contract_1.PeriodType.Years, + _l[api_internal_contract_1.DateStepPeriod.Quarters] = api_external_contract_1.PeriodType.Quarters, + _l[api_internal_contract_1.DateStepPeriod.Months] = api_external_contract_1.PeriodType.Months, + _l[api_internal_contract_1.DateStepPeriod.Weeks] = api_external_contract_1.PeriodType.Weeks, + _l[api_internal_contract_1.DateStepPeriod.Days] = api_external_contract_1.PeriodType.Days, + _l[api_internal_contract_1.DateStepPeriod.Hours] = api_external_contract_1.PeriodType.Hours, + _l[api_internal_contract_1.DateStepPeriod.Minutes] = api_external_contract_1.PeriodType.Minutes, + _l[api_internal_contract_1.DateStepPeriod.Seconds] = api_external_contract_1.PeriodType.Seconds, + _l)); + InternalToExternalEnumMappings.dateRangeType = new api_utils_1.EnumConverter((_m = {}, + _m[api_internal_contract_1.DateRangeType.Current] = api_external_contract_1.DateRangeType.Current, + _m[api_internal_contract_1.DateRangeType.Last] = api_external_contract_1.DateRangeType.Last, + _m[api_internal_contract_1.DateRangeType.LastN] = api_external_contract_1.DateRangeType.LastN, + _m[api_internal_contract_1.DateRangeType.Next] = api_external_contract_1.DateRangeType.Next, + _m[api_internal_contract_1.DateRangeType.NextN] = api_external_contract_1.DateRangeType.NextN, + _m[api_internal_contract_1.DateRangeType.ToDate] = api_external_contract_1.DateRangeType.ToDate, + _m)); + InternalToExternalEnumMappings.filterType = new api_utils_1.EnumConverter((_o = {}, + _o[api_internal_contract_1.FilterType.Categorical] = api_external_contract_1.FilterType.Categorical, + _o[api_internal_contract_1.FilterType.Range] = api_external_contract_1.FilterType.Range, + _o[api_internal_contract_1.FilterType.RelativeDate] = api_external_contract_1.FilterType.RelativeDate, + _o[api_internal_contract_1.FilterType.Hierarchical] = api_external_contract_1.FilterType.Hierarchical, + _o)); + return InternalToExternalEnumMappings; + }()); + exports.InternalToExternalEnumMappings = InternalToExternalEnumMappings; + var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o; + /* tslint:enable:typedef */ + + +/***/ }, +/* 34 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + Object.defineProperty(exports, "__esModule", { value: true }); + var Contract = __webpack_require__(17); + var ServiceRegistry_1 = __webpack_require__(35); + var Filter = (function () { + function Filter(_worksheetName, _fieldName, _filterType, _fieldId) { + this._worksheetName = _worksheetName; + this._fieldName = _fieldName; + this._filterType = _filterType; + this._fieldId = _fieldId; + } + Object.defineProperty(Filter.prototype, "worksheetName", { + get: function () { + return this._worksheetName; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Filter.prototype, "fieldName", { + get: function () { + return this._fieldName; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Filter.prototype, "fieldId", { + get: function () { + return this._fieldId; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Filter.prototype, "filterType", { + get: function () { + return this._filterType; + }, + enumerable: true, + configurable: true + }); + Filter.prototype.getFieldAsync = function () { + throw new Error('Method not implemented'); + }; + return Filter; + }()); + exports.Filter = Filter; + var CategoricalFilter = (function (_super) { + __extends(CategoricalFilter, _super); + function CategoricalFilter(worksheetName, fieldName, fieldId, filterType, _appliedValues, _isExcludeMode) { + var _this = _super.call(this, worksheetName, fieldName, filterType, fieldId) || this; + _this._appliedValues = _appliedValues; + _this._isExcludeMode = _isExcludeMode; + return _this; + } + Object.defineProperty(CategoricalFilter.prototype, "appliedValues", { + get: function () { + return this._appliedValues; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(CategoricalFilter.prototype, "isExcludeMode", { + get: function () { + return this._isExcludeMode; + }, + enumerable: true, + configurable: true + }); + CategoricalFilter.prototype.getDomainAsync = function (domainType) { + if (!domainType) { + domainType = Contract.FilterDomainType.Relevant; + } + var service = ServiceRegistry_1.ApiServiceRegistry.instance.getService("filter-service" /* Filter */); + return service.getCategoricalDomainAsync(this._worksheetName, this._fieldId, domainType); + }; + return CategoricalFilter; + }(Filter)); + exports.CategoricalFilter = CategoricalFilter; + var RangeFilter = (function (_super) { + __extends(RangeFilter, _super); + function RangeFilter(worksheetName, fieldName, fieldId, filterType, _min, _max, _includeNullValues) { + var _this = _super.call(this, worksheetName, fieldName, filterType, fieldId) || this; + _this._min = _min; + _this._max = _max; + _this._includeNullValues = _includeNullValues; + return _this; + } + Object.defineProperty(RangeFilter.prototype, "minValue", { + get: function () { + return this._min; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(RangeFilter.prototype, "maxValue", { + get: function () { + return this._max; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(RangeFilter.prototype, "includeNullValues", { + get: function () { + return this._includeNullValues; + }, + enumerable: true, + configurable: true + }); + RangeFilter.prototype.getDomainAsync = function (domainType) { + var service = ServiceRegistry_1.ApiServiceRegistry.instance.getService("filter-service" /* Filter */); + if (!domainType) { + domainType = Contract.FilterDomainType.Relevant; + } + return service.getRangeDomainAsync(this._worksheetName, this._fieldId, domainType); + }; + return RangeFilter; + }(Filter)); + exports.RangeFilter = RangeFilter; + var RelativeDateFilter = (function (_super) { + __extends(RelativeDateFilter, _super); + function RelativeDateFilter(worksheetName, fieldName, fieldId, filterType, _anchorDate, _periodType, _rangeType, _rangeN) { + var _this = _super.call(this, worksheetName, fieldName, filterType, fieldId) || this; + _this._anchorDate = _anchorDate; + _this._periodType = _periodType; + _this._rangeType = _rangeType; + _this._rangeN = _rangeN; + return _this; + } + Object.defineProperty(RelativeDateFilter.prototype, "anchorDate", { + get: function () { + return this._anchorDate; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(RelativeDateFilter.prototype, "periodType", { + get: function () { + return this._periodType; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(RelativeDateFilter.prototype, "rangeType", { + get: function () { + return this._rangeType; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(RelativeDateFilter.prototype, "rangeN", { + get: function () { + return this._rangeN; + }, + enumerable: true, + configurable: true + }); + return RelativeDateFilter; + }(Filter)); + exports.RelativeDateFilter = RelativeDateFilter; + var CategoricalDomain = (function () { + function CategoricalDomain(_values, _domainType) { + this._values = _values; + this._domainType = _domainType; + } + Object.defineProperty(CategoricalDomain.prototype, "values", { + get: function () { + return this._values; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(CategoricalDomain.prototype, "type", { + get: function () { + return this._domainType; + }, + enumerable: true, + configurable: true + }); + return CategoricalDomain; + }()); + exports.CategoricalDomain = CategoricalDomain; + var RangeDomain = (function () { + function RangeDomain(_min, _max, _domainType) { + this._min = _min; + this._max = _max; + this._domainType = _domainType; + } + Object.defineProperty(RangeDomain.prototype, "type", { + get: function () { + return this._domainType; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(RangeDomain.prototype, "min", { + get: function () { + return this._min; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(RangeDomain.prototype, "max", { + get: function () { + return this._max; + }, + enumerable: true, + configurable: true + }); + return RangeDomain; + }()); + exports.RangeDomain = RangeDomain; + + +/***/ }, +/* 35 */ +/***/ function(module, exports) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var ServiceRegistryImpl = (function () { + function ServiceRegistryImpl() { + this._services = {}; + } + ServiceRegistryImpl.prototype.registerService = function (service) { + this._services[service.serviceName] = service; + }; + ServiceRegistryImpl.prototype.getService = function (serviceName) { + if (!this._services.hasOwnProperty(serviceName)) { + throw new Error("No Service " + serviceName + " is registered"); + } + return this._services[serviceName]; + }; + return ServiceRegistryImpl; + }()); + /** + * static class used for getting access to the single instance + * of the ApiServiceRegistry + */ + var ApiServiceRegistry = (function () { + // Private to avoid anyone constructing this + function ApiServiceRegistry() { + } + Object.defineProperty(ApiServiceRegistry, "instance", { + /** + * Gets the singleton instance of the ServiceRegistry + */ + get: function () { + if (!window.__tableauApiServiceRegistry) { + ApiServiceRegistry.setInstance(new ServiceRegistryImpl()); + } + if (!window.__tableauApiServiceRegistry) { + throw new Error('Assigning service registry failed'); + } + return window.__tableauApiServiceRegistry; + }, + enumerable: true, + configurable: true + }); + /** + * Helper method to override the registry instance. Can be used by unit tests + * + * @param {ServiceRegistry} serviceRegistry The new registry + */ + ApiServiceRegistry.setInstance = function (serviceRegistry) { + window.__tableauApiServiceRegistry = serviceRegistry; + }; + return ApiServiceRegistry; + }()); + exports.ApiServiceRegistry = ApiServiceRegistry; + + +/***/ }, +/* 36 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var Contract = __webpack_require__(17); + var api_internal_contract_1 = __webpack_require__(27); + var GetDataModels_1 = __webpack_require__(14); + var GetDataService_1 = __webpack_require__(24); + var GetDataServiceImpl = (function () { + function GetDataServiceImpl(dispatcher) { + this._dispatcher = dispatcher; + } + Object.defineProperty(GetDataServiceImpl.prototype, "serviceName", { + get: function () { + return "get-data-service" /* GetData */; + }, + enumerable: true, + configurable: true + }); + GetDataServiceImpl.prototype.getUnderlyingDataAsync = function (visualId, getType, ignoreAliases, ignoreSelection, includeAllColumns, maxRows) { + var _this = this; + // Create all of our parameters + var verb = getType === GetDataService_1.GetDataType.Summary ? api_internal_contract_1.VerbId.GetDataSummaryData : api_internal_contract_1.VerbId.GetUnderlyingData; + var parameters = {}; + parameters[api_internal_contract_1.ParameterId.VisualId] = visualId; + parameters[api_internal_contract_1.ParameterId.IgnoreAliases] = ignoreAliases; + parameters[api_internal_contract_1.ParameterId.IgnoreSelection] = ignoreSelection; + parameters[api_internal_contract_1.ParameterId.IncludeAllColumns] = includeAllColumns; + parameters[api_internal_contract_1.ParameterId.MaxRows] = maxRows; + return this._dispatcher.execute(verb, parameters).then(function (response) { + var responseData = response.result; + return _this.processResultsTable(responseData.data, responseData.isSummary); + }); + }; + GetDataServiceImpl.prototype.getSelectedMarksAsync = function (visualId) { + var _this = this; + var parameters = (_a = {}, _a[api_internal_contract_1.ParameterId.VisualId] = visualId, _a); + return this._dispatcher.execute(api_internal_contract_1.VerbId.GetSelectedMarks, parameters).then(function (response) { + var responseData = response.result; + return { + data: responseData.data.map(function (table) { return _this.processResultsTable(table, true); }) + }; + }); + var _a; + }; + GetDataServiceImpl.prototype.getHighlightedMarksAsync = function (visualId) { + var _this = this; + var parameters = (_a = {}, _a[api_internal_contract_1.ParameterId.VisualId] = visualId, _a); + return this._dispatcher.execute(api_internal_contract_1.VerbId.GetHighlightedMarks, parameters).then(function (response) { + var responseData = response.result; + return { + data: responseData.data.map(function (table) { return _this.processResultsTable(table, true); }) + }; + }); + var _a; + }; + GetDataServiceImpl.prototype.getDataSourceDataAsync = function (dataSourceId, ignoreAliases, maxRows, columnsToInclude) { + var _this = this; + var parameters = (_a = {}, + _a[api_internal_contract_1.ParameterId.DataSourceId] = dataSourceId, + _a[api_internal_contract_1.ParameterId.IgnoreAliases] = ignoreAliases, + _a[api_internal_contract_1.ParameterId.MaxRows] = maxRows, + _a[api_internal_contract_1.ParameterId.ColumnsToInclude] = columnsToInclude, + _a); + return this._dispatcher.execute(api_internal_contract_1.VerbId.GetDataSourceData, parameters).then(function (response) { + var responseData = response.result; + return _this.processResultsTable(responseData.data, false); + }); + var _a; + }; + GetDataServiceImpl.prototype.processResultsTable = function (responseData, isSummary) { + var headers = responseData.headers.map(function (h) { return new GetDataModels_1.Column(h.fieldCaption, Contract.DataType.String /*h.DataType*/, h.isReferenced, h.index); }); + // TODO This should be controlled by a flag indicating whether this api will respond marks info or not + var marks; + if (responseData.marks) { + marks = responseData.marks.map(function (h) { return new GetDataModels_1.MarkInfo(h.type, h.color, h.tupleId); }); + } + var table = responseData.dataTable.map(function (row) { + return row.map(function (cell) { + return new GetDataModels_1.DataValue(cell.value, cell.formattedValue); + }); + }); + if (marks) { + return new GetDataModels_1.DataTable(table, headers, table.length, isSummary, marks); + } + return new GetDataModels_1.DataTable(table, headers, table.length, isSummary); + }; + return GetDataServiceImpl; + }()); + exports.GetDataServiceImpl = GetDataServiceImpl; + + +/***/ }, +/* 37 */ +/***/ function(module, exports) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var Registration = (function () { + function Registration(_filterFn, _callbackFn) { + this._filterFn = _filterFn; + this._callbackFn = _callbackFn; + // Nothing Here + } + Registration.prototype.onNotification = function (notificationModel) { + if (this._filterFn(notificationModel)) { + this._callbackFn(notificationModel); + } + }; + return Registration; + }()); + var NotificationServiceImpl = (function () { + function NotificationServiceImpl(dispatcher) { + this.dispatcher = dispatcher; + this._handlers = {}; + this.dispatcher.registerNotificationHandler(this.onNotification.bind(this)); + } + Object.defineProperty(NotificationServiceImpl.prototype, "serviceName", { + get: function () { + return "notification-service" /* Notification */; + }, + enumerable: true, + configurable: true + }); + NotificationServiceImpl.prototype.registerHandler = function (id, filterFn, handler) { + var _this = this; + var handlers = this._handlers[id] || new Array(); + var registration = new Registration(filterFn, handler); + handlers.push(registration); + this._handlers[id] = handlers; + return function () { return _this.removeRegistration(id, registration); }; + }; + NotificationServiceImpl.prototype.hasHandlersForNotificationType = function (id) { + return this._handlers.hasOwnProperty(id); + }; + NotificationServiceImpl.prototype.onNotification = function (notification) { + if (!this.hasHandlersForNotificationType(notification.notificationId)) { + return; + } + // Go through and check for all the handlers of this particular notification + this._handlers[notification.notificationId].forEach(function (h) { return h.onNotification(notification.data); }); + }; + NotificationServiceImpl.prototype.removeRegistration = function (id, registration) { + if (!this.hasHandlersForNotificationType(id)) { + return; + } + this._handlers[id] = this._handlers[id].filter(function (reg) { return reg !== registration; }); + }; + return NotificationServiceImpl; + }()); + exports.NotificationServiceImpl = NotificationServiceImpl; + + +/***/ }, +/* 38 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var api_internal_contract_1 = __webpack_require__(27); + var ParameterImpl_1 = __webpack_require__(39); + var Parameter_1 = __webpack_require__(11); + var ParametersServiceImpl = (function () { + function ParametersServiceImpl(dispatcher) { + this.dispatcher = dispatcher; + } + Object.defineProperty(ParametersServiceImpl.prototype, "serviceName", { + get: function () { + return "parameters-service" /* Parameters */; + }, + enumerable: true, + configurable: true + }); + ParametersServiceImpl.prototype.getParametersForSheetAsync = function (sheetPath, sheet) { + var parameters = (_a = {}, + _a[api_internal_contract_1.ParameterId.SheetPath] = sheetPath, + _a); + return this.dispatcher.execute(api_internal_contract_1.VerbId.GetParametersForSheet, parameters).then(function (response) { + // TODO - Check for error + var result = response.result; + return result.map(function (parameterInfo) { + var impl = new ParameterImpl_1.ParameterImpl(parameterInfo); + return new Parameter_1.Parameter(impl, sheet); + }); + }); + var _a; + }; + ParametersServiceImpl.prototype.changeParameterValueAsync = function (fieldName, newValue) { + var parameters = (_a = {}, + _a[api_internal_contract_1.ParameterId.ParameterFieldName] = fieldName, + _a[api_internal_contract_1.ParameterId.ParameterValue] = newValue, + _a); + return this.dispatcher.execute(api_internal_contract_1.VerbId.ChangeParameterValue, parameters).then(function (response) { + var result = response.result; + return result; + }); + var _a; + }; + ParametersServiceImpl.prototype.findParameterByNameAsync = function (name, sheet) { + return this.findParameterAsync(sheet, name, undefined); + }; + ParametersServiceImpl.prototype.findParameterByGlobalFieldNameAsync = function (fieldName, sheet) { + return this.findParameterAsync(sheet, undefined, fieldName); + }; + ParametersServiceImpl.prototype.findParameterAsync = function (sheet, name, fieldName) { + var parameters = {}; + if (name !== undefined) { + parameters[api_internal_contract_1.ParameterId.ParameterCaption] = name; + } + else if (fieldName !== undefined) { + parameters[api_internal_contract_1.ParameterId.ParameterFieldName] = fieldName; + } + else { + throw new Error('Missing require field name or caption'); + } + return this.dispatcher.execute(api_internal_contract_1.VerbId.FindParameter, parameters).then(function (response) { + var instanceOfParameterInfo = function (object) { + return 'fieldName' in object; + }; + // We need to check to see if we got a valid response back again + if (instanceOfParameterInfo(response.result)) { + var result = response.result; + var impl = new ParameterImpl_1.ParameterImpl(result); + return new Parameter_1.Parameter(impl, sheet); + } + else { + return undefined; + } + }); + }; + return ParametersServiceImpl; + }()); + exports.ParametersServiceImpl = ParametersServiceImpl; + + +/***/ }, +/* 39 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var Contract = __webpack_require__(17); + var api_internal_contract_1 = __webpack_require__(27); + var api_utils_1 = __webpack_require__(29); + var InternalToExternalEnumMappings_1 = __webpack_require__(33); + var ParameterChangedEvent_1 = __webpack_require__(40); + var GetDataModels_1 = __webpack_require__(14); + var ServiceRegistry_1 = __webpack_require__(35); + var SingleEventManagerImpl_1 = __webpack_require__(23); + var ParameterImpl = (function () { + function ParameterImpl(parameterInfo) { + this.setParameterInfo(parameterInfo); + } + Object.defineProperty(ParameterImpl.prototype, "name", { + get: function () { + return this._parameterInfo.name; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(ParameterImpl.prototype, "currentValue", { + get: function () { + return new GetDataModels_1.DataValue(this._parameterInfo.currentValue.value, this._parameterInfo.currentValue.formattedValue); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(ParameterImpl.prototype, "dataType", { + get: function () { + return InternalToExternalEnumMappings_1.InternalToExternalEnumMappings.dataType.convert(this._parameterInfo.dataType); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(ParameterImpl.prototype, "allowableValues", { + get: function () { + return this._allowableValues; + }, + enumerable: true, + configurable: true + }); + ParameterImpl.prototype.changeValueAsync = function (newValue) { + var _this = this; + var coercedValue = api_utils_1.Param.serializeParamterValue(newValue); + var parametersService = ServiceRegistry_1.ApiServiceRegistry.instance.getService("parameters-service" /* Parameters */); + return parametersService.changeParameterValueAsync(this._globalFieldName, coercedValue).then(function (parameterInfo) { + _this.setParameterInfo(parameterInfo); + return _this.currentValue; + }); + }; + /** + * Helper method which goes through and registers each event type this impl knows about + * with the NotificationService. It returns an array of SingleEventManager objects which + * can then be passed to an EventListenerManager to handle user registration / unregistration. + * + * @param sheet The sheet object which will be included with the event notifications + * @returns {Array} Collection of event managers to pass to an EventListenerManager + */ + ParameterImpl.prototype.initializeEvents = function (sheet) { + var _this = this; + var results = new Array(); + var notificationService; + try { + notificationService = ServiceRegistry_1.ApiServiceRegistry.instance.getService("notification-service" /* Notification */); + } + catch (e) { + // If we don't have this service registered, just return + return results; + } + // Initialize all of the event managers we'll need (one for each event type) + var parameterEvent = new SingleEventManagerImpl_1.SingleEventManagerImpl(Contract.TableauEventType.ParameterChanged); + notificationService.registerHandler(api_internal_contract_1.NotificationId.ParameterChanged, function (model) { + var fieldName = model; + return fieldName === _this._globalFieldName; + }, function (fieldName) { + parameterEvent.triggerEvent(function () { return new ParameterChangedEvent_1.ParameterChangedEvent(fieldName, sheet); }); + }); + results.push(parameterEvent); + return results; + }; + ParameterImpl.prototype.setParameterInfo = function (parameterInfo) { + this._parameterInfo = parameterInfo; + this._globalFieldName = parameterInfo.fieldName; + var type = InternalToExternalEnumMappings_1.InternalToExternalEnumMappings.allowableValues.convert(parameterInfo.allowableValuesType); + var listValues; + var minValue; + var maxValue; + var stepSize; + var dateStepPeriod; + if (type === Contract.ParameterValueType.List) { + var values = parameterInfo.allowableValues || []; + listValues = values.map(function (val) { return new GetDataModels_1.DataValue(val.value, val.formattedValue); }); + } + else if (type === Contract.ParameterValueType.Range) { + minValue = parameterInfo.minValue && new GetDataModels_1.DataValue(parameterInfo.minValue.value, parameterInfo.minValue.formattedValue); + maxValue = parameterInfo.maxValue && new GetDataModels_1.DataValue(parameterInfo.maxValue.value, parameterInfo.maxValue.formattedValue); + stepSize = parameterInfo.stepSize; + dateStepPeriod = parameterInfo.dateStepPeriod && + InternalToExternalEnumMappings_1.InternalToExternalEnumMappings.dateStepPeriod.convert(parameterInfo.dateStepPeriod); + } + this._allowableValues = { + type: type, + allowableValues: listValues, + minValue: minValue, + maxValue: maxValue, + stepSize: stepSize, + dateStepPeriod: dateStepPeriod + }; + }; + return ParameterImpl; + }()); + exports.ParameterImpl = ParameterImpl; + + +/***/ }, +/* 40 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + Object.defineProperty(exports, "__esModule", { value: true }); + var Contract = __webpack_require__(17); + var ServiceRegistry_1 = __webpack_require__(35); + var TableauSheetEvent_1 = __webpack_require__(20); + var ParameterChangedEvent = (function (_super) { + __extends(ParameterChangedEvent, _super); + function ParameterChangedEvent(_globalFieldName, sheet) { + var _this = _super.call(this, Contract.TableauEventType.ParameterChanged, sheet) || this; + _this._globalFieldName = _globalFieldName; + return _this; + } + ParameterChangedEvent.prototype.getParameterAsync = function () { + // Call down to our service to get the parameter back via its field name + var service = ServiceRegistry_1.ApiServiceRegistry.instance.getService("parameters-service" /* Parameters */); + return service.findParameterByGlobalFieldNameAsync(this._globalFieldName, this.sheet).then(function (parameter) { + if (parameter === undefined) { + throw new Error('Unable to find parameter'); + } + return parameter; + }); + }; + return ParameterChangedEvent; + }(TableauSheetEvent_1.TableauSheetEvent)); + exports.ParameterChangedEvent = ParameterChangedEvent; + + +/***/ }, +/* 41 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var Contract = __webpack_require__(17); + var api_internal_contract_1 = __webpack_require__(27); + var SelectionModels_1 = __webpack_require__(42); + var SelectionServiceImpl = (function () { + function SelectionServiceImpl(dispatcher) { + this._dispatcher = dispatcher; + } + Object.defineProperty(SelectionServiceImpl.prototype, "serviceName", { + get: function () { + return "selection-service" /* Selection */; + }, + enumerable: true, + configurable: true + }); + /** + * Method to clear all the selected marks for the given worksheet. + * + * @param visualId + */ + SelectionServiceImpl.prototype.clearSelectedMarksAsync = function (visualId) { + var parameters = (_a = {}, _a[api_internal_contract_1.ParameterId.VisualId] = visualId, _a); + return this._dispatcher.execute(api_internal_contract_1.VerbId.ClearSelectedMarks, parameters).then(function (response) { + return; // Expecting an empty model and hence the void response. + }); + var _a; + }; + /** + * Method to select marks for the given worksheet. + * + * @param visualId + * @param selectionCriteria + * @param selectionUpdateType + */ + SelectionServiceImpl.prototype.selectMarksByValueAsync = function (visualId, selectionCriterias, selectionUpdateType) { + if (selectionCriterias.length === 0) { + throw new Error('Invalid selection criteria. Selections missing.'); + } + var selectionType = this.validateSelectionUpdateType(selectionUpdateType); + var selectionCriteriaType = this.validateSelectionCriteria(selectionCriterias[0]); + var selectionModelContainer = this.parseSelectionMarks(selectionCriterias, selectionCriteriaType); + var parameters = (_a = {}, + _a[api_internal_contract_1.ParameterId.VisualId] = visualId, + _a[api_internal_contract_1.ParameterId.SelectionUpdateType] = selectionType, + _a); + switch (selectionCriteriaType) { + case SelectionCriteriaType.HierarchicalType: { + parameters[api_internal_contract_1.ParameterId.HierValSelectionModels] = selectionModelContainer.hierModelArr; + break; + } + case SelectionCriteriaType.RangeType: { + parameters[api_internal_contract_1.ParameterId.QuantRangeSelectionModels] = selectionModelContainer.quantModelArr; + break; + } + case SelectionCriteriaType.DimensionType: { + parameters[api_internal_contract_1.ParameterId.DimValSelectionModels] = selectionModelContainer.dimModelArr; + break; + } + default: + break; + } + return this._dispatcher.execute(api_internal_contract_1.VerbId.SelectByValue, parameters).then(function (response) { + // Expecting an empty model and hence the void response. + return; + // TODO Investigate the error response with multiple output params and throw error accordingly. + }); + var _a; + }; + /** + * Method to select marks for the given worksheet. + * + * @param visualId + * @param MarkInfo + * @param selectionUpdateType + */ + SelectionServiceImpl.prototype.selectMarksByIdAsync = function (visualId, marks, selectionUpdateType) { + if (marks.length === 0) { + throw new Error('Invalid selection. Marks info missing.'); + } + var selectionType = this.validateSelectionUpdateType(selectionUpdateType); + var selectionModelContainer = this.parseSelectionIds(marks); + var parameters = (_a = {}, + _a[api_internal_contract_1.ParameterId.VisualId] = visualId, + _a[api_internal_contract_1.ParameterId.SelectionUpdateType] = selectionType, + _a[api_internal_contract_1.ParameterId.Selection] = selectionModelContainer.selection, + _a); + return this._dispatcher.execute(api_internal_contract_1.VerbId.SelectByValue, parameters).then(function (response) { + // Expecting an empty model and hence the void response. + return; + // TODO Investigate the error response with multiple output params and throw error accordingly. + }); + var _a; + }; + /** + * Method to prepare the pres models for selection by MarksInfo + * @param marks + */ + SelectionServiceImpl.prototype.parseSelectionIds = function (marks) { + var ids = []; + var selectionModelContainer = new SelectionModels_1.SelectionModelsContainer(); + for (var i = 0; i < marks.length; i++) { + var tupleId = marks[i].tupleId; + if (tupleId !== undefined && tupleId !== null) { + ids.push(tupleId.toString()); // collect the tuple ids + } + else { + throw new Error('Invalid tupleId provided.'); + } + } + if (ids.length !== 0) { + var tupleSelectionModel = new SelectionModels_1.TupleSelectionModel(); + tupleSelectionModel.selectionType = 'tuples'; + tupleSelectionModel.objectIds = ids; + selectionModelContainer.selection = tupleSelectionModel; + } + return selectionModelContainer; + }; + /** + * Method to prepare the pres models for selection by values. + * + * Supports 3 types for selection: + * 1) hierarchical value based selection + * 2) range value based selection + * 3) Dimension value based selection + * + * @param marks + * @param hierModelArr + * @param dimModelArr + * @param quantModelArr + * @param selection + */ + SelectionServiceImpl.prototype.parseSelectionMarks = function (selectionCriterias, selectionType) { + var selectionModelContainer = new SelectionModels_1.SelectionModelsContainer(); + var mixedSelectionsError = false; + for (var i = 0; i < selectionCriterias.length; i++) { + var st = selectionCriterias[i]; + if (st.fieldName && (st.value !== undefined && st.value !== null)) { + var catRegex = new RegExp('(\[[A-Za-z0-9]+]).*', 'g'); + var rangeOption = st.value; + if (catRegex.test(st.fieldName)) { + if (selectionType === SelectionCriteriaType.HierarchicalType) { + var hierModel = this.addToParamsList(st.fieldName, st.value); + selectionModelContainer.hierModelArr.push(hierModel); + } + else { + mixedSelectionsError = true; + break; + } + } + else if (rangeOption.min !== undefined + && rangeOption.max !== undefined) { + if (selectionType === SelectionCriteriaType.RangeType) { + var quantModel = this.addToRangeParamsList(st.fieldName, rangeOption); + selectionModelContainer.quantModelArr.push(quantModel); + } + else { + mixedSelectionsError = true; + break; + } + } + else { + if (selectionType === SelectionCriteriaType.DimensionType) { + var dimModel = this.addToParamsList(st.fieldName, st.value); + selectionModelContainer.dimModelArr.push(dimModel); + } + else { + mixedSelectionsError = true; + break; + } + } + } + } + if (mixedSelectionsError) { + throw new Error('Different types of selection criterias provided.'); + } + return selectionModelContainer; + }; + /** + * + * @param selectionCriterias Validate and determine the selection criterias type. + */ + SelectionServiceImpl.prototype.validateSelectionCriteria = function (selectionCriteria) { + var selectionType; + // Determine the type of selection, this command is by looking at the first selection + var crit = selectionCriteria; + var catRegex = new RegExp('(\[[A-Za-z0-9]+]).*', 'g'); + var rangeOption = crit.value; + if (crit.fieldName && (crit.value !== undefined && crit.value !== null)) { + if (catRegex.test(crit.fieldName)) { + selectionType = SelectionCriteriaType.HierarchicalType; + } + else if (rangeOption.min !== undefined + && rangeOption.max !== undefined) { + selectionType = SelectionCriteriaType.RangeType; + } + else { + selectionType = SelectionCriteriaType.DimensionType; + } + } + else { + throw new Error('Invalid selection criteria format.'); + } + return selectionType; + }; + /** + * Method to transform the key value pair into value based pres model object. + * + * @param valueSelectionModel + * @param fieldName + * @param value + */ + SelectionServiceImpl.prototype.addToParamsList = function (fieldName, value) { + var valueSelectionModel = new SelectionModels_1.ValueSelectionModel(); + var markValues = []; + if (value instanceof Array) { + var valueArr = value; + for (var i = 0; i < valueArr.length; i++) { + markValues.push(valueArr[i].toString()); + } + } + else { + markValues.push(value.toString()); + } + valueSelectionModel.qualifiedFieldCaption = fieldName; + valueSelectionModel.selectValues = markValues; + return valueSelectionModel; + }; + /** + * Method to transform the key value pair into range based selection pres model. + * + * TODO: Need to handle the parsing of date type values. + * + * @param valueSelectionModel + * @param fieldName + * @param value + */ + SelectionServiceImpl.prototype.addToRangeParamsList = function (fieldName, value) { + var rangeSelectionModel = new SelectionModels_1.RangeSelectionModel(); + rangeSelectionModel.qualifiedFieldCaption = fieldName; + if (value.max !== undefined && value.max !== null) { + rangeSelectionModel.maxValue = value.max.toString(); + } + if (value.min !== undefined && value.min !== null) { + rangeSelectionModel.minValue = value.min.toString(); + } + rangeSelectionModel.included = this.validateNullOptionType(value.nullOption); + return rangeSelectionModel; + }; + /** + * Method to validate the selection update type. + * + * @param selectionUpdateType + */ + SelectionServiceImpl.prototype.validateSelectionUpdateType = function (selectionUpdateType) { + if (selectionUpdateType === Contract.SelectionUpdateType.Replace) { + return api_internal_contract_1.SelectionUpdateType.Replace; + } + else if (selectionUpdateType === Contract.SelectionUpdateType.Add) { + return api_internal_contract_1.SelectionUpdateType.Add; + } + else if (selectionUpdateType === Contract.SelectionUpdateType.Remove) { + return api_internal_contract_1.SelectionUpdateType.Remove; + } + return api_internal_contract_1.SelectionUpdateType.Replace; + }; + /** + * Method to validate the include type for range selection. + * + * @param nullOption + */ + SelectionServiceImpl.prototype.validateNullOptionType = function (nullOption) { + if (nullOption) { + if (nullOption === Contract.FilterNullOption.NullValues) { + return api_internal_contract_1.QuantitativeIncludedValues.IncludeNull; + } + else if (nullOption === Contract.FilterNullOption.NonNullValues) { + return api_internal_contract_1.QuantitativeIncludedValues.IncludeNonNull; + } + else if (nullOption === Contract.FilterNullOption.AllValues) { + return api_internal_contract_1.QuantitativeIncludedValues.IncludeAll; + } + } + return api_internal_contract_1.QuantitativeIncludedValues.IncludeAll; + }; + return SelectionServiceImpl; + }()); + exports.SelectionServiceImpl = SelectionServiceImpl; + /** + * Enum for the different selection criteria types. + */ + var SelectionCriteriaType; + (function (SelectionCriteriaType) { + SelectionCriteriaType[SelectionCriteriaType["HierarchicalType"] = 1] = "HierarchicalType"; + SelectionCriteriaType[SelectionCriteriaType["RangeType"] = 2] = "RangeType"; + SelectionCriteriaType[SelectionCriteriaType["DimensionType"] = 3] = "DimensionType"; + SelectionCriteriaType[SelectionCriteriaType["TuplesType"] = 4] = "TuplesType"; + })(SelectionCriteriaType || (SelectionCriteriaType = {})); + + +/***/ }, +/* 42 */ +/***/ function(module, exports) { + + "use strict"; + var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + Object.defineProperty(exports, "__esModule", { value: true }); + /** + * Selection Model. + */ + var SelectionModel = (function () { + function SelectionModel() { + } + return SelectionModel; + }()); + exports.SelectionModel = SelectionModel; + /** + * Value based selection model. Meant for hierarchical, range and categorical selections. + */ + var ValueSelectionModel = (function (_super) { + __extends(ValueSelectionModel, _super); + function ValueSelectionModel() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.selectValues = []; + return _this; + } + return ValueSelectionModel; + }(SelectionModel)); + exports.ValueSelectionModel = ValueSelectionModel; + /** + * Hierarchical value selection model + */ + var HierarchicalSelectionModel = (function (_super) { + __extends(HierarchicalSelectionModel, _super); + function HierarchicalSelectionModel() { + return _super !== null && _super.apply(this, arguments) || this; + } + return HierarchicalSelectionModel; + }(ValueSelectionModel)); + exports.HierarchicalSelectionModel = HierarchicalSelectionModel; + /** + * Range based value selection model + */ + var RangeSelectionModel = (function (_super) { + __extends(RangeSelectionModel, _super); + function RangeSelectionModel() { + return _super !== null && _super.apply(this, arguments) || this; + } + return RangeSelectionModel; + }(SelectionModel)); + exports.RangeSelectionModel = RangeSelectionModel; + /** + * Dimension value selection model + */ + var DimensionSelectionModel = (function (_super) { + __extends(DimensionSelectionModel, _super); + function DimensionSelectionModel() { + return _super !== null && _super.apply(this, arguments) || this; + } + return DimensionSelectionModel; + }(ValueSelectionModel)); + exports.DimensionSelectionModel = DimensionSelectionModel; + /** + * Tuple based selection model + */ + var TupleSelectionModel = (function () { + function TupleSelectionModel() { + this.objectIds = []; + } + return TupleSelectionModel; + }()); + exports.TupleSelectionModel = TupleSelectionModel; + /** + * Container class to populate all the selection models when parsing input + */ + var SelectionModelsContainer = (function () { + function SelectionModelsContainer() { + this.hierModelArr = []; + this.dimModelArr = []; + this.quantModelArr = []; + } + return SelectionModelsContainer; + }()); + exports.SelectionModelsContainer = SelectionModelsContainer; + + +/***/ }, +/* 43 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + Object.defineProperty(exports, "__esModule", { value: true }); + var Sheet_1 = __webpack_require__(44); + var Dashboard = (function (_super) { + __extends(Dashboard, _super); + function Dashboard(_dashboardImpl) { + var _this = _super.call(this, _dashboardImpl) || this; + _this._dashboardImpl = _dashboardImpl; + _dashboardImpl.initializeWithPublicInterfaces(_this); + return _this; + } + Object.defineProperty(Dashboard.prototype, "worksheets", { + get: function () { + return this._dashboardImpl.worksheets; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Dashboard.prototype, "objects", { + get: function () { + return this._dashboardImpl.objects; + }, + enumerable: true, + configurable: true + }); + return Dashboard; + }(Sheet_1.Sheet)); + exports.Dashboard = Dashboard; + + +/***/ }, +/* 44 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + Object.defineProperty(exports, "__esModule", { value: true }); + var api_shared_1 = __webpack_require__(9); + var Sheet = (function (_super) { + __extends(Sheet, _super); + function Sheet(_sheetImpl) { + var _this = _super.call(this) || this; + _this._sheetImpl = _sheetImpl; + return _this; + } + Object.defineProperty(Sheet.prototype, "name", { + get: function () { + return this._sheetImpl.name; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Sheet.prototype, "sheetType", { + get: function () { + return this._sheetImpl.sheetType; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Sheet.prototype, "size", { + get: function () { + return this._sheetImpl.size; + }, + enumerable: true, + configurable: true + }); + Sheet.prototype.findParameterAsync = function (parameterName) { + return this._sheetImpl.findParameterAsync(parameterName, this); + }; + Sheet.prototype.getParametersAsync = function () { + return this._sheetImpl.getParametersAsync(this); + }; + return Sheet; + }(api_shared_1.EventListenerManager)); + exports.Sheet = Sheet; + + +/***/ }, +/* 45 */ +/***/ function(module, exports) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + /** + * Implementation of the external DashboardContent namespace. + * This does not follow the Impl pattern as DashboardContent is + * currently just a (single) property bag. + */ + var DashboardContent = (function () { + function DashboardContent(_dashboard) { + this._dashboard = _dashboard; + } + Object.defineProperty(DashboardContent.prototype, "dashboard", { + get: function () { + return this._dashboard; + }, + enumerable: true, + configurable: true + }); + return DashboardContent; + }()); + exports.DashboardContent = DashboardContent; + + +/***/ }, +/* 46 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var api_shared_1 = __webpack_require__(9); + /** + * Implementation of the external environment namespace. + * Environment does not follow the Impl pattern as it is + * just a property bag. + */ + var Environment = (function () { + function Environment(extensionEnvironment) { + this._apiVersion = extensionEnvironment.apiVersion; + this._context = api_shared_1.InternalToExternalEnumMappings.extensionContext.convert(extensionEnvironment.extensionContext); + this._language = extensionEnvironment.extensionLanguage; + this._locale = extensionEnvironment.extensionLocale; + this._mode = api_shared_1.InternalToExternalEnumMappings.extensionMode.convert(extensionEnvironment.extensionMode); + this._operatingSystem = extensionEnvironment.operatingSystem; + this._tableauVersion = extensionEnvironment.tableauVersion; + } + Object.defineProperty(Environment.prototype, "apiVersion", { + get: function () { + return this._apiVersion; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Environment.prototype, "context", { + get: function () { + return this._context; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Environment.prototype, "language", { + get: function () { + return this._language; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Environment.prototype, "locale", { + get: function () { + return this._locale; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Environment.prototype, "mode", { + get: function () { + return this._mode; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Environment.prototype, "operatingSystem", { + get: function () { + return this._operatingSystem; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Environment.prototype, "tableauVersion", { + get: function () { + return this._tableauVersion; + }, + enumerable: true, + configurable: true + }); + return Environment; + }()); + exports.Environment = Environment; + + +/***/ }, +/* 47 */ +/***/ function(module, exports) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + /** + * Implementation of the external settings namespace. + */ + var Settings = (function () { + function Settings(settingsImpl) { + this.settingsImpl = settingsImpl; + } + Settings.prototype.erase = function (key) { + this.settingsImpl.erase(key); + }; + Settings.prototype.get = function (key) { + return this.settingsImpl.get(key); + }; + Settings.prototype.getAll = function () { + return this.settingsImpl.getAll(); + }; + Object.defineProperty(Settings.prototype, "isModified", { + get: function () { + return this.settingsImpl.isModified; + }, + enumerable: true, + configurable: true + }); + Settings.prototype.saveAsync = function () { + return this.settingsImpl.saveAsync(); + }; + Settings.prototype.set = function (key, value) { + this.settingsImpl.set(key, value); + }; + return Settings; + }()); + exports.Settings = Settings; + + +/***/ }, +/* 48 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var api_shared_1 = __webpack_require__(9); + var InitializationServiceImpl_1 = __webpack_require__(49); + var SettingsServiceImpl_1 = __webpack_require__(50); + function registerAllExtensionsServices(dispatcher) { + api_shared_1.ApiServiceRegistry.instance.registerService(new InitializationServiceImpl_1.InitializationServiceImpl(dispatcher)); + api_shared_1.ApiServiceRegistry.instance.registerService(new SettingsServiceImpl_1.SettingsServiceImpl(dispatcher)); + } + exports.registerAllExtensionsServices = registerAllExtensionsServices; + + +/***/ }, +/* 49 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var api_internal_contract_1 = __webpack_require__(3); + var InitializationServiceImpl = (function () { + function InitializationServiceImpl(dispatcher) { + this.dispatcher = dispatcher; + } + Object.defineProperty(InitializationServiceImpl.prototype, "serviceName", { + get: function () { + return "InitializationService" /* InitializationService */; + }, + enumerable: true, + configurable: true + }); + InitializationServiceImpl.prototype.initializeDashboardExtensionsAsync = function () { + // We don't need any parameters for this call because they are added in for us by the dispatcher + return this.dispatcher.execute(api_internal_contract_1.VerbId.InitializeExtension, {}).then(function (response) { + // TODO - Validate return value + var result = response.result; + return result; + }); + }; + return InitializationServiceImpl; + }()); + exports.InitializationServiceImpl = InitializationServiceImpl; + + +/***/ }, +/* 50 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var api_internal_contract_1 = __webpack_require__(3); + var SettingsServiceImpl = (function () { + function SettingsServiceImpl(dispatcher) { + this.dispatcher = dispatcher; + } + Object.defineProperty(SettingsServiceImpl.prototype, "serviceName", { + get: function () { + return "SettingsService" /* SettingsService */; + }, + enumerable: true, + configurable: true + }); + SettingsServiceImpl.prototype.saveSettingsAsync = function (settings) { + var parameters = (_a = {}, _a[api_internal_contract_1.ParameterId.SettingsValues] = settings, _a); + return this.dispatcher.execute(api_internal_contract_1.VerbId.SaveExtensionSettings, parameters).then(function (value) { + var result = value.result; + if (!result || !result.settingsValues) { + throw new Error('Internal error saving settings.'); + } + return (result.settingsValues); + }); + var _a; + }; + return SettingsServiceImpl; + }()); + exports.SettingsServiceImpl = SettingsServiceImpl; + + +/***/ }, +/* 51 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + /** + * Represents the current version of the extensions library + */ + var VersionNumber = (function () { + // private constructor so everyone uses the singleton instance + function VersionNumber(versionString) { + var parts = versionString.split('.').map(function (p) { return parseInt(p, 10); }); + if (parts.length !== 3) { + throw new Error('Invalid version number: ' + versionString); + } + this._major = parts[0]; + this._minor = parts[1]; + this._fix = parts[2]; + } + Object.defineProperty(VersionNumber, "Instance", { + /** + * Gets the singleton instance of the version number. + */ + get: function () { + return VersionNumber._instance; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(VersionNumber.prototype, "major", { + get: function () { + return this._major; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(VersionNumber.prototype, "minor", { + get: function () { + return this._minor; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(VersionNumber.prototype, "fix", { + get: function () { + return this._fix; + }, + enumerable: true, + configurable: true + }); + // Using some webpack tricks, we can inject this version into our code (kinda like c++ preprocessor stuff) + VersionNumber._instance = new VersionNumber(("0.6.0")); + return VersionNumber; + }()); + exports.VersionNumber = VersionNumber; + + +/***/ }, +/* 52 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + Object.defineProperty(exports, "__esModule", { value: true }); + var Contract = __webpack_require__(53); + var api_internal_contract_1 = __webpack_require__(3); + var api_shared_1 = __webpack_require__(9); + var DashboardObject_1 = __webpack_require__(54); + var Worksheet_1 = __webpack_require__(55); + var SheetImpl_1 = __webpack_require__(56); + var SheetInfoImpl_1 = __webpack_require__(57); + var WorksheetImpl_1 = __webpack_require__(58); + var DashboardImpl = (function (_super) { + __extends(DashboardImpl, _super); + function DashboardImpl(_info, _sheetPath) { + var _this = _super.call(this, new SheetInfoImpl_1.SheetInfoImpl(_info.name, Contract.SheetType.Dashboard, new api_shared_1.Size(_info.size.h, _info.size.w))) || this; + _this._info = _info; + _this._sheetPath = _sheetPath; + return _this; + } + Object.defineProperty(DashboardImpl.prototype, "worksheets", { + get: function () { + return this._worksheets; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(DashboardImpl.prototype, "objects", { + get: function () { + return this._objects; + }, + enumerable: true, + configurable: true + }); + DashboardImpl.prototype.initializeWithPublicInterfaces = function (dashboard) { + this._worksheets = new Array(); + this._objects = new Array(); + // Process all the zones which are contained in this dashboard + for (var _i = 0, _a = this._info.zones; _i < _a.length; _i++) { + var zone = _a[_i]; + var worksheet = undefined; + var zoneSize = new api_shared_1.Size(zone.height, zone.width); + if (zone.zoneType === api_internal_contract_1.DashboardObjectType.Worksheet) { + var sheetInfo = new SheetInfoImpl_1.SheetInfoImpl(zone.name, Contract.SheetType.Worksheet, zoneSize); + var vizId = { + worksheet: zone.name, + dashboard: this._info.name, + storyboard: this._sheetPath.storyboard, + flipboardZoneID: this._sheetPath.flipboardZoneID, + storyPointID: this._sheetPath.storyPointID + }; + var worksheetImpl = new WorksheetImpl_1.WorksheetImpl(sheetInfo, vizId, dashboard); + worksheet = new Worksheet_1.Worksheet(worksheetImpl); + this._worksheets.push(worksheet); + } + var zonePoint = new api_shared_1.Point(zone.x, zone.y); + var dashboardObject = new DashboardObject_1.DashboardObject(dashboard, api_shared_1.InternalToExternalEnumMappings.dashboardObjectType.convert(zone.zoneType), zonePoint, zoneSize, worksheet); + this._objects.push(dashboardObject); + } + }; + return DashboardImpl; + }(SheetImpl_1.SheetImpl)); + exports.DashboardImpl = DashboardImpl; + + +/***/ }, +/* 53 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + /** + * This is your main. This is where you re-export everything you want to be publicly available. + * + * The build enforces that the file has the same name as the global variable that is exported. + */ + function __export(m) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; + } + Object.defineProperty(exports, "__esModule", { value: true }); + __export(__webpack_require__(18)); + + +/***/ }, +/* 54 */ +/***/ function(module, exports) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + /** + * Implementation of the dashboard objects - the zones in a dashboard. + * This does not follow the Impl pattern as it is just a property bag. + */ + var DashboardObject = (function () { + function DashboardObject(_dashboard, _type, _position, _size, _worksheet) { + this._dashboard = _dashboard; + this._type = _type; + this._position = _position; + this._size = _size; + this._worksheet = _worksheet; + } + Object.defineProperty(DashboardObject.prototype, "dashboard", { + get: function () { + return this._dashboard; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(DashboardObject.prototype, "type", { + get: function () { + return this._type; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(DashboardObject.prototype, "position", { + get: function () { + return this._position; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(DashboardObject.prototype, "size", { + get: function () { + return this._size; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(DashboardObject.prototype, "worksheet", { + get: function () { + return this._worksheet; + }, + enumerable: true, + configurable: true + }); + return DashboardObject; + }()); + exports.DashboardObject = DashboardObject; + + +/***/ }, +/* 55 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + Object.defineProperty(exports, "__esModule", { value: true }); + var Sheet_1 = __webpack_require__(44); + var Worksheet = (function (_super) { + __extends(Worksheet, _super); + function Worksheet(_worksheetImpl) { + var _this = _super.call(this, _worksheetImpl) || this; + _this._worksheetImpl = _worksheetImpl; + // Call to initialize events and then call down to the event listener manager to handle things + _this._worksheetImpl.initializeEvents(_this).forEach(function (e) { return _this.addNewEventType(e); }); + return _this; + } + Object.defineProperty(Worksheet.prototype, "parentDashboard", { + get: function () { + return this._worksheetImpl.parentDashboard; + }, + enumerable: true, + configurable: true + }); + Worksheet.prototype.applyFilterAsync = function (fieldName, values, updateType, options) { + return this._worksheetImpl.applyFilterAsync(fieldName, values, updateType, options); + }; + Worksheet.prototype.applyRangeFilterAsync = function (fieldName, filterOptions) { + return this._worksheetImpl.applyRangeFilterAsync(fieldName, filterOptions); + }; + Worksheet.prototype.clearFilterAsync = function (fieldName) { + return this._worksheetImpl.clearFilterAsync(fieldName); + }; + Worksheet.prototype.getAnalyticObjectsAsync = function () { + throw new Error('API call not yet implemented.'); + }; + Worksheet.prototype.getDataSourcesAsync = function () { + return this._worksheetImpl.getDataSourcesAsync(); + }; + Worksheet.prototype.getEncodingsAsync = function () { + throw new Error('API call not yet implemented.'); + }; + Worksheet.prototype.getFiltersAsync = function () { + return this._worksheetImpl.getFiltersAsync(); + }; + Worksheet.prototype.getSelectedMarksAsync = function () { + return this._worksheetImpl.getSelectedMarksAsync(); + }; + Worksheet.prototype.getHighlightedMarksAsync = function () { + return this._worksheetImpl.getHighlightedMarksAsync(); + }; + Worksheet.prototype.getSummaryDataAsync = function (options) { + return this._worksheetImpl.getSummaryDataAsync(options); + }; + Worksheet.prototype.getUnderlyingDataAsync = function (options) { + return this._worksheetImpl.getUnderlyingDataAsync(options); + }; + Worksheet.prototype.clearSelectedMarksAsync = function () { + return this._worksheetImpl.clearSelectedMarksAsync(); + }; + Worksheet.prototype.selectMarksByIDAsync = function (marksInfo, updateType) { + throw new Error('API call not yet implemented.'); + }; + Worksheet.prototype.selectMarksByValueAsync = function (selections, selectionUpdateType) { + return this._worksheetImpl.selectMarksByValueAsync(selections, selectionUpdateType); + }; + Worksheet.prototype.selectMarksByIdAsync = function (selections, selectionUpdateType) { + return this._worksheetImpl.selectMarksByIdAsync(selections, selectionUpdateType); + }; + return Worksheet; + }(Sheet_1.Sheet)); + exports.Worksheet = Worksheet; + + +/***/ }, +/* 56 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var api_shared_1 = __webpack_require__(9); + var SheetImpl = (function () { + function SheetImpl(_sheetInfoImpl) { + this._sheetInfoImpl = _sheetInfoImpl; + } + Object.defineProperty(SheetImpl.prototype, "name", { + get: function () { + return this._sheetInfoImpl.name; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(SheetImpl.prototype, "sheetType", { + get: function () { + return this._sheetInfoImpl.sheetType; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(SheetImpl.prototype, "sheetPath", { + get: function () { + return this._sheetInfoImpl.sheetPath; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(SheetImpl.prototype, "size", { + get: function () { + return this._sheetInfoImpl.sheetSize; + }, + enumerable: true, + configurable: true + }); + SheetImpl.prototype.findParameterAsync = function (parameterName, sheet) { + var service = api_shared_1.ApiServiceRegistry.instance.getService("parameters-service" /* Parameters */); + return service.findParameterByNameAsync(parameterName, sheet); + }; + SheetImpl.prototype.getParametersAsync = function (sheet) { + var service = api_shared_1.ApiServiceRegistry.instance.getService("parameters-service" /* Parameters */); + return service.getParametersForSheetAsync(this.sheetPath, sheet); + }; + return SheetImpl; + }()); + exports.SheetImpl = SheetImpl; + + +/***/ }, +/* 57 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var api_external_contract_1 = __webpack_require__(53); + var SheetInfoImpl = (function () { + function SheetInfoImpl(_name, _sheetType, _sheetSize) { + this._name = _name; + this._sheetType = _sheetType; + this._sheetSize = _sheetSize; + } + Object.defineProperty(SheetInfoImpl.prototype, "name", { + get: function () { + return this._name; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(SheetInfoImpl.prototype, "sheetSize", { + get: function () { + return this._sheetSize; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(SheetInfoImpl.prototype, "sheetType", { + get: function () { + return this._sheetType; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(SheetInfoImpl.prototype, "sheetPath", { + get: function () { + return { + sheetName: this.name, + isDashboard: this.sheetType === api_external_contract_1.SheetType.Dashboard + // TODO - Stories + }; + }, + enumerable: true, + configurable: true + }); + return SheetInfoImpl; + }()); + exports.SheetInfoImpl = SheetInfoImpl; + + +/***/ }, +/* 58 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + Object.defineProperty(exports, "__esModule", { value: true }); + var Contract = __webpack_require__(53); + var api_internal_contract_1 = __webpack_require__(3); + var api_shared_1 = __webpack_require__(9); + var DataSource_1 = __webpack_require__(59); + var DataSourceImpl_1 = __webpack_require__(60); + var SheetImpl_1 = __webpack_require__(56); + var visualIdsAreEqual = function (a, b) { + return a && b && + a.worksheet === b.worksheet && + a.dashboard === b.dashboard && + a.storyboard === b.storyboard && + a.storyPointID === b.storyPointID && + a.flipboardZoneID === b.flipboardZoneID; + }; + var WorksheetImpl = (function (_super) { + __extends(WorksheetImpl, _super); + function WorksheetImpl(sheetInfoImpl, _visualId, _parentDashboard) { + var _this = _super.call(this, sheetInfoImpl) || this; + _this._visualId = _visualId; + _this._parentDashboard = _parentDashboard; + return _this; + } + Object.defineProperty(WorksheetImpl.prototype, "parentDashboard", { + get: function () { + return this._parentDashboard; + }, + enumerable: true, + configurable: true + }); + /** + * Helper method which goes through and registers each event type this impl knows about + * with the NotificationService. It returns an array of SingleEventManager objects which + * can then be passed to an EventListenerManager to handle user registration / unregistration. + * + * @param {Worksheet} worksheet The worksheet object which will be included with the event notifications + * @returns {Array} Collection of event managers to pass to an EventListenerManager + */ + WorksheetImpl.prototype.initializeEvents = function (worksheet) { + var _this = this; + var results = new Array(); + var notificationService; + try { + notificationService = api_shared_1.ApiServiceRegistry.instance.getService("notification-service" /* Notification */); + } + catch (e) { + // If we don't have this service registered, just return + return results; + } + // Initialize all of the event managers we'll need (one for each event type) + var marksEvent = new api_shared_1.SingleEventManagerImpl(Contract.TableauEventType.MarkSelectionChanged); + notificationService.registerHandler(api_internal_contract_1.NotificationId.SelectedMarksChanged, function (model) { + var visualId = model; + return visualIdsAreEqual(visualId, _this.visualId); + }, function (viz) { + marksEvent.triggerEvent(function () { return new api_shared_1.MarksSelectedEvent(worksheet); }); + }); + var filterEvent = new api_shared_1.SingleEventManagerImpl(Contract.TableauEventType.FilterChanged); + notificationService.registerHandler(api_internal_contract_1.NotificationId.FilterChanged, function (model) { + var filterEventResponse = model; + return _this.visualId.worksheet === filterEventResponse.visualId.worksheet; + }, function (event) { + filterEvent.triggerEvent(function () { return new api_shared_1.FilterChangedEvent(worksheet, event.fieldName); }); + }); + results.push(marksEvent); + results.push(filterEvent); + // TODO - other event types + return results; + }; + Object.defineProperty(WorksheetImpl.prototype, "visualId", { + get: function () { + return this._visualId; + }, + enumerable: true, + configurable: true + }); + WorksheetImpl.prototype.applyFilterAsync = function (fieldName, values, updateType, options) { + var service = api_shared_1.ApiServiceRegistry.instance.getService("filter-service" /* Filter */); + return service.applyFilterAsync(this.visualId, fieldName, values, updateType, options); + }; + WorksheetImpl.prototype.applyRangeFilterAsync = function (fieldName, filterOptions) { + var service = api_shared_1.ApiServiceRegistry.instance.getService("filter-service" /* Filter */); + return service.applyRangeFilterAsync(this.visualId, fieldName, filterOptions); + }; + WorksheetImpl.prototype.clearFilterAsync = function (fieldName) { + var service = api_shared_1.ApiServiceRegistry.instance.getService("filter-service" /* Filter */); + return service.clearFilterAsync(this.visualId, fieldName); + }; + WorksheetImpl.prototype.getDataSourcesAsync = function () { + var _this = this; + var service = api_shared_1.ApiServiceRegistry.instance.getService("data-source-service" /* DataSourceService */); + return service.getDataSourcesAsync().then(function (result) { + var dataSchema = result; + var worksheetDataSourceInfo = dataSchema.worksheetDataSchemaMap[_this.name]; + var dataSources = []; + // First, add the primary datasource. By convention, it comes first in the returned array. + var primaryId = worksheetDataSourceInfo.primaryDataSource; + dataSources.push(_this.createDataSourceFromInfo(dataSchema.dataSources[primaryId])); + // Then, loop through any secondary data sources and add them. + for (var _i = 0, _a = worksheetDataSourceInfo.referencedDataSourceList; _i < _a.length; _i++) { + var secondaryId = _a[_i]; + if (secondaryId !== primaryId) { + dataSources.push(_this.createDataSourceFromInfo(dataSchema.dataSources[secondaryId])); + } + } + return dataSources; + }); + }; + WorksheetImpl.prototype.getFiltersAsync = function () { + var service = api_shared_1.ApiServiceRegistry.instance.getService("filter-service" /* Filter */); + return service.getFiltersAsync(this.visualId); + }; + WorksheetImpl.prototype.getSelectedMarksAsync = function () { + var service = api_shared_1.ApiServiceRegistry.instance.getService("get-data-service" /* GetData */); + return service.getSelectedMarksAsync(this.visualId); + }; + WorksheetImpl.prototype.getHighlightedMarksAsync = function () { + var service = api_shared_1.ApiServiceRegistry.instance.getService("get-data-service" /* GetData */); + return service.getHighlightedMarksAsync(this.visualId); + }; + WorksheetImpl.prototype.getSummaryDataAsync = function (options) { + var service = api_shared_1.ApiServiceRegistry.instance.getService("get-data-service" /* GetData */); + options = options || {}; + return service.getUnderlyingDataAsync(this.visualId, api_shared_1.GetDataType.Summary, !!options.ignoreAliases, !!options.ignoreSelection, true, 0); + }; + WorksheetImpl.prototype.getUnderlyingDataAsync = function (options) { + var service = api_shared_1.ApiServiceRegistry.instance.getService("get-data-service" /* GetData */); + options = options || {}; + return service.getUnderlyingDataAsync(this.visualId, api_shared_1.GetDataType.Underlying, !!options.ignoreAliases, !!options.ignoreSelection, !!options.includeAllColumns, options.maxRows || 0); + }; + WorksheetImpl.prototype.clearSelectedMarksAsync = function () { + var service = api_shared_1.ApiServiceRegistry.instance.getService("selection-service" /* Selection */); + return service.clearSelectedMarksAsync(this.visualId); + }; + WorksheetImpl.prototype.selectMarksByValueAsync = function (selections, selectionUpdateType) { + var service = api_shared_1.ApiServiceRegistry.instance.getService("selection-service" /* Selection */); + return service.selectMarksByValueAsync(this.visualId, selections, selectionUpdateType); + }; + WorksheetImpl.prototype.selectMarksByIdAsync = function (selections, selectionUpdateType) { + var service = api_shared_1.ApiServiceRegistry.instance.getService("selection-service" /* Selection */); + return service.selectMarksByIdAsync(this.visualId, selections, selectionUpdateType); + }; + WorksheetImpl.prototype.createDataSourceFromInfo = function (dataSourceInfo) { + var dataSourceImpl = new DataSourceImpl_1.DataSourceImpl(dataSourceInfo); + var dataSource = new DataSource_1.DataSource(dataSourceImpl); + dataSourceImpl.initializeWithPublicInterfaces(dataSource); + return dataSource; + }; + return WorksheetImpl; + }(SheetImpl_1.SheetImpl)); + exports.WorksheetImpl = WorksheetImpl; + + +/***/ }, +/* 59 */ +/***/ function(module, exports) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var DataSource = (function () { + function DataSource(_dataSourceImpl) { + this._dataSourceImpl = _dataSourceImpl; + } + Object.defineProperty(DataSource.prototype, "name", { + get: function () { + return this._dataSourceImpl.name; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(DataSource.prototype, "id", { + get: function () { + return this._dataSourceImpl.id; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(DataSource.prototype, "fields", { + get: function () { + return this._dataSourceImpl.fields; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(DataSource.prototype, "connectionSummaries", { + get: function () { + return this._dataSourceImpl.connectionSummaries; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(DataSource.prototype, "extractUpdateTime", { + get: function () { + return this._dataSourceImpl.extractUpdateTime; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(DataSource.prototype, "isExtract", { + get: function () { + return this._dataSourceImpl.isExtract; + }, + enumerable: true, + configurable: true + }); + DataSource.prototype.refreshAsync = function () { + return this._dataSourceImpl.refreshAsync(); + }; + DataSource.prototype.getUnderlyingDataAsync = function (options) { + return this._dataSourceImpl.getUnderlyingDataAsync(options); + }; + return DataSource; + }()); + exports.DataSource = DataSource; + + +/***/ }, +/* 60 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var api_shared_1 = __webpack_require__(9); + var FieldImpl_1 = __webpack_require__(61); + var Field_1 = __webpack_require__(62); + var DataSourceImpl = (function () { + function DataSourceImpl(_dataSourceInfo) { + this._dataSourceInfo = _dataSourceInfo; + } + Object.defineProperty(DataSourceImpl.prototype, "name", { + get: function () { + return this._dataSourceInfo.name; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(DataSourceImpl.prototype, "id", { + get: function () { + return this._dataSourceInfo.id; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(DataSourceImpl.prototype, "extractUpdateTime", { + get: function () { + return this._dataSourceInfo.extractUpdateTime; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(DataSourceImpl.prototype, "fields", { + get: function () { + return this._fields; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(DataSourceImpl.prototype, "isExtract", { + get: function () { + return this._dataSourceInfo.isExtract; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(DataSourceImpl.prototype, "connectionSummaries", { + get: function () { + throw new Error('DataSource connectionSummaries API not yet implemented.'); + }, + enumerable: true, + configurable: true + }); + DataSourceImpl.prototype.refreshAsync = function () { + var dataSourceService = api_shared_1.ApiServiceRegistry.instance.getService("data-source-service" /* DataSourceService */); + return dataSourceService.refreshAsync(this._dataSourceInfo.id); + }; + DataSourceImpl.prototype.getUnderlyingDataAsync = function (options) { + var defaultOptions = { + ignoreAliases: false, + maxRows: 10000, + columnsToInclude: [], + }; + options = options || {}; + var getDataService = api_shared_1.ApiServiceRegistry.instance.getService("get-data-service" /* GetData */); + return getDataService.getDataSourceDataAsync(this.id, !!options.ignoreAliases, options.maxRows || defaultOptions.maxRows, options.columnsToInclude || defaultOptions.columnsToInclude); + }; + DataSourceImpl.prototype.initializeWithPublicInterfaces = function (dataSource) { + this._fields = this._dataSourceInfo.fields.map(function (fieldModel) { + var fieldImpl = new FieldImpl_1.FieldImpl(fieldModel, dataSource); + return new Field_1.Field(fieldImpl); + }); + }; + return DataSourceImpl; + }()); + exports.DataSourceImpl = DataSourceImpl; + + +/***/ }, +/* 61 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var api_shared_1 = __webpack_require__(9); + var FieldImpl = (function () { + function FieldImpl(_fieldInfo, _parentDataSource) { + this._fieldInfo = _fieldInfo; + this._parentDataSource = _parentDataSource; + } + Object.defineProperty(FieldImpl.prototype, "name", { + get: function () { + return this._fieldInfo.name; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(FieldImpl.prototype, "id", { + get: function () { + return this._fieldInfo.id; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(FieldImpl.prototype, "description", { + get: function () { + return this._fieldInfo.description; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(FieldImpl.prototype, "aggregation", { + get: function () { + return api_shared_1.InternalToExternalEnumMappings.fieldAggregationType.convert(this._fieldInfo.aggregation); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(FieldImpl.prototype, "dataSource", { + get: function () { + return this._parentDataSource; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(FieldImpl.prototype, "role", { + get: function () { + return api_shared_1.InternalToExternalEnumMappings.fieldRoleType.convert(this._fieldInfo.role); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(FieldImpl.prototype, "isHidden", { + get: function () { + return this._fieldInfo.isHidden; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(FieldImpl.prototype, "isGenerated", { + get: function () { + return this._fieldInfo.isGenerated; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(FieldImpl.prototype, "isCalculatedField", { + get: function () { + return this._fieldInfo.isCalculatedField; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(FieldImpl.prototype, "isCombinedField", { + get: function () { + return this._fieldInfo.isCombinedField; + }, + enumerable: true, + configurable: true + }); + FieldImpl.prototype.getCalculatedFieldAsync = function () { + throw new Error('Field getCalculatedFieldAsync method not yet implemented.'); + }; + return FieldImpl; + }()); + exports.FieldImpl = FieldImpl; + + +/***/ }, +/* 62 */ +/***/ function(module, exports) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var Field = (function () { + function Field(_fieldImpl) { + this._fieldImpl = _fieldImpl; + } + Object.defineProperty(Field.prototype, "name", { + get: function () { + return this._fieldImpl.name; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Field.prototype, "id", { + get: function () { + return this._fieldImpl.id; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Field.prototype, "description", { + get: function () { + return this._fieldImpl.description; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Field.prototype, "aggregation", { + get: function () { + return this._fieldImpl.aggregation; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Field.prototype, "dataSource", { + get: function () { + return this._fieldImpl.dataSource; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Field.prototype, "role", { + get: function () { + return this._fieldImpl.role; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Field.prototype, "isHidden", { + get: function () { + return this._fieldImpl.isHidden; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Field.prototype, "isGenerated", { + get: function () { + return this._fieldImpl.isGenerated; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Field.prototype, "isCalculatedField", { + get: function () { + return this._fieldImpl.isCalculatedField; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Field.prototype, "columnType", { + get: function () { + throw new Error('Field.columnType not yet implemetned.'); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Field.prototype, "isCombinedField", { + get: function () { + return this._fieldImpl.isCombinedField; + }, + enumerable: true, + configurable: true + }); + Field.prototype.getCalculatedFieldAsync = function () { + return this._fieldImpl.getCalculatedFieldAsync(); + }; + return Field; + }()); + exports.Field = Field; + + +/***/ }, +/* 63 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var api_shared_1 = __webpack_require__(9); + var api_utils_1 = __webpack_require__(64); + var SettingsImpl = (function () { + function SettingsImpl(settingsInfo) { + // Since promises can't be introspected for state, keep a variable that + // indicates a save is in progress, so that set/erase can't be called during a save. + this._saveInProgress = false; + this.initializeSettings(settingsInfo); + } + SettingsImpl.prototype.erase = function (key) { + api_utils_1.Param.verifyValue(key, 'key'); + // Only make a modification if we have the key already + if (this._currentSettings[key]) { + this.verifySettingsAreUnlocked(); + delete this._currentSettings[key]; + this._isModified = true; + } + }; + SettingsImpl.prototype.get = function (key) { + api_utils_1.Param.verifyValue(key, 'key'); + return this._currentSettings[key]; + }; + SettingsImpl.prototype.getAll = function () { + // Returns a mutable copy of the settings + return Object.assign({}, this._currentSettings); + }; + Object.defineProperty(SettingsImpl.prototype, "isModified", { + get: function () { + return this._isModified; + }, + enumerable: true, + configurable: true + }); + SettingsImpl.prototype.saveAsync = function () { + var _this = this; + this.verifySettingsAreUnlocked(); + // Just resolve immediately if settings are unchanged + if (!this._isModified) { + return Promise.resolve(this._currentSettings); + } + this._saveInProgress = true; + // Use the settings service to save settings to twb + var settingsService = api_shared_1.ApiServiceRegistry.instance.getService("SettingsService" /* SettingsService */); + return settingsService.saveSettingsAsync(this._currentSettings).then(function (newSettings) { + _this._saveInProgress = false; + _this._isModified = false; + Object.assign(_this._currentSettings, newSettings); + return newSettings; + }); + }; + SettingsImpl.prototype.set = function (key, value) { + api_utils_1.Param.verifyValue(key, 'key'); // Key shouldn't be an empty string. + api_utils_1.Param.verifyString(value, 'value'); // Empty string value is allowed. + this.verifySettingsAreUnlocked(); + this._currentSettings[key] = value; + this._isModified = true; + }; + SettingsImpl.prototype.initializeSettings = function (settingsInfo) { + api_utils_1.Param.verifyValue(settingsInfo, 'settingsInfo'); + api_utils_1.Param.verifyValue(settingsInfo.settingsValues, 'settingsInfo.SettingsValues'); + this._currentSettings = settingsInfo.settingsValues; + // Reset the isModified flag + this._isModified = false; + }; + /** + * This helper should be called before any local update to this.currentSettings. + * Checks if a current save call is still in progress and throws an error if so. + */ + SettingsImpl.prototype.verifySettingsAreUnlocked = function () { + if (this._saveInProgress) { + throw new Error('Async Save is in progress, updating settings is not allowed.'); + } + }; + return SettingsImpl; + }()); + exports.SettingsImpl = SettingsImpl; + + +/***/ }, +/* 64 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + /** + * This is your main. This is where you re-export everything you want to be publicly available. + * + * The build enforces that the file has the same name as the global variable that is exported. + */ + Object.defineProperty(exports, "__esModule", { value: true }); + var EnumConverter_1 = __webpack_require__(30); + exports.EnumConverter = EnumConverter_1.EnumConverter; + var Param_1 = __webpack_require__(31); + exports.Param = Param_1.Param; + + +/***/ }, +/* 65 */ +/***/ function(module, exports) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + /** + * Implementation of the external Extensions namespace. + */ + var Extensions = (function () { + function Extensions(extensionImpl) { + this.extensionImpl = extensionImpl; + this.extensionImpl = extensionImpl; + } + Object.defineProperty(Extensions.prototype, "dashboardContent", { + get: function () { + return this.extensionImpl.dashboardContent; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Extensions.prototype, "environment", { + get: function () { + return this.extensionImpl.environment; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Extensions.prototype, "settings", { + get: function () { + return this.extensionImpl.settings; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Extensions.prototype, "ui", { + get: function () { + throw new Error('API call not yet implemented'); + }, + enumerable: true, + configurable: true + }); + Extensions.prototype.initializeAsync = function () { + return this.extensionImpl.initializeAsync(); + }; + return Extensions; + }()); + exports.Extensions = Extensions; + + +/***/ }, +/* 66 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var api_core_1 = __webpack_require__(67); + var api_internal_contract_1 = __webpack_require__(88); + var AddInApiPresLayerImpl_1 = __webpack_require__(89); + var DesktopApiDispatcher_1 = __webpack_require__(90); + var QtWebChannelImpl_1 = __webpack_require__(91); + /** + * Wrapper for all the bootstrapping logic. This code attempts to initialize the qt pres-layer + * as well as the desktop dispatcher. It then assigns it to the global desktop dispatcher to + * be picked up by the add-in external Api + */ + function doBootstrap() { + // First we need to initialize the webchannel pres-layer + var dispatcherPromise = QtWebChannelImpl_1.initializeWebChannelPresLayer().then(function (preslayer) { + var presLayerApi = new AddInApiPresLayerImpl_1.AddInApiPresLayerImpl(preslayer); + if (!presLayerApi.AddInInstanceInfo.addInLocatorPresModel) { + throw new Error('AddInInstanceInfo undefined'); + } + // Initialize the apiEventHandler and the desktopDispatcher with it + var apiEventHandler = new api_core_1.ApiEventHandler(presLayerApi, presLayerApi.AddInInstanceInfo.addInLocatorPresModel); + var desktopDispatcher = new DesktopApiDispatcher_1.DesktopApiDispatcher(apiEventHandler); + return desktopDispatcher; + }); + // Assign the desktop dispatcher for the other project to find it + api_internal_contract_1.InternalApiDispatcherHolder.setDesktopDispatcherPromise(dispatcherPromise); + return dispatcherPromise; + } + exports.doBootstrap = doBootstrap; + + +/***/ }, +/* 67 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + /** + * This is your main. This is where you re-export everything you want to be publicly available. + * + * The build enforces that the file has the same name as the global variable that is exported. + */ + function __export(m) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; + } + Object.defineProperty(exports, "__esModule", { value: true }); + __export(__webpack_require__(68)); + var Events_1 = __webpack_require__(76); + exports.NotificationId = Events_1.NotificationId; + + +/***/ }, +/* 68 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var api_internal_contract_1 = __webpack_require__(69); + var Params_1 = __webpack_require__(70); + var CommandMappingRegistryFactory_1 = __webpack_require__(71); + var EventMappingRegistryFactory_1 = __webpack_require__(75); + var ParameterMappingRegistryFactory_1 = __webpack_require__(81); + /** + * Main class for the api-core project. This class is responsible for executing comamnd and marshalling notifcations + * between the internal Api and the pres-layer Api. After construction, SetVersionNumber must be called in order to + * use this class + * + * @export + * @class ApiEventHandler + */ + var ApiEventHandler = (function () { + /** + * Creates an instance of ApiEventHandler. + * @param {PresentationLayer} presLayer - An implementation of the pres-layer Api to use + * @param {AddInLocatorPresModel} addInLocatorPresModel - locator for the add-in which is being referenced + * @memberof ApiEventHandler + */ + function ApiEventHandler(presLayer, addInLocatorPresModel) { + this._presLayer = presLayer; + this._presLayerAddInLocator = addInLocatorPresModel; + } + /** + * Sets the internal Api version number which the external library is expecting to use. This must be called before + * anything else in order to properly set up the translation layers. + * + * @param {VersionNumber} versionNumber + * @memberof ApiEventHandler + */ + ApiEventHandler.prototype.setVersionNumber = function (versionNumber) { + this._versionNumber = versionNumber; + // Initialize all our registries + this._commandRegistry = CommandMappingRegistryFactory_1.CommandMappingRegistryFactory.createCommandMappingRegistry(versionNumber); + this._apiToPresLayerRegistry = ParameterMappingRegistryFactory_1.ParameterMappingRegistryFactory.createApiToPresLayerParamRegistry(versionNumber); + this._presLayerToApiRegistry = ParameterMappingRegistryFactory_1.ParameterMappingRegistryFactory.createPresLayerToApiParamRegistry(versionNumber); + this._eventRegistry = EventMappingRegistryFactory_1.EventMappingRegistryFactory.createEventMappingRegistry(versionNumber); + // Convert our addInLocator to the Api version + this._apiExtensionLocator = this._presLayerToApiRegistry + .get(Params_1.ParameterId.AddInLocator, api_internal_contract_1.ParameterId.ExtensionLocator)(this._presLayerAddInLocator); + for (var _i = 0, _a = Object.keys(this._eventRegistry); _i < _a.length; _i++) { + var plEventId = _a[_i]; + // Register for all notifications we know about and bind the event type to the callback + this._presLayer.registerNotificationHandler(plEventId, this.onPresLayerNotification.bind(this, plEventId)); + } + }; + /** + * Sets an event handler function to be notified when Api events come in. Only a single registration is supported. + * + * @param {NotificationHandler} eventHandler + * @memberof ApiEventHandler + */ + ApiEventHandler.prototype.setEventHandler = function (eventHandler) { + this._eventHandler = eventHandler; + // TODO - Register for pres layer events + }; + /** + * Executes the requested Api command by converting the parameters, running the command against the pres-layer, + * then processing the result back into a format the Api can understand + * + * @param {VerbId} verb + * @param {ExecuteParameters} parameters + * @returns {Promise} + * @memberof ApiEventHandler + */ + ApiEventHandler.prototype.execute = function (verb, parameters) { + var _this = this; + this.assertInitialized(); + var command = this._commandRegistry.getCommand(verb); + parameters = parameters || {}; + // Augment the command with the locator if it's needed + if (command.needsAddInLocator) { + parameters[api_internal_contract_1.ParameterId.ExtensionLocator] = this._apiExtensionLocator; + } + var commandsParams = command.createParams(parameters, this._apiToPresLayerRegistry); + return this._presLayer.invokeCommand(command.namespace, command.commandId, commandsParams) + .then(function (commandResult) { + var convertedResult = command.ProcessResult(commandResult, _this._presLayerToApiRegistry); + return { + result: convertedResult + }; + }); + }; + /** + * Helper method to check that things are initialized as expected. Throws if initialization not complete + * + * @private + * @memberof ApiEventHandler + */ + ApiEventHandler.prototype.assertInitialized = function () { + if (!this._versionNumber) { + throw new Error('VersionNumber not yet configured. Cannot take any actions'); + } + }; + /** + * Called when a new event notification comes in from the presentation layer + * + * @param eventId The pres layer event id + * @param presModel The pres model that is included with the event + */ + ApiEventHandler.prototype.onPresLayerNotification = function (eventId, presModel) { + // First look up this eventId in our registry and convert to presModel + var eventMapping = this._eventRegistry[eventId]; + var apiModel = eventMapping.converter(presModel); + if (this._eventHandler) { + this._eventHandler(eventMapping.apiId, apiModel); + } + }; + return ApiEventHandler; + }()); + exports.ApiEventHandler = ApiEventHandler; + + +/***/ }, +/* 69 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + /** + * This is your main. This is where you re-export everything you want to be publicly available. + * + * The build enforces that the file has the same name as the global variable that is exported. + */ + function __export(m) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; + } + Object.defineProperty(exports, "__esModule", { value: true }); + __export(__webpack_require__(4)); + __export(__webpack_require__(5)); + __export(__webpack_require__(6)); + __export(__webpack_require__(7)); + __export(__webpack_require__(8)); + + +/***/ }, +/* 70 */ +/***/ function(module, exports) { + + "use strict"; + // ----------------------------------------------------------------------------- + // + // This file is the copyrighted property of Tableau Software and is protected + // by registered patents and other applicable U.S. and international laws and + // regulations. + // + // Unlicensed use of the contents of this file is prohibited. Please refer to + // the NOTICES.txt file for further details. + // + // ----------------------------------------------------------------------------- + // WARNING: Computer generated file. Do not hand modify. + // DEPENDS ON: ['../typescript/js-api/api-core/node_modules/@tableau/preslayer-codegen-typescript/templates/params-ts.template', u'../typescript/js-api/api-core/temp-pres-layer/all-params.data'] + Object.defineProperty(exports, "__esModule", { value: true }); + var ParameterId; + (function (ParameterId) { + // DPI_IntegerRLE, having type int[] + ParameterId["IntegerRLE"] = "intRle"; + // DPI_UnsignedIntegerRLE, having type uint[] + ParameterId["UnsignedIntegerRLE"] = "uintRle"; + // DPI_FloatRLE, having type float[] + ParameterId["FloatRLE"] = "floatRle"; + // DPI_ParameterID, having type string + ParameterId["ParameterID"] = "paramType"; + // DPI_AllowCustomDatabase, having type bool + ParameterId["AllowCustomDatabase"] = "allowCustomDatabase"; + // DPI_AllowCustomSchema, having type bool + ParameterId["AllowCustomSchema"] = "allowCustomSchema"; + // DPI_AllowCustomSQL, having type bool + ParameterId["AllowCustomSQL"] = "allowCustomSql"; + // DPI_AllowCustomSQLWithoutSchema, having type bool + ParameterId["AllowCustomSQLWithoutSchema"] = "allowCustomSqlWithoutSchema"; + // DPI_AllowPreviewData, having type bool + ParameterId["AllowPreviewData"] = "allowPreviewData"; + // DPI_AllowStoredProc, having type bool + ParameterId["AllowStoredProc"] = "allowStoredProcedure"; + // DPI_AllowUnion, having type bool + ParameterId["AllowUnion"] = "allowUnion"; + // DPI_AreVariablesVisible, having type bool + ParameterId["AreVariablesVisible"] = "areVariablesVisible"; + // DPI_AttrLegacyConnection, having type bool + ParameterId["AttrLegacyConnection"] = "widgetAttrLegacy"; + // DPI_AttrReadUncommitted, having type bool + ParameterId["AttrReadUncommitted"] = "widgetAttrReadUncommittedData"; + // DPI_AttrRequireSSL, having type bool + ParameterId["AttrRequireSSL"] = "widgetAttrRequireSsl"; + // DPI_AttrRequireEncryption, having type bool + ParameterId["AttrRequireEncryption"] = "widgetAttrRequireEncryption"; + // DPI_Bool, having type bool + ParameterId["Bool"] = "bool"; + // DPI_CanPartition, having type bool + ParameterId["CanPartition"] = "canPartition"; + // DPI_CanRecommendDataSources, having type bool + ParameterId["CanRecommendDataSources"] = "canRecommendDatasources"; + // DPI_CanRecommendTables, having type bool + ParameterId["CanRecommendTables"] = "canRecommendTables"; + // DPI_CheckPermissions, having type bool + ParameterId["CheckPermissions"] = "checkPermissions"; + // DPI_DatabaseNameOptional, having type bool + ParameterId["DatabaseNameOptional"] = "databaseNameOptional"; + // DPI_DatabaseWHOptional, having type bool + ParameterId["DatabaseWHOptional"] = "databaseWarehouseOptional"; + // DPI_DoValidation, having type bool + ParameterId["DoValidation"] = "doValidation"; + // DPI_DoneLoadingAllSheets, having type bool + ParameterId["DoneLoadingAllSheets"] = "googleSheetDoneLoading"; + // DPI_GABasicItemsEnabled, having type bool + ParameterId["GABasicItemsEnabled"] = "gaBasicItemsEnabled"; + // DPI_GADimensionMeasuresEnabled, having type bool + ParameterId["GADimensionMeasuresEnabled"] = "gaDimensionsMeasuresEnabled"; + // DPI_GAFiltersEnabled, having type bool + ParameterId["GAFiltersEnabled"] = "gaFiltersEnabled"; + // DPI_HasDatabase, having type bool + ParameterId["HasDatabase"] = "hasDatabase"; + // DPI_HasDataLoss, having type bool + ParameterId["HasDataLoss"] = "hasDataLoss"; + // DPI_HasFastMetadata, having type bool + ParameterId["HasFastMetadata"] = "hasFastMetadata"; + // DPI_HasNewlyDiscoveredSchema, having type bool + ParameterId["HasNewlyDiscoveredSchema"] = "hasNewlyDiscoveredSchema"; + // DPI_HasPermissions, having type bool + ParameterId["HasPermissions"] = "hasPermissions"; + // DPI_HasSchema, having type bool + ParameterId["HasSchema"] = "hasSchema"; + // DPI_HasSchemaCount, having type bool + ParameterId["HasSchemaCount"] = "hasSchemaCount"; + // DPI_HasTables, having type bool + ParameterId["HasTables"] = "hasTables"; + // DPI_HasUncommittedChanges, having type bool + ParameterId["HasUncommittedChanges"] = "hasUncommittedChanges"; + // DPI_HasWarehouse, having type bool + ParameterId["HasWarehouse"] = "hasWarehouse"; + // DPI_HasWarning, having type bool + ParameterId["HasWarning"] = "hasWarning"; + // DPI_IsCalculated, having type bool + ParameterId["IsCalculated"] = "isCalculated"; + // DPI_IsConnectedToDataSource, having type bool + ParameterId["IsConnectedToDataSource"] = "isConnectedDatasource"; + // DPI_IsDisabledDataConnection, having type bool + ParameterId["IsDisabledDataConnection"] = "isDisabledDataConnection"; + // DPI_IsEditable, having type bool + ParameterId["IsEditable"] = "isEditable"; + // DPI_IsEnabled, having type bool + ParameterId["IsEnabled"] = "isEnabled"; + // DPI_IsFinishedConnecting, having type bool + ParameterId["IsFinishedConnecting"] = "isFinishedConnecting"; + // DPI_IsHidden, having type bool + ParameterId["IsHidden"] = "isHidden"; + // DPI_IsMultiTable, having type bool + ParameterId["IsMultiTable"] = "isMultiTable"; + // DPI_IsNewCustomSQL, having type bool + ParameterId["IsNewCustomSQL"] = "isNewCustomSql"; + // DPI_IsNewDataSource, having type bool + ParameterId["IsNewDataSource"] = "isNewDataSrc"; + // DPI_IsPublishedFederated, having type bool + ParameterId["IsPublishedFederated"] = "isPublishedFederated"; + // DPI_IsSampled, having type bool + ParameterId["IsSampled"] = "isSampled"; + // DPI_IsSchemaMemberNewlyDiscovered, having type bool + ParameterId["IsSchemaMemberNewlyDiscovered"] = "isSchemaMemberNewlyDiscovered"; + // DPI_IsSlowFast, having type bool + ParameterId["IsSlowFast"] = "isSlowfast"; + // DPI_IsSupported, having type bool + ParameterId["IsSupported"] = "isSupported"; + // DPI_IsTableSelectionVisible, having type bool + ParameterId["IsTableSelectionVisible"] = "isTableSelectionVisible"; + // DPI_IsTableauServerDatasource, having type bool + ParameterId["IsTableauServerDatasource"] = "isTableauServerDatasource"; + // DPI_IsTableauServerDatasourceConnectable, having type bool + ParameterId["IsTableauServerDatasourceConnectable"] = "isTableauServerDatasourceConnectable"; + // DPI_IsTableauServerDatasourceDownloadable, having type bool + ParameterId["IsTableauServerDatasourceDownloadable"] = "isTableauServerDatasourceDownloadable"; + // DPI_IsVisible, having type bool + ParameterId["IsVisible"] = "isVisible"; + // DPI_NeedFlatten, having type bool + ParameterId["NeedFlatten"] = "needFlatten"; + // DPI_SSLRequiresCertificate, having type bool + ParameterId["SSLRequiresCertificate"] = "sslRequiresCertificate"; + // DPI_SchemaOptional, having type bool + ParameterId["SchemaOptional"] = "schemaOptional"; + // DPI_ServiceNameOptional, having type bool + ParameterId["ServiceNameOptional"] = "serviceNameOptional"; + // DPI_ShouldWarnForCrossSchemaJoins, having type bool + ParameterId["ShouldWarnForCrossSchemaJoins"] = "shouldWarnCrossSchemaJoins"; + // DPI_ShowBrowseButton, having type bool + ParameterId["ShowBrowseButton"] = "showBrowseButton"; + // DPI_ShowConnectionPrompt, having type bool + ParameterId["ShowConnectionPrompt"] = "showConnectionPrompt"; + // DPI_ShowDBBrowseButton, having type bool + ParameterId["ShowDBBrowseButton"] = "showDbBrowseButton"; + // DPI_ShowDBNamePrompt, having type bool + ParameterId["ShowDBNamePrompt"] = "showDbPrompt"; + // DPI_ShowDBWHNamePrompt, having type bool + ParameterId["ShowDBWHNamePrompt"] = "showDbwhPrompt"; + // DPI_ShowImportSSLCertLabel, having type bool + ParameterId["ShowImportSSLCertLabel"] = "showImportSslcertLabel"; + // DPI_ShowPortPrompt, having type bool + ParameterId["ShowPortPrompt"] = "showPortPrompt"; + // DPI_ShowSSLCheckbox, having type bool + ParameterId["ShowSSLCheckbox"] = "showSslCheckbox"; + // DPI_ShowEncryptionCheckbox, having type bool + ParameterId["ShowEncryptionCheckbox"] = "showEncryptionCheckbox"; + // DPI_ShowServerNamePrompt, having type bool + ParameterId["ShowServerNamePrompt"] = "showServerPrompt"; + // DPI_ShowServiceNamePrompt, having type bool + ParameterId["ShowServiceNamePrompt"] = "showServicePrompt"; + // DPI_ShowUncommittedDataCheckbox, having type bool + ParameterId["ShowUncommittedDataCheckbox"] = "showUncommittedDataCheckbox"; + // DPI_SupportsGenericAuth, having type bool + ParameterId["SupportsGenericAuth"] = "supportsGenericAuth"; + // DPI_TableauServerFetchAscending, having type bool + ParameterId["TableauServerFetchAscending"] = "tableauServerFetchAscending"; + // DPI_UsesRadioButton, having type bool + ParameterId["UsesRadioButton"] = "usesRadioButton"; + // DPI_BigQueryLegacySQLCheckStatus, having type bool + ParameterId["BigQueryLegacySQLCheckStatus"] = "datasourceBigqueryLegacySqlCheckStatus"; + // DPI_HasBigQueryLegacySQLCheck, having type bool + ParameterId["HasBigQueryLegacySQLCheck"] = "datasourceBigqueryLegacySqlCheck"; + // DPI_AutoFetchLimit, having type int + ParameterId["AutoFetchLimit"] = "autoFetchLimit"; + // DPI_ConnectionType, having type int + ParameterId["ConnectionType"] = "connectionType"; + // DPI_IconId, having type int + ParameterId["IconId"] = "iconId"; + // DPI_SelectedCatalogIndex, having type int + ParameterId["SelectedCatalogIndex"] = "selectedCatalogIndex"; + // DPI_SelectedCubeIndex, having type int + ParameterId["SelectedCubeIndex"] = "selectedCubeIndex"; + // DPI_SelectedGAAccountIndex, having type int + ParameterId["SelectedGAAccountIndex"] = "selectedGaAccountIndex"; + // DPI_SelectedGAMeasureSetIndex, having type int + ParameterId["SelectedGAMeasureSetIndex"] = "selectedGaMeasureSetIndex"; + // DPI_SelectedGAPropertyIndex, having type int + ParameterId["SelectedGAPropertyIndex"] = "selectedGaPropertyIndex"; + // DPI_SelectedGASegmentIndex, having type int + ParameterId["SelectedGASegmentIndex"] = "selectedGaSegmentIndex"; + // DPI_SelectedGAViewIndex, having type int + ParameterId["SelectedGAViewIndex"] = "selectedGaViewIndex"; + // DPI_SelectedGoogleSheetIndex, having type int + ParameterId["SelectedGoogleSheetIndex"] = "selectedGoogleSheetIndex"; + // DPI_SelectedOptionIndex, having type int + ParameterId["SelectedOptionIndex"] = "selectedOptionIndex"; + // DPI_SlowMetadataCount, having type int + ParameterId["SlowMetadataCount"] = "slowMetadataCount"; + // DPI_TableauServerFetchSortBy, having type int + ParameterId["TableauServerFetchSortBy"] = "tableauServerFetchSort"; + // DPI_ActualParameterOrdinal, having type uint + ParameterId["ActualParameterOrdinal"] = "actualParameterOrdinal"; + // DPI_ActualParameterType, having type uint + ParameterId["ActualParameterType"] = "actualParameterType"; + // DPI_CharSetID, having type uint + ParameterId["CharSetID"] = "charsetId"; + // DPI_DataSourceOrdinal, having type uint + ParameterId["DataSourceOrdinal"] = "datasourceOrdinal"; + // DPI_FilterCount, having type uint + ParameterId["FilterCount"] = "filterCount"; + // DPI_VariablesCount, having type uint + ParameterId["VariablesCount"] = "variablesCount"; + // DPI_ActualParameterDisplayName, having type string + ParameterId["ActualParameterDisplayName"] = "actualParameterDisplayName"; + // DPI_ActualParameterName, having type string + ParameterId["ActualParameterName"] = "actualParameterName"; + // DPI_ActualParameterValue, having type string + ParameterId["ActualParameterValue"] = "actualParameterValue"; + // DPI_AttrAPIVersion, having type string + ParameterId["AttrAPIVersion"] = "attrApiVersion"; + // DPI_AttrAuthType, having type string + ParameterId["AttrAuthType"] = "widgetAttrAuthtype"; + // DPI_AttrConnectionData, having type string + ParameterId["AttrConnectionData"] = "attrConnectionData"; + // DPI_AttrConnectionName, having type string + ParameterId["AttrConnectionName"] = "attrConnectionName"; + // DPI_AttrConnectionType, having type string + ParameterId["AttrConnectionType"] = "widgetAttrConnectiontype"; + // DPI_AttrConnectionURL, having type string + ParameterId["AttrConnectionURL"] = "attrConnectionUrl"; + // DPI_AttrCubeSpecificationId, having type string + ParameterId["AttrCubeSpecificationId"] = "widgetAttrCubeSpecificationId"; + // DPI_AttrCubeSpecificationValue, having type string + ParameterId["AttrCubeSpecificationValue"] = "widgetAttrCubeSpecificationValue"; + // DPI_AttrDSN, having type string + ParameterId["AttrDSN"] = "widgetAttrDsn"; + // DPI_AttrDatabase, having type string + ParameterId["AttrDatabase"] = "widgetAttrDb"; + // DPI_AttrDatabaseWarehouse, having type string + ParameterId["AttrDatabaseWarehouse"] = "widgetAttrDbwh"; + // DPI_AttrDriver, having type string + ParameterId["AttrDriver"] = "widgetAttrDriver"; + // DPI_AttrFilename, having type string + ParameterId["AttrFilename"] = "widgetAttrFilename"; + // DPI_AttrHTTPPath, having type string + ParameterId["AttrHTTPPath"] = "widgetAttrHttpPath"; + // DPI_AttrIncrementalRefreshKey, having type string + ParameterId["AttrIncrementalRefreshKey"] = "attrIncrementalRefreshKey"; + // DPI_AttrKerberosHost, having type string + ParameterId["AttrKerberosHost"] = "widgetAttrKerberosHost"; + // DPI_AttrKerberosRealm, having type string + ParameterId["AttrKerberosRealm"] = "widgetAttrKerberosRealm"; + // DPI_AttrKerberosService, having type string + ParameterId["AttrKerberosService"] = "widgetAttrKerberosService"; + // DPI_AttrLastRecordToken, having type string + ParameterId["AttrLastRecordToken"] = "attrLastRecordToken"; + // DPI_AttrMDWPath, having type string + ParameterId["AttrMDWPath"] = "widgetAttrMdwPath"; + // DPI_AttrMDWUsername, having type string + ParameterId["AttrMDWUsername"] = "widgetAttrMdwUsername"; + // DPI_AttrODBCPrompt, having type string + ParameterId["AttrODBCPrompt"] = "widgetAttrOdbcPrompt"; + // DPI_AttrODBCStringExtras, having type string + ParameterId["AttrODBCStringExtras"] = "widgetAttrOdbcStringExtras"; + // DPI_AttrPort, having type string + ParameterId["AttrPort"] = "widgetAttrPort"; + // DPI_AttrSAPClient, having type string + ParameterId["AttrSAPClient"] = "widgetAttrSapClient"; + // DPI_AttrSAPLanguage, having type string + ParameterId["AttrSAPLanguage"] = "widgetAttrSapLanguage"; + // DPI_AttrEdition, having type string + ParameterId["AttrEdition"] = "widgetAttrSslEdition"; + // DPI_AttrSSODomain, having type string + ParameterId["AttrSSODomain"] = "widgetAttrSsoDomain"; + // DPI_AttrSSLCert, having type string + ParameterId["AttrSSLCert"] = "widgetAttrSslCert"; + // DPI_AttrScriptVersion, having type string + ParameterId["AttrScriptVersion"] = "attrScriptVersion"; + // DPI_AttrServer, having type string + ParameterId["AttrServer"] = "widgetAttrServer"; + // DPI_AttrService, having type string + ParameterId["AttrService"] = "widgetAttrService"; + // DPI_AttrUsername, having type string + ParameterId["AttrUsername"] = "widgetAttrUser"; + // DPI_AuthenticationPrompt, having type string + ParameterId["AuthenticationPrompt"] = "authenticationPrompt"; + // DPI_ButtonClickAction, having type string + ParameterId["ButtonClickAction"] = "buttonClickAction"; + // DPI_ButtonCaption, having type string + ParameterId["ButtonCaption"] = "buttonCaption"; + // DPI_Caption, having type string + ParameterId["Caption"] = "caption"; + // DPI_CatalogListPrompt, having type string + ParameterId["CatalogListPrompt"] = "catalogListPrompt"; + // DPI_CatalogName, having type string + ParameterId["CatalogName"] = "catalogName"; + // DPI_CatalogSearchTerm, having type string + ParameterId["CatalogSearchTerm"] = "catalogSearchTerm"; + // DPI_Category, having type string + ParameterId["Category"] = "itemCategory"; + // DPI_ClassName, having type string + ParameterId["ClassName"] = "classNameForCleaning"; + // DPI_CloudFileClassName, having type string + ParameterId["CloudFileClassName"] = "cloudFileClassName"; + // DPI_CloudFileStorageProvider, having type string + ParameterId["CloudFileStorageProvider"] = "cloudFileStorageProvider"; + // DPI_ConfigName, having type string + ParameterId["ConfigName"] = "connectionConfigName"; + // DPI_ConnectionCaption, having type string + ParameterId["ConnectionCaption"] = "connectionCaption"; + // DPI_ConnectionDescriptionLabel, having type string + ParameterId["ConnectionDescriptionLabel"] = "connectionDescriptionLabel"; + // DPI_ConnectionClass, having type string + ParameterId["ConnectionClass"] = "connectionClassName"; + // DPI_ConnectionName, having type string + ParameterId["ConnectionName"] = "connectionName"; + // DPI_ConnectionOptionName, having type string + ParameterId["ConnectionOptionName"] = "connectionOptionName"; + // DPI_ConnectionSpecificationTitle, having type string + ParameterId["ConnectionSpecificationTitle"] = "connectionSpecificationTitle"; + // DPI_ConnectionTypeLabel, having type string + ParameterId["ConnectionTypeLabel"] = "connectionTypeLabel"; + // DPI_CubeDescription, having type string + ParameterId["CubeDescription"] = "cubeDescription"; + // DPI_CubeLastUpdated, having type string + ParameterId["CubeLastUpdated"] = "cubeLastUpdated"; + // DPI_CubeListPrompt, having type string + ParameterId["CubeListPrompt"] = "cubeListPrompt"; + // DPI_CubeName, having type string + ParameterId["CubeName"] = "cubeName"; + // DPI_CubeSearchTerm, having type string + ParameterId["CubeSearchTerm"] = "cubeSearchTerm"; + // DPI_CurrentText, having type string + ParameterId["CurrentText"] = "currentText"; + // DPI_CustomSplitStringSeparator, having type string + ParameterId["CustomSplitStringSeparator"] = "customSplitStringSeparator"; + // DPI_DatasourceId, having type string + ParameterId["DatasourceId"] = "datasourceId"; + // DPI_DBNamePrompt, having type string + ParameterId["DBNamePrompt"] = "dbNamePrompt"; + // DPI_DBWHNamePrompt, having type string + ParameterId["DBWHNamePrompt"] = "dbWarehouseNamePrompt"; + // DPI_DSClass, having type string + ParameterId["DSClass"] = "dsClass"; + // DPI_DatabaseName, having type string + ParameterId["DatabaseName"] = "datasourceDatabaseName"; + // DPI_DatabaseNote, having type string + ParameterId["DatabaseNote"] = "databaseNote"; + // DPI_DragLabel, having type string + ParameterId["DragLabel"] = "dragLabel"; + // DPI_EffectiveDateRange, having type string + ParameterId["EffectiveDateRange"] = "effectiveDateRange"; + // DPI_GoogleSheetCreatedTime, having type string + ParameterId["GoogleSheetCreatedTime"] = "googleSheetCreatedTime"; + // DPI_GoogleSheetId, having type string + ParameterId["GoogleSheetId"] = "googleSheetId"; + // DPI_GoogleSheetLastModifiedTime, having type string + ParameterId["GoogleSheetLastModifiedTime"] = "googleSheetLastModifiedTime"; + // DPI_GoogleSheetLastModifyingUser, having type string + ParameterId["GoogleSheetLastModifyingUser"] = "googleSheetLastModifyingUser"; + // DPI_GoogleSheetLastViewedByUserTime, having type string + ParameterId["GoogleSheetLastViewedByUserTime"] = "googleSheetLastViewedByUserTime"; + // DPI_GoogleSheetMimeType, having type string + ParameterId["GoogleSheetMimeType"] = "googleSheetMimeType"; + // DPI_GoogleSheetName, having type string + ParameterId["GoogleSheetName"] = "googleSheetName"; + // DPI_GoogleSheetOwner, having type string + ParameterId["GoogleSheetOwner"] = "googleSheetOwner"; + // DPI_GoogleSheetThumbnailLink, having type string + ParameterId["GoogleSheetThumbnailLink"] = "googleSheetThumbnailLink"; + // DPI_GoogleSheetThumbnailId, having type string + ParameterId["GoogleSheetThumbnailId"] = "googleSheetThumbnailId"; + // DPI_GoogleSheetThumbnailLocalPath, having type string + ParameterId["GoogleSheetThumbnailLocalPath"] = "googleSheetThumbnailLocalPath"; + // DPI_GoogleSheetWebViewLink, having type string + ParameterId["GoogleSheetWebViewLink"] = "googleSheetWebViewLink"; + // DPI_GoogleSheetsListErrorMessage, having type string + ParameterId["GoogleSheetsListErrorMessage"] = "googleSheetsListErrorMessage"; + // DPI_InitialSQL, having type string + ParameterId["InitialSQL"] = "initialSql"; + // DPI_ISODate, having type string + ParameterId["ISODate"] = "isoDate"; + // DPI_ISOEndDate, having type string + ParameterId["ISOEndDate"] = "isoEndDate"; + // DPI_ISOStartDate, having type string + ParameterId["ISOStartDate"] = "isoStartDate"; + // DPI_IsolationLevel, having type string + ParameterId["IsolationLevel"] = "datasourceIsolationLevel"; + // DPI_ItemDescription, having type string + ParameterId["ItemDescription"] = "itemDescription"; + // DPI_ItemId, having type string + ParameterId["ItemId"] = "itemId"; + // DPI_KerberosHost, having type string + ParameterId["KerberosHost"] = "datasourceKerberosHost"; + // DPI_KerberosRealm, having type string + ParameterId["KerberosRealm"] = "datasourceKerberosRealm"; + // DPI_KerberosService, having type string + ParameterId["KerberosService"] = "datasourceKerberosService"; + // DPI_Name, having type string + ParameterId["Name"] = "name"; + // DPI_OptionId, having type string + ParameterId["OptionId"] = "optionId"; + // DPI_PartitioningButtonLabel, having type string + ParameterId["PartitioningButtonLabel"] = "partitioningButtonLabel"; + // DPI_PartitioningButtonTooltip, having type string + ParameterId["PartitioningButtonTooltip"] = "partitioningButtonTooltip"; + // DPI_PartitioningText, having type string + ParameterId["PartitioningText"] = "queryPartitioningText"; + // DPI_PdfStartPage, having type string + ParameterId["PdfStartPage"] = "pdfStartPage"; + // DPI_PdfEndPage, having type string + ParameterId["PdfEndPage"] = "pdfEndPage"; + // DPI_PortPrompt, having type string + ParameterId["PortPrompt"] = "portPrompt"; + // DPI_PromptText, having type string + ParameterId["PromptText"] = "promptText"; + // DPI_QueryBanding, having type string + ParameterId["QueryBanding"] = "queryBanding"; + // DPI_QueryText, having type string + ParameterId["QueryText"] = "queryText"; + // DPI_RecommendationUUID, having type string + ParameterId["RecommendationUUID"] = "recommendationUuid"; + // DPI_SQLQuery, having type string + ParameterId["SQLQuery"] = "sqlQuery"; + // DPI_SchemaComboFallbackText, having type string + ParameterId["SchemaComboFallbackText"] = "schemaComboFallbackText"; + // DPI_SchemaLabel, having type string + ParameterId["SchemaLabel"] = "schemaLabel"; + // DPI_SchemaMemberGlobalName, having type string + ParameterId["SchemaMemberGlobalName"] = "schemaMemberGlobalName"; + // DPI_SchemaName, having type string + ParameterId["SchemaName"] = "datasourceSchemaName"; + // DPI_ScriptText, having type string + ParameterId["ScriptText"] = "scriptText"; + // DPI_SecondaryWhiteList, having type string + ParameterId["SecondaryWhiteList"] = "secondaryWhiteList"; + // DPI_Server, having type string + ParameterId["Server"] = "datasourceServer"; + // DPI_ServerNamePrompt, having type string + ParameterId["ServerNamePrompt"] = "serverNamePrompt"; + // DPI_Service, having type string + ParameterId["Service"] = "datasourceService"; + // DPI_ServiceNamePrompt, having type string + ParameterId["ServiceNamePrompt"] = "servicePrompt"; + // DPI_SheetFormatting, having type string + ParameterId["SheetFormatting"] = "sheetFormatting"; + // DPI_SlowMetadataSearchTerm, having type string + ParameterId["SlowMetadataSearchTerm"] = "slowMetadataSearchTerm"; + // DPI_StandardConnectionName, having type string + ParameterId["StandardConnectionName"] = "datasourceStandardConnectionName"; + // DPI_StandardConnectionPlaceholderText, having type string + ParameterId["StandardConnectionPlaceholderText"] = "standardConnectionPlaceholderText"; + // DPI_StoredProcedureParameterTitle, having type string + ParameterId["StoredProcedureParameterTitle"] = "storedProcedureParameterTitle"; + // DPI_TableAlias, having type string + ParameterId["TableAlias"] = "tableAlias"; + // DPI_RightTableAlias, having type string + ParameterId["RightTableAlias"] = "rightTableAlias"; + // DPI_TableCaption, having type string + ParameterId["TableCaption"] = "tableCaption"; + // DPI_TableCollectionName, having type string + ParameterId["TableCollectionName"] = "tableCollectionName"; + // DPI_TablePlaceholderText, having type string + ParameterId["TablePlaceholderText"] = "tablePlaceholderText"; + // DPI_TableRanking, having type string + ParameterId["TableRanking"] = "tableRanking"; + // DPI_TableSortKey, having type string + ParameterId["TableSortKey"] = "tableSortkey"; + // DPI_TableTooltip, having type string + ParameterId["TableTooltip"] = "tableTooltip"; + // DPI_TableToReplace, having type string + ParameterId["TableToReplace"] = "tableToReplace"; + // DPI_TableWarningMessage, having type string + ParameterId["TableWarningMessage"] = "tableWarningMessage"; + // DPI_TableauServerDatasourceDescription, having type string + ParameterId["TableauServerDatasourceDescription"] = "tableauServerDatasourceDescription"; + // DPI_TableauServerDatasourceLastExtract, having type string + ParameterId["TableauServerDatasourceLastExtract"] = "tableauServerDatasourceLastExtract"; + // DPI_TableauServerDatasourceModified, having type string + ParameterId["TableauServerDatasourceModified"] = "tableauServerDatasourceModified"; + // DPI_TableauServerDatasourceOwner, having type string + ParameterId["TableauServerDatasourceOwner"] = "tableauServerDatasourceOwner"; + // DPI_TableauServerDatasourcePath, having type string + ParameterId["TableauServerDatasourcePath"] = "tableauServerDatasourcePath"; + // DPI_TableauServerFetchSearchQuery, having type string + ParameterId["TableauServerFetchSearchQuery"] = "tableauServerFetchSearchQuery"; + // DPI_TableauServerName, having type string + ParameterId["TableauServerName"] = "tableauServerName"; + // DPI_TableauServerProjectName, having type string + ParameterId["TableauServerProjectName"] = "tableauServerProjectName"; + // DPI_TableauServerUsername, having type string + ParameterId["TableauServerUsername"] = "tableauServerUsername"; + // DPI_TransportType, having type string + ParameterId["TransportType"] = "transportType"; + // DPI_WarehouseName, having type string + ParameterId["WarehouseName"] = "datasourceWarehouseName"; + // DPI_WorkgroupWorkbookName, having type string + ParameterId["WorkgroupWorkbookName"] = "workgroupWorkbookName"; + // DPI_AnalyticsItemTooltip, having type string + ParameterId["AnalyticsItemTooltip"] = "analyticsItemTooltip"; + // DPI_Description, having type string + ParameterId["Description"] = "description"; + // DPI_DSClassCaption, having type string + ParameterId["DSClassCaption"] = "dsClassCaption"; + // DPI_Formula, having type string + ParameterId["Formula"] = "formula"; + // DPI_MessageText, having type string + ParameterId["MessageText"] = "messageText"; + // DPI_Datasource, having type string + ParameterId["Datasource"] = "datasource"; + // DPI_DatasourceSource, having type string + ParameterId["DatasourceSource"] = "datasourceSource"; + // DPI_DatasourceTarget, having type string + ParameterId["DatasourceTarget"] = "datasourceTarget"; + // DPI_FirstDatasource, having type string + ParameterId["FirstDatasource"] = "firstDatasource"; + // DPI_NewDatasource, having type string + ParameterId["NewDatasource"] = "newDatasource"; + // DPI_ParametersDatasource, having type string + ParameterId["ParametersDatasource"] = "parametersDatasource"; + // DPI_PrimaryDatasource, having type string + ParameterId["PrimaryDatasource"] = "primaryDatasource"; + // DPI_ConnectionDatabases, having type string[] + ParameterId["ConnectionDatabases"] = "connectionDatabases"; + // DPI_ConnectionSchemas, having type string[] + ParameterId["ConnectionSchemas"] = "connectionSchemas"; + // DPI_ConnectionWarehouses, having type string[] + ParameterId["ConnectionWarehouses"] = "connectionWarehouses"; + // DPI_DSClasses, having type string[] + ParameterId["DSClasses"] = "dsClasses"; + // DPI_PossibleChoices, having type string[] + ParameterId["PossibleChoices"] = "possibleChoices"; + // DPI_StandardConnections, having type string[] + ParameterId["StandardConnections"] = "standardConnections"; + // DPI_Strings, having type string[] + ParameterId["Strings"] = "strings"; + // DPI_TableauServerProjectNames, having type string[] + ParameterId["TableauServerProjectNames"] = "tableauServerProjectNames"; + // DPI_TableCaptions, having type string[] + ParameterId["TableCaptions"] = "tableCaptions"; + // DPI_DataValues, having type object[] + ParameterId["DataValues"] = "dataValues"; + // DPI_QueryBandErrors, having type object[] + ParameterId["QueryBandErrors"] = "queryBandErrors"; + // DPI_QueryBandParameters, having type object[] + ParameterId["QueryBandParameters"] = "queryBandParameters"; + // DPI_InitialSQLParameters, having type object[] + ParameterId["InitialSQLParameters"] = "initialSqlParameters"; + // DPI_ConnectionAttributes, having type Dictionary(of string) + ParameterId["ConnectionAttributes"] = "connectionAttrs"; + // DPI_ConnectionProps, having type Dictionary(of string) + ParameterId["ConnectionProps"] = "connectionProps"; + // DPI_DisplayNameMap, having type Dictionary(of string) + ParameterId["DisplayNameMap"] = "displayNameMap"; + // DPI_LookupTable, having type Dictionary(of string) + ParameterId["LookupTable"] = "lookupTable"; + // DPI_OAuthAttrs, having type Dictionary(of string) + ParameterId["OAuthAttrs"] = "oauthAttrs"; + // DPI_StringMap, having type Dictionary(of string) + ParameterId["StringMap"] = "stringMap"; + // DPI_TableRankingMap, having type Dictionary(of string) + ParameterId["TableRankingMap"] = "tableRankingMap"; + // DPI_WDCAttributes, having type Dictionary(of string) + ParameterId["WDCAttributes"] = "wdcAttrs"; + // DPI_ConnectorAttributes, having type Dictionary(of string) + ParameterId["ConnectorAttributes"] = "connectorAttrs"; + // DPI_TableRelevanceParams, having type Dictionary(of string) + ParameterId["TableRelevanceParams"] = "tableRelevanceParams"; + // DPI_ActualParameterParameter, having type string + ParameterId["ActualParameterParameter"] = "actualParameterParameter"; + // DPI_DataColumnName, having type string + ParameterId["DataColumnName"] = "dataColumnName"; + // DPI_LHSDataColumnName, having type string + ParameterId["LHSDataColumnName"] = "lhsDataColumnName"; + // DPI_RHSDataColumnName, having type string + ParameterId["RHSDataColumnName"] = "rhsDataColumnName"; + // DPI_FullCubeName, having type string + ParameterId["FullCubeName"] = "fullCubeName"; + // DPI_FullVariableName, having type string + ParameterId["FullVariableName"] = "fullVariableName"; + // DPI_SemanticRole, having type string + ParameterId["SemanticRole"] = "semanticRole"; + // DPI_StoredProcedureName, having type string + ParameterId["StoredProcedureName"] = "storedProcName"; + // DPI_TableName, having type string + ParameterId["TableName"] = "tableName"; + // DPI_AddedTableNames, having type string[] + ParameterId["AddedTableNames"] = "addedTableNames"; + // DPI_CoalesceGroupFields, having type string[] + ParameterId["CoalesceGroupFields"] = "coalesceGroupFields"; + // DPI_FieldNames, having type string[] + ParameterId["FieldNames"] = "fieldNames"; + // DPI_JoinFieldAliases, having type string[] + ParameterId["JoinFieldAliases"] = "joinField_aliases"; + // DPI_JoinInfoFields, having type string[] + ParameterId["JoinInfoFields"] = "joinInfoFields"; + // DPI_PivotGroupFields, having type string[] + ParameterId["PivotGroupFields"] = "pivotGroupFields"; + // DPI_RemovedTableNames, having type string[] + ParameterId["RemovedTableNames"] = "removedTableNames"; + // DPI_StoredProcedures, having type string[] + ParameterId["StoredProcedures"] = "storedProcedures"; + // DPI_TableNames, having type string[] + ParameterId["TableNames"] = "tableNames"; + // DPI_ColumnName, having type string + ParameterId["ColumnName"] = "columnName"; + // DPI_FieldName, having type string + ParameterId["FieldName"] = "fn"; + // DPI_GoogleSheetThumbnailImage, having type string + ParameterId["GoogleSheetThumbnailImage"] = "googleSheetThumbnailImage"; + // DPI_AttrMDWPassword, having type string + ParameterId["AttrMDWPassword"] = "widgetAttrMdwPassword"; + // DPI_AttrPassword, having type string + ParameterId["AttrPassword"] = "widgetAttrPassword"; + // DPI_DatasourcePassword, having type string + ParameterId["DatasourcePassword"] = "datasourcePassword"; + // DPI_FederatedKeychain, having type string + ParameterId["FederatedKeychain"] = "federatedKeychain"; + // DPI_DataParameterID, having type string + ParameterId["DataParameterID"] = "dataParamType"; + // DPI_ConnectServerWidgetType, having type ConnectServerWidgetType + ParameterId["ConnectServerWidgetType"] = "connectServerWidgetType"; + // DPI_AuthenticationMode, having type Mode + ParameterId["AuthenticationMode"] = "authMode"; + // DPI_ReconnectAuthMode, having type ReconnectMode + ParameterId["ReconnectAuthMode"] = "reconnectAuthMode"; + // DPI_CurrentAuthOption, having type AuthOption + ParameterId["CurrentAuthOption"] = "currAuthOption"; + // DPI_AuthOptionList, having type AuthOption[] + ParameterId["AuthOptionList"] = "authOptions"; + // DPI_ConnectionSpecificationType, having type ConnectionSpecificationType + ParameterId["ConnectionSpecificationType"] = "connectionSpecificationType"; + // DPI_DataType, having type DataType + ParameterId["DataType"] = "dataType"; + // DPI_LHSDataType, having type DataType + ParameterId["LHSDataType"] = "lhsDataType"; + // DPI_RHSDataType, having type DataType + ParameterId["RHSDataType"] = "rhsDataType"; + // DPI_DefaultFieldRole, having type FieldRole + ParameterId["DefaultFieldRole"] = "defaultFieldRole"; + // DPI_FieldRole, having type FieldRole + ParameterId["FieldRole"] = "fieldRole"; + // DPI_DefaultFieldType, having type FieldType + ParameterId["DefaultFieldType"] = "defaultFieldType"; + // DPI_FieldType, having type FieldType + ParameterId["FieldType"] = "fieldType"; + // DPI_FieldTypeList, having type FieldType[] + ParameterId["FieldTypeList"] = "fieldTypeList"; + // DPI_FieldTypeListDetail, having type FieldType[] + ParameterId["FieldTypeListDetail"] = "fieldTypeListDetail"; + // DPI_AggType, having type AggType + ParameterId["AggType"] = "aggregation"; + // DPI_DefaultAggType, having type AggType + ParameterId["DefaultAggType"] = "defaultAggregation"; + // DPI_ForecastAgg, having type AggType + ParameterId["ForecastAgg"] = "forecastSummarizeTo"; + // DPI_ForecastAutoAgg, having type AggType + ParameterId["ForecastAutoAgg"] = "forecastAutoSummarizeTo"; + // DPI_ForecastAutoRangeUnits, having type AggType + ParameterId["ForecastAutoRangeUnits"] = "forecastAutoRangeUnits"; + // DPI_ForecastEndOfRangeUnits, having type AggType + ParameterId["ForecastEndOfRangeUnits"] = "forecastEndOfRangeUnits"; + // DPI_ForecastNextRangeUnits, having type AggType + ParameterId["ForecastNextRangeUnits"] = "forecastNextRangeUnits"; + // DPI_SourceAgg, having type AggType + ParameterId["SourceAgg"] = "sourceAggregation"; + // DPI_TargetAgg, having type AggType + ParameterId["TargetAgg"] = "targetAggregation"; + // DPI_AggregateByAggTypes, having type AggType[] + ParameterId["AggregateByAggTypes"] = "aggregateByAggTypes"; + // DPI_AggregationValues, having type AggType[] + ParameterId["AggregationValues"] = "aggregationValues"; + // DPI_SortAggValues, having type AggType[] + ParameterId["SortAggValues"] = "sortAggValues"; + // DPI_ColumnClass, having type ColumnClass + ParameterId["ColumnClass"] = "columnClass"; + // DPI_ConnectionWidgetType, having type ConnectionWidgetType + ParameterId["ConnectionWidgetType"] = "connectionWidgetType"; + // DPI_TablePillIcon, having type TablePillIcon + ParameterId["TablePillIcon"] = "tablePillIconType"; + // DPI_EnumeratedEntityType, having type EntityType + ParameterId["EnumeratedEntityType"] = "enumeratedEntityType"; + // DPI_PickEntitySearchType, having type PickEntitySearchType + ParameterId["PickEntitySearchType"] = "entitySearchType"; + // DPI_ExpressionOp, having type Op + ParameterId["ExpressionOp"] = "expressionOp"; + // DPI_ExpressionOperatorCaption, having type ExpressionOperatorCaptionPresModel + ParameterId["ExpressionOperatorCaption"] = "expressionOperatorCaption"; + // DPI_RelationalExperessionOps, having type ExpressionOperatorCaptionPresModel[] + ParameterId["RelationalExperessionOps"] = "relationalExpressionOps"; + // DPI_HierarchyExpressionOps, having type ExpressionOperatorCaptionPresModel[] + ParameterId["HierarchyExpressionOps"] = "hierarchyExpressionOps"; + // DPI_DefaultSortDirection, having type SortDirection + ParameterId["DefaultSortDirection"] = "defSortOrder"; + // DPI_SortDirection, having type SortDirection + ParameterId["SortDirection"] = "sortOrder"; + // DPI_SortDirectionValues, having type SortDirection[] + ParameterId["SortDirectionValues"] = "sortDirectionValues"; + // DPI_CubeMetadataCategory, having type CubeMetadataCategory + ParameterId["CubeMetadataCategory"] = "cubeMetadataCategory"; + // DPI_CubeMetadataCategories, having type CubeMetadataCategory[] + ParameterId["CubeMetadataCategories"] = "cubeMetadataCategories"; + // DPI_GoogleBasicInfoType, having type GoogleBasicInfoType + ParameterId["GoogleBasicInfoType"] = "googleBasicInfoType"; + // DPI_GoogleAnalyticsDateRangeOptionType, having type DateRange + ParameterId["GoogleAnalyticsDateRangeOptionType"] = "googleAnalyticsDateRangeOptionType"; + // DPI_TableCalcType, having type TableCalcType + ParameterId["TableCalcType"] = "tableCalcType"; + // DPI_TableCalcTypeValues, having type TableCalcType[] + ParameterId["TableCalcTypeValues"] = "tableCalcTypeValues"; + // DPI_RelativeAddress, having type RelativeAddress + ParameterId["RelativeAddress"] = "relativeAddress"; + // DPI_RelativeValues, having type RelativeAddress[] + ParameterId["RelativeValues"] = "relativeValues"; + // DPI_OrderingType, having type OrderingType + ParameterId["OrderingType"] = "orderingType"; + // DPI_OrderingTypeValues, having type OrderingType[] + ParameterId["OrderingTypeValues"] = "orderingTypeValues"; + // DPI_CategoricalBinItemType, having type CategoricalBinItemType + ParameterId["CategoricalBinItemType"] = "categoricalBinItemType"; + // DPI_AuthenticationInfos, having type AuthenticationSettingsPresModel + ParameterId["AuthenticationInfos"] = "authInfo"; + // DPI_ConnectionWidgetParams, having type ConnectionParamsPresModel + ParameterId["ConnectionWidgetParams"] = "widgetConnectionParams"; + // DPI_ConnectionSettings, having type ConnectionSettingsPresModel + ParameterId["ConnectionSettings"] = "connectionSettings"; + // DPI_ReconnectAuthenticationSettings, having type AuthenticationSettingsPresModel + ParameterId["ReconnectAuthenticationSettings"] = "reconnectAuthSettings"; + // DPI_CubeConnectionSpecificationOption, having type CubeConnectionSpecificationOptionPresModel + ParameterId["CubeConnectionSpecificationOption"] = "cubeConnectionSpecificationOption"; + // DPI_CubeConnectionSpecificationOptions, having type CubeConnectionSpecificationOptionPresModel[] + ParameterId["CubeConnectionSpecificationOptions"] = "cubeConnectionSpecificationOptions"; + // DPI_CubeConnectionSpecification, having type CubeConnectionSpecificationPresModel + ParameterId["CubeConnectionSpecification"] = "cubeConnectionSpecification"; + // DPI_ConnectionSettingsOption, having type ConnectionSettingsOptionPresModel + ParameterId["ConnectionSettingsOption"] = "connectionSettingsOption"; + // DPI_ConnectionSettingsOptions, having type ConnectionSettingsOptionPresModel[] + ParameterId["ConnectionSettingsOptions"] = "connectionSettingsOptions"; + // DPI_StringCollation, having type StringCollationPresModel + ParameterId["StringCollation"] = "stringCollation"; + // DPI_DatabaseEnumeration, having type DatabaseEnumerationPresModel + ParameterId["DatabaseEnumeration"] = "databaseEnumeration"; + // DPI_SchemaEnumeration, having type SchemaEnumerationPresModel + ParameterId["SchemaEnumeration"] = "schemaEnumeration"; + // DPI_StandardConnectionEnumeration, having type StandardConnectionEnumerationPresModel + ParameterId["StandardConnectionEnumeration"] = "standardConnectionEnumeration"; + // DPI_StoredProcedureEnumeration, having type StoredProcedureEnumerationPresModel + ParameterId["StoredProcedureEnumeration"] = "storedProcedureEnumeration"; + // DPI_TableEnumeration, having type TableEnumerationPresModel + ParameterId["TableEnumeration"] = "tableEnumeration"; + // DPI_WarehouseEnumeration, having type WarehouseEnumerationPresModel + ParameterId["WarehouseEnumeration"] = "warehouseEnumeration"; + // DPI_SlowMetadataSchemaList, having type SlowMetadataSchemaListPresModel + ParameterId["SlowMetadataSchemaList"] = "slowMetadataSchemaList"; + // DPI_SlowMetadataTableList, having type SlowMetadataTableListPresModel + ParameterId["SlowMetadataTableList"] = "slowMetadataTableList"; + // DPI_CubeCatalog, having type CubeCatalogPresModel + ParameterId["CubeCatalog"] = "cubeCatalog"; + // DPI_CubeCatalogs, having type CubeCatalogPresModel[] + ParameterId["CubeCatalogs"] = "cubeCatalogs"; + // DPI_CubeCatalogEnumeration, having type CubeCatalogEnumerationPresModel + ParameterId["CubeCatalogEnumeration"] = "cubeCatalogEnumeration"; + // DPI_Cube, having type CubePresModel + ParameterId["Cube"] = "cube"; + // DPI_Cubes, having type CubePresModel[] + ParameterId["Cubes"] = "cubes"; + // DPI_CubeEnumeration, having type CubeEnumerationPresModel + ParameterId["CubeEnumeration"] = "cubeEnumeration"; + // DPI_GoogleAnalyticsBasicItem, having type GoogleAnalyticsBasicItemPresModel + ParameterId["GoogleAnalyticsBasicItem"] = "googleAnalyticsBasicItem"; + // DPI_GAMeasureSets, having type GoogleAnalyticsBasicItemPresModel[] + ParameterId["GAMeasureSets"] = "gaMeasureSets"; + // DPI_GoogleAnalyticsViews, having type GoogleAnalyticsBasicItemPresModel[] + ParameterId["GoogleAnalyticsViews"] = "googleAnalyticsViews"; + // DPI_GoogleAnalyticsProperties, having type GoogleAnalyticsBasicItemPresModel[] + ParameterId["GoogleAnalyticsProperties"] = "googleAnalyticsProperties"; + // DPI_GoogleBasicInfoItems, having type GoogleAnalyticsBasicItemPresModel[] + ParameterId["GoogleBasicInfoItems"] = "googleAnalyticsAccounts"; + // DPI_GoogleAnalyticsComplexItem, having type GoogleAnalyticsComplexItemPresModel + ParameterId["GoogleAnalyticsComplexItem"] = "googleAnalyticsComplexItem"; + // DPI_GoogleAnalyticsPossibleDimensions, having type GoogleAnalyticsComplexItemPresModel[] + ParameterId["GoogleAnalyticsPossibleDimensions"] = "googleAnalyticsPossibleDimensions"; + // DPI_GoogleAnalyticsPossibleMeasures, having type GoogleAnalyticsComplexItemPresModel[] + ParameterId["GoogleAnalyticsPossibleMeasures"] = "googleAnalyticsPossibleMeasures"; + // DPI_GoogleAnalyticsPossibleSegments, having type GoogleAnalyticsComplexItemPresModel[] + ParameterId["GoogleAnalyticsPossibleSegments"] = "googleAnalyticsPossibleSegments"; + // DPI_GoogleAnalyticsSelectedDimensions, having type GoogleAnalyticsComplexItemPresModel[] + ParameterId["GoogleAnalyticsSelectedDimensions"] = "googleAnalyticsSelectedDimensions"; + // DPI_GoogleAnalyticsSelectedMeasures, having type GoogleAnalyticsComplexItemPresModel[] + ParameterId["GoogleAnalyticsSelectedMeasures"] = "googleAnalyticsSelectedMeasures"; + // DPI_GoogleAnalyticsDateRangeOption, having type GoogleAnalyticsDateRangeOptionPresModel + ParameterId["GoogleAnalyticsDateRangeOption"] = "googleAnalyticsDateRangeOption"; + // DPI_GoogleAnalyticsDateRangeOptions, having type GoogleAnalyticsDateRangeOptionPresModel[] + ParameterId["GoogleAnalyticsDateRangeOptions"] = "googleAnalyticsDateRangeOptions"; + // DPI_GoogleAnalyticsEndDate, having type GoogleAnalyticsDatePresModel + ParameterId["GoogleAnalyticsEndDate"] = "googleAnalyticsEndDate"; + // DPI_GoogleAnalyticsStartDate, having type GoogleAnalyticsDatePresModel + ParameterId["GoogleAnalyticsStartDate"] = "googleAnalyticsStartDate"; + // DPI_GoogleAnalyticsDateRange, having type GoogleAnalyticsDateRangePresModel + ParameterId["GoogleAnalyticsDateRange"] = "googleAnalyticsDateRange"; + // DPI_GoogleAnalyticsQueryPartitioning, having type GoogleAnalyticsQueryPartitioningPresModel + ParameterId["GoogleAnalyticsQueryPartitioning"] = "googleAnalyticsQueryPartitioning"; + // DPI_GAConnectionDescription, having type GoogleAnalyticsConnectionDescriptionPresModel + ParameterId["GAConnectionDescription"] = "gaConnectionDescription"; + // DPI_GoogleSheetItem, having type GoogleSheetItemPresModel + ParameterId["GoogleSheetItem"] = "googleSheetItem"; + // DPI_GoogleSheetItems, having type GoogleSheetItemPresModel[] + ParameterId["GoogleSheetItems"] = "googleSheetItems"; + // DPI_GoogleSheetsListPresModel, having type GoogleSheetsListPresModel + ParameterId["GoogleSheetsListPresModel"] = "googleSheetsList"; + // DPI_GoogleSheetPanePresModel, having type GoogleSheetPanePresModel + ParameterId["GoogleSheetPanePresModel"] = "googleSheetPane"; + // DPI_TableauServerConnectionDescription, having type TableauServerConnectionDescriptionPresModel + ParameterId["TableauServerConnectionDescription"] = "tableauServerConnectionDescription"; + // DPI_InitialSQLPresModel, having type InitialSQLPresModel + ParameterId["InitialSQLPresModel"] = "initialSqlPresModel"; + // DPI_QueryBandingPresModel, having type QueryBandingPresModel + ParameterId["QueryBandingPresModel"] = "queryBandingPresModel"; + // DPI_SlowMetadata, having type SlowMetadataPresModel + ParameterId["SlowMetadata"] = "slowMetadata"; + // DPI_SlowMetadataSchemaSearchPresModel, having type SlowMetadataSearchPresModel + ParameterId["SlowMetadataSchemaSearchPresModel"] = "slowMetadataSchemaSearch"; + // DPI_SlowMetadataTableSearchPresModel, having type SlowMetadataSearchPresModel + ParameterId["SlowMetadataTableSearchPresModel"] = "slowMetadataTableSearch"; + // DPI_TableauServerProjectsPresModel, having type TableauServerProjectsPresModel + ParameterId["TableauServerProjectsPresModel"] = "tableauServerProjectsPresmodel"; + // DPI_TableauServerDataSourcePresModel, having type TableauServerDataSourcePresModel + ParameterId["TableauServerDataSourcePresModel"] = "tableauServerDataSourcePresmodel"; + // DPI_TableauServerDataSourcePresModels, having type TableauServerDataSourcePresModel[] + ParameterId["TableauServerDataSourcePresModels"] = "tableauServerDataSourcePresmodels"; + // DPI_TableauServerDataSourcesPresModel, having type TableauServerDataSourcesPresModel + ParameterId["TableauServerDataSourcesPresModel"] = "tableauServerDataSourcesPresmodel"; + // DPI_TableauServerDataPresModel, having type TableauServerDataPresModel + ParameterId["TableauServerDataPresModel"] = "tableauServerDataPresmodel"; + // DPI_StoredProcedureParameterPresModel, having type StoredProcedureParameterPresModel + ParameterId["StoredProcedureParameterPresModel"] = "storedProcedureParameter"; + // DPI_StoredProcedureParametersPresModel, having type StoredProcedureParameterPresModel[] + ParameterId["StoredProcedureParametersPresModel"] = "storedProcedureParameters"; + // DPI_CustomSQLInfo, having type CustomSQLInfoPresModel + ParameterId["CustomSQLInfo"] = "customSqlInfo"; + // DPI_ConnectionTableInfo, having type ConnectionTableInfoPresModel + ParameterId["ConnectionTableInfo"] = "connectionTableInfo"; + // DPI_TableInfos, having type ConnectionTableInfoPresModel[] + ParameterId["TableInfos"] = "tableInfos"; + // DPI_ConnectionDescription, having type ConnectionDescriptionPresModel + ParameterId["ConnectionDescription"] = "connectionDescription"; + // DPI_DataSourceParserValidationMode, having type DataSourceParserValidationMode + ParameterId["DataSourceParserValidationMode"] = "dataSourceParserValidationMode"; + // DPI_OAuthCredentialTypeInfo, having type OAuthCredentialTypeInfoPresModel + ParameterId["OAuthCredentialTypeInfo"] = "oauthCredentialTypeInfo"; + // DPI_OAuthCredentialTypeInfos, having type OAuthCredentialTypeInfoPresModel[] + ParameterId["OAuthCredentialTypeInfos"] = "oauthCredentialTypeInfos"; + // DPI_OAuthSettings, having type OAuthSettingsPresModel + ParameterId["OAuthSettings"] = "oauthSettings"; + // DPI_CredentialTypePropertiesFlag, having type CredentialTypePropertiesFlag + ParameterId["CredentialTypePropertiesFlag"] = "credentialTypePropertiesFlag"; + // DPI_CredentialTypePropertiesFlags, having type CredentialTypePropertiesFlag[] + ParameterId["CredentialTypePropertiesFlags"] = "credentialTypePropertiesFlags"; + // DPI_ConnectionTypeEnum, having type ConnectionTypeEnum + ParameterId["ConnectionTypeEnum"] = "connectionTypeEnum"; + // DPI_ConnectorType, having type ConnectorType + ParameterId["ConnectorType"] = "connectorType"; + // DPI_PdfPagePicker, having type PdfPagePickerPresModel + ParameterId["PdfPagePicker"] = "pdfPagePicker"; + // DPI_ActivateNew, having type bool + ParameterId["ActivateNew"] = "activateNew"; + // DPI_AddActions, having type bool + ParameterId["AddActions"] = "addActions"; + // DPI_AddAsFloating, having type bool + ParameterId["AddAsFloating"] = "addAsFloating"; + // DPI_AddColorDictionary, having type bool + ParameterId["AddColorDictionary"] = "addColorDictionary"; + // DPI_AddDroplines, having type bool + ParameterId["AddDroplines"] = "addDroplines"; + // DPI_AddHeaders, having type bool + ParameterId["AddHeaders"] = "addHeaders"; + // DPI_AddHighlighting, having type bool + ParameterId["AddHighlighting"] = "addHighlighting"; + // DPI_AddImageDictionary, having type bool + ParameterId["AddImageDictionary"] = "addImageDictionary"; + // DPI_AddMarkLabels, having type bool + ParameterId["AddMarkLabels"] = "addMarkLabels"; + // DPI_AddPages, having type bool + ParameterId["AddPages"] = "addPages"; + // DPI_AddSelection, having type bool + ParameterId["AddSelection"] = "addSelection"; + // DPI_AddToFolder, having type bool + ParameterId["AddToFolder"] = "addToFolder"; + // DPI_AddVizData, having type bool + ParameterId["AddVizData"] = "addVizData"; + // DPI_AlertConditionMet, having type bool + ParameterId["AlertConditionMet"] = "alertConditionMet"; + // DPI_AllFields, having type bool + ParameterId["AllFields"] = "allFields"; + // DPI_AllOnEmpty, having type bool + ParameterId["AllOnEmpty"] = "allOnEmpty"; + // DPI_AllPages, having type bool + ParameterId["AllPages"] = "includeAllPages"; + // DPI_AllowPreviewSizeChange, having type bool + ParameterId["AllowPreviewSizeChange"] = "allowPreviewSizeChange"; + // DPI_AllSelectedIsEffectivelyRangeTypeAll, having type bool + ParameterId["AllSelectedIsEffectivelyRangeTypeAll"] = "allSelectedIsEffectivelyRangeTypeAll"; + // DPI_AllStoryPoints, having type bool + ParameterId["AllStoryPoints"] = "allStorypoints"; + // DPI_AllowAllRange, having type bool + ParameterId["AllowAllRange"] = "allowAllRange"; + // DPI_AllowCreatingNewParameters, having type bool + ParameterId["AllowCreatingNewParameters"] = "allowCreatingNewParameters"; + // DPI_AllowDuplicateFieldDropOnFilterShelf, having type bool + ParameterId["AllowDuplicateFieldDropOnFilterShelf"] = "allowDuplicateFieldDropOnFilterShelf"; + // DPI_AllowFilterPreset, having type bool + ParameterId["AllowFilterPreset"] = "allowFilterPreset"; + // DPI_AllowHoverActions, having type bool + ParameterId["AllowHoverActions"] = "allowHoverActions"; + // DPI_AllowHyphenation, having type bool + ParameterId["AllowHyphenation"] = "allowHyphenation"; + // DPI_AllowJoinOnCalc, having type bool + ParameterId["AllowJoinOnCalc"] = "allowJoinOnCalc"; + // DPI_AllowManualRange, having type bool + ParameterId["AllowManualRange"] = "allowManualRange"; + // DPI_AllowMapping, having type bool + ParameterId["AllowMapping"] = "allowMapping"; + // DPI_AllowMultiSelect, having type bool + ParameterId["AllowMultiSelect"] = "allowMultiSelect"; + // DPI_AllowNull, having type bool + ParameterId["AllowNull"] = "allowNull"; + // DPI_AllowPanZoom, having type bool + ParameterId["AllowPanZoom"] = "allowPanZoom"; + // DPI_AllowPatternBased, having type bool + ParameterId["AllowPatternBased"] = "allowPatternBasedUnion"; + // DPI_AllowPromptText, having type bool + ParameterId["AllowPromptText"] = "allowPromptText"; + // DPI_AllowSaveDataSource, having type bool + ParameterId["AllowSaveDataSource"] = "allowSaveDataSource"; + // DPI_AllowWholeDate, having type bool + ParameterId["AllowWholeDate"] = "allowWholeDate"; + // DPI_AllowWork, having type bool + ParameterId["AllowWork"] = "allowWork"; + // DPI_AllowWrap, having type bool + ParameterId["AllowWrap"] = "allowWrap"; + // DPI_AppIs32Bit, having type bool + ParameterId["AppIs32Bit"] = "appIs32Bit"; + // DPI_AppIs64Bit, having type bool + ParameterId["AppIs64Bit"] = "appIs64Bit"; + // DPI_AppIsBeta, having type bool + ParameterId["AppIsBeta"] = "appIsBeta"; + // DPI_AppIsOEM, having type bool + ParameterId["AppIsOEM"] = "appIsOem"; + // DPI_AppendTde, having type bool + ParameterId["AppendTde"] = "appendTde"; + // DPI_ApplyColors, having type bool + ParameterId["ApplyColors"] = "applyColors"; + // DPI_ApplyNewSelection, having type bool + ParameterId["ApplyNewSelection"] = "applyNewSelection"; + // DPI_AreConfidenceBandsValid, having type bool + ParameterId["AreConfidenceBandsValid"] = "areConfidenceBandsValid"; + // DPI_AreDataSourceFiltersVisible, having type bool + ParameterId["AreDataSourceFiltersVisible"] = "areDataSourceFiltersVisible"; + // DPI_AreExtractFiltersEnabled, having type bool + ParameterId["AreExtractFiltersEnabled"] = "areExtractFiltersEnabled"; + // DPI_AreTotalsUsed, having type bool + ParameterId["AreTotalsUsed"] = "areTotalsUsed"; + // DPI_AtTheLevelFieldIsInvalid, having type bool + ParameterId["AtTheLevelFieldIsInvalid"] = "atTheLevelFieldIsInvalid"; + // DPI_AutoURL, having type bool + ParameterId["AutoURL"] = "autoUrl"; + // DPI_AutoUpdate, having type bool + ParameterId["AutoUpdate"] = "autoUpdate"; + // DPI_BackingSheetIsDashboard, having type bool + ParameterId["BackingSheetIsDashboard"] = "isBackingSheetDashboard"; + // DPI_BeginDataSourcePresModelUpdate, having type bool + ParameterId["BeginDataSourcePresModelUpdate"] = "beginDataSourcePresModelUpdate"; + // DPI_AggregateDrillUp, having type bool + ParameterId["AggregateDrillUp"] = "boolAggregateDrillUp"; + // DPI_BoxplotMarkExclusion, having type bool + ParameterId["BoxplotMarkExclusion"] = "boxplotMarkExclusion"; + // DPI_BreakPageOnPane, having type bool + ParameterId["BreakPageOnPane"] = "breakPageOnPane"; + // DPI_BrushLegends, having type bool + ParameterId["BrushLegends"] = "brushLegends"; + // DPI_CachePresModels, having type bool + ParameterId["CachePresModels"] = "cachePresModels"; + // DPI_CanAddConnections, having type bool + ParameterId["CanAddConnections"] = "canAddConnections"; + // DPI_SortPillCanBeDragged, having type bool + ParameterId["SortPillCanBeDragged"] = "sortPillCanBeDragged"; + // DPI_CanAddTable, having type bool + ParameterId["CanAddTable"] = "canAddTable"; + // DPI_CanAnalyzeData, having type bool + ParameterId["CanAnalyzeData"] = "canAnalyzeData"; + // DPI_CanChangeDataType, having type bool + ParameterId["CanChangeDataType"] = "canChangeDataType"; + // DPI_CanChangeSemanticRole, having type bool + ParameterId["CanChangeSemanticRole"] = "canChangeSemanticRole"; + // DPI_CanDerive, having type bool + ParameterId["CanDerive"] = "canDerive"; + // DPI_CanDrop, having type bool + ParameterId["CanDrop"] = "canDrop"; + // DPI_CanEdit, having type bool + ParameterId["CanEdit"] = "canEdit"; + // DPI_CanEditLegendColor, having type bool + ParameterId["CanEditLegendColor"] = "canEditLegendColor"; + // DPI_CanEnableCenter, having type bool + ParameterId["CanEnableCenter"] = "canEnableCenter"; + // DPI_CanShowAdvancedSettings, having type bool + ParameterId["CanShowAdvancedSettings"] = "canShowAdvancedSettings"; + // DPI_CanEnableFilterStateButton, having type bool + ParameterId["CanEnableFilterStateButton"] = "canEnableFilterStateButton"; + // DPI_CanFloat, having type bool + ParameterId["CanFloat"] = "canFloat"; + // DPI_CanHaveTitle, having type bool + ParameterId["CanHaveTitle"] = "canHaveTitle"; + // DPI_CanIgnoreUpdate, having type bool + ParameterId["CanIgnoreUpdate"] = "canIgnoreUpdate"; + // DPI_CanNavigateBack, having type bool + ParameterId["CanNavigateBack"] = "canNavigateBack"; + // DPI_CanNavigateForward, having type bool + ParameterId["CanNavigateForward"] = "canNavigateForward"; + // DPI_CanScrollX, having type bool + ParameterId["CanScrollX"] = "canScrollX"; + // DPI_CanScrollY, having type bool + ParameterId["CanScrollY"] = "canScrollY"; + // DPI_CanSetDomain, having type bool + ParameterId["CanSetDomain"] = "canSetDomain"; + // DPI_CanSetMapUnit, having type bool + ParameterId["CanSetMapUnit"] = "canSetMapUnit"; + // DPI_CanShowApplyButton, having type bool + ParameterId["CanShowApplyButton"] = "canShowApplyButton"; + // DPI_CanShowFilterStateButton, having type bool + ParameterId["CanShowFilterStateButton"] = "canShowFilterStateButton"; + // DPI_CanShowMoreFewerButton, having type bool + ParameterId["CanShowMoreFewerButton"] = "canShowMoreFewerButton"; + // DPI_CanShowSyncClientOptions, having type bool + ParameterId["CanShowSyncClientOptions"] = "canShowSyncClientOptions"; + // DPI_CanSort, having type bool + ParameterId["CanSort"] = "canSort"; + // DPI_CanSortOrdinally, having type bool + ParameterId["CanSortOrdinally"] = "canSortOrdinal"; + // DPI_CanToggleAutomaticDrill, having type bool + ParameterId["CanToggleAutomaticDrill"] = "canToggleAutomaticDrill"; + // DPI_CanToggleGeographicSearch, having type bool + ParameterId["CanToggleGeographicSearch"] = "canToggleGeographicSearch"; + // DPI_CanToggleMapScale, having type bool + ParameterId["CanToggleMapScale"] = "canToggleMapScale"; + // DPI_CanUseFullColorRange, having type bool + ParameterId["CanUseFullColorRange"] = "canUseFullColorRange"; + // DPI_CanAddToDrillPath, having type bool + ParameterId["CanAddToDrillPath"] = "canAddToDrillPath"; + // DPI_CenterHorizontally, having type bool + ParameterId["CenterHorizontally"] = "centerHorizontally"; + // DPI_CenterVertically, having type bool + ParameterId["CenterVertically"] = "centerVertically"; + // DPI_ChangeAllFields, having type bool + ParameterId["ChangeAllFields"] = "changeAllFields"; + // DPI_Changed, having type bool + ParameterId["Changed"] = "changed"; + // DPI_ClearBrushing, having type bool + ParameterId["ClearBrushing"] = "clearBrushing"; + // DPI_ClearSort, having type bool + ParameterId["ClearSort"] = "clearSort"; + // DPI_ClearView, having type bool + ParameterId["ClearView"] = "clearView"; + // DPI_Collapsed, having type bool + ParameterId["Collapsed"] = "collapsed"; + // DPI_ConsolidateInCommit, having type bool + ParameterId["ConsolidateInCommit"] = "consolidateInCommit"; + // DPI_ClusterEnableScaledCheckbox, having type bool + ParameterId["ClusterEnableScaledCheckbox"] = "clusterEnableScaledCheckbox"; + // DPI_CommitPillFinished, having type bool + ParameterId["CommitPillFinished"] = "commitPillFinished"; + // DPI_CompressArrays, having type bool + ParameterId["CompressArrays"] = "compressArrays"; + // DPI_ComputeCompoundedRate, having type bool + ParameterId["ComputeCompoundedRate"] = "computeCompoundedRate"; + // DPI_ConfidenceIntervalAllowed, having type bool + ParameterId["ConfidenceIntervalAllowed"] = "confidenceIntervalAllowed"; + // DPI_ConfigIsDesktopStandard, having type bool + ParameterId["ConfigIsDesktopStandard"] = "configIsDesktopStandard"; + // DPI_ConfigIsInteractor, having type bool + ParameterId["ConfigIsInteractor"] = "configIsInteractor"; + // DPI_ConfigIsPublic, having type bool + ParameterId["ConfigIsPublic"] = "configIsPublic"; + // DPI_ConfigIsReader, having type bool + ParameterId["ConfigIsReader"] = "configIsReader"; + // DPI_ContainsQuant, having type bool + ParameterId["ContainsQuant"] = "containsQuant"; + // DPI_ContainsValidDatasources, having type bool + ParameterId["ContainsValidDatasources"] = "containsValidDatasources"; + // DPI_ControllerMissing, having type bool + ParameterId["ControllerMissing"] = "controllerMissing"; + // DPI_CreateExtractForPublish, having type bool + ParameterId["CreateExtractForPublish"] = "createExtractForPublish"; + // DPI_CrossTab, having type bool + ParameterId["CrossTab"] = "crossTab"; + // DPI_CullLabels, having type bool + ParameterId["CullLabels"] = "cullLabels"; + // DPI_CurrentCustViewIdFlag, having type bool + ParameterId["CurrentCustViewIdFlag"] = "isCurrentCustViewIdValid"; + // DPI_DashboardEnableSnap, having type bool + ParameterId["DashboardEnableSnap"] = "dashboardEnableSnap"; + // DPI_DashboardShowGrid, having type bool + ParameterId["DashboardShowGrid"] = "dashboardShowGrid"; + // DPI_DataGridSortOrder, having type bool + ParameterId["DataGridSortOrder"] = "datagridSortOrder"; + // DPI_DeleteExtract, having type bool + ParameterId["DeleteExtract"] = "deleteExtract"; + // DPI_DeleteOnlySpecifiedSelection, having type bool + ParameterId["DeleteOnlySpecifiedSelection"] = "deleteOnlySpecifiedSelection"; + // DPI_DeleteOrphans, having type bool + ParameterId["DeleteOrphans"] = "deleteOrphans"; + // DPI_DisabledDataConnectionClassNames, having type bool + ParameterId["DisabledDataConnectionClassNames"] = "disabledDataConnectionClassNames"; + // DPI_DisablePresModelHandler, having type bool + ParameterId["DisablePresModelHandler"] = "disablePresModelHandler"; + // DPI_DisplayDate, having type bool + ParameterId["DisplayDate"] = "displayDate"; + // DPI_DisplayTime, having type bool + ParameterId["DisplayTime"] = "displayTime"; + // DPI_DoDropUIAction, having type bool + ParameterId["DoDropUIAction"] = "doDropUiAction"; + // DPI_DoMerge, having type bool + ParameterId["DoMerge"] = "doMerge"; + // DPI_DoPreDropUIAction, having type bool + ParameterId["DoPreDropUIAction"] = "doPreDropUiAction"; + // DPI_DoQuery, having type bool + ParameterId["DoQuery"] = "doQuery"; + // DPI_DragHorz, having type bool + ParameterId["DragHorz"] = "dragHorz"; + // DPI_DrillDown, having type bool + ParameterId["DrillDown"] = "drillDown"; + // DPI_DropToXAxis, having type bool + ParameterId["DropToXAxis"] = "dropToXAxis"; + // DPI_DropToYAxis, having type bool + ParameterId["DropToYAxis"] = "dropToYAxis"; + // DPI_DropUnnamedFields, having type bool + ParameterId["DropUnnamedFields"] = "dropUnnamedFields"; + // DPI_EditExisting, having type bool + ParameterId["EditExisting"] = "editExisting"; + // DPI_EditingConnection, having type bool + ParameterId["EditingConnection"] = "editingConnection"; + // DPI_EmbedCredentials, having type bool + ParameterId["EmbedCredentials"] = "embedCredentials"; + // DPI_EmbedOAuthCredential, having type bool + ParameterId["EmbedOAuthCredential"] = "embedOauthCredentials"; + // DPI_EmptyHighlightFogAll, having type bool + ParameterId["EmptyHighlightFogAll"] = "emptyHighlightFogAll"; + // DPI_EnableAlphabeticSort, having type bool + ParameterId["EnableAlphabeticSort"] = "enableAlphabeticSort"; + // DPI_EnableAutomaticDrill, having type bool + ParameterId["EnableAutomaticDrill"] = "enableAutomaticDrill"; + // DPI_EnableConfidenceBands, having type bool + ParameterId["EnableConfidenceBands"] = "enableConfidenceBands"; + // DPI_EnableDataOrderSort, having type bool + ParameterId["EnableDataOrderSort"] = "enableDataOrderSort"; + // DPI_EnableFieldSort, having type bool + ParameterId["EnableFieldSort"] = "enableFieldSort"; + // DPI_EnableInstantAnalytics, having type bool + ParameterId["EnableInstantAnalytics"] = "enableInstantAnalytics"; + // DPI_EnableLines, having type bool + ParameterId["EnableLines"] = "enableLines"; + // DPI_EnableManualSort, having type bool + ParameterId["EnableManualSort"] = "enableManualSort"; + // DPI_EnableMarks, having type bool + ParameterId["EnableMarks"] = "enableMarks"; + // DPI_EnableMultipleSelection, having type bool + ParameterId["EnableMultipleSelection"] = "enableMultipleSelection"; + // DPI_EnablePrefetching, having type bool + ParameterId["EnablePrefetching"] = "enablePrefetching"; + // DPI_EnableTableCalcDensification, having type bool + ParameterId["EnableTableCalcDensification"] = "enableTableCalcDensification"; + // DPI_EnableTooltips, having type bool + ParameterId["EnableTooltips"] = "enableTooltips"; + // DPI_EndDataSourcePresModelUpdate, having type bool + ParameterId["EndDataSourcePresModelUpdate"] = "endDataSourcePresModelUpdate"; + // DPI_EstimateNulls, having type bool + ParameterId["EstimateNulls"] = "estimateNulls"; + // DPI_Exclude, having type bool + ParameterId["Exclude"] = "exclude"; + // DPI_ExcludeColor, having type bool + ParameterId["ExcludeColor"] = "excludeColor"; + // DPI_ExcludeCubeDenorm, having type bool + ParameterId["ExcludeCubeDenorm"] = "excludeCubeDenorm"; + // DPI_ExcludeInterceptEnabled, having type bool + ParameterId["ExcludeInterceptEnabled"] = "excludeInterceptEnabled"; + // DPI_ExcludeLocalFunctions, having type bool + ParameterId["ExcludeLocalFunctions"] = "excludeLocalFunctions"; + // DPI_ExportDashboardImageFromSheet, having type bool + ParameterId["ExportDashboardImageFromSheet"] = "exportImageSheetAsDashboard"; + // DPI_ExtSvcConfigIsAuthEnabled, having type bool + ParameterId["ExtSvcConfigIsAuthEnabled"] = "extSvcConfigIsAuthEnabled"; + // DPI_ExtractFullRefresh, having type bool + ParameterId["ExtractFullRefresh"] = "extractFullRefresh"; + // DPI_ExtractNeedsRefresh, having type bool + ParameterId["ExtractNeedsRefresh"] = "extractNeedsRefresh"; + // DPI_ExtractPending, having type bool + ParameterId["ExtractPending"] = "extractPending"; + // DPI_ExtractSelected, having type bool + ParameterId["ExtractSelected"] = "extractSelected"; + // DPI_FederatableOnly, having type bool + ParameterId["FederatableOnly"] = "federatableOnly"; + // DPI_FieldSortOrder, having type bool + ParameterId["FieldSortOrder"] = "fieldSortOrder"; + // DPI_FieldSupportsContains, having type bool + ParameterId["FieldSupportsContains"] = "fieldSupportsContains"; + // DPI_FieldSupportsEndsWith, having type bool + ParameterId["FieldSupportsEndsWith"] = "fieldSupportsEndsWith"; + // DPI_FieldSupportsStartsWith, having type bool + ParameterId["FieldSupportsStartsWith"] = "fieldSupportsStartsWith"; + // DPI_FillAbove, having type bool + ParameterId["FillAbove"] = "fillAbove"; + // DPI_FillBelow, having type bool + ParameterId["FillBelow"] = "fillBelow"; + // DPI_FillWithZeroes, having type bool + ParameterId["FillWithZeroes"] = "fillZeroes"; + // DPI_FilterIsNamed, having type bool + ParameterId["FilterIsNamed"] = "filterIsNamed"; + // DPI_Focus, having type bool + ParameterId["Focus"] = "focus"; + // DPI_ForInternalUse, having type bool + ParameterId["ForInternalUse"] = "internalUse"; + // DPI_ForceBrowserRendering, having type bool + ParameterId["ForceBrowserRendering"] = "forceBrowserRendering"; + // DPI_ForceCache, having type bool + ParameterId["ForceCache"] = "forceCache"; + // DPI_ForceColorFromApp, having type bool + ParameterId["ForceColorFromApp"] = "forceColorFromApp"; + // DPI_ForceConnectionAttempt, having type bool + ParameterId["ForceConnectionAttempt"] = "forceConnectionAttempt"; + // DPI_ForceConsolidateInCommit, having type bool + ParameterId["ForceConsolidateInCommit"] = "forceConsolidateInCommit"; + // DPI_ForceExtractRefresh, having type bool + ParameterId["ForceExtractRefresh"] = "extractForceRefresh"; + // DPI_ForceInterceptZero, having type bool + ParameterId["ForceInterceptZero"] = "forceInterceptZero"; + // DPI_ForceOldConnectExperience, having type bool + ParameterId["ForceOldConnectExperience"] = "forceOldConnectExperience"; + // DPI_ForceToggleHighlightStateOn, having type bool + ParameterId["ForceToggleHighlightStateOn"] = "forceHighlightOn"; + // DPI_ForceWholeDate, having type bool + ParameterId["ForceWholeDate"] = "forceWholeDate"; + // DPI_ForecastSelected, having type bool + ParameterId["ForecastSelected"] = "forecastSelected"; + // DPI_ForecastUseAutoAgg, having type bool + ParameterId["ForecastUseAutoAgg"] = "forecastUseAutoSummarize"; + // DPI_ForJoin, having type bool + ParameterId["ForJoin"] = "forJoin"; + // DPI_FormatDataValueLocally, having type bool + ParameterId["FormatDataValueLocally"] = "formatDataValueLocally"; + // DPI_FormatIfColumn, having type bool + ParameterId["FormatIfColumn"] = "formatIfColumn"; + // DPI_FormatIfParameter, having type bool + ParameterId["FormatIfParameter"] = "formatIfParameter"; + // DPI_GeographicSearchIsDataLoaded, having type bool + ParameterId["GeographicSearchIsDataLoaded"] = "geographicSearchDataLoaded"; + // DPI_GeographicSearchLoadDataAsync, having type bool + ParameterId["GeographicSearchLoadDataAsync"] = "geographicSearchLoadDataAsync"; + // DPI_GroupByAll, having type bool + ParameterId["GroupByAll"] = "groupByAll"; + // DPI_HasAlias, having type bool + ParameterId["HasAlias"] = "hasAlias"; + // DPI_HasAllMember, having type bool + ParameterId["HasAllMember"] = "hasAllMember"; + // DPI_HasApply, having type bool + ParameterId["HasApply"] = "hasApply"; + // DPI_HasBackgroundImage, having type bool + ParameterId["HasBackgroundImage"] = "hasBackgroundImage"; + // DPI_HasBeenDismissed, having type bool + ParameterId["HasBeenDismissed"] = "hasBeenDismissed"; + // DPI_HasCaption, having type bool + ParameterId["HasCaption"] = "hasCaption"; + // DPI_HasCondition, having type bool + ParameterId["HasCondition"] = "hasCondition"; + // DPI_HasConnectPermissions, having type bool + ParameterId["HasConnectPermissions"] = "hasConnectPermissions"; + // DPI_HasDashboard, having type bool + ParameterId["HasDashboard"] = "hasDashboard"; + // DPI_HasDownloadPermissions, having type bool + ParameterId["HasDownloadPermissions"] = "hasDownloadPermissions"; + // DPI_HasDrill, having type bool + ParameterId["HasDrill"] = "hasDrill"; + // DPI_HasExclude, having type bool + ParameterId["HasExclude"] = "hasExclude"; + // DPI_HasFill, having type bool + ParameterId["HasFill"] = "hasFill"; + // DPI_HasLabels, having type bool + ParameterId["HasLabels"] = "hasLabels"; + // DPI_HasLimit, having type bool + ParameterId["HasLimit"] = "hasLimit"; + // DPI_HasLine, having type bool + ParameterId["HasLine"] = "hasLine"; + // DPI_HasModifiedAxes, having type bool + ParameterId["HasModifiedAxes"] = "hasModifiedAxes"; + // DPI_HasNonRootCalculations, having type bool + ParameterId["HasNonRootCalculations"] = "hasNonRootCalculations"; + // DPI_HasPattern, having type bool + ParameterId["HasPattern"] = "hasPattern"; + // DPI_HasPublishGuidanceResults, having type bool + ParameterId["HasPublishGuidanceResults"] = "hasPublishGuidanceResults"; + // DPI_HasSelection, having type bool + ParameterId["HasSelection"] = "hasSelection"; + // DPI_HasServerCredentials, having type bool + ParameterId["HasServerCredentials"] = "hasServerCredentials"; + // DPI_HasSpace, having type bool + ParameterId["HasSpace"] = "hasSpace"; + // DPI_HasStoredProcedure, having type bool + ParameterId["HasStoredProcedure"] = "hasStoredProcedure"; + // DPI_HasStringCalculatedMeasures, having type bool + ParameterId["HasStringCalculatedMeasures"] = "hasStringCalculatedMeasures"; + // DPI_HasTableCalcData, having type bool + ParameterId["HasTableCalcData"] = "hasTableCalcData"; + // DPI_HasTitle, having type bool + ParameterId["HasTitle"] = "hasTitle"; + // DPI_HasUserSpecificContent, having type bool + ParameterId["HasUserSpecificContent"] = "hasUserSpecificContent"; + // DPI_HasUnjoinedTable, having type bool + ParameterId["HasUnjoinedTable"] = "hasUnjoinedTable"; + // DPI_HasVarArgs, having type bool + ParameterId["HasVarArgs"] = "hasVarArgs"; + // DPI_HasVisitedWDCPage, having type bool + ParameterId["HasVisitedWDCPage"] = "hasVisitedWdcPage"; + // DPI_IgnoreAliases, having type bool + ParameterId["IgnoreAliases"] = "ignoreAliases"; + // DPI_IgnoreDomain, having type bool + ParameterId["IgnoreDomain"] = "ignoreDomain"; + // DPI_IgnoreSelection, having type bool + ParameterId["IgnoreSelection"] = "ignoreSelection"; + // DPI_IncludeAllColumns, having type bool + ParameterId["IncludeAllColumns"] = "includeAllColumns"; + // DPI_IncludeContext, having type bool + ParameterId["IncludeContext"] = "includeContext"; + // DPI_IncludeDashboardPresModels, having type bool + ParameterId["IncludeDashboardPresModels"] = "includeDashboardPresModels"; + // DPI_IncludeItemSet, having type bool + ParameterId["IncludeItemSet"] = "includeItemSet"; + // DPI_IncludeLocalFiles, having type bool + ParameterId["IncludeLocalFiles"] = "includeLocalFiles"; + // DPI_IncludeOtherSelected, having type bool + ParameterId["IncludeOtherSelected"] = "includeOtherSelected"; + // DPI_IncludeNulls, having type bool + ParameterId["IncludeNulls"] = "includeNulls"; + // DPI_IncludeParent, having type bool + ParameterId["IncludeParent"] = "includeParent"; + // DPI_IncludeSelections, having type bool + ParameterId["IncludeSelections"] = "includeSelections"; + // DPI_IncludeSiblings, having type bool + ParameterId["IncludeSiblings"] = "includeSiblings"; + // DPI_IncludeStories, having type bool + ParameterId["IncludeStories"] = "includeStories"; + // DPI_IncludeSubfolders, having type bool + ParameterId["IncludeSubfolders"] = "includeSubfolders"; + // DPI_IncludeVolatileProps, having type bool + ParameterId["IncludeVolatileProps"] = "includeVolatileProps"; + // DPI_IncludesTag, having type bool + ParameterId["IncludesTag"] = "includesTag"; + // DPI_InsertAfter, having type bool + ParameterId["InsertAfter"] = "insertAfter"; + // DPI_InsertAtEnd, having type bool + ParameterId["InsertAtEnd"] = "insertAtEnd"; + // DPI_InstantAnalyticsAllowed, having type bool + ParameterId["InstantAnalyticsAllowed"] = "instantAnalyticsAllowed"; + // DPI_IntegerCoordinates, having type bool + ParameterId["IntegerCoordinates"] = "intCoords"; + // DPI_InvalidatedLayout, having type bool + ParameterId["InvalidatedLayout"] = "invalidatedLayout"; + // DPI_IsActive, having type bool + ParameterId["IsActive"] = "isActive"; + // DPI_IsAddToFilter, having type bool + ParameterId["IsAddToFilter"] = "isAddToFilterButtonChecked"; + // DPI_IsAllButtonVisible, having type bool + ParameterId["IsAllButtonVisible"] = "isAllButtonVisible"; + // DPI_IsAllowedInCalcs, having type bool + ParameterId["IsAllowedInCalcs"] = "isAllowedInCalcs"; + // DPI_IsAppMapSource, having type bool + ParameterId["IsAppMapSource"] = "isAppMapSource"; + // DPI_IsArchive, having type bool + ParameterId["IsArchive"] = "isArchive"; + // DPI_IsAuthoringMode, having type bool + ParameterId["IsAuthoringMode"] = "isAuthoringMode"; + // DPI_IsAuto, having type bool + ParameterId["IsAuto"] = "isAuto"; + // DPI_IsAutoClear, having type bool + ParameterId["IsAutoClear"] = "isAutoClear"; + // DPI_IsAutoColumn, having type bool + ParameterId["IsAutoColumn"] = "isAutoColumn"; + // DPI_IsAutoHidden, having type bool + ParameterId["IsAutoHidden"] = "isAutoHidden"; + // DPI_IsAutoSelect, having type bool + ParameterId["IsAutoSelect"] = "isAutoSelect"; + // DPI_IsBold, having type bool + ParameterId["IsBold"] = "isBold"; + // DPI_IsBorderVisible, having type bool + ParameterId["IsBorderVisible"] = "isBorderVisible"; + // DPI_IsBoxplot, having type bool + ParameterId["IsBoxplot"] = "isBoxplot"; + // DPI_IsCapable, having type bool + ParameterId["IsCapable"] = "isCapable"; + // DPI_IsCaptured, having type bool + ParameterId["IsCaptured"] = "isCaptured"; + // DPI_IsCentered, having type bool + ParameterId["IsCentered"] = "isCentered"; + // DPI_IsChecked, having type bool + ParameterId["IsChecked"] = "isChecked"; + // DPI_IsColorDiverging, having type bool + ParameterId["IsColorDiverging"] = "isColorDiverging"; + // DPI_IsColorStepped, having type bool + ParameterId["IsColorStepped"] = "isColorStepped"; + // DPI_IsCombinedField, having type bool + ParameterId["IsCombinedField"] = "isCombinedField"; + // DPI_IsConnected, having type bool + ParameterId["IsConnected"] = "isConnected"; + // DPI_IsContextMenuAllowed, having type bool + ParameterId["IsContextMenuAllowed"] = "isContextMenuAllowed"; + // DPI_IsContinuous, having type bool + ParameterId["IsContinuous"] = "isContinuous"; + // DPI_IsCopy, having type bool + ParameterId["IsCopy"] = "isCopy"; + // DPI_IsCustomPalette, having type bool + ParameterId["IsCustomPalette"] = "isCustomPalette"; + // DPI_IsCustomSQL, having type bool + ParameterId["IsCustomSQL"] = "isCustomSql"; + // DPI_IsCustomValueEnabled, having type bool + ParameterId["IsCustomValueEnabled"] = "isCustomValueEnabled"; + // DPI_IsDataAlertConditionMet, having type bool + ParameterId["IsDataAlertConditionMet"] = "isDataAlertConditionMet"; + // DPI_IsDataAlertDialogVisible, having type bool + ParameterId["IsDataAlertDialogVisible"] = "isDataAlertDialogVisible"; + // DPI_IsDataBin, having type bool + ParameterId["IsDataBin"] = "isDataBin"; + // DPI_IsDataGridVisible, having type bool + ParameterId["IsDataGridVisible"] = "isDataGridVisible"; + // DPI_IsDatabase, having type bool + ParameterId["IsDatabase"] = "isDatabase"; + // DPI_IsDatabaseFilterInclusive, having type bool + ParameterId["IsDatabaseFilterInclusive"] = "isDbFilterInclusive"; + // DPI_IsWebDataTabViewSupported, having type bool + ParameterId["IsWebDataTabViewSupported"] = "isWebDataTabViewSupported"; + // DPI_IsPublishedDatasourceReplacement, having type bool + ParameterId["IsPublishedDatasourceReplacement"] = "isPublishedDatasourceReplacement"; + // DPI_IsDeadDrop, having type bool + ParameterId["IsDeadDrop"] = "isDeadDrop"; + // DPI_IsDefault, having type bool + ParameterId["IsDefault"] = "isDefault"; + // DPI_IsDeleteCalcConfirm, having type bool + ParameterId["IsDeleteCalcConfirm"] = "isDeleteCalcConfirmed"; + // DPI_IsDimension, having type bool + ParameterId["IsDimension"] = "isDimension"; + // DPI_IsDivider, having type bool + ParameterId["IsDivider"] = "isDivider"; + // DPI_IsDropdownEnabled, having type bool + ParameterId["IsDropdownEnabled"] = "isDropdownEnabled"; + // DPI_IsEditing, having type bool + ParameterId["IsEditing"] = "isEditing"; + // DPI_IsEmbedded, having type bool + ParameterId["IsEmbedded"] = "isEmbedded"; + // DPI_IsEmpty, having type bool + ParameterId["IsEmpty"] = "isEmpty"; + // DPI_IsAddInEnabled, having type bool + ParameterId["IsAddInEnabled"] = "isAddInEnabled"; + // DPI_IsInDrillPath, having type bool + ParameterId["IsInDrillPath"] = "isInDrillPath"; + // DPI_AddInJSDebuggingEnabled, having type bool + ParameterId["AddInJSDebuggingEnabled"] = "addInJsDebugginEnabled"; + // DPI_AddInPauseBeforeLoading, having type bool + ParameterId["AddInPauseBeforeLoading"] = "addInPauseBeforeLoading"; + // DPI_IsDSHierarchical, having type bool + ParameterId["IsDSHierarchical"] = "isDsHierarchical"; + // DPI_IsEndPtMoveable, having type bool + ParameterId["IsEndPtMoveable"] = "isEndpointMovable"; + // DPI_IsExclude, having type bool + ParameterId["IsExclude"] = "isExcludeButtonChecked"; + // DPI_IsExistingConnection, having type bool + ParameterId["IsExistingConnection"] = "isExistingConnection"; + // DPI_IsExistingObject, having type bool + ParameterId["IsExistingObject"] = "isExistingObject"; + // DPI_IsExtract, having type bool + ParameterId["IsExtract"] = "isExtract"; + // DPI_IsExtractOnlyConnection, having type bool + ParameterId["IsExtractOnlyConnection"] = "isExtractOnlyConnection"; + // DPI_IsExtractSelectionVisible, having type bool + ParameterId["IsExtractSelectionVisible"] = "isExtractSelectionVisible"; + // DPI_IsFederatable, having type bool + ParameterId["IsFederatable"] = "isFederatable"; + // DPI_IsField, having type bool + ParameterId["IsField"] = "isField"; + // DPI_IsFieldParameter, having type bool + ParameterId["IsFieldParameter"] = "isFieldParameter"; + // DPI_IsFilterActionField, having type bool + ParameterId["IsFilterActionField"] = "isFilterActionField"; + // DPI_IsFirstClassConnector, having type bool + ParameterId["IsFirstClassConnector"] = "isFirstClassConnector"; + // DPI_IsFloating, having type bool + ParameterId["IsFloating"] = "isFloating"; + // DPI_IsFolded, having type bool + ParameterId["IsFolded"] = "isFolded"; + // DPI_IsForInput, having type bool + ParameterId["IsForInput"] = "isForInput"; + // DPI_IsForecastEnabled, having type bool + ParameterId["IsForecastEnabled"] = "isForecastEnabled"; + // DPI_IsForceDirty, having type bool + ParameterId["IsForceDirty"] = "isForceDirty"; + // DPI_IsFullScan, having type bool + ParameterId["IsFullScan"] = "isFullScan"; + // DPI_IsFullStyling, having type bool + ParameterId["IsFullStyling"] = "isFullStyling"; + // DPI_IsGenerated, having type bool + ParameterId["IsGenerated"] = "isGenerated"; + // DPI_IsGlobalNames, having type bool + ParameterId["IsGlobalNames"] = "isGlobalNames"; + // DPI_IsGrayed, having type bool + ParameterId["IsGrayed"] = "isGrayed"; + // DPI_IsGrayscale, having type bool + ParameterId["IsGrayscale"] = "isGrayscale"; + // DPI_IsGroup, having type bool + ParameterId["IsGroup"] = "isGroup"; + // DPI_IsHideableField, having type bool + ParameterId["IsHideableField"] = "isHideableField"; + // DPI_IsHierarchy, having type bool + ParameterId["IsHierarchy"] = "isHierarchy"; + // DPI_IsHierarchySingleSelect, having type bool + ParameterId["IsHierarchySingleSelect"] = "isHierarchySingleSelect"; + // DPI_IsHighlightAllowed, having type bool + ParameterId["IsHighlightAllowed"] = "isHighlightAllowed"; + // DPI_IsHighlightEnabled, having type bool + ParameterId["IsHighlightEnabled"] = "isHighlightEnabled"; + // DPI_IsHighlightField, having type bool + ParameterId["IsHighlightField"] = "isHighlightField"; + // DPI_IsHorizontal, having type bool + ParameterId["IsHorizontal"] = "isHorizontal"; + // DPI_IsImageEnabled, having type bool + ParameterId["IsImageEnabled"] = "isImageEnabled"; + // DPI_IsInDefault, having type bool + ParameterId["IsInDefault"] = "isInDefault"; + // DPI_IsInPrimaryDataSource, having type bool + ParameterId["IsInPrimaryDataSource"] = "isInPrimaryDataSource"; + // DPI_IsInner, having type bool + ParameterId["IsInner"] = "isInner"; + // DPI_IsInitial, having type bool + ParameterId["IsInitial"] = "isInitial"; + // DPI_IsInstance, having type bool + ParameterId["IsInstance"] = "isInstance"; + // DPI_IsInvalid, having type bool + ParameterId["IsInvalid"] = "isInvalid"; + // DPI_IsInvalidCalcOnDG, having type bool + ParameterId["IsInvalidCalcOnDG"] = "isInvalidDgCalc"; + // DPI_IsItalics, having type bool + ParameterId["IsItalics"] = "isItalics"; + // DPI_IsJoinAreaVisible, having type bool + ParameterId["IsJoinAreaVisible"] = "isJoinAreaVisible"; + // DPI_IsLabels, having type bool + ParameterId["IsLabels"] = "isLabels"; + // DPI_IsLayered, having type bool + ParameterId["IsLayered"] = "isLayered"; + // DPI_IsLeft, having type bool + ParameterId["IsLeft"] = "isLeft"; + // DPI_IsLegacy, having type bool + ParameterId["IsLegacy"] = "isLegacy"; + // DPI_IsLevel, having type bool + ParameterId["IsLevel"] = "isLevel"; + // DPI_IsLevelOrLevelIdentity, having type bool + ParameterId["IsLevelOrLevelIdentity"] = "isLevelOrLevelIdentity"; + // DPI_IsLicensed, having type bool + ParameterId["IsLicensed"] = "isLicensed"; + // DPI_IsLink, having type bool + ParameterId["IsLink"] = "isLink"; + // DPI_IsMap, having type bool + ParameterId["IsMap"] = "isMap"; + // DPI_IsMeasure, having type bool + ParameterId["IsMeasure"] = "isMeasure"; + // DPI_IsMerge, having type bool + ParameterId["IsMerge"] = "isMerge"; + // DPI_IsMessageSourceRemote, having type bool + ParameterId["IsMessageSourceRemote"] = "isMessageSourceRemote"; + // DPI_IsMissingFromExtract, having type bool + ParameterId["IsMissingFromExtract"] = "isMissingFromExtract"; + // DPI_IsMobile, having type bool + ParameterId["IsMobile"] = "isMobile"; + // DPI_IsModified, having type bool + ParameterId["IsModified"] = "isModified"; + // DPI_IsNew, having type bool + ParameterId["IsNew"] = "isNew"; + // DPI_IsNewCloudFileDataSource, having type bool + ParameterId["IsNewCloudFileDataSource"] = "isNewCloudFileDataSource"; + // DPI_IsNewZone, having type bool + ParameterId["IsNewZone"] = "isNewZone"; + // DPI_IsNone, having type bool + ParameterId["IsNone"] = "isNone"; + // DPI_IsOfflineMode, having type bool + ParameterId["IsOfflineMode"] = "isOfflineMode"; + // DPI_IsPreAqlBin, having type bool + ParameterId["IsPreAqlBin"] = "isPreAqlBin"; + // DPI_IsOMeasuresAndRelational, having type bool + ParameterId["IsOMeasuresAndRelational"] = "isOmeasuresAndRelational"; + // DPI_IsOpaque, having type bool + ParameterId["IsOpaque"] = "isOpaque"; + // DPI_IsOrphaned, having type bool + ParameterId["IsOrphaned"] = "isOrphaned"; + // DPI_IsOverlay, having type bool + ParameterId["IsOverlay"] = "isOverlay"; + // DPI_IsOverride, having type bool + ParameterId["IsOverride"] = "isOverride"; + // DPI_IsPageLoading, having type bool + ParameterId["IsPageLoading"] = "isPageLoading"; + // DPI_IsParameterSelected, having type bool + ParameterId["IsParameterSelected"] = "isParameterSelected"; + // DPI_IsParameterSelectedOnFrom, having type bool + ParameterId["IsParameterSelectedOnFrom"] = "isParameterSelectedOnFrom"; + // DPI_IsParameterSelectedOnTo, having type bool + ParameterId["IsParameterSelectedOnTo"] = "isParameterSelectedOnTo"; + // DPI_IsPatternBased, having type bool + ParameterId["IsPatternBased"] = "isPatternBased"; + // DPI_IsPinned, having type bool + ParameterId["IsPinned"] = "isPinned"; + // DPI_IsPresentationMode, having type bool + ParameterId["IsPresentationMode"] = "isPresentationModeDoc"; + // DPI_IsPublishAllowed, having type bool + ParameterId["IsPublishAllowed"] = "isPublishAllowed"; + // DPI_IsMustDowngradeToPublish, having type bool + ParameterId["IsMustDowngradeToPublish"] = "isDowngradeToPublishRequired"; + // DPI_IsPublished, having type bool + ParameterId["IsPublished"] = "isPublished"; + // DPI_IsQuickTableCalc, having type bool + ParameterId["IsQuickTableCalc"] = "isQuickTableCalc"; + // DPI_IsRadioOn, having type bool + ParameterId["IsRadioOn"] = "isRadioOn"; + // DPI_IsReconnect, having type bool + ParameterId["IsReconnect"] = "isReconnect"; + // DPI_IsRecursive, having type bool + ParameterId["IsRecursive"] = "isRecursive"; + // DPI_IsReferenced, having type bool + ParameterId["IsReferenced"] = "isReferenced"; + // DPI_IsRemovalAllowed, having type bool + ParameterId["IsRemovalAllowed"] = "isRowRemovalAllowed"; + // DPI_IsRenderCapable, having type bool + ParameterId["IsRenderCapable"] = "isRenderCapable"; + // DPI_IsRequired, having type bool + ParameterId["IsRequired"] = "isRequired"; + // DPI_IsReversed, having type bool + ParameterId["IsReversed"] = "isReversed"; + // DPI_IsRightDrag, having type bool + ParameterId["IsRightDrag"] = "isRightDrag"; + // DPI_IsRowLabels, having type bool + ParameterId["IsRowLabels"] = "isRowLabels"; + // DPI_IsPercentage, having type bool + ParameterId["IsPercentage"] = "isPercentage"; + // DPI_IsSalesforceInConnection, having type bool + ParameterId["IsSalesforceInConnection"] = "isSalesforceInConnection"; + // DPI_IsScaled, having type bool + ParameterId["IsScaled"] = "isScaled"; + // DPI_IsSelected, having type bool + ParameterId["IsSelected"] = "isSelected"; + // DPI_IsSelectedItem, having type bool + ParameterId["IsSelectedItem"] = "isSelectedItem"; + // DPI_IsSelectionDisabled, having type bool + ParameterId["IsSelectionDisabled"] = "isSelectionDisabled"; + // DPI_IsShiftDrag, having type bool + ParameterId["IsShiftDrag"] = "isShiftDrag"; + // DPI_IsSingleLabel, having type bool + ParameterId["IsSingleLabel"] = "isSingleLabel"; + // DPI_IsSingleSelect, having type bool + ParameterId["IsSingleSelect"] = "isSingleSelect"; + // DPI_IsSingleSelectMode, having type bool + ParameterId["IsSingleSelectMode"] = "isSingleSelectMode"; + // DPI_IsSingleSelection, having type bool + ParameterId["IsSingleSelection"] = "isSingleSelection"; + // DPI_IsSorted, having type bool + ParameterId["IsSorted"] = "isSorted"; + // DPI_IsSortPill, having type bool + ParameterId["IsSortPill"] = "isSortPill"; + // DPI_IsSpecial, having type bool + ParameterId["IsSpecial"] = "isSpecial"; + // DPI_IsSplashScreen, having type bool + ParameterId["IsSplashScreen"] = "isSplashScreen"; + // DPI_IsStoryEmpty, having type bool + ParameterId["IsStoryEmpty"] = "isStoryEmpty"; + // DPI_IsStrikeThrough, having type bool + ParameterId["IsStrikeThrough"] = "isStrikeThrough"; + // DPI_IsTableCalc, having type bool + ParameterId["IsTableCalc"] = "isTableCalc"; + // DPI_IsTableCleaningSubtable, having type bool + ParameterId["IsTableCleaningSubtable"] = "isTableCleaningSubtable"; + // DPI_IsTableFilterInclusive, having type bool + ParameterId["IsTableFilterInclusive"] = "isTableFilterInclusive"; + // DPI_IsTableRanked, having type bool + ParameterId["IsTableRanked"] = "isTableRanked"; + // DPI_IsTemporary, having type bool + ParameterId["IsTemporary"] = "isTemporary"; + // DPI_IsTitleVisible, having type bool + ParameterId["IsTitleVisible"] = "isTitleVisible"; + // DPI_IsTopLevel, having type bool + ParameterId["IsTopLevel"] = "isTopLevel"; + // DPI_IsTwoValued, having type bool + ParameterId["IsTwoValued"] = "isTwoValued"; + // DPI_IsTypeInFinished, having type bool + ParameterId["IsTypeInFinished"] = "isTypeinFinished"; + // DPI_IsTypeInPill, having type bool + ParameterId["IsTypeInPill"] = "isTypeInPill"; + // DPI_IsURLActionField, having type bool + ParameterId["IsURLActionField"] = "isUrlActionField"; + // DPI_IsUnderlined, having type bool + ParameterId["IsUnderlined"] = "isUnderlined"; + // DPI_IsUnion, having type bool + ParameterId["IsUnion"] = "isUnion"; + // DPI_IsUnionReplacement, having type bool + ParameterId["IsUnionReplacement"] = "isUnionReplacement"; + // DPI_IsUnnamedCalc, having type bool + ParameterId["IsUnnamedCalc"] = "isUnnamed"; + // DPI_IsUserDefinedAttribute, having type bool + ParameterId["IsUserDefinedAttribute"] = "isUserDefinedAttribute"; + // DPI_IsUserEditable, having type bool + ParameterId["IsUserEditable"] = "isUserEditable"; + // DPI_IsUserPrompted, having type bool + ParameterId["IsUserPrompted"] = "isUserPrompted"; + // DPI_IsUserResponded, having type bool + ParameterId["IsUserResponded"] = "isUserResponded"; + // DPI_IsValid, having type bool + ParameterId["IsValid"] = "isValid"; + // DPI_IsValidWDCPage, having type bool + ParameterId["IsValidWDCPage"] = "isValidWdcPage"; + // DPI_IsVaryingAttributeDimension, having type bool + ParameterId["IsVaryingAttributeDimension"] = "isVaryingAttributeDimension"; + // DPI_IsVertical, having type bool + ParameterId["IsVertical"] = "isVertical"; + // DPI_IsViewModified, having type bool + ParameterId["IsViewModified"] = "isViewModified"; + // DPI_IsVisuallyCategorical, having type bool + ParameterId["IsVisuallyCategorical"] = "isVisuallyCat"; + // DPI_IsVizInTooltip, having type bool + ParameterId["IsVizInTooltip"] = "isVizInTooltip"; + // DPI_IsWeb, having type bool + ParameterId["IsWeb"] = "isWeb"; + // DPI_IsWhite, having type bool + ParameterId["IsWhite"] = "isWhite"; + // DPI_IsWorldNew, having type bool + ParameterId["IsWorldNew"] = "isWorldNew"; + // DPI_IsXAxis, having type bool + ParameterId["IsXAxis"] = "isXAxis"; + // DPI_KeepAspectRatio, having type bool + ParameterId["KeepAspectRatio"] = "keepAspectRatio"; + // DPI_LabelLineEndFirst, having type bool + ParameterId["LabelLineEndFirst"] = "labelLineEndFirst"; + // DPI_LabelLineEndLast, having type bool + ParameterId["LabelLineEndLast"] = "labelLineEndLast"; + // DPI_LabelMarkMax, having type bool + ParameterId["LabelMarkMax"] = "labelMarkMax"; + // DPI_LabelMarkMin, having type bool + ParameterId["LabelMarkMin"] = "labelMarkMin"; + // DPI_LockAspectRatio, having type bool + ParameterId["LockAspectRatio"] = "lockAspectRatio"; + // DPI_LoopPlayback, having type bool + ParameterId["LoopPlayback"] = "loopPlayback"; + // DPI_LossyImages, having type bool + ParameterId["LossyImages"] = "lossyImages"; + // DPI_MakeGlobal, having type bool + ParameterId["MakeGlobal"] = "isMakeGlobal"; + // DPI_ManualSortOnly, having type bool + ParameterId["ManualSortOnly"] = "manualSortOnly"; + // DPI_MapBoxDefaultStyleSelected, having type bool + ParameterId["MapBoxDefaultStyleSelected"] = "mapboxDefaultStyleSelected"; + // DPI_MapBoxURLParseSuccessful, having type bool + ParameterId["MapBoxURLParseSuccessful"] = "mapboxUrlParseSuccessful"; + // DPI_MapClientRequestsMapTiles, having type bool + ParameterId["MapClientRequestsMapTiles"] = "clientRequestsMapTiles"; + // DPI_MapHasValidLayer, having type bool + ParameterId["MapHasValidLayer"] = "mapHasValidLayer"; + // DPI_MapShowAttribution, having type bool + ParameterId["MapShowAttribution"] = "showAttribution"; + // DPI_MarkLabelsVisibilityChanged, having type bool + ParameterId["MarkLabelsVisibilityChanged"] = "markLabelsVisibilityChanged"; + // DPI_MembersLoaded, having type bool + ParameterId["MembersLoaded"] = "membersLoaded"; + // DPI_MinimizeNames, having type bool + ParameterId["MinimizeNames"] = "useMinNames"; + // DPI_MoveRefereceLineUp, having type bool + ParameterId["MoveRefereceLineUp"] = "moveReferenceLineUp"; + // DPI_MultiDataSources, having type bool + ParameterId["MultiDataSources"] = "multiDataSources"; + // DPI_NavArrowsVisible, having type bool + ParameterId["NavArrowsVisible"] = "navArrowsVisible"; + // DPI_OEMHasSplashScreen, having type bool + ParameterId["OEMHasSplashScreen"] = "oemHasSplashScreen"; + // DPI_OneWayBrushing, having type bool + ParameterId["OneWayBrushing"] = "oneWayBrushing"; + // DPI_OnlyAggregations, having type bool + ParameterId["OnlyAggregations"] = "onlyAggregations"; + // DPI_OverrideAllowed, having type bool + ParameterId["OverrideAllowed"] = "overrideAllowed"; + // DPI_OverrideStackDumper, having type bool + ParameterId["OverrideStackDumper"] = "overrideStackDumper"; + // DPI_PageAutoColorLines, having type bool + ParameterId["PageAutoColorLines"] = "autoColorLines"; + // DPI_PageAutoColorMarks, having type bool + ParameterId["PageAutoColorMarks"] = "autoColorMarks"; + // DPI_PageHistoryFade, having type bool + ParameterId["PageHistoryFade"] = "historyFade"; + // DPI_PercentageBands, having type bool + ParameterId["PercentageBands"] = "percentageBands"; + // DPI_PercentilesAllowed, having type bool + ParameterId["PercentilesAllowed"] = "percentilesAllowed"; + // DPI_PublishWithRemoteQueryAgent, having type bool + ParameterId["PublishWithRemoteQueryAgent"] = "publishWithRemoteQueryAgent"; + // DPI_PreviousSheet, having type bool + ParameterId["PreviousSheet"] = "previousSheet"; + // DPI_PromptDeleteSheetsWithVizInTooltip, having type bool + ParameterId["PromptDeleteSheetsWithVizInTooltip"] = "promptDeleteSheetsWithVizInTooltip"; + // DPI_QuantilesAllowed, having type bool + ParameterId["QuantilesAllowed"] = "quantilesAllowed"; + // DPI_RadialDistanceHitTest, having type bool + ParameterId["RadialDistanceHitTest"] = "radialDistanceHitTest"; + // DPI_RefLineSelected, having type bool + ParameterId["RefLineSelected"] = "refLineSelected"; + // DPI_RemovedSheets, having type bool + ParameterId["RemovedSheets"] = "removedSheets"; + // DPI_RenderImagesAsUrls, having type bool + ParameterId["RenderImagesAsUrls"] = "imagesAsUrls"; + // DPI_RenderOnTop, having type bool + ParameterId["RenderOnTop"] = "renderOnTop"; + // DPI_RepeatHeadersLegends, having type bool + ParameterId["RepeatHeadersLegends"] = "repeatHeadersLegends"; + // DPI_ReplaceActiveConfig, having type bool + ParameterId["ReplaceActiveConfig"] = "replaceActiveConfig"; + // DPI_ReplaceDatasourceAfterPublish, having type bool + ParameterId["ReplaceDatasourceAfterPublish"] = "replaceDatasourceAfterPublish"; + // DPI_ReplaceDatasourceFailed, having type bool + ParameterId["ReplaceDatasourceFailed"] = "replaceDatasourceFailed"; + // DPI_ReplaceTde, having type bool + ParameterId["ReplaceTde"] = "replaceTde"; + // DPI_RequireSelection, having type bool + ParameterId["RequireSelection"] = "requireSelection"; + // DPI_RequiresDBVariables, having type bool + ParameterId["RequiresDBVariables"] = "requiresDbVariables"; + // DPI_RequiresFieldList, having type bool + ParameterId["RequiresFieldList"] = "requiresFieldList"; + // DPI_RestartEveryFieldIsInvalid, having type bool + ParameterId["RestartEveryFieldIsInvalid"] = "restartEveryFieldIsInvalid"; + // DPI_RightJustify, having type bool + ParameterId["RightJustify"] = "rightJustify"; + // DPI_SaveEnabled, having type bool + ParameterId["SaveEnabled"] = "saveEnabled"; + // DPI_SavePasswordAllowed, having type bool + ParameterId["SavePasswordAllowed"] = "savePasswordAllowed"; + // DPI_ScopeIsolation, having type bool + ParameterId["ScopeIsolation"] = "scopeIsolation"; + // DPI_SelectionRequired, having type bool + ParameterId["SelectionRequired"] = "selectionRequired"; + // DPI_SendNotifications, having type bool + ParameterId["SendNotifications"] = "sendNotifications"; + // DPI_SetActive, having type bool + ParameterId["SetActive"] = "setActive"; + // DPI_SetDefaultSort, having type bool + ParameterId["SetDefaultSort"] = "setDefault"; + // DPI_SheetIsDashboard, having type bool + ParameterId["SheetIsDashboard"] = "isDashboard"; + // DPI_SheetIsStoryboard, having type bool + ParameterId["SheetIsStoryboard"] = "isStory"; + // DPI_ShouldAlwaysDisplayAlias, having type bool + ParameterId["ShouldAlwaysDisplayAlias"] = "shouldAlwaysDisplayAlias"; + // DPI_ShouldAutoCapture, having type bool + ParameterId["ShouldAutoCapture"] = "shouldAutoCapture"; + // DPI_ShouldAutoRevert, having type bool + ParameterId["ShouldAutoRevert"] = "shouldAutoRevert"; + // DPI_ShouldChangeUIMode, having type bool + ParameterId["ShouldChangeUIMode"] = "shouldChangeUiMode"; + // DPI_ShouldDisplay, having type bool + ParameterId["ShouldDisplay"] = "shouldDisplay"; + // DPI_ShouldDrill, having type bool + ParameterId["ShouldDrill"] = "shouldDrill"; + // DPI_ShouldForceConnectionAttempt, having type bool + ParameterId["ShouldForceConnectionAttempt"] = "shouldForceConnectionAttempt"; + // DPI_ShouldRefreshDS, having type bool + ParameterId["ShouldRefreshDS"] = "shouldRefreshDs"; + // DPI_ShouldScaleMarksInAxisUnits, having type bool + ParameterId["ShouldScaleMarksInAxisUnits"] = "shouldScaleMarksInAxisUnits"; + // DPI_ShouldSeedCredentials, having type bool + ParameterId["ShouldSeedCredentials"] = "shouldSeedCredentials"; + // DPI_ShouldShowDataSourceConnectionError, having type bool + ParameterId["ShouldShowDataSourceConnectionError"] = "shouldShowDataSourceConnectionError"; + // DPI_ShouldShowDistance, having type bool + ParameterId["ShouldShowDistance"] = "shouldShowDistance"; + // DPI_ShouldShowHiddenField, having type bool + ParameterId["ShouldShowHiddenField"] = "shouldShowHiddenField"; + // DPI_ShouldShowMapScale, having type bool + ParameterId["ShouldShowMapScale"] = "shouldShowMapScale"; + // DPI_ShouldURLEscape, having type bool + ParameterId["ShouldURLEscape"] = "shouldUrlEscape"; + // DPI_ShouldUpdateDomainInfo, having type bool + ParameterId["ShouldUpdateDomainInfo"] = "shouldUpdateDomInfo"; + // DPI_ShowAddToFilter, having type bool + ParameterId["ShowAddToFilter"] = "showAddToFilterButton"; + // DPI_ShowAliases, having type bool + ParameterId["ShowAliases"] = "showAliases"; + // DPI_ShowAllPages, having type bool + ParameterId["ShowAllPages"] = "showAllPages"; + // DPI_ShowApply, having type bool + ParameterId["ShowApply"] = "showApplyButton"; + // DPI_ShowApplyAndCancelButtons, having type bool + ParameterId["ShowApplyAndCancelButtons"] = "showApplyAndCancelButtons"; + // DPI_ShowAuthenticationOptions, having type bool + ParameterId["ShowAuthenticationOptions"] = "showAuthenticationOptions"; + // DPI_ShowAuthenticationSetting, having type bool + ParameterId["ShowAuthenticationSetting"] = "showAuthenticationSetting"; + // DPI_ShowAuto, having type bool + ParameterId["ShowAuto"] = "showAuto"; + // DPI_ShowBold, having type bool + ParameterId["ShowBold"] = "showBoldOption"; + // DPI_ShowButtons, having type bool + ParameterId["ShowButtons"] = "showButtons"; + // DPI_ShowCaption, having type bool + ParameterId["ShowCaption"] = "showCaption"; + // DPI_ShowColorLegend, having type bool + ParameterId["ShowColorLegend"] = "showColorLegend"; + // DPI_ShowDataGridInlineRename, having type bool + ParameterId["ShowDataGridInlineRename"] = "showDataGridInlineRename"; + // DPI_ShowDetailMessages, having type bool + ParameterId["ShowDetailMessages"] = "showDetailMessages"; + // DPI_ShowDate, having type bool + ParameterId["ShowDate"] = "showDate"; + // DPI_ShowDragLabel, having type bool + ParameterId["ShowDragLabel"] = "showDragLabel"; + // DPI_ShowDropMeasures, having type bool + ParameterId["ShowDropMeasures"] = "showDropMeasures"; + // DPI_ShowEmbedAll, having type bool + ParameterId["ShowEmbedAll"] = "showEmbedAll"; + // DPI_ShowEntireImage, having type bool + ParameterId["ShowEntireImage"] = "showEntireImage"; + // DPI_ShowExclude, having type bool + ParameterId["ShowExclude"] = "showExcludeButton"; + // DPI_ShowFloatingZoomToolbar, having type bool + ParameterId["ShowFloatingZoomToolbar"] = "showFloatingZoomToolbar"; + // DPI_ShowFormatter, having type bool + ParameterId["ShowFormatter"] = "showFormatter"; + // DPI_ShowFullSchedules, having type bool + ParameterId["ShowFullSchedules"] = "showFullSchedules"; + // DPI_ShowGeographicSearch, having type bool + ParameterId["ShowGeographicSearch"] = "showGeographicSearch"; + // DPI_ShowHiddenFields, having type bool + ParameterId["ShowHiddenFields"] = "showHiddenFields"; + // DPI_ShowHistoryControls, having type bool + ParameterId["ShowHistoryControls"] = "showHistoryControls"; + // DPI_ShowIncludeLocalFiles, having type bool + ParameterId["ShowIncludeLocalFiles"] = "showIncludeLocalFiles"; + // DPI_ShowIncludeOtherOption, having type bool + ParameterId["ShowIncludeOtherOption"] = "showIncludeOtherOption"; + // DPI_ShowIncludeSelections, having type bool + ParameterId["ShowIncludeSelections"] = "showIncludeSelections"; + // DPI_ShowIncrSchedules, having type bool + ParameterId["ShowIncrSchedules"] = "showIncrSchedules"; + // DPI_ShowInnerMostLevel, having type bool + ParameterId["ShowInnerMostLevel"] = "showInnermostLevel"; + // DPI_ShowItalics, having type bool + ParameterId["ShowItalics"] = "showItalicsOption"; + // DPI_ShowLegend, having type bool + ParameterId["ShowLegend"] = "showLegend"; + // DPI_ShowLockedPermissionsIcon, having type bool + ParameterId["ShowLockedPermissionsIcon"] = "showLockedPermissionsIcon"; + // DPI_ShowManageDatasources, having type bool + ParameterId["ShowManageDatasources"] = "showManageDatasources"; + // DPI_ShowMapLegend, having type bool + ParameterId["ShowMapLegend"] = "showMapLegend"; + // DPI_ShowMapScale, having type bool + ParameterId["ShowMapScale"] = "showMapScale"; + // DPI_ShowMappedFilterCols, having type bool + ParameterId["ShowMappedFilterCols"] = "showMappedFilterColumns"; + // DPI_ShowName, having type bool + ParameterId["ShowName"] = "showName"; + // DPI_ShowNone, having type bool + ParameterId["ShowNone"] = "showNone"; + // DPI_ShowPagePlayback, having type bool + ParameterId["ShowPagePlayback"] = "showPagePlayback"; + // DPI_ShowPageReadout, having type bool + ParameterId["ShowPageReadout"] = "showPageReadout"; + // DPI_ShowPageSlider, having type bool + ParameterId["ShowPageSlider"] = "showPageSlider"; + // DPI_ShowParent, having type bool + ParameterId["ShowParent"] = "showParent"; + // DPI_ShowPercentages, having type bool + ParameterId["ShowPercentages"] = "showPercentages"; + // DPI_ShowPredictionIntervals, having type bool + ParameterId["ShowPredictionIntervals"] = "showPredictionIntervals"; + // DPI_ShowPublishedDatasources, having type bool + ParameterId["ShowPublishedDatasources"] = "showPublishedDatasources"; + // DPI_ShowRelDatePicker, having type bool + ParameterId["ShowRelDatePicker"] = "showRelDatePicker"; + // DPI_ShowReplaceDatasource, having type bool + ParameterId["ShowReplaceDatasource"] = "showReplaceDatasource"; + // DPI_ShowSeparator, having type bool + ParameterId["ShowSeparator"] = "showSeparator"; + // DPI_ShowShapeLegend, having type bool + ParameterId["ShowShapeLegend"] = "showShapeLegend"; + // DPI_ShowSizeLegend, having type bool + ParameterId["ShowSizeLegend"] = "showSizeLegend"; + // DPI_ShowShelf, having type bool + ParameterId["ShowShelf"] = "showShelf"; + // DPI_ShowStructure, having type bool + ParameterId["ShowStructure"] = "showStructure"; + // DPI_ShowSyncClientOptions, having type bool + ParameterId["ShowSyncClientOptions"] = "showSyncClientOptions"; + // DPI_ShowTabsAllowed, having type bool + ParameterId["ShowTabsAllowed"] = "showTabsAllowed"; + // DPI_ShowTime, having type bool + ParameterId["ShowTime"] = "showTime"; + // DPI_ShowTitle, having type bool + ParameterId["ShowTitle"] = "showTitle"; + // DPI_ShowTransSlider, having type bool + ParameterId["ShowTransSlider"] = "showTransparencySlider"; + // DPI_ShowUnderline, having type bool + ParameterId["ShowUnderline"] = "showUnderlineOption"; + // DPI_ShowUserThumbnailOptions, having type bool + ParameterId["ShowUserThumbnailOptions"] = "showUserThumbnailOptions"; + // DPI_ShowView, having type bool + ParameterId["ShowView"] = "showView"; + // DPI_ShowViews, having type bool + ParameterId["ShowViews"] = "showViews"; + // DPI_ShowingPageLoadError, having type bool + ParameterId["ShowingPageLoadError"] = "showingPageLoadError"; + // DPI_SupressAliases, having type bool + ParameterId["SupressAliases"] = "suspressAliases"; + // DPI_SupressThousandsSeparator, having type bool + ParameterId["SupressThousandsSeparator"] = "supressThousandsSeparator"; + // DPI_SingleSelectOnly, having type bool + ParameterId["SingleSelectOnly"] = "singleSelectOnly"; + // DPI_SkipIfActive, having type bool + ParameterId["SkipIfActive"] = "skipIfActive"; + // DPI_SkipRefresh, having type bool + ParameterId["SkipRefresh"] = "skipRefresh"; + // DPI_SkipValidation, having type bool + ParameterId["SkipValidation"] = "skipValidation"; + // DPI_Skipped, having type bool + ParameterId["Skipped"] = "skipped"; + // DPI_SortFieldIsInvalid, having type bool + ParameterId["SortFieldIsInvalid"] = "sortFieldIsInvalid"; + // DPI_SortModeIsAuto, having type bool + ParameterId["SortModeIsAuto"] = "sortModeIsAuto"; + // DPI_SplitOnEdgeSnap, having type bool + ParameterId["SplitOnEdgeSnap"] = "splitOnEdgeSnap"; + // DPI_StandardDeviationAllowed, having type bool + ParameterId["StandardDeviationAllowed"] = "standardDeviationAllowed"; + // DPI_State, having type bool + ParameterId["State"] = "state"; + // DPI_StoredProcDisabled, having type bool + ParameterId["StoredProcDisabled"] = "storedProcDisabled"; + // DPI_StoredProcsDropable, having type bool + ParameterId["StoredProcsDropable"] = "storedProcsDropable"; + // DPI_StoryIsEmpty, having type bool + ParameterId["StoryIsEmpty"] = "storyIsEmpty"; + // DPI_StoryPointIsEmpty, having type bool + ParameterId["StoryPointIsEmpty"] = "storyPointIsEmpty"; + // DPI_SuccessfulSave, having type bool + ParameterId["SuccessfulSave"] = "successfulSave"; + // DPI_SupportXAxis, having type bool + ParameterId["SupportXAxis"] = "supportXAxis"; + // DPI_SupportYAxis, having type bool + ParameterId["SupportYAxis"] = "supportYAxis"; + // DPI_SupportsCenterAlignment, having type bool + ParameterId["SupportsCenterAlignment"] = "supportsCenterAlignment"; + // DPI_SupportsDBFilters, having type bool + ParameterId["SupportsDBFilters"] = "supportsDatabaseFilters"; + // DPI_SupportsMultipleValues, having type bool + ParameterId["SupportsMultipleValues"] = "supportsMultipleValues"; + // DPI_SupportsRightAlignment, having type bool + ParameterId["SupportsRightAlignment"] = "supportsRightAlignment"; + // DPI_SupportsTableFilters, having type bool + ParameterId["SupportsTableFilters"] = "supportsTableFilters"; + // DPI_Symmetric, having type bool + ParameterId["Symmetric"] = "symmetric"; + // DPI_SyncAutomaticDrill, having type bool + ParameterId["SyncAutomaticDrill"] = "syncAutomaticDrill"; + // DPI_TabsAllowed, having type bool + ParameterId["TabsAllowed"] = "tabsAllowed"; + // DPI_TextDropdownState, having type bool + ParameterId["TextDropdownState"] = "toggleState"; + // DPI_TitleInline, having type bool + ParameterId["TitleInline"] = "titleInline"; + // DPI_ToggleHighlightStateChanged, having type bool + ParameterId["ToggleHighlightStateChanged"] = "toggleHighlight"; + // DPI_Transformed80Format, having type bool + ParameterId["Transformed80Format"] = "oldFormat"; + // DPI_TrendLineSelected, having type bool + ParameterId["TrendLineSelected"] = "trendLineSelected"; + // DPI_TruncDate, having type bool + ParameterId["TruncDate"] = "truncDate"; + // DPI_TupleSelected, having type bool + ParameterId["TupleSelected"] = "tupleSelected"; + // DPI_UIAutomationDidPageLoad, having type bool + ParameterId["UIAutomationDidPageLoad"] = "uiAutomationDidPageLoad"; + // DPI_UIAutomationIsChecked, having type bool + ParameterId["UIAutomationIsChecked"] = "uiAutomationIsChecked"; + // DPI_UIAutomationIsEnabled, having type bool + ParameterId["UIAutomationIsEnabled"] = "uiAutomationIsEnabled"; + // DPI_UIAutomationIsEventProcessed, having type bool + ParameterId["UIAutomationIsEventProcessed"] = "uiAutomationIsEventProcessed"; + // DPI_UIAutomationIsFocused, having type bool + ParameterId["UIAutomationIsFocused"] = "uiAutomationIsFocused"; + // DPI_UIAutomationIsFound, having type bool + ParameterId["UIAutomationIsFound"] = "uiAutomationIsFound"; + // DPI_UIAutomationIsReadonly, having type bool + ParameterId["UIAutomationIsReadonly"] = "uiAutomationIsReadonly"; + // DPI_UIAutomationIsSelected, having type bool + ParameterId["UIAutomationIsSelected"] = "uiAutomationIsSelected"; + // DPI_UpdateAllPanes, having type bool + ParameterId["UpdateAllPanes"] = "updateAllPanes"; + // DPI_UpdateDSCaptionOnly, having type bool + ParameterId["UpdateDSCaptionOnly"] = "updateDsCaptionOnly"; + // DPI_UpdateModelFromParams, having type bool + ParameterId["UpdateModelFromParams"] = "updateModelFromParams"; + // DPI_UpdateShelves, having type bool + ParameterId["UpdateShelves"] = "updateShelves"; + // DPI_UpdatesUseContext, having type bool + ParameterId["UpdatesUseContext"] = "updatesUseContext"; + // DPI_UpgradeDocumentVersion, having type bool + ParameterId["UpgradeDocumentVersion"] = "upgradeDocumentVersion"; + // DPI_UseAliases, having type bool + ParameterId["UseAliases"] = "useAliases"; + // DPI_UseBlankForNull, having type bool + ParameterId["UseBlankForNull"] = "useBlankForNull"; + // DPI_UseCalculationEditor, having type bool + ParameterId["UseCalculationEditor"] = "useCalculationEditor"; + // DPI_UseCenterValue, having type bool + ParameterId["UseCenterValue"] = "useCenterValue"; + // DPI_UseColor, having type bool + ParameterId["UseColor"] = "useColor"; + // DPI_UseCustomMarkSize, having type bool + ParameterId["UseCustomMarkSize"] = "useCustomMarkSize"; + // DPI_UseDarkIcons, having type bool + ParameterId["UseDarkIcons"] = "useDarkIcons"; + // DPI_UseDataStoreMinfiedNames, having type bool + ParameterId["UseDataStoreMinfiedNames"] = "useDatastoreMinNames"; + // DPI_UseInitialDomainType, having type bool + ParameterId["UseInitialDomainType"] = "useInitialDomainType"; + // DPI_UseEndValue, having type bool + ParameterId["UseEndValue"] = "useEndValue"; + // DPI_UseForOverlayHitTest, having type bool + ParameterId["UseForOverlayHitTest"] = "useForOverlayHitTest"; + // DPI_UseFullColorRange, having type bool + ParameterId["UseFullColorRange"] = "useFullColorRange"; + // DPI_UseFullDomain, having type bool + ParameterId["UseFullDomain"] = "useFullDomain"; + // DPI_UseInlineImages, having type bool + ParameterId["UseInlineImages"] = "useInlineImages"; + // DPI_UseMeasures, having type bool + ParameterId["UseMeasures"] = "useMeasures"; + // DPI_UseNewQuickFilters, having type bool + ParameterId["UseNewQuickFilters"] = "useNewQuickFilters"; + // DPI_UseNotificationReturn, having type bool + ParameterId["UseNotificationReturn"] = "useNotificationReturn"; + // DPI_UseParameters, having type bool + ParameterId["UseParameters"] = "useParameters"; + // DPI_UseSelector, having type bool + ParameterId["UseSelector"] = "useSelector"; + // DPI_UseSignificantDigits, having type bool + ParameterId["UseSignificantDigits"] = "useSignificantDigits"; + // DPI_UseSpecialStrings, having type bool + ParameterId["UseSpecialStrings"] = "useSpecialStrings"; + // DPI_UseStartValue, having type bool + ParameterId["UseStartValue"] = "useStartValue"; + // DPI_UseTabs, having type bool + ParameterId["UseTabs"] = "useTabs"; + // DPI_UseTabletAsDefaultPreview, having type bool + ParameterId["UseTabletAsDefaultPreview"] = "useTabletAsDefaultPreview"; + // DPI_UseTargetPt, having type bool + ParameterId["UseTargetPt"] = "useTargetPoint"; + // DPI_UseUSLocale, having type bool + ParameterId["UseUSLocale"] = "useUsLocale"; + // DPI_UseYAxis, having type bool + ParameterId["UseYAxis"] = "useYAxis"; + // DPI_Valid, having type bool + ParameterId["Valid"] = "valid"; + // DPI_VizDataV82, having type bool + ParameterId["VizDataV82"] = "vizData82"; + // DPI_WMSConnectionSuccessful, having type bool + ParameterId["WMSConnectionSuccessful"] = "wmsConnectionSuccessful"; + // DPI_WMSShouldUseTiles, having type bool + ParameterId["WMSShouldUseTiles"] = "wmsShouldUseTiles"; + // DPI_WantDomain, having type bool + ParameterId["WantDomain"] = "wantDomain"; + // DPI_WorkbookModified, having type bool + ParameterId["WorkbookModified"] = "workbookModified"; + // DPI_ZoomIn, having type bool + ParameterId["ZoomIn"] = "zoomIn"; + // DPI_ShowMarkLabels, having type bool + ParameterId["ShowMarkLabels"] = "showMarkLabels"; + // DPI_HasDuplicates, having type bool + ParameterId["HasDuplicates"] = "hasDuplicates"; + // DPI_HasUserDefinedIncrement, having type bool + ParameterId["HasUserDefinedIncrement"] = "hasUserDefinedIncrement"; + // DPI_HasUserDefinedMax, having type bool + ParameterId["HasUserDefinedMax"] = "hasUserDefinedMax"; + // DPI_HasUserDefinedMin, having type bool + ParameterId["HasUserDefinedMin"] = "hasUserDefinedMin"; + // DPI_IsDuplicate, having type bool + ParameterId["IsDuplicate"] = "isDuplicate"; + // DPI_IsEditingValue, having type bool + ParameterId["IsEditingValue"] = "isEditingValue"; + // DPI_ShouldRestrictDataType, having type bool + ParameterId["ShouldRestrictDataType"] = "restrictDataType"; + // DPI_EnableIncludeZero, having type bool + ParameterId["EnableIncludeZero"] = "enableIncludeZero"; + // DPI_EnableSyncDualAxes, having type bool + ParameterId["EnableSyncDualAxes"] = "enableSynchronizeDualAxes"; + // DPI_EnableShowTimes, having type bool + ParameterId["EnableShowTimes"] = "enableShowTimes"; + // DPI_EnableTickMarksTab, having type bool + ParameterId["EnableTickMarksTab"] = "enableTickMarksTab"; + // DPI_IsTemporal, having type bool + ParameterId["IsTemporal"] = "isTemporal"; + // DPI_ShouldIncludeZero, having type bool + ParameterId["ShouldIncludeZero"] = "shouldIncludeZero"; + // DPI_ShouldReverseAxis, having type bool + ParameterId["ShouldReverseAxis"] = "shouldReverseAxis"; + // DPI_ShouldShowTimes, having type bool + ParameterId["ShouldShowTimes"] = "shouldShowTimes"; + // DPI_UseAutomaticAxisSubtitle, having type bool + ParameterId["UseAutomaticAxisSubtitle"] = "useAutomaticSubtitle"; + // DPI_UseAutomaticAxisTitle, having type bool + ParameterId["UseAutomaticAxisTitle"] = "useAutomaticTitle"; + // DPI_AllSelected, having type bool + ParameterId["AllSelected"] = "allSelected"; + // DPI_AutoCommit, having type bool + ParameterId["AutoCommit"] = "autoCommit"; + // DPI_CacheOnly, having type bool + ParameterId["CacheOnly"] = "cacheOnly"; + // DPI_IncludeData, having type bool + ParameterId["IncludeData"] = "includeData"; + // DPI_IsPatternExclusive, having type bool + ParameterId["IsPatternExclusive"] = "isPatternExclusive"; + // DPI_IsSearchable, having type bool + ParameterId["IsSearchable"] = "isSearchable"; + // DPI_IsSelectionExclusive, having type bool + ParameterId["IsSelectionExclusive"] = "isSelectionExclusive"; + // DPI_ResetNewFilter, having type bool + ParameterId["ResetNewFilter"] = "resetNewFilter"; + // DPI_UseAllWhenManualEmpty, having type bool + ParameterId["UseAllWhenManualEmpty"] = "useAllWhenManualEmpty"; + // DPI_UseAllWhenPatternEmpty, having type bool + ParameterId["UseAllWhenPatternEmpty"] = "useAllWhenPatternEmpty"; + // DPI_GroupByDrillDown, having type bool + ParameterId["GroupByDrillDown"] = "groupByDrillDown"; + // DPI_GroupByTable, having type bool + ParameterId["GroupByTable"] = "groupByTable"; + // DPI_IncludeGroups, having type bool + ParameterId["IncludeGroups"] = "includeGroups"; + // DPI_IncludePendingState, having type bool + ParameterId["IncludePendingState"] = "includePendingState"; + // DPI_IncludeFieldMenus, having type bool + ParameterId["IncludeFieldMenus"] = "includeFieldMenus"; + // DPI_IncludeFormattedValues, having type bool + ParameterId["IncludeFormattedValues"] = "includeFormattedValues"; + // DPI_IncludeColumnInstances, having type bool + ParameterId["IncludeColumnInstances"] = "includeColumnInstances"; + // DPI_IncludeAdHocCalcs, having type bool + ParameterId["IncludeAdHocCalcs"] = "includeAdhocCalcs"; + // DPI_IncludeHiddenInvalidFields, having type bool + ParameterId["IncludeHiddenInvalidFields"] = "includeHiddenInvalidFields"; + // DPI_IncludeNonExtractedColumns, having type bool + ParameterId["IncludeNonExtractedColumns"] = "includeNonExtractedColumns"; + // DPI_IncludeCalculatedFieldFormulas, having type bool + ParameterId["IncludeCalculatedFieldFormulas"] = "includeCalculatedFieldFormulas"; + // DPI_SetDataPreviewCustomFieldOrder, having type bool + ParameterId["SetDataPreviewCustomFieldOrder"] = "setDataPreviewCustomFieldOrder"; + // DPI_CustomSplitAllowSplitFromRight, having type bool + ParameterId["CustomSplitAllowSplitFromRight"] = "customSplitAllowSplitFromRight"; + // DPI_IsChanged, having type bool + ParameterId["IsChanged"] = "isChanged"; + // DPI_ShowFontColorPicker, having type bool + ParameterId["ShowFontColorPicker"] = "showFontColorPicker"; + // DPI_ShowFontFamilyPicker, having type bool + ParameterId["ShowFontFamilyPicker"] = "showFontFamilyPicker"; + // DPI_ShowFontSizePicker, having type bool + ParameterId["ShowFontSizePicker"] = "showFontSizePicker"; + // DPI_ShowFontStyleButtons, having type bool + ParameterId["ShowFontStyleButtons"] = "showFontStyleButtons"; + // DPI_ShowLineForAll, having type bool + ParameterId["ShowLineForAll"] = "showLineForAll"; + // DPI_ShowLineForColumn, having type bool + ParameterId["ShowLineForColumn"] = "showLineForColumn"; + // DPI_ShowLineForRow, having type bool + ParameterId["ShowLineForRow"] = "showLineForRow"; + // DPI_ShowLinePatternPicker, having type bool + ParameterId["ShowLinePatternPicker"] = "showLinePatternPicker"; + // DPI_ShowLineTransparency, having type bool + ParameterId["ShowLineTransparency"] = "showLineTransparency"; + // DPI_ShowLineWidthPicker, having type bool + ParameterId["ShowLineWidthPicker"] = "showLineWidthPicker"; + // DPI_CanBeAuto, having type bool + ParameterId["CanBeAuto"] = "canBeAuto"; + // DPI_CanBeNone, having type bool + ParameterId["CanBeNone"] = "canBeNone"; + // DPI_CanMatchMarkColor, having type bool + ParameterId["CanMatchMarkColor"] = "canMatchMarkColor"; + // DPI_HasOpacity, having type bool + ParameterId["HasOpacity"] = "hasOpacity"; + // DPI_IncludeAllHidden, having type bool + ParameterId["IncludeAllHidden"] = "includeAllHidden"; + // DPI_IncludeCurrent, having type bool + ParameterId["IncludeCurrent"] = "includeCurrent"; + // DPI_IsIncluded, having type bool + ParameterId["IsIncluded"] = "isIncluded"; + // DPI_IsRelative, having type bool + ParameterId["IsRelative"] = "isRelative"; + // DPI_IsSecondaryAllowed, having type bool + ParameterId["IsSecondaryAllowed"] = "isSecondaryAllowed"; + // DPI_NullIfIncomplete, having type bool + ParameterId["NullIfIncomplete"] = "nullIfIncomplete"; + // DPI_IsCalcAssistanceEnabled, having type bool + ParameterId["IsCalcAssistanceEnabled"] = "isCalcAssistanceEnabled"; + // DPI_UseSecondaryCalc, having type bool + ParameterId["UseSecondaryCalc"] = "useSecondaryCalc"; + // DPI_CanLoad, having type bool + ParameterId["CanLoad"] = "canLoad"; + // DPI_DescriptionOnly, having type bool + ParameterId["DescriptionOnly"] = "descriptionOnly"; + // DPI_AreAliasesSupported, having type bool + ParameterId["AreAliasesSupported"] = "areAliasesSupported"; + // DPI_AreRefColumnsSupported, having type bool + ParameterId["AreRefColumnsSupported"] = "areRefColumnsSupported"; + // DPI_IsAggregated, having type bool + ParameterId["IsAggregated"] = "isAggregated"; + // DPI_IsExportSupported, having type bool + ParameterId["IsExportSupported"] = "isExportSupported"; + // DPI_IsMeasureNames, having type bool + ParameterId["IsMeasureNames"] = "isMeasureNames"; + // DPI_IsSummarySupported, having type bool + ParameterId["IsSummarySupported"] = "isSummarySupported"; + // DPI_IsTopNSupported, having type bool + ParameterId["IsTopNSupported"] = "isTopNSupported"; + // DPI_IsUnderlyingSupported, having type bool + ParameterId["IsUnderlyingSupported"] = "isUnderlyingSupported"; + // DPI_OnlyExportSummary, having type bool + ParameterId["OnlyExportSummary"] = "onlyExportSummary"; + // DPI_ShowAllFields, having type bool + ParameterId["ShowAllFields"] = "showAllFields"; + // DPI_UseTablePtrs, having type bool + ParameterId["UseTablePtrs"] = "useTablePtrs"; + // DPI_OnlyFetchSummary, having type bool + ParameterId["OnlyFetchSummary"] = "onlyFetchSummary"; + // DPI_IsDeviceLayoutCustomized, having type bool + ParameterId["IsDeviceLayoutCustomized"] = "isDeviceLayoutCustomized"; + // DPI_IsDeviceSizeCustomized, having type bool + ParameterId["IsDeviceSizeCustomized"] = "isDeviceSizeCustomized"; + // DPI_IsDeviceSupportedByMobileApp, having type bool + ParameterId["IsDeviceSupportedByMobileApp"] = "isDeviceSupportedByMobileApp"; + // DPI_IsPortrait, having type bool + ParameterId["IsPortrait"] = "isPortrait"; + // DPI_IsPortraitByDefault, having type bool + ParameterId["IsPortraitByDefault"] = "isPortraitByDefault"; + // DPI_IsUserCustomFormat, having type bool + ParameterId["IsUserCustomFormat"] = "isUserCustomFormat"; + // DPI_ShouldDisplayRebuildExtractMessage, having type bool + ParameterId["ShouldDisplayRebuildExtractMessage"] = "shouldDisplayRebuildExtractMessage"; + // DPI_SupportsCustomStartOfWeek, having type bool + ParameterId["SupportsCustomStartOfWeek"] = "supportsCustomStartOfWeek"; + // DPI_NeedsConnectPrompt, having type bool + ParameterId["NeedsConnectPrompt"] = "needsConnectPrompt"; + // DPI_NeedsCloseDataSourceErrorPrompt, having type bool + ParameterId["NeedsCloseDataSourceErrorPrompt"] = "needsCloseDsErrorPrompt"; + // DPI_ClearCurrentSelection, having type bool + ParameterId["ClearCurrentSelection"] = "clearCurrentSelection"; + // DPI_HasContains, having type bool + ParameterId["HasContains"] = "hasContains"; + // DPI_HasEndsWith, having type bool + ParameterId["HasEndsWith"] = "hasEndsWith"; + // DPI_HasReplaceSelection, having type bool + ParameterId["HasReplaceSelection"] = "hasReplaceSelection"; + // DPI_HasStartsWith, having type bool + ParameterId["HasStartsWith"] = "hasStartsWith"; + // DPI_IsLeafSelectionOnly, having type bool + ParameterId["IsLeafSelectionOnly"] = "isLeafSelectionOnly"; + // DPI_ReplaceSelection, having type bool + ParameterId["ReplaceSelection"] = "replaceSelection"; + // DPI_IsColorPaletteCustomized, having type bool + ParameterId["IsColorPaletteCustomized"] = "isColorPaletteCustomized"; + // DPI_ReversePaletteOrder, having type bool + ParameterId["ReversePaletteOrder"] = "reversePaletteOrder"; + // DPI_TriedToConnect, having type bool + ParameterId["TriedToConnect"] = "triedToConnect"; + // DPI_ScaleMarksInAxisUnits, having type bool + ParameterId["ScaleMarksInAxisUnits"] = "scaleMarksInAxisUnits"; + // DPI_ShowMarkSizingOptions, having type bool + ParameterId["ShowMarkSizingOptions"] = "showMarkSizingOptions"; + // DPI_UseSizeFieldCaption, having type bool + ParameterId["UseSizeFieldCaption"] = "useSizeFieldCaption"; + // DPI_IsLicensedAndRegistered, having type bool + ParameterId["IsLicensedAndRegistered"] = "isLicensedAndRegistered"; + // DPI_SetNewDatasourceActive, having type bool + ParameterId["SetNewDatasourceActive"] = "setNewDatasourceActive"; + // DPI_AllowCustomLabel, having type bool + ParameterId["AllowCustomLabel"] = "allowCustomLabel"; + // DPI_IsMostRecentModeValid, having type bool + ParameterId["IsMostRecentModeValid"] = "isMostRecentModeValid"; + // DPI_MustShowLabels, having type bool + ParameterId["MustShowLabels"] = "mustShowLabels"; + // DPI_ShowRunningOrderLabels, having type bool + ParameterId["ShowRunningOrderLabels"] = "showRunningOrderLabels"; + // DPI_IsDroppedFile, having type bool + ParameterId["IsDroppedFile"] = "isDroppedFile"; + // DPI_IsInitialized, having type bool + ParameterId["IsInitialized"] = "isInitialized"; + // DPI_IncludeDashboard, having type bool + ParameterId["IncludeDashboard"] = "includeDashboard"; + // DPI_ChildrenCanResize, having type bool + ParameterId["ChildrenCanResize"] = "childrenCanResize"; + // DPI_BoolMap, having type Dictionary(of bool) + ParameterId["BoolMap"] = "boolMap"; + // DPI_CheckedMenuItems, having type bool[] + ParameterId["CheckedMenuItems"] = "checkedMenuItems"; + // DPI_IncludedSheetValues, having type bool[] + ParameterId["IncludedSheetValues"] = "includedSheetValues"; + // DPI_SortOrderVector, having type bool[] + ParameterId["SortOrderVector"] = "sortOrderVector"; + // DPI_ActionName, having type string + ParameterId["ActionName"] = "actionName"; + // DPI_ActionSourceText, having type string + ParameterId["ActionSourceText"] = "actionSourceText"; + // DPI_ActionTypeAsString, having type string + ParameterId["ActionTypeAsString"] = "actionTypeAsString"; + // DPI_ActiveTab, having type string + ParameterId["ActiveTab"] = "active_tab"; + // DPI_AddInFeatureName, having type string + ParameterId["AddInFeatureName"] = "addInFeatureName"; + // DPI_AddInId, having type string + ParameterId["AddInId"] = "addInId"; + // DPI_AddInstanceId, having type string + ParameterId["AddInstanceId"] = "addInInstanceId"; + // DPI_AddInName, having type string + ParameterId["AddInName"] = "addInName"; + // DPI_AddInLocale, having type string + ParameterId["AddInLocale"] = "addInLocale"; + // DPI_AddInLanguage, having type string + ParameterId["AddInLanguage"] = "addInLanguage"; + // DPI_APIVersion, having type string + ParameterId["APIVersion"] = "apiVersion"; + // DPI_Alias, having type string + ParameterId["Alias"] = "alias"; + // DPI_AnchorDate, having type string + ParameterId["AnchorDate"] = "anchorDate"; + // DPI_AnnotationRes, having type string + ParameterId["AnnotationRes"] = "annotationRes"; + // DPI_ReadId, having type string + ParameterId["ReadId"] = "readId"; + // DPI_AnnotationText, having type string + ParameterId["AnnotationText"] = "annotationText"; + // DPI_ArchiveDirectory, having type string + ParameterId["ArchiveDirectory"] = "archiveDirectory"; + // DPI_ArchiveFullPath, having type string + ParameterId["ArchiveFullPath"] = "archiveFullPath"; + // DPI_AtTheLevelInvalidFieldCaption, having type string + ParameterId["AtTheLevelInvalidFieldCaption"] = "atTheLevelInvalidFieldCaption"; + // DPI_AutoCompleteSubstring, having type string + ParameterId["AutoCompleteSubstring"] = "acSubstring"; + // DPI_AutosaveFileId, having type string + ParameterId["AutosaveFileId"] = "autosaveFileId"; + // DPI_AutosaveTimerInterval, having type string + ParameterId["AutosaveTimerInterval"] = "autosaveTimerInterval"; + // DPI_BaseColumnCaption, having type string + ParameterId["BaseColumnCaption"] = "baseColumnCaption"; + // DPI_ClearButtonText, having type string + ParameterId["ClearButtonText"] = "clearButtonText"; + // DPI_ColorPaletteId, having type string + ParameterId["ColorPaletteId"] = "colorPaletteId"; + // DPI_ColorPaletteName, having type string + ParameterId["ColorPaletteName"] = "colorPaletteName"; + // DPI_ColorSwatch, having type string + ParameterId["ColorSwatch"] = "colorSwatch"; + // DPI_CommandName, having type string + ParameterId["CommandName"] = "commandName"; + // DPI_ConfidenceLevelValue, having type string + ParameterId["ConfidenceLevelValue"] = "confidenceLevelValue"; + // DPI_CountDistinctStr, having type string + ParameterId["CountDistinctStr"] = "countDistinctStr"; + // DPI_CrossTabFilepath, having type string + ParameterId["CrossTabFilepath"] = "crossTabFilepath"; + // DPI_CSSMargin, having type string + ParameterId["CSSMargin"] = "cssMargin"; + // DPI_CSSWhitespace, having type string + ParameterId["CSSWhitespace"] = "cssWhitespace"; + // DPI_DBPassword, having type string + ParameterId["DBPassword"] = "dbPassword"; + // DPI_DBUsername, having type string + ParameterId["DBUsername"] = "dbUsername"; + // DPI_DataAlertConditionText, having type string + ParameterId["DataAlertConditionText"] = "dataAlertConditionText"; + // DPI_DataAlertMeasureText, having type string + ParameterId["DataAlertMeasureText"] = "dataAlertMeasureText"; + // DPI_DataAlertSpecSerializedText, having type string + ParameterId["DataAlertSpecSerializedText"] = "dataAlertSpecSerializedText"; + // DPI_DataAlertDefaultSubject, having type string + ParameterId["DataAlertDefaultSubject"] = "dataAlertDefaultSubject"; + // DPI_DataAlertThresholdText, having type string + ParameterId["DataAlertThresholdText"] = "dataAlertThresholdText"; + // DPI_DataGridSortColumnName, having type string + ParameterId["DataGridSortColumnName"] = "datagridSortColumnName"; + // DPI_DataServerConnectionError, having type string + ParameterId["DataServerConnectionError"] = "dataServerConnectionError"; + // DPI_DatabaseFilter, having type string + ParameterId["DatabaseFilter"] = "databaseFilter"; + // DPI_DatabaseFilterPrompt, having type string + ParameterId["DatabaseFilterPrompt"] = "databaseFilterPrompt"; + // DPI_DatasourceRanking, having type string + ParameterId["DatasourceRanking"] = "datasourceRanking"; + // DPI_DatasourceUrl, having type string + ParameterId["DatasourceUrl"] = "datasourceUrl"; + // DPI_DatasourceUsername, having type string + ParameterId["DatasourceUsername"] = "datasourceUsername"; + // DPI_DateFormat, having type string + ParameterId["DateFormat"] = "dateFormat"; + // DPI_DatePart, having type string + ParameterId["DatePart"] = "datePart"; + // DPI_DatePartAbbrev, having type string + ParameterId["DatePartAbbrev"] = "datePartAbbrev"; + // DPI_DefaultHierarchyName, having type string + ParameterId["DefaultHierarchyName"] = "defaultHierarchyName"; + // DPI_DefaultMenuItemKey, having type string + ParameterId["DefaultMenuItemKey"] = "defaultMenuItemKey"; + // DPI_Delimiter, having type string + ParameterId["Delimiter"] = "delimiter"; + // DPI_DeviceName, having type string + ParameterId["DeviceName"] = "deviceName"; + // DPI_DeviceType, having type string + ParameterId["DeviceType"] = "deviceType"; + // DPI_DisplayPath, having type string + ParameterId["DisplayPath"] = "displayPath"; + // DPI_DistributionValueString, having type string + ParameterId["DistributionValueString"] = "distributionValueString"; + // DPI_DrillPathName, having type string + ParameterId["DrillPathName"] = "drillPathName"; + // DPI_EmbeddedTitle, having type string + ParameterId["EmbeddedTitle"] = "embeddedTitle"; + // DPI_EnterValueText, having type string + ParameterId["EnterValueText"] = "enterValueText"; + // DPI_EscapeString, having type string + ParameterId["EscapeString"] = "escapeString"; + // DPI_ExtSvcConfigHost, having type string + ParameterId["ExtSvcConfigHost"] = "extSvcConfigHost"; + // DPI_ExtSvcConfigPassword, having type string + ParameterId["ExtSvcConfigPassword"] = "extSvcConfigPassword"; + // DPI_ExtSvcConfigPort, having type string + ParameterId["ExtSvcConfigPort"] = "extSvcConfigPort"; + // DPI_ExtSvcConfigConnectTimeout, having type string + ParameterId["ExtSvcConfigConnectTimeout"] = "extSvcConnectTimeout"; + // DPI_ExtSvcConfigPrevHost, having type string + ParameterId["ExtSvcConfigPrevHost"] = "extSvcConfigPrevHost"; + // DPI_ExtSvcConfigUsername, having type string + ParameterId["ExtSvcConfigUsername"] = "extSvcConfigUsername"; + // DPI_ExtractUpdateTime, having type string + ParameterId["ExtractUpdateTime"] = "extractUpdateTime"; + // DPI_FieldFolderName, having type string + ParameterId["FieldFolderName"] = "fieldFolderName"; + // DPI_FieldNameString, having type string + ParameterId["FieldNameString"] = "fieldName"; + // DPI_FilterSearchDomain, having type string + ParameterId["FilterSearchDomain"] = "filterSearchDomain"; + // DPI_FilterSpec, having type string + ParameterId["FilterSpec"] = "filterSpec"; + // DPI_FirstValue, having type string + ParameterId["FirstValue"] = "firstValue"; + // DPI_FolderName, having type string + ParameterId["FolderName"] = "folderName"; + // DPI_FontName, having type string + ParameterId["FontName"] = "fontName"; + // DPI_FormatString, having type string + ParameterId["FormatString"] = "formatString"; + // DPI_FormattedDisplayString, having type string + ParameterId["FormattedDisplayString"] = "formattedDisplayString"; + // DPI_FormattedIncrementValue, having type string + ParameterId["FormattedIncrementValue"] = "formattedIncrement"; + // DPI_FormattedMaxValue, having type string + ParameterId["FormattedMaxValue"] = "formattedMax"; + // DPI_FormattedMinValue, having type string + ParameterId["FormattedMinValue"] = "formattedMin"; + // DPI_FormattedValue, having type string + ParameterId["FormattedValue"] = "formattedValue"; + // DPI_FormattedCenterValue, having type string + ParameterId["FormattedCenterValue"] = "formattedCenter"; + // DPI_FormattedEndValue, having type string + ParameterId["FormattedEndValue"] = "formattedEnd"; + // DPI_FormattedStartValue, having type string + ParameterId["FormattedStartValue"] = "formattedStart"; + // DPI_PairedFormattedValue, having type string + ParameterId["PairedFormattedValue"] = "pairedFormattedValue"; + // DPI_FrameAttributes, having type string + ParameterId["FrameAttributes"] = "frameAttr"; + // DPI_GUID, having type string + ParameterId["GUID"] = "guid"; + // DPI_GeographicSearchCandidateDisplayName, having type string + ParameterId["GeographicSearchCandidateDisplayName"] = "geographicSearchCandidateDisplayName"; + // DPI_GeographicSearchCandidateParentName, having type string + ParameterId["GeographicSearchCandidateParentName"] = "geographicSearchCandidateParentName"; + // DPI_GeographicSearchCandidateType, having type string + ParameterId["GeographicSearchCandidateType"] = "geographicSearchCandidateType"; + // DPI_GeographicSearchLocale, having type string + ParameterId["GeographicSearchLocale"] = "geographicSearchLocale"; + // DPI_GeographicSearchQueryString, having type string + ParameterId["GeographicSearchQueryString"] = "geographicSearchSearchString"; + // DPI_GeographicSearchUILocale, having type string + ParameterId["GeographicSearchUILocale"] = "geographicSearchUilocale"; + // DPI_IconRes, having type string + ParameterId["IconRes"] = "iconRes"; + // DPI_ImageHash, having type string + ParameterId["ImageHash"] = "imageHash"; + // DPI_ImageName, having type string + ParameterId["ImageName"] = "imageName"; + // DPI_ImageRes, having type string + ParameterId["ImageRes"] = "imageRes"; + // DPI_IncludesSiblingsPrompt, having type string + ParameterId["IncludesSiblingsPrompt"] = "includesSiblingsPrompt"; + // DPI_IncludesSubfoldersPrompt, having type string + ParameterId["IncludesSubfoldersPrompt"] = "includesSubfoldersPrompt"; + // DPI_IncrementalScheduleIDs, having type string + ParameterId["IncrementalScheduleIDs"] = "incrementalScheduleIds"; + // DPI_InvariantKeyword, having type string + ParameterId["InvariantKeyword"] = "invariantKeyword"; + // DPI_JoinOperator, having type string + ParameterId["JoinOperator"] = "joinOperator"; + // DPI_JoinExpression, having type string + ParameterId["JoinExpression"] = "joinExpression"; + // DPI_Key, having type string + ParameterId["Key"] = "keyId"; + // DPI_Label, having type string + ParameterId["Label"] = "label"; + // DPI_PairedLabel, having type string + ParameterId["PairedLabel"] = "pairedLabel"; + // DPI_LayoutID, having type string + ParameterId["LayoutID"] = "layoutId"; + // DPI_LeftJoinExpression, having type string + ParameterId["LeftJoinExpression"] = "leftJoinExpression"; + // DPI_LimitCountExpression, having type string + ParameterId["LimitCountExpression"] = "limitCountExpression"; + // DPI_LinkTarget, having type string + ParameterId["LinkTarget"] = "linkTarget"; + // DPI_Locale, having type string + ParameterId["Locale"] = "locale"; + // DPI_LocalizedKeyword, having type string + ParameterId["LocalizedKeyword"] = "localizedKeyword"; + // DPI_MapBoxGLStyleId, having type string + ParameterId["MapBoxGLStyleId"] = "mapboxGlStyleId"; + // DPI_MapBoxStyleUrl, having type string + ParameterId["MapBoxStyleUrl"] = "mapboxStyleUrl"; + // DPI_MapBoxUsername, having type string + ParameterId["MapBoxUsername"] = "mapboxUsername"; + // DPI_MapScaleReadoutString, having type string + ParameterId["MapScaleReadoutString"] = "mapScaleReadoutString"; + // DPI_MapScaleTooltipString, having type string + ParameterId["MapScaleTooltipString"] = "mapScaleTooltipString"; + // DPI_MapSourceName, having type string + ParameterId["MapSourceName"] = "mapSourceName"; + // DPI_MaxLabel, having type string + ParameterId["MaxLabel"] = "maxLabel"; + // DPI_MinLabel, having type string + ParameterId["MinLabel"] = "minLabel"; + // DPI_ModelDescriptionParagraph, having type string + ParameterId["ModelDescriptionParagraph"] = "modelDescriptionParagraph"; + // DPI_NameTemplate, having type string + ParameterId["NameTemplate"] = "nameTemplate"; + // DPI_NewDrillPath, having type string + ParameterId["NewDrillPath"] = "newDrillPath"; + // DPI_NewFieldFolderName, having type string + ParameterId["NewFieldFolderName"] = "newFieldFolderName"; + // DPI_NewTableAlias, having type string + ParameterId["NewTableAlias"] = "newTableAlias"; + // DPI_NonFormattedValue, having type string + ParameterId["NonFormattedValue"] = "unformattedValue"; + // DPI_OAuthUserName, having type string + ParameterId["OAuthUserName"] = "oauthUsername"; + // DPI_ObjectName, having type string + ParameterId["ObjectName"] = "objectName"; + // DPI_ObjectOverrideMessage, having type string + ParameterId["ObjectOverrideMessage"] = "objectOverrideMessage"; + // DPI_OldTableAlias, having type string + ParameterId["OldTableAlias"] = "oldTableAlias"; + // DPI_OperatingSystem, having type string + ParameterId["OperatingSystem"] = "operatingSystem"; + // DPI_OriginalFilePath, having type string + ParameterId["OriginalFilePath"] = "originalFilePath"; + // DPI_OriginalFileVersion, having type string + ParameterId["OriginalFileVersion"] = "originalFileVersion"; + // DPI_PaneDescriptorKey, having type string + ParameterId["PaneDescriptorKey"] = "paneDescrKey"; + // DPI_ParentName, having type string + ParameterId["ParentName"] = "parentName"; + // DPI_ParentTable, having type string + ParameterId["ParentTable"] = "parentTable"; + // DPI_PatternFilterString, having type string + ParameterId["PatternFilterString"] = "patternFilterString"; + // DPI_PendingCalcName, having type string + ParameterId["PendingCalcName"] = "pendingCalcName"; + // DPI_PercentilesString, having type string + ParameterId["PercentilesString"] = "percentilesString"; + // DPI_ProjectName, having type string + ParameterId["ProjectName"] = "projectName"; + // DPI_PropertyName, having type string + ParameterId["PropertyName"] = "propertyName"; + // DPI_QuickFilterTitleCaption, having type string + ParameterId["QuickFilterTitleCaption"] = "quickFilterTitleCaption"; + // DPI_RangeDiffStr, having type string + ParameterId["RangeDiffStr"] = "diffValue"; + // DPI_RangeMaxStr, having type string + ParameterId["RangeMaxStr"] = "maxValue"; + // DPI_RangeMinStr, having type string + ParameterId["RangeMinStr"] = "minValue"; + // DPI_RecoveredFilePath, having type string + ParameterId["RecoveredFilePath"] = "recoveredFilePath"; + // DPI_ReferenceLineSpecificationId, having type string + ParameterId["ReferenceLineSpecificationId"] = "referenceLineId"; + // DPI_ReplaceFieldPrompt, having type string + ParameterId["ReplaceFieldPrompt"] = "replaceFieldPrompt"; + // DPI_RightJoinExpression, having type string + ParameterId["RightJoinExpression"] = "rightJoinExpression"; + // DPI_RootPath, having type string + ParameterId["RootPath"] = "rootPath"; + // DPI_RuntimeFinalDatastore, having type string + ParameterId["RuntimeFinalDatastore"] = "runtimeFinalDatastore"; + // DPI_RuntimeInitialDatastore, having type string + ParameterId["RuntimeInitialDatastore"] = "runtimeInitialDatastore"; + // DPI_RuntimeVTL, having type string + ParameterId["RuntimeVTL"] = "runtimeVtl"; + // DPI_SampleDataString, having type string + ParameterId["SampleDataString"] = "sampleData"; + // DPI_ScheduleIDs, having type string + ParameterId["ScheduleIDs"] = "scheduleIds"; + // DPI_SchemaFieldIconResource, having type string + ParameterId["SchemaFieldIconResource"] = "fieldIconRes"; + // DPI_ScreenName, having type string + ParameterId["ScreenName"] = "screenName"; + // DPI_ScriptCommand, having type string + ParameterId["ScriptCommand"] = "command"; + // DPI_SecondValue, having type string + ParameterId["SecondValue"] = "secondValue"; + // DPI_SelectedValue, having type string + ParameterId["SelectedValue"] = "selectedValue"; + // DPI_ShapeName, having type string + ParameterId["ShapeName"] = "shapeName"; + // DPI_SheetId, having type string + ParameterId["SheetId"] = "sheetId"; + // DPI_ShowDataTable, having type string + ParameterId["ShowDataTable"] = "showDataTable"; + // DPI_SimpleCommand, having type string + ParameterId["SimpleCommand"] = "simpleCommand"; + // DPI_SortModeCaption, having type string + ParameterId["SortModeCaption"] = "sortModeCaption"; + // DPI_SourceName, having type string + ParameterId["SourceName"] = "sourceName"; + // DPI_SourceText, having type string + ParameterId["SourceText"] = "sourceText"; + // DPI_SpecialValueText, having type string + ParameterId["SpecialValueText"] = "specialValueText"; + // DPI_StaticImage, having type string + ParameterId["StaticImage"] = "staticImage"; + // DPI_StoryPointBase, having type string + ParameterId["StoryPointBase"] = "storyPointBase"; + // DPI_StoryPointCaption, having type string + ParameterId["StoryPointCaption"] = "storyPointCaption"; + // DPI_Storyboard, having type string + ParameterId["Storyboard"] = "storyboard"; + // DPI_StyledLabel, having type string + ParameterId["StyledLabel"] = "styledLabel"; + // DPI_SummaryCaption, having type string + ParameterId["SummaryCaption"] = "summaryCaption"; + // DPI_SummaryField, having type string + ParameterId["SummaryField"] = "summaryField"; + // DPI_TableauVersion, having type string + ParameterId["TableauVersion"] = "tableauVersion"; + // DPI_TableFilter, having type string + ParameterId["TableFilter"] = "tableFilter"; + // DPI_TableFilterPrompt, having type string + ParameterId["TableFilterPrompt"] = "tableFilterPrompt"; + // DPI_TagsLabel, having type string + ParameterId["TagsLabel"] = "tagsLabel"; + // DPI_Target, having type string + ParameterId["Target"] = "target"; + // DPI_ThumbnailGroup, having type string + ParameterId["ThumbnailGroup"] = "thumbnailGroup"; + // DPI_ThumbnailUser, having type string + ParameterId["ThumbnailUser"] = "thumbnailUser"; + // DPI_TimeFormat, having type string + ParameterId["TimeFormat"] = "timeFormat"; + // DPI_TrendLineErrorString, having type string + ParameterId["TrendLineErrorString"] = "trendLineErrorString"; + // DPI_TrendLineModelFormula, having type string + ParameterId["TrendLineModelFormula"] = "trendLineModelFormula"; + // DPI_URLString, having type string + ParameterId["URLString"] = "urlString"; + // DPI_URLTest, having type string + ParameterId["URLTest"] = "urlTest"; + // DPI_ValidationMessage, having type string + ParameterId["ValidationMessage"] = "validationMessage"; + // DPI_ValueStr, having type string + ParameterId["ValueStr"] = "valueString"; + // DPI_VerifiedNonFormattedValue, having type string + ParameterId["VerifiedNonFormattedValue"] = "verifiedUnformattedValue"; + // DPI_WorkbookFullPath, having type string + ParameterId["WorkbookFullPath"] = "workbookFullPath"; + // DPI_WindowTitle, having type string + ParameterId["WindowTitle"] = "windowTitle"; + // DPI_ZoneName, having type string + ParameterId["ZoneName"] = "zoneName"; + // DPI_ZoneParam, having type string + ParameterId["ZoneParam"] = "zoneParam"; + // DPI_DataAlertErrorText, having type string + ParameterId["DataAlertErrorText"] = "dataAlertErrorText"; + // DPI_ExtractTempDirectory, having type string + ParameterId["ExtractTempDirectory"] = "extractTempDir"; + // DPI_DSSubClass, having type string + ParameterId["DSSubClass"] = "dsSubClass"; + // DPI_DbgCommandLine, having type string + ParameterId["DbgCommandLine"] = "debugCommandLine"; + // DPI_DbgLogPath, having type string + ParameterId["DbgLogPath"] = "debugLogPath"; + // DPI_DbgOSVersion, having type string + ParameterId["DbgOSVersion"] = "debugOsVersion"; + // DPI_DbgUserName, having type string + ParameterId["DbgUserName"] = "debugUsername"; + // DPI_ErrorMsg, having type string + ParameterId["ErrorMsg"] = "errorMessage"; + // DPI_ErrorStackTrace, having type string + ParameterId["ErrorStackTrace"] = "errorStackTrace"; + // DPI_ErrorStr, having type string + ParameterId["ErrorStr"] = "errorString"; + // DPI_EventMessage, having type string + ParameterId["EventMessage"] = "eventMessage"; + // DPI_EventTimestamp, having type string + ParameterId["EventTimestamp"] = "eventTimestamp"; + // DPI_ExtractDeltaPath, having type string + ParameterId["ExtractDeltaPath"] = "extractDeltaPath"; + // DPI_ExtractPath, having type string + ParameterId["ExtractPath"] = "extractPath"; + // DPI_ExtractSuggestedPath, having type string + ParameterId["ExtractSuggestedPath"] = "suggestedExtractPath"; + // DPI_ExtractTaskSummary, having type string + ParameterId["ExtractTaskSummary"] = "extractTaskSummary"; + // DPI_FactorsString, having type string + ParameterId["FactorsString"] = "factorsStr"; + // DPI_FormattedFamilyName, having type string + ParameterId["FormattedFamilyName"] = "formattedFamilyName"; + // DPI_FunctionSignature, having type string + ParameterId["FunctionSignature"] = "funcSig"; + // DPI_FunctionTooltip, having type string + ParameterId["FunctionTooltip"] = "funcTooltip"; + // DPI_HelpContents, having type string + ParameterId["HelpContents"] = "helpContents"; + // DPI_MapAttributionText, having type string + ParameterId["MapAttributionText"] = "mapAttributionText"; + // DPI_MapAttributionTextSize, having type string + ParameterId["MapAttributionTextSize"] = "mapAttributionTextSize"; + // DPI_MapAttributionUrl, having type string + ParameterId["MapAttributionUrl"] = "mapAttributionUrl"; + // DPI_MapBoxErrorMessage, having type string + ParameterId["MapBoxErrorMessage"] = "mapboxErrorMessage"; + // DPI_MapBoxOldStyleName, having type string + ParameterId["MapBoxOldStyleName"] = "mapboxOldStyleName"; + // DPI_MapBoxSelectedStyle, having type string + ParameterId["MapBoxSelectedStyle"] = "mapboxSelectedStyle"; + // DPI_MapBoxStyleName, having type string + ParameterId["MapBoxStyleName"] = "mapboxStyleName"; + // DPI_MapLayerRequest, having type string + ParameterId["MapLayerRequest"] = "mapLayerRequest"; + // DPI_MapServerKey, having type string + ParameterId["MapServerKey"] = "mapServerKey"; + // DPI_MapTileServer, having type string + ParameterId["MapTileServer"] = "mapTileServer"; + // DPI_MapTileUrl, having type string + ParameterId["MapTileUrl"] = "mapTileUrl"; + // DPI_PercentagesString, having type string + ParameterId["PercentagesString"] = "percentagesStr"; + // DPI_PublishErrorMessage, having type string + ParameterId["PublishErrorMessage"] = "publishErrorMessage"; + // DPI_TdePath, having type string + ParameterId["TdePath"] = "tdePath"; + // DPI_UIAutomationComponentName, having type string + ParameterId["UIAutomationComponentName"] = "uiAutomationComponentName"; + // DPI_UIAutomationEndTime, having type string + ParameterId["UIAutomationEndTime"] = "uiAutomationEndTime"; + // DPI_UIAutomationName, having type string + ParameterId["UIAutomationName"] = "uiAutomationName"; + // DPI_UIAutomationStartTime, having type string + ParameterId["UIAutomationStartTime"] = "uiAutomationStartTime"; + // DPI_UIAutomationValue, having type string + ParameterId["UIAutomationValue"] = "uiAutomationValue"; + // DPI_WMSConnectionName, having type string + ParameterId["WMSConnectionName"] = "wmsConnectionName"; + // DPI_WMSOldConnectionName, having type string + ParameterId["WMSOldConnectionName"] = "wmsOldConnectionName"; + // DPI_WMSServerUrl, having type string + ParameterId["WMSServerUrl"] = "wmsServerUrl"; + // DPI_AboutBuildVersion, having type string + ParameterId["AboutBuildVersion"] = "aboutBuildVersion"; + // DPI_ActionFields, having type string + ParameterId["ActionFields"] = "actionFields"; + // DPI_AddVariableLabel, having type string + ParameterId["AddVariableLabel"] = "addVariableLabel"; + // DPI_AddVariableTooltip, having type string + ParameterId["AddVariableTooltip"] = "addVariableTooltip"; + // DPI_AllowedDataSourcesByName, having type string + ParameterId["AllowedDataSourcesByName"] = "allowedDataSourcesByName"; + // DPI_AppAboutVersion, having type string + ParameterId["AppAboutVersion"] = "appAboutVersion"; + // DPI_AppBuildBranchName, having type string + ParameterId["AppBuildBranchName"] = "appBuildBranchName"; + // DPI_AppBuildVersion, having type string + ParameterId["AppBuildVersion"] = "appBuildVersion"; + // DPI_AppExternalVersion, having type string + ParameterId["AppExternalVersion"] = "appExternalVersion"; + // DPI_AppName, having type string + ParameterId["AppName"] = "appName"; + // DPI_AppProductVersion, having type string + ParameterId["AppProductVersion"] = "appProductVersion"; + // DPI_OriginalVersion, having type string + ParameterId["OriginalVersion"] = "originalVersion"; + // DPI_AtTheLevelSpecialCaption, having type string + ParameterId["AtTheLevelSpecialCaption"] = "atTheLevelSpecialCaption"; + // DPI_AutoCompleteCalc, having type string + ParameterId["AutoCompleteCalc"] = "acCalc"; + // DPI_CSVPath, having type string + ParameterId["CSVPath"] = "csvPath"; + // DPI_CommandNamespace, having type string + ParameterId["CommandNamespace"] = "commandNamespace"; + // DPI_Condition, having type string + ParameterId["Condition"] = "condition"; + // DPI_ConditionSummary, having type string + ParameterId["ConditionSummary"] = "conditionSummary"; + // DPI_ConfirmationMsg, having type string + ParameterId["ConfirmationMsg"] = "confirmationMsg"; + // DPI_DashboardTypeText, having type string + ParameterId["DashboardTypeText"] = "dashboardType"; + // DPI_DataserverPublicAddress, having type string + ParameterId["DataserverPublicAddress"] = "dataserverPublicAddress"; + // DPI_DatasourceFileName, having type string + ParameterId["DatasourceFileName"] = "datasourceFileName"; + // DPI_DecimalMark, having type string + ParameterId["DecimalMark"] = "decimalMark"; + // DPI_DeleteVariableTooltip, having type string + ParameterId["DeleteVariableTooltip"] = "deleteVariableTooltip"; + // DPI_DialogTitle, having type string + ParameterId["DialogTitle"] = "dialogTitle"; + // DPI_DisplayValue, having type string + ParameterId["DisplayValue"] = "displayValue"; + // DPI_TooltipValue, having type string + ParameterId["TooltipValue"] = "tooltipValue"; + // DPI_DstPath, having type string + ParameterId["DstPath"] = "dstPath"; + // DPI_EditWidgetHeader, having type string + ParameterId["EditWidgetHeader"] = "editWidgetHeader"; + // DPI_EditWidgetInstruction, having type string + ParameterId["EditWidgetInstruction"] = "editWidgetInstruction"; + // DPI_EndSelectionCaption, having type string + ParameterId["EndSelectionCaption"] = "endSelectionCaption"; + // DPI_ErrorDialogTitle, having type string + ParameterId["ErrorDialogTitle"] = "errorDialogTitle"; + // DPI_ErrorHelpLink, having type string + ParameterId["ErrorHelpLink"] = "errorHelpLink"; + // DPI_ErrorShortMessage, having type string + ParameterId["ErrorShortMessage"] = "errorShortMessage"; + // DPI_FilterSearchQuery, having type string + ParameterId["FilterSearchQuery"] = "filterSearchQuery"; + // DPI_FromLabel, having type string + ParameterId["FromLabel"] = "fromLabel"; + // DPI_FunctionHelp, having type string + ParameterId["FunctionHelp"] = "functionHelp"; + // DPI_Instructions, having type string + ParameterId["Instructions"] = "instructions"; + // DPI_LargeUnitDisplay, having type string + ParameterId["LargeUnitDisplay"] = "largeUnitDisplay"; + // DPI_Limit, having type string + ParameterId["Limit"] = "limit"; + // DPI_ListViewNameLabel, having type string + ParameterId["ListViewNameLabel"] = "listViewNameLabel"; + // DPI_ListViewValueLabel, having type string + ParameterId["ListViewValueLabel"] = "listViewValueLabel"; + // DPI_MapScaleReadoutUnit, having type string + ParameterId["MapScaleReadoutUnit"] = "mapScaleReadoutUnit"; + // DPI_MeasureDimension, having type string + ParameterId["MeasureDimension"] = "measuresDimension"; + // DPI_MimeType, having type string + ParameterId["MimeType"] = "mimeType"; + // DPI_MinimizedName, having type string + ParameterId["MinimizedName"] = "minName"; + // DPI_NotificationMsg, having type string + ParameterId["NotificationMsg"] = "notificationMsg"; + // DPI_OperationName, having type string + ParameterId["OperationName"] = "operationName"; + // DPI_PageTitle, having type string + ParameterId["PageTitle"] = "pageTitle"; + // DPI_PatternSummary, having type string + ParameterId["PatternSummary"] = "patternSummary"; + // DPI_ReferenceLineId, having type string + ParameterId["ReferenceLineId"] = "refLineId"; + // DPI_ReferenceLinePairedId, having type string + ParameterId["ReferenceLinePairedId"] = "refLinePairedId"; + // DPI_ReplaceText, having type string + ParameterId["ReplaceText"] = "replaceText"; + // DPI_RequiredVariableMessage, having type string + ParameterId["RequiredVariableMessage"] = "requiredVariableMessage"; + // DPI_RestartEverySpecialCaption, having type string + ParameterId["RestartEverySpecialCaption"] = "restartEverySpecialCaption"; + // DPI_Root, having type string + ParameterId["Root"] = "root"; + // DPI_SelectionSummary, having type string + ParameterId["SelectionSummary"] = "selectionSummary"; + // DPI_SessionAttributeKey, having type string + ParameterId["SessionAttributeKey"] = "sessionAttributeKey"; + // DPI_SessionAttributeValue, having type string + ParameterId["SessionAttributeValue"] = "sessionAttributeValue"; + // DPI_SheetAttributeKey, having type string + ParameterId["SheetAttributeKey"] = "baseSheetAttributeKey"; + // DPI_SheetAttributeValue, having type string + ParameterId["SheetAttributeValue"] = "baseSheetAttributeValue"; + // DPI_SmallUnitDisplay, having type string + ParameterId["SmallUnitDisplay"] = "smallUnitDisplay"; + // DPI_SourceCaption, having type string + ParameterId["SourceCaption"] = "sourceCaption"; + // DPI_SrcPath, having type string + ParameterId["SrcPath"] = "srcPath"; + // DPI_StartSelectionCaption, having type string + ParameterId["StartSelectionCaption"] = "startSelectionCaption"; + // DPI_Subtitle, having type string + ParameterId["Subtitle"] = "subtitle"; + // DPI_TableauServerSiteName, having type string + ParameterId["TableauServerSiteName"] = "tableauServerSiteName"; + // DPI_TargetCaption, having type string + ParameterId["TargetCaption"] = "targetCaption"; + // DPI_ThumbnailPath, having type string + ParameterId["ThumbnailPath"] = "thumbnailPath"; + // DPI_ToLabel, having type string + ParameterId["ToLabel"] = "toLabel"; + // DPI_URLAddress, having type string + ParameterId["URLAddress"] = "urlAddress"; + // DPI_ValuesTableHeader, having type string + ParameterId["ValuesTableHeader"] = "valuesTableHeader"; + // DPI_ValuesTableHeader2, having type string + ParameterId["ValuesTableHeader2"] = "valuesTableHeader2"; + // DPI_VariableDescription, having type string + ParameterId["VariableDescription"] = "variableDescription"; + // DPI_VariableDisplayName, having type string + ParameterId["VariableDisplayName"] = "variableDisplayName"; + // DPI_VariableGUID, having type string + ParameterId["VariableGUID"] = "variableGuid"; + // DPI_VerboseName, having type string + ParameterId["VerboseName"] = "verboseName"; + // DPI_ViewId, having type string + ParameterId["ViewId"] = "viewId"; + // DPI_Warning1, having type string + ParameterId["Warning1"] = "warning1"; + // DPI_Warning2, having type string + ParameterId["Warning2"] = "warning2"; + // DPI_RefreshToken, having type string + ParameterId["RefreshToken"] = "refresh_token"; + // DPI_TokenType, having type string + ParameterId["TokenType"] = "token_type"; + // DPI_XSRFToken, having type string + ParameterId["XSRFToken"] = "xsrf_token"; + // DPI_AxisSubtitle, having type string + ParameterId["AxisSubtitle"] = "axisSubtitle"; + // DPI_AxisTitle, having type string + ParameterId["AxisTitle"] = "axisTitle"; + // DPI_TickMarkOriginDataValue, having type string + ParameterId["TickMarkOriginDataValue"] = "tickMarkOriginDataValue"; + // DPI_TickMarkOriginDataValueNoTime, having type string + ParameterId["TickMarkOriginDataValueNoTime"] = "tickMarkOriginDataValueNoTime"; + // DPI_TickMarkSpacingDataValue, having type string + ParameterId["TickMarkSpacingDataValue"] = "tickMarkSpacingDataValue"; + // DPI_ExtractActionLocalized, having type string + ParameterId["ExtractActionLocalized"] = "extractActionLocalized"; + // DPI_ExtractSource, having type string + ParameterId["ExtractSource"] = "extractSource"; + // DPI_FileContents, having type string + ParameterId["FileContents"] = "fileContents"; + // DPI_SaveImagePath, having type string + ParameterId["SaveImagePath"] = "saveImagePath"; + // DPI_WidgetUID, having type string + ParameterId["WidgetUID"] = "widgetUniqueId"; + // DPI_DatePropertiesDisplayText, having type string + ParameterId["DatePropertiesDisplayText"] = "datePropertiesDisplayText"; + // DPI_DatePropertiesHelperText, having type string + ParameterId["DatePropertiesHelperText"] = "datePropertiesHelperText"; + // DPI_EventName, having type string + ParameterId["EventName"] = "eventName"; + // DPI_ExceptionType, having type string + ParameterId["ExceptionType"] = "exceptionType"; + // DPI_SearchPlaceholder, having type string + ParameterId["SearchPlaceholder"] = "searchPlaceholder"; + // DPI_TargetVersion, having type string + ParameterId["TargetVersion"] = "targetVersion"; + // DPI_DataValueDisplayString, having type string + ParameterId["DataValueDisplayString"] = "dataValueDisplayString"; + // DPI_DomainString, having type string + ParameterId["DomainString"] = "domainString"; + // DPI_RawDataValueString, having type string + ParameterId["RawDataValueString"] = "rawDataValueString"; + // DPI_RichTextDialogTitle, having type string + ParameterId["RichTextDialogTitle"] = "richTextDialogTitle"; + // DPI_RichTextContent, having type string + ParameterId["RichTextContent"] = "richTextContent"; + // DPI_MarkSizeAsString, having type string + ParameterId["MarkSizeAsString"] = "markSizeAsString"; + // DPI_UnitsLabel, having type string + ParameterId["UnitsLabel"] = "unitsLabel"; + // DPI_EmailAddress, having type string + ParameterId["EmailAddress"] = "emailAddress"; + // DPI_FirstName, having type string + ParameterId["FirstName"] = "firstName"; + // DPI_LastName, having type string + ParameterId["LastName"] = "lastName"; + // DPI_SummaryCardAvg, having type string + ParameterId["SummaryCardAvg"] = "summaryCardAvg"; + // DPI_SummaryCardCaption, having type string + ParameterId["SummaryCardCaption"] = "summaryCardCaption"; + // DPI_SummaryCardCount, having type string + ParameterId["SummaryCardCount"] = "summaryCardCount"; + // DPI_SummaryCardKurtosis, having type string + ParameterId["SummaryCardKurtosis"] = "summaryCardKurtosis"; + // DPI_SummaryCardMax, having type string + ParameterId["SummaryCardMax"] = "summaryCardMax"; + // DPI_SummaryCardMedian, having type string + ParameterId["SummaryCardMedian"] = "summaryCardMedian"; + // DPI_SummaryCardMin, having type string + ParameterId["SummaryCardMin"] = "summaryCardMin"; + // DPI_SummaryCardQuart1, having type string + ParameterId["SummaryCardQuart1"] = "summaryCardQuart1"; + // DPI_SummaryCardQuart3, having type string + ParameterId["SummaryCardQuart3"] = "summaryCardQuart3"; + // DPI_SummaryCardSkewness, having type string + ParameterId["SummaryCardSkewness"] = "summaryCardSkewness"; + // DPI_SummaryCardStdev, having type string + ParameterId["SummaryCardStdev"] = "summaryCardStdev"; + // DPI_SummaryCardSum, having type string + ParameterId["SummaryCardSum"] = "summaryCardSum"; + // DPI_ValueClassAttr, having type string + ParameterId["ValueClassAttr"] = "valueClassAttr"; + // DPI_TrendLineDialogTitle, having type string + ParameterId["TrendLineDialogTitle"] = "trendLineDialogTitle"; + // DPI_LinearFitTypeLabel, having type string + ParameterId["LinearFitTypeLabel"] = "linearFitTypeLabel"; + // DPI_LogFitTypeLabel, having type string + ParameterId["LogFitTypeLabel"] = "logFitTypeLabel"; + // DPI_ExpFitTypeLabel, having type string + ParameterId["ExpFitTypeLabel"] = "expFitTypeLabel"; + // DPI_PowerFitTypeLabel, having type string + ParameterId["PowerFitTypeLabel"] = "powerFitTypeLabel"; + // DPI_PolynomialFitTypeLabel, having type string + ParameterId["PolynomialFitTypeLabel"] = "polynomialFitTypeLabel"; + // DPI_ExcludeColorLabel, having type string + ParameterId["ExcludeColorLabel"] = "excludeColorLabel"; + // DPI_EnableConfidenceBandsLabel, having type string + ParameterId["EnableConfidenceBandsLabel"] = "enableConfidenceBandsLabel"; + // DPI_ForceInterceptZeroLabel, having type string + ParameterId["ForceInterceptZeroLabel"] = "forceInterceptZero label"; + // DPI_EnableInstantAnalyticsLabel, having type string + ParameterId["EnableInstantAnalyticsLabel"] = "enableInstantAnalyticsLabel"; + // DPI_EnableTooltipsLabel, having type string + ParameterId["EnableTooltipsLabel"] = "enableTooltipLabel"; + // DPI_AuthenticationSummary, having type string + ParameterId["AuthenticationSummary"] = "authenticationSummary"; + // DPI_BtnCancelText, having type string + ParameterId["BtnCancelText"] = "btnCancelText"; + // DPI_BtnOkText, having type string + ParameterId["BtnOkText"] = "btnOkText"; + // DPI_ButtonText, having type string + ParameterId["ButtonText"] = "buttonText"; + // DPI_CalculationCaption, having type string + ParameterId["CalculationCaption"] = "calculationCaption"; + // DPI_CalculationDependencies, having type string + ParameterId["CalculationDependencies"] = "calculationDependencies"; + // DPI_CalculationFormula, having type string + ParameterId["CalculationFormula"] = "calculationFormula"; + // DPI_CheckPublishMessage, having type string + ParameterId["CheckPublishMessage"] = "checkPublishSummary"; + // DPI_ClusterModelText, having type string + ParameterId["ClusterModelText"] = "clusterModelText"; + // DPI_ClusterSummaryScaledText, having type string + ParameterId["ClusterSummaryScaledText"] = "clusterSummaryScaledText"; + // DPI_ClusterSummaryText, having type string + ParameterId["ClusterSummaryText"] = "clusterSummaryText"; + // DPI_ColumnCaption, having type string + ParameterId["ColumnCaption"] = "columnCaption"; + // DPI_DatasourceCaption, having type string + ParameterId["DatasourceCaption"] = "datasourceCaption"; + // DPI_DefaultCaption, having type string + ParameterId["DefaultCaption"] = "defaultCaption"; + // DPI_DisplayString, having type string + ParameterId["DisplayString"] = "displayText"; + // DPI_DragDescription, having type string + ParameterId["DragDescription"] = "dragDescription"; + // DPI_ExceptionMessage, having type string + ParameterId["ExceptionMessage"] = "exceptionMessage"; + // DPI_Explanation, having type string + ParameterId["Explanation"] = "explanation"; + // DPI_FieldCaption, having type string + ParameterId["FieldCaption"] = "fieldCaption"; + // DPI_FieldSummary, having type string + ParameterId["FieldSummary"] = "fieldSummary"; + // DPI_FieldSummaryLabel, having type string + ParameterId["FieldSummaryLabel"] = "fieldSummaryLabel"; + // DPI_FilterDescription, having type string + ParameterId["FilterDescription"] = "filterDescription"; + // DPI_FilterName, having type string + ParameterId["FilterName"] = "filterName"; + // DPI_ForecastModelText, having type string + ParameterId["ForecastModelText"] = "forecastModelText"; + // DPI_ForecastSummaryPctText, having type string + ParameterId["ForecastSummaryPctText"] = "forecastSummaryPctText"; + // DPI_ForecastSummaryText, having type string + ParameterId["ForecastSummaryText"] = "forecastSummaryText"; + // DPI_HasActiveExtractText, having type string + ParameterId["HasActiveExtractText"] = "hasActiveExtractText"; + // DPI_HtmlColor, having type string + ParameterId["HtmlColor"] = "htmlColor"; + // DPI_IncludeLocalFilesCheckedWarning, having type string + ParameterId["IncludeLocalFilesCheckedWarning"] = "includeLocalFilesCheckedWarning"; + // DPI_IncludeLocalFilesWarning, having type string + ParameterId["IncludeLocalFilesWarning"] = "includeLocalFilesWarning"; + // DPI_InvalidFieldCaption, having type string + ParameterId["InvalidFieldCaption"] = "invalidFieldCaption"; + // DPI_LimitSummary, having type string + ParameterId["LimitSummary"] = "limitSummary"; + // DPI_LoadedExistingObjectWarning, having type string + ParameterId["LoadedExistingObjectWarning"] = "loadedExistingObjectWarning"; + // DPI_ManageDatasourcesSummary, having type string + ParameterId["ManageDatasourcesSummary"] = "manageDatasourcesSummary"; + // DPI_ModalDialog, having type string + ParameterId["ModalDialog"] = "modalDialog"; + // DPI_NewDatasourceCaption, having type string + ParameterId["NewDatasourceCaption"] = "newDatasourceCaption"; + // DPI_PermissionsButtonLabel, having type string + ParameterId["PermissionsButtonLabel"] = "permissionsButtonLabel"; + // DPI_PermissionsEditorRoleId, having type string + ParameterId["PermissionsEditorRoleId"] = "permissionsEditorRoleId"; + // DPI_PermissionsLabel, having type string + ParameterId["PermissionsLabel"] = "permissionsLabel"; + // DPI_PerspectiveCaption, having type string + ParameterId["PerspectiveCaption"] = "perspectiveCaption"; + // DPI_PublishButtonLabel, having type string + ParameterId["PublishButtonLabel"] = "publishButtonLabel"; + // DPI_PublishChoiceLabel, having type string + ParameterId["PublishChoiceLabel"] = "publishChoiceLabel"; + // DPI_PublishObjectViewsSummary, having type string + ParameterId["PublishObjectViewsSummary"] = "publishObjectViewsSummary"; + // DPI_QualifiedFieldCaption, having type string + ParameterId["QualifiedFieldCaption"] = "qualifiedFieldCaption"; + // DPI_RelationshipTooltipText, having type string + ParameterId["RelationshipTooltipText"] = "relationshipTooltipText"; + // DPI_ResetObjectAttributesWarning, having type string + ParameterId["ResetObjectAttributesWarning"] = "resetObjectAttributesWarning"; + // DPI_RowCountCaption, having type string + ParameterId["RowCountCaption"] = "rowCountCaption"; + // DPI_ServerCaption, having type string + ParameterId["ServerCaption"] = "serverCaption"; + // DPI_SizeModeName, having type string + ParameterId["SizeModeName"] = "sizeModeName"; + // DPI_SummaryText, having type string + ParameterId["SummaryText"] = "summaryText"; + // DPI_SyncClientUseExtractLabel, having type string + ParameterId["SyncClientUseExtractLabel"] = "syncClientUseExtractLabel"; + // DPI_Text, having type string + ParameterId["Text"] = "text"; + // DPI_TextDropdownControlLabel, having type string + ParameterId["TextDropdownControlLabel"] = "controlLabel"; + // DPI_ThumbnailUserName, having type string + ParameterId["ThumbnailUserName"] = "thumbnailUserName"; + // DPI_TitleString, having type string + ParameterId["TitleString"] = "titleString"; + // DPI_TooltipText, having type string + ParameterId["TooltipText"] = "tooltipText"; + // DPI_UpdatedCalcCaption, having type string + ParameterId["UpdatedCalcCaption"] = "updatedCalculationCaption"; + // DPI_UpdatedCalcFormula, having type string + ParameterId["UpdatedCalcFormula"] = "updatedCalculationFormula"; + // DPI_UserCaption, having type string + ParameterId["UserCaption"] = "userCaption"; + // DPI_WarningTooltipText, having type string + ParameterId["WarningTooltipText"] = "warningTooltipText"; + // DPI_DatasourceFile, having type string + ParameterId["DatasourceFile"] = "datasourceFile"; + // DPI_File, having type string + ParameterId["File"] = "file"; + // DPI_FileNameBase, having type string + ParameterId["FileNameBase"] = "filenameBase"; + // DPI_NewFile, having type string + ParameterId["NewFile"] = "newFile"; + // DPI_OriginalFile, having type string + ParameterId["OriginalFile"] = "originalFile"; + // DPI_OutputFile, having type string + ParameterId["OutputFile"] = "outputFile"; + // DPI_SampleFileName, having type string + ParameterId["SampleFileName"] = "sampleFilename"; + // DPI_WorkbookFile, having type string + ParameterId["WorkbookFile"] = "workbookFile"; + // DPI_ImageKey, having type string + ParameterId["ImageKey"] = "imageKey"; + // DPI_OverlayImageKey, having type string + ParameterId["OverlayImageKey"] = "overlayImageKey"; + // DPI_TempFileKey, having type string + ParameterId["TempFileKey"] = "tempfileKey"; + // DPI_CapturedSheet, having type string + ParameterId["CapturedSheet"] = "capturedSheet"; + // DPI_CurrentSheet, having type string + ParameterId["CurrentSheet"] = "currentSheet"; + // DPI_Dashboard, having type string + ParameterId["Dashboard"] = "dashboard"; + // DPI_EnsureSheet, having type string + ParameterId["EnsureSheet"] = "ensureSheetName"; + // DPI_NewSheet, having type string + ParameterId["NewSheet"] = "newSheet"; + // DPI_Sheet, having type string + ParameterId["Sheet"] = "sheet"; + // DPI_SheetName, having type string + ParameterId["SheetName"] = "sheetName"; + // DPI_SourceDashboard, having type string + ParameterId["SourceDashboard"] = "sourceDashboard"; + // DPI_SourceSheet, having type string + ParameterId["SourceSheet"] = "sourceSheet"; + // DPI_TargetSheet, having type string + ParameterId["TargetSheet"] = "targetSheet"; + // DPI_WorkbookName, having type string + ParameterId["WorkbookName"] = "workbookName"; + // DPI_Worksheet, having type string + ParameterId["Worksheet"] = "worksheet"; + // DPI_BaseViewThumbLink, having type string + ParameterId["BaseViewThumbLink"] = "baseViewThumbLink"; + // DPI_BlogLink, having type string + ParameterId["BlogLink"] = "blogLink"; + // DPI_CacheUrl, having type string + ParameterId["CacheUrl"] = "cacheUrl"; + // DPI_DownloadLink, having type string + ParameterId["DownloadLink"] = "downloadLink"; + // DPI_RepositoryUrl, having type string + ParameterId["RepositoryUrl"] = "repositoryUrl"; + // DPI_ShareLink, having type string + ParameterId["ShareLink"] = "shareLink"; + // DPI_URL, having type string + ParameterId["URL"] = "url"; + // DPI_ClusterModelHtml, having type string + ParameterId["ClusterModelHtml"] = "clusterModelHtml"; + // DPI_ClusterSummaryHtml, having type string + ParameterId["ClusterSummaryHtml"] = "clusterSummaryHtml"; + // DPI_ClusterSummaryScaledHtml, having type string + ParameterId["ClusterSummaryScaledHtml"] = "clusterSummaryScaledHtml"; + // DPI_FieldDescription, having type string + ParameterId["FieldDescription"] = "fieldDescription"; + // DPI_ForecastModelHtml, having type string + ParameterId["ForecastModelHtml"] = "forecastModelHtml"; + // DPI_ForecastSummaryHtml, having type string + ParameterId["ForecastSummaryHtml"] = "forecastSummaryHtml"; + // DPI_ForecastSummaryPctHtml, having type string + ParameterId["ForecastSummaryPctHtml"] = "forecastSummaryPctHtml"; + // DPI_Html, having type string + ParameterId["Html"] = "html"; + // DPI_HtmlSelection, having type string + ParameterId["HtmlSelection"] = "htmlSelection"; + // DPI_HtmlTooltip, having type string + ParameterId["HtmlTooltip"] = "htmlTooltip"; + // DPI_HtmlTooltipModified, having type string + ParameterId["HtmlTooltipModified"] = "htmlTooltipModified"; + // DPI_TitleHtml, having type string + ParameterId["TitleHtml"] = "titleHtml"; + // DPI_CacheUrlInfoJson, having type string + ParameterId["CacheUrlInfoJson"] = "cacheUrlInfoJson"; + // DPI_FilterSearchJson, having type string + ParameterId["FilterSearchJson"] = "filterSearchJson"; + // DPI_FilterSearchWithIndexJson, having type string + ParameterId["FilterSearchWithIndexJson"] = "filterSearchWithIndexJson"; + // DPI_FilterShowChildrenJson, having type string + ParameterId["FilterShowChildrenJson"] = "filterShowChildrenJson"; + // DPI_FiltersJson, having type string + ParameterId["FiltersJson"] = "filtersJson"; + // DPI_FrameJson, having type string + ParameterId["FrameJson"] = "frameJson"; + // DPI_GeometryJson, having type string + ParameterId["GeometryJson"] = "geometryJson"; + // DPI_GetFilterItemsJson, having type string + ParameterId["GetFilterItemsJson"] = "getFilterItemsJson"; + // DPI_KeepOnlyResponseJson, having type string + ParameterId["KeepOnlyResponseJson"] = "keepOnlyResponseJson"; + // DPI_MenuCommandsJson, having type string + ParameterId["MenuCommandsJson"] = "menuCommandsJson"; + // DPI_ModifiedSheetsJson, having type string + ParameterId["ModifiedSheetsJson"] = "modifiedSheetsJson"; + // DPI_ParameterCtrlJson, having type string + ParameterId["ParameterCtrlJson"] = "parameterCtrlJson"; + // DPI_ViewJson, having type string + ParameterId["ViewJson"] = "viewJson"; + // DPI_CustomizedViewXML, having type string + ParameterId["CustomizedViewXML"] = "customizedViewXml"; + // DPI_DatasourceDeltaXML, having type string + ParameterId["DatasourceDeltaXML"] = "datasourceDeltaXml"; + // DPI_DatasourceXML, having type string + ParameterId["DatasourceXML"] = "datasourceXml"; + // DPI_KeychainXML, having type string + ParameterId["KeychainXML"] = "keychainXml"; + // DPI_PermissionsModelXML, having type string + ParameterId["PermissionsModelXML"] = "permissionsModelXml"; + // DPI_SharedViewsXML, having type string + ParameterId["SharedViewsXML"] = "sharedViewsXml"; + // DPI_TargetURL, having type string + ParameterId["TargetURL"] = "targetUrl"; + // DPI_Anchor, having type string + ParameterId["Anchor"] = "anchor"; + // DPI_CenterValue, having type string + ParameterId["CenterValue"] = "centerValue"; + // DPI_ComputedBinSize, having type string + ParameterId["ComputedBinSize"] = "computedBinSize"; + // DPI_ConstantValue, having type string + ParameterId["ConstantValue"] = "constantValue"; + // DPI_PairedConstantValue, having type string + ParameterId["PairedConstantValue"] = "pairedConstantValue"; + // DPI_CountDistinct, having type string + ParameterId["CountDistinct"] = "countDistinct"; + // DPI_DataMax, having type string + ParameterId["DataMax"] = "dataMax"; + // DPI_DataMin, having type string + ParameterId["DataMin"] = "dataMin"; + // DPI_DataValueString, having type string + ParameterId["DataValueString"] = "dataValueStr"; + // DPI_EndValue, having type string + ParameterId["EndValue"] = "endValue"; + // DPI_RangeMax, having type string + ParameterId["RangeMax"] = "rangeMax"; + // DPI_RangeMin, having type string + ParameterId["RangeMin"] = "rangeMin"; + // DPI_RangeStepSize, having type string + ParameterId["RangeStepSize"] = "rangeStepSize"; + // DPI_StartValue, having type string + ParameterId["StartValue"] = "startValue"; + // DPI_TargetValue, having type string + ParameterId["TargetValue"] = "targetValue"; + // DPI_ValueInc, having type string + ParameterId["ValueInc"] = "valueInc"; + // DPI_ValueMax, having type string + ParameterId["ValueMax"] = "valueMax"; + // DPI_ValueMin, having type string + ParameterId["ValueMin"] = "valueMin"; + // DPI_QuantilesValue, having type string + ParameterId["QuantilesValue"] = "quantilesValue"; + // DPI_UserInputBinSize, having type string + ParameterId["UserInputBinSize"] = "userBinSize"; + // DPI_AddedDataSources, having type string[] + ParameterId["AddedDataSources"] = "addedDataSourceNames"; + // DPI_AddressingCaptions, having type string[] + ParameterId["AddressingCaptions"] = "addressingCaptions"; + // DPI_AggregationCaptions, having type string[] + ParameterId["AggregationCaptions"] = "aggregationCaptions"; + // DPI_AtTheLevelCaptions, having type string[] + ParameterId["AtTheLevelCaptions"] = "atTheLevelCaptions"; + // DPI_AuthenticationSettingLabels, having type string[] + ParameterId["AuthenticationSettingLabels"] = "authenticationSettingLabels"; + // DPI_AutosaveFileIdsVector, having type string[] + ParameterId["AutosaveFileIdsVector"] = "autosaveFileIdsVector"; + // DPI_ChangedTuples, having type string[] + ParameterId["ChangedTuples"] = "changedTuples"; + // DPI_CharsetsAvailable, having type string[] + ParameterId["CharsetsAvailable"] = "charsetsAvailable"; + // DPI_CharsetDisplayNames, having type string[] + ParameterId["CharsetDisplayNames"] = "charsetDisplayNames"; + // DPI_ColorFactors, having type string[] + ParameterId["ColorFactors"] = "colorFactors"; + // DPI_ColumnFullNames, having type string[] + ParameterId["ColumnFullNames"] = "columnFullNames"; + // DPI_ConnectionNames, having type string[] + ParameterId["ConnectionNames"] = "connectionNames"; + // DPI_ConnectionCaptions, having type string[] + ParameterId["ConnectionCaptions"] = "connectionCaptions"; + // DPI_ConnectionBigQueryLegacySQLCheckBox, having type string[] + ParameterId["ConnectionBigQueryLegacySQLCheckBox"] = "connectionBigqueryLegacySqlCheckbox"; + // DPI_CustomFieldOrder, having type string[] + ParameterId["CustomFieldOrder"] = "customFieldOrder"; + // DPI_DataSourceClasses, having type string[] + ParameterId["DataSourceClasses"] = "dataSourceClasses"; + // DPI_DataSourceNames, having type string[] + ParameterId["DataSourceNames"] = "dataSourceNames"; + // DPI_DataSourceNames2, having type string[] + ParameterId["DataSourceNames2"] = "dataSourceNames2"; + // DPI_DataSourcesWithEmptyRelation, having type string[] + ParameterId["DataSourcesWithEmptyRelation"] = "dataSourcesWithEmptyRelation"; + // DPI_DateFormats, having type string[] + ParameterId["DateFormats"] = "dateFormats"; + // DPI_DayNames, having type string[] + ParameterId["DayNames"] = "dayNames"; + // DPI_DrillPathVector, having type string[] + ParameterId["DrillPathVector"] = "drillpathVector"; + // DPI_ErrorDetails, having type string[] + ParameterId["ErrorDetails"] = "errorDetails"; + // DPI_ExceptionMessageParams, having type string[] + ParameterId["ExceptionMessageParams"] = "exceptionMessageParams"; + // DPI_ExcludedSheets, having type string[] + ParameterId["ExcludedSheets"] = "excludeSheets"; + // DPI_FieldDisplayNames, having type string[] + ParameterId["FieldDisplayNames"] = "fieldDisplayNames"; + // DPI_FieldFolderVector, having type string[] + ParameterId["FieldFolderVector"] = "fieldFolderVector"; + // DPI_FileIds, having type string[] + ParameterId["FileIds"] = "fileIds"; + // DPI_FilePaths, having type string[] + ParameterId["FilePaths"] = "filePaths"; + // DPI_FileNames, having type string[] + ParameterId["FileNames"] = "fileNames"; + // DPI_FilterAdd, having type string[] + ParameterId["FilterAdd"] = "filterAdd"; + // DPI_FilterAliases, having type string[] + ParameterId["FilterAliases"] = "filterValues"; + // DPI_FilterRemove, having type string[] + ParameterId["FilterRemove"] = "filterRemove"; + // DPI_FixedCaptions, having type string[] + ParameterId["FixedCaptions"] = "fixedCaptions"; + // DPI_FontFamilies, having type string[] + ParameterId["FontFamilies"] = "fontFamilies"; + // DPI_FormatStrings, having type string[] + ParameterId["FormatStrings"] = "formatStrings"; + // DPI_FormattedValues, having type string[] + ParameterId["FormattedValues"] = "formattedValues"; + // DPI_FoundTuples, having type string[] + ParameterId["FoundTuples"] = "foundTuples"; + // DPI_FullSchedulesLabels, having type string[] + ParameterId["FullSchedulesLabels"] = "fullSchedulesLabels"; + // DPI_ImageResourceList, having type string[] + ParameterId["ImageResourceList"] = "imageResources"; + // DPI_IncludeList, having type string[] + ParameterId["IncludeList"] = "includeList"; + // DPI_IncrSchedulesLabels, having type string[] + ParameterId["IncrSchedulesLabels"] = "incrSchedulesLabels"; + // DPI_InvalidDates, having type string[] + ParameterId["InvalidDates"] = "invalidDates"; + // DPI_InvalidValues, having type string[] + ParameterId["InvalidValues"] = "invalidValues"; + // DPI_ItemValues, having type string[] + ParameterId["ItemValues"] = "itemValues"; + // DPI_JoinEditableProps, having type string[] + ParameterId["JoinEditableProps"] = "joinEditableProps"; + // DPI_JoinFieldCaptions, having type string[] + ParameterId["JoinFieldCaptions"] = "joinFieldCaptions"; + // DPI_LocaleOptions, having type string[] + ParameterId["LocaleOptions"] = "localeOptions"; + // DPI_LocaleDisplayNames, having type string[] + ParameterId["LocaleDisplayNames"] = "localeDisplayNames"; + // DPI_MapBoxStyleMaps, having type string[] + ParameterId["MapBoxStyleMaps"] = "mapboxStyleMaps"; + // DPI_MapConnectionErrorDetails, having type string[] + ParameterId["MapConnectionErrorDetails"] = "mapConnectionErrorDetails"; + // DPI_SheetNames, having type string[] + ParameterId["SheetNames"] = "sheetNames"; + // DPI_MapSourceNames, having type string[] + ParameterId["MapSourceNames"] = "mapSourceNames"; + // DPI_MarkGeometries, having type string[] + ParameterId["MarkGeometries"] = "markGeometries"; + // DPI_MenuItems, having type string[] + ParameterId["MenuItems"] = "menuItems"; + // DPI_Modes, having type string[] + ParameterId["Modes"] = "modes"; + // DPI_MonthNames, having type string[] + ParameterId["MonthNames"] = "monthNames"; + // DPI_NumberFormats, having type string[] + ParameterId["NumberFormats"] = "numberFormats"; + // DPI_ObjectTextIDs, having type string[] + ParameterId["ObjectTextIDs"] = "objectTextIds"; + // DPI_OldExtracts, having type string[] + ParameterId["OldExtracts"] = "oldExtracts"; + // DPI_OrderingTypeCaptions, having type string[] + ParameterId["OrderingTypeCaptions"] = "orderingTypeCaptions"; + // DPI_PageNames, having type string[] + ParameterId["PageNames"] = "pageNames"; + // DPI_PaneDescriptorKeys, having type string[] + ParameterId["PaneDescriptorKeys"] = "paneDescriptorKeys"; + // DPI_ParamCaptions, having type string[] + ParameterId["ParamCaptions"] = "paramCaptions"; + // DPI_PrecannedDataValues, having type string[] + ParameterId["PrecannedDataValues"] = "precannedDataValues"; + // DPI_PublishChoiceLabels, having type string[] + ParameterId["PublishChoiceLabels"] = "publishChoiceLabels"; + // DPI_RankTypeCaptions, having type string[] + ParameterId["RankTypeCaptions"] = "rankTypeCaptions"; + // DPI_RecentTags, having type string[] + ParameterId["RecentTags"] = "recentTags"; + // DPI_RelativeCaptions, having type string[] + ParameterId["RelativeCaptions"] = "relativeCaptions"; + // DPI_RemovedDataSources, having type string[] + ParameterId["RemovedDataSources"] = "removedDataSourceNames"; + // DPI_RepresentativeTuple, having type string[] + ParameterId["RepresentativeTuple"] = "representativeTuple"; + // DPI_RestartEveryCaptions, having type string[] + ParameterId["RestartEveryCaptions"] = "restartEveryCaptions"; + // DPI_SchemaMemberGlobalNames, having type string[] + ParameterId["SchemaMemberGlobalNames"] = "schemaMemberGlobalNames"; + // DPI_SelectValuesList, having type string[] + ParameterId["SelectValuesList"] = "selectValues"; + // DPI_SelectionValueList, having type string[] + ParameterId["SelectionValueList"] = "selectionValueList"; + // DPI_SortAggCaptions, having type string[] + ParameterId["SortAggCaptions"] = "sortAggCaptions"; + // DPI_SortDirectionCaptions, having type string[] + ParameterId["SortDirectionCaptions"] = "sortDirectionCaptions"; + // DPI_SortFieldCaptions, having type string[] + ParameterId["SortFieldCaptions"] = "sortFieldCaptions"; + // DPI_SortFieldNameVector, having type string[] + ParameterId["SortFieldNameVector"] = "sortFieldnameVector"; + // DPI_SupportedJoinOperators, having type string[] + ParameterId["SupportedJoinOperators"] = "supportedJoinOperators"; + // DPI_TableCalcTypeCaptions, having type string[] + ParameterId["TableCalcTypeCaptions"] = "tableCalcTypeCaptions"; + // DPI_Tags, having type string[] + ParameterId["Tags"] = "tags"; + // DPI_TermVec, having type string[] + ParameterId["TermVec"] = "termVector"; + // DPI_UIAutomationList, having type string[] + ParameterId["UIAutomationList"] = "uiAutomationList"; + // DPI_ReferenceLineValidCustomLabelTags, having type string[] + ParameterId["ReferenceLineValidCustomLabelTags"] = "validReferenceLineCustomLabelTags"; + // DPI_LocalizedKeywords, having type string[] + ParameterId["LocalizedKeywords"] = "localizedKeywords"; + // DPI_AvailableCalendars, having type string[] + ParameterId["AvailableCalendars"] = "availableCalendars"; + // DPI_SheetsToBeDeletedOrHidden, having type string[] + ParameterId["SheetsToBeDeletedOrHidden"] = "sheetsToBeDeletedOrHidden"; + // DPI_AddSheets, having type string[] + ParameterId["AddSheets"] = "addSheets"; + // DPI_NamesOfSubsheets, having type string[] + ParameterId["NamesOfSubsheets"] = "namesOfSubsheets"; + // DPI_RemoveSheets, having type string[] + ParameterId["RemoveSheets"] = "removeSheets"; + // DPI_ScrollOffsetSheets, having type string[] + ParameterId["ScrollOffsetSheets"] = "scrollOffsetSheets"; + // DPI_Sheets, having type string[] + ParameterId["Sheets"] = "sheets"; + // DPI_SourceWorksheets, having type string[] + ParameterId["SourceWorksheets"] = "sourceWorksheets"; + // DPI_TargetExcludes, having type string[] + ParameterId["TargetExcludes"] = "targetExclude"; + // DPI_TargetWorksheets, having type string[] + ParameterId["TargetWorksheets"] = "targetWorksheets"; + // DPI_TileURLs, having type string[] + ParameterId["TileURLs"] = "tileUrls"; + // DPI_Details, having type string[] + ParameterId["Details"] = "details"; + // DPI_FieldCaptions, having type string[] + ParameterId["FieldCaptions"] = "fieldCaptions"; + // DPI_HighlightCaptions, having type string[] + ParameterId["HighlightCaptions"] = "highlightCaptions"; + // DPI_LevelCaptions, having type string[] + ParameterId["LevelCaptions"] = "levelCaptions"; + // DPI_LevelLeafValues, having type string[] + ParameterId["LevelLeafValues"] = "levelLeafValues"; + // DPI_SubstitutionVariables, having type string[] + ParameterId["SubstitutionVariables"] = "substitutionVariables"; + // DPI_SubstitutionVariableValues, having type string[] + ParameterId["SubstitutionVariableValues"] = "substitutionVariableValues"; + // DPI_HtmlTooltips, having type string[] + ParameterId["HtmlTooltips"] = "htmlTooltips"; + // DPI_InvalidFields, having type string[] + ParameterId["InvalidFields"] = "invalidFields"; + // DPI_NamesOfColumns, having type string[] + ParameterId["NamesOfColumns"] = "namesOfColumns"; + // DPI_NamesOfFields, having type string[] + ParameterId["NamesOfFields"] = "namesOfFields"; + // DPI_ReferencedDatasources, having type string[] + ParameterId["ReferencedDatasources"] = "referencedDataSourceList"; + // DPI_CSSAttrs, having type Dictionary(of string) + ParameterId["CSSAttrs"] = "cssAttrs"; + // DPI_DataSourceMap, having type Dictionary(of string) + ParameterId["DataSourceMap"] = "dataSourceMap"; + // DPI_EventParameters, having type Dictionary(of string) + ParameterId["EventParameters"] = "eventParameters"; + // DPI_ExceptionAttrs, having type Dictionary(of string) + ParameterId["ExceptionAttrs"] = "exceptionAttrs"; + // DPI_InvalidSheetMessage, having type Dictionary(of string) + ParameterId["InvalidSheetMessage"] = "invalidSheetMessages"; + // DPI_MapBoxDefaultStyle, having type Dictionary(of string) + ParameterId["MapBoxDefaultStyle"] = "mapboxDefaultStyles"; + // DPI_PaneFormattings, having type Dictionary(of string) + ParameterId["PaneFormattings"] = "paneFormattings"; + // DPI_SourceNameWithCaption, having type Dictionary(of string) + ParameterId["SourceNameWithCaption"] = "sourceNameWithCaption"; + // DPI_ConnectionColorMap, having type Dictionary(of string) + ParameterId["ConnectionColorMap"] = "connectionColorMap"; + // DPI_TargetNameWithCaption, having type Dictionary(of string) + ParameterId["TargetNameWithCaption"] = "targetNameWithCaption"; + // DPI_ViewIds, having type Dictionary(of string) + ParameterId["ViewIds"] = "viewIds"; + // DPI_AddInSettings, having type Dictionary(of string) + ParameterId["AddInSettings"] = "addInSettings"; + // DPI_DatasourceIcons, having type Dictionary(of string) + ParameterId["DatasourceIcons"] = "datasourceIcons"; + // DPI_FormattedText, having type string + ParameterId["FormattedText"] = "formattedText"; + // DPI_IconTooltip, having type string + ParameterId["IconTooltip"] = "iconTooltip"; + // DPI_Title, having type string + ParameterId["Title"] = "title"; + // DPI_Tooltip, having type string + ParameterId["Tooltip"] = "tooltip"; + // DPI_ZoneText, having type string + ParameterId["ZoneText"] = "zoneText"; + // DPI_AlignmentFlags, having type int + ParameterId["AlignmentFlags"] = "alignmentFlags"; + // DPI_AlphaLevel, having type int + ParameterId["AlphaLevel"] = "alphaLevel"; + // DPI_AnovaDF, having type int + ParameterId["AnovaDF"] = "anovaDf"; + // DPI_AtTheLevelIndex, having type int + ParameterId["AtTheLevelIndex"] = "atTheLevelIndex"; + // DPI_AutomaticDrillIdxInVector, having type int + ParameterId["AutomaticDrillIdxInVector"] = "automaticDrillIdxVector"; + // DPI_AutoSize, having type int + ParameterId["AutoSize"] = "automaticSize"; + // DPI_BaseCoord, having type int + ParameterId["BaseCoord"] = "baseCoord"; + // DPI_CalcEditorCursorPosPostDrop, having type int + ParameterId["CalcEditorCursorPosPostDrop"] = "calcEditorCursorPosPostDrop"; + // DPI_CalcEditorDropPos, having type int + ParameterId["CalcEditorDropPos"] = "calcEditorDropPos"; + // DPI_CalcEditorTextSelectionEndPos, having type int + ParameterId["CalcEditorTextSelectionEndPos"] = "calcEditorTextSelectionEndPos"; + // DPI_CalcEditorTextSelectionStartPos, having type int + ParameterId["CalcEditorTextSelectionStartPos"] = "calcEditorTextSelectionStartPos"; + // DPI_CategoricalBinId, having type int + ParameterId["CategoricalBinId"] = "categoricalBinId"; + // DPI_CategoricalFindControllerId, having type int + ParameterId["CategoricalFindControllerId"] = "categoricalFindControllerId"; + // DPI_ClauseToModifyIndex, having type int + ParameterId["ClauseToModifyIndex"] = "clauseToModifyIndex"; + // DPI_ClientRenderPixelLimit, having type int + ParameterId["ClientRenderPixelLimit"] = "clientRenderPixelLimit"; + // DPI_ColCount, having type int + ParameterId["ColCount"] = "colCount"; + // DPI_ColWidth, having type int + ParameterId["ColWidth"] = "colWidth"; + // DPI_ColumnLevels, having type int + ParameterId["ColumnLevels"] = "columnLevels"; + // DPI_ColumnNumber, having type int + ParameterId["ColumnNumber"] = "columnNumber"; + // DPI_ColumnWidth, having type int + ParameterId["ColumnWidth"] = "columnWidth"; + // DPI_ContentHeight, having type int + ParameterId["ContentHeight"] = "contentH"; + // DPI_ContentWidth, having type int + ParameterId["ContentWidth"] = "contentW"; + // DPI_ContentX, having type int + ParameterId["ContentX"] = "contentX"; + // DPI_ContentY, having type int + ParameterId["ContentY"] = "contentY"; + // DPI_Coordinate, having type int + ParameterId["Coordinate"] = "coord"; + // DPI_CurDateAgg, having type int + ParameterId["CurDateAgg"] = "curDateAgg"; + // DPI_CurrentCustViewId, having type int + ParameterId["CurrentCustViewId"] = "currentCustomViewId"; + // DPI_CustomSplitCharacterCountSeparator, having type int + ParameterId["CustomSplitCharacterCountSeparator"] = "customSplitCharacterCountSeparator"; + // DPI_CustomSplitDesiredSplitCount, having type int + ParameterId["CustomSplitDesiredSplitCount"] = "customSplitDesiredSplitCount"; + // DPI_DashboardGridSize, having type int + ParameterId["DashboardGridSize"] = "dashboardGridSize"; + // DPI_DataIndex, having type int + ParameterId["DataIndex"] = "dataIndex"; + // DPI_DecimalPlaces, having type int + ParameterId["DecimalPlaces"] = "decimalPlaces"; + // DPI_DeltaTime, having type int + ParameterId["DeltaTime"] = "deltaTime"; + // DPI_DestPix, having type int + ParameterId["DestPix"] = "destPix"; + // DPI_DeviceIndex, having type int + ParameterId["DeviceIndex"] = "deviceIndex"; + // DPI_Duration, having type int + ParameterId["Duration"] = "duration"; + // DPI_EndPtX, having type int + ParameterId["EndPtX"] = "endX"; + // DPI_EndPtY, having type int + ParameterId["EndPtY"] = "endY"; + // DPI_ErrorLen, having type int + ParameterId["ErrorLen"] = "lengthOfCalcOfError"; + // DPI_ErrorPos, having type int + ParameterId["ErrorPos"] = "startPositionForError"; + // DPI_ExceptionErrorMessageId, having type int + ParameterId["ExceptionErrorMessageId"] = "exceptionErrorMessageId"; + // DPI_ExtentsH, having type int + ParameterId["ExtentsH"] = "extentsHeight"; + // DPI_ExtentsW, having type int + ParameterId["ExtentsW"] = "extentsWidth"; + // DPI_ExtentsX, having type int + ParameterId["ExtentsX"] = "extentsX"; + // DPI_ExtentsY, having type int + ParameterId["ExtentsY"] = "extentsY"; + // DPI_FieldIndex, having type int + ParameterId["FieldIndex"] = "fieldIndex"; + // DPI_FieldNameId, having type int + ParameterId["FieldNameId"] = "fieldNameId"; + // DPI_FirstDayOfWeek, having type int + ParameterId["FirstDayOfWeek"] = "firstDayOfWeek"; + // DPI_FirstValueIndex, having type int + ParameterId["FirstValueIndex"] = "firstValueIndex"; + // DPI_FixedSizePresetIndex, having type int + ParameterId["FixedSizePresetIndex"] = "fixedSizePresetIndex"; + // DPI_FocusItemIndex, having type int + ParameterId["FocusItemIndex"] = "focusItemIndex"; + // DPI_FontSize, having type int + ParameterId["FontSize"] = "fontSize"; + // DPI_ForecastIntRangeEnd, having type int + ParameterId["ForecastIntRangeEnd"] = "forecastIntRangeEnd"; + // DPI_ForecastIntRangeStart, having type int + ParameterId["ForecastIntRangeStart"] = "forecastIntRangeStart"; + // DPI_FunctionHelpIndex, having type int + ParameterId["FunctionHelpIndex"] = "functionHelpIndex"; + // DPI_GeographicSearchMaxResults, having type int + ParameterId["GeographicSearchMaxResults"] = "geographicSearchMaxResults"; + // DPI_Height, having type int + ParameterId["Height"] = "h"; + // DPI_HierarchyLevel, having type int + ParameterId["HierarchyLevel"] = "hierarchyLevel"; + // DPI_HierarchyLevelLoaded, having type int + ParameterId["HierarchyLevelLoaded"] = "hierarchyLevelLoaded"; + // DPI_HierarchyLevelMinimum, having type int + ParameterId["HierarchyLevelMinimum"] = "hierarchyLevelMinimum"; + // DPI_HierarchyLoadLimit, having type int + ParameterId["HierarchyLoadLimit"] = "hierarchyLoadLimit"; + // DPI_HierarchySelectControllerId, having type int + ParameterId["HierarchySelectControllerId"] = "hierarchySelectControllerId"; + // DPI_HorzTextCell, having type int + ParameterId["HorzTextCell"] = "horzTextCell"; + // DPI_ImageIndex, having type int + ParameterId["ImageIndex"] = "imageIndex"; + // DPI_ImageSizeLimit, having type int + ParameterId["ImageSizeLimit"] = "imageSizeLimit"; + // DPI_TransparentLineMarksLimit, having type int + ParameterId["TransparentLineMarksLimit"] = "transparentLineMarksLimit"; + // DPI_Indent, having type int + ParameterId["Indent"] = "indent"; + // DPI_Index, having type int + ParameterId["Index"] = "idx"; + // DPI_IndexFrom, having type int + ParameterId["IndexFrom"] = "indexFrom"; + // DPI_IndexOffset, having type int + ParameterId["IndexOffset"] = "indexOffset"; + // DPI_IndexTo, having type int + ParameterId["IndexTo"] = "indexTo"; + // DPI_InlineConnectionRenameRow, having type int + ParameterId["InlineConnectionRenameRow"] = "inlineConnectionRenameRow"; + // DPI_InsertPos, having type int + ParameterId["InsertPos"] = "insertPos"; + // DPI_IsHasDataSupported, having type int + ParameterId["IsHasDataSupported"] = "isHasDataSupported"; + // DPI_LeftMargin, having type int + ParameterId["LeftMargin"] = "leftMargin"; + // DPI_LeftRightBorderWidth, having type int + ParameterId["LeftRightBorderWidth"] = "leftRightBorderWidth"; + // DPI_LowerBound, having type int + ParameterId["LowerBound"] = "lowerBound"; + // DPI_MapRequestPixels, having type int + ParameterId["MapRequestPixels"] = "mapRequestPixels"; + // DPI_MapScaleFontSizePixels, having type int + ParameterId["MapScaleFontSizePixels"] = "mapScaleFontSizePixels"; + // DPI_MapScaleReadoutNumber, having type int + ParameterId["MapScaleReadoutNumber"] = "mapScaleReadoutNumber"; + // DPI_MapScaleWidth, having type int + ParameterId["MapScaleWidth"] = "mapScaleWidth"; + // DPI_MapTileSize, having type int + ParameterId["MapTileSize"] = "mapTileSize"; + // DPI_Margin, having type int + ParameterId["Margin"] = "margin"; + // DPI_MarginBottom, having type int + ParameterId["MarginBottom"] = "marginBottom"; + // DPI_MarginLeft, having type int + ParameterId["MarginLeft"] = "marginLeft"; + // DPI_MarginRight, having type int + ParameterId["MarginRight"] = "marginRight"; + // DPI_MarginTop, having type int + ParameterId["MarginTop"] = "marginTop"; + // DPI_MaxCell, having type int + ParameterId["MaxCell"] = "maxCell"; + // DPI_MaxItemSpan, having type int + ParameterId["MaxItemSpan"] = "maxItemSpan"; + // DPI_MaxPolynomialDegree, having type int + ParameterId["MaxPolynomialDegree"] = "maxDegree"; + // DPI_MaxPosition, having type int + ParameterId["MaxPosition"] = "maxPosition"; + // DPI_MaxSize, having type int + ParameterId["MaxSize"] = "maxSize"; + // DPI_MinCell, having type int + ParameterId["MinCell"] = "minCell"; + // DPI_MinPolynomialDegree, having type int + ParameterId["MinPolynomialDegree"] = "minDegree"; + // DPI_MinPosition, having type int + ParameterId["MinPosition"] = "minPosition"; + // DPI_MinSize, having type int + ParameterId["MinSize"] = "minSize"; + // DPI_ModelDF, having type int + ParameterId["ModelDF"] = "modelDf"; + // DPI_NewIndex, having type int + ParameterId["NewIndex"] = "newIndex"; + // DPI_NumDataSourcesUsingServer, having type int + ParameterId["NumDataSourcesUsingServer"] = "numDataSourcesUsingServer"; + // DPI_NumFilteredObs, having type int + ParameterId["NumFilteredObs"] = "filteredObservations"; + // DPI_NumModeledObs, having type int + ParameterId["NumModeledObs"] = "modeledObservations"; + // DPI_NumNotClustered, having type int + ParameterId["NumNotClustered"] = "numNotClustered"; + // DPI_NumNumericFields, having type int + ParameterId["NumNumericFields"] = "numNumericFields"; + // DPI_NumOutliers, having type int + ParameterId["NumOutliers"] = "numOutliers"; + // DPI_NumRows, having type int + ParameterId["NumRows"] = "numRows"; + // DPI_NumSelected, having type int + ParameterId["NumSelected"] = "numSelected"; + // DPI_OffsetX, having type int + ParameterId["OffsetX"] = "offsetX"; + // DPI_OffsetY, having type int + ParameterId["OffsetY"] = "offsetY"; + // DPI_Padding, having type int + ParameterId["Padding"] = "padding"; + // DPI_PaddingBottom, having type int + ParameterId["PaddingBottom"] = "paddingBottom"; + // DPI_PaddingLeft, having type int + ParameterId["PaddingLeft"] = "paddingLeft"; + // DPI_PaddingRight, having type int + ParameterId["PaddingRight"] = "paddingRight"; + // DPI_PaddingTop, having type int + ParameterId["PaddingTop"] = "paddingTop"; + // DPI_PageLoadPercentage, having type int + ParameterId["PageLoadPercentage"] = "pageLoadPercentage"; + // DPI_PaletteIndex, having type int + ParameterId["PaletteIndex"] = "paletteIndex"; + // DPI_PaneSpecificationId, having type int + ParameterId["PaneSpecificationId"] = "paneSpec"; + // DPI_ParameterCtrlIncrementsPerTick, having type int + ParameterId["ParameterCtrlIncrementsPerTick"] = "parameterControlIncrementMultiplier"; + // DPI_PolynomialDegree, having type int + ParameterId["PolynomialDegree"] = "degree"; + // DPI_Port, having type int + ParameterId["Port"] = "datasourcePort"; + // DPI_Position, having type int + ParameterId["Position"] = "position"; + // DPI_ParentProjectId, having type int + ParameterId["ParentProjectId"] = "parentProjectId"; + // DPI_PublishResultStringId, having type int + ParameterId["PublishResultStringId"] = "publishResultStringId"; + // DPI_Radius, having type int + ParameterId["Radius"] = "radius"; + // DPI_ReadoutOffset, having type int + ParameterId["ReadoutOffset"] = "readoutOffset"; + // DPI_ReferenceIndex, having type int + ParameterId["ReferenceIndex"] = "referenceIndex"; + // DPI_RegionHeight, having type int + ParameterId["RegionHeight"] = "regionHeight"; + // DPI_RegionWidth, having type int + ParameterId["RegionWidth"] = "regionWidth"; + // DPI_RemovedDatasourceCount, having type int + ParameterId["RemovedDatasourceCount"] = "removedDatasourceCount"; + // DPI_RemovedSheetCount, having type int + ParameterId["RemovedSheetCount"] = "removedSheetCount"; + // DPI_ResidualDF, having type int + ParameterId["ResidualDF"] = "residualDf"; + // DPI_ResizeColumn, having type int + ParameterId["ResizeColumn"] = "resizeColumn"; + // DPI_RestartEveryIndex, having type int + ParameterId["RestartEveryIndex"] = "restartEveryIndex"; + // DPI_RightMargin, having type int + ParameterId["RightMargin"] = "rightMargin"; + // DPI_RowCount, having type int + ParameterId["RowCount"] = "rowCount"; + // DPI_RowHeight, having type int + ParameterId["RowHeight"] = "rowHeight"; + // DPI_RowInnerLevels, having type int + ParameterId["RowInnerLevels"] = "rowInnerLevels"; + // DPI_RowLevels, having type int + ParameterId["RowLevels"] = "rowLevels"; + // DPI_RowNumber, having type int + ParameterId["RowNumber"] = "rowNumber"; + // DPI_RowWidth, having type int + ParameterId["RowWidth"] = "rowWidth"; + // DPI_SecondValueIndex, having type int + ParameterId["SecondValueIndex"] = "secondValueIndex"; + // DPI_SecondsAgo, having type int + ParameterId["SecondsAgo"] = "secondsAgo"; + // DPI_SelectionEnd, having type int + ParameterId["SelectionEnd"] = "selectionEnd"; + // DPI_SelectionStart, having type int + ParameterId["SelectionStart"] = "selectionStart"; + // DPI_ShapePaletteID, having type int + ParameterId["ShapePaletteID"] = "shapePaletteId"; + // DPI_SheetIndex, having type int + ParameterId["SheetIndex"] = "sheetIndex"; + // DPI_ShelfPositionIndex, having type int + ParameterId["ShelfPositionIndex"] = "shelfPosIndex"; + // DPI_Size, having type int + ParameterId["Size"] = "size"; + // DPI_SizeDifference, having type int + ParameterId["SizeDifference"] = "sizeDelta"; + // DPI_SnapDistance, having type int + ParameterId["SnapDistance"] = "snapDistance"; + // DPI_SnapLocation, having type int + ParameterId["SnapLocation"] = "snapLocation"; + // DPI_SolveOrder, having type int + ParameterId["SolveOrder"] = "solveOrder"; + // DPI_SpaceBetweenPoints, having type int + ParameterId["SpaceBetweenPoints"] = "spaceBetweenPoints"; + // DPI_StepSize, having type int + ParameterId["StepSize"] = "stepSize"; + // DPI_Steps, having type int + ParameterId["Steps"] = "steps"; + // DPI_StoryPointIndex, having type int + ParameterId["StoryPointIndex"] = "currentStorypointIndex"; + // DPI_StyleLen, having type int + ParameterId["StyleLen"] = "tokenLengthForStyle"; + // DPI_StylePos, having type int + ParameterId["StylePos"] = "tokenPositionForStyle"; + // DPI_SwatchAreaWidth, having type int + ParameterId["SwatchAreaWidth"] = "swatchWidth"; + // DPI_TargetBinId, having type int + ParameterId["TargetBinId"] = "targetBinId"; + // DPI_TargetPtX, having type int + ParameterId["TargetPtX"] = "targetX"; + // DPI_TargetPtY, having type int + ParameterId["TargetPtY"] = "targetY"; + // DPI_TileFactor, having type int + ParameterId["TileFactor"] = "tileFactor"; + // DPI_TitleHeight, having type int + ParameterId["TitleHeight"] = "titleHeight"; + // DPI_TitleWidth, having type int + ParameterId["TitleWidth"] = "titleWidth"; + // DPI_TopBottomBorderWidth, having type int + ParameterId["TopBottomBorderWidth"] = "topBottomBorderWidth"; + // DPI_UIAutomationLineSize, having type int + ParameterId["UIAutomationLineSize"] = "uiAutomationLineSize"; + // DPI_UIAutomationPageSize, having type int + ParameterId["UIAutomationPageSize"] = "uiAutomationPageSize"; + // DPI_UID, having type int + ParameterId["UID"] = "uid"; + // DPI_UpperBound, having type int + ParameterId["UpperBound"] = "upperBound"; + // DPI_VertTextCell, having type int + ParameterId["VertTextCell"] = "vertTextCell"; + // DPI_Width, having type int + ParameterId["Width"] = "w"; + // DPI_X, having type int + ParameterId["X"] = "x"; + // DPI_Y, having type int + ParameterId["Y"] = "y"; + // DPI_ZOrder, having type int + ParameterId["ZOrder"] = "zOrder"; + // DPI_ZoneIconIndex, having type int + ParameterId["ZoneIconIndex"] = "zoneIconIndex"; + // DPI_AliasIndices, having type int[] + ParameterId["AliasIndices"] = "aliasIndices"; + // DPI_AnovaDFVec, having type int[] + ParameterId["AnovaDFVec"] = "anovaDfVector"; + // DPI_ColumnIndices, having type int[] + ParameterId["ColumnIndices"] = "columnIndices"; + // DPI_DrillFieldIndices, having type int[] + ParameterId["DrillFieldIndices"] = "drillFieldIndices"; + // DPI_FilterMaxIndices, having type int[] + ParameterId["FilterMaxIndices"] = "filterMaxIndices"; + // DPI_FilterMinIndices, having type int[] + ParameterId["FilterMinIndices"] = "filterMinIndices"; + // DPI_FilterValuesIndices, having type int[] + ParameterId["FilterValuesIndices"] = "filterValueIndices"; + // DPI_FormatStringIndices, having type int[] + ParameterId["FormatStringIndices"] = "formatstrIndices"; + // DPI_FormattedValIndices, having type int[] + ParameterId["FormattedValIndices"] = "formatValIdxs"; + // DPI_PaletteIndices, having type int[] + ParameterId["PaletteIndices"] = "palettesIndices"; + // DPI_PaneIndices, having type int[] + ParameterId["PaneIndices"] = "paneIndices"; + // DPI_Points, having type int[] + ParameterId["Points"] = "points"; + // DPI_QuickFilterSettings, having type int[] + ParameterId["QuickFilterSettings"] = "quickFilterSettings"; + // DPI_SelectedIndices, having type int[] + ParameterId["SelectedIndices"] = "selectedIndices"; + // DPI_ShelfPositionIndices, having type int[] + ParameterId["ShelfPositionIndices"] = "shelfPosIndices"; + // DPI_TileBox, having type int[] + ParameterId["TileBox"] = "tileBox"; + // DPI_TrailOverride, having type int[] + ParameterId["TrailOverride"] = "trailOverride"; + // DPI_UIDs, having type int[] + ParameterId["UIDs"] = "uids"; + // DPI_ValueIndices, having type int[] + ParameterId["ValueIndices"] = "valueIndices"; + // DPI_XCellOffsets, having type int[] + ParameterId["XCellOffsets"] = "xCellOffsets"; + // DPI_XPixelOffsets, having type int[] + ParameterId["XPixelOffsets"] = "xPixelOffsets"; + // DPI_YCellOffsets, having type int[] + ParameterId["YCellOffsets"] = "yCellOffsets"; + // DPI_YPixelOffsets, having type int[] + ParameterId["YPixelOffsets"] = "yPixelOffsets"; + // DPI_IntMap, having type Dictionary(of int) + ParameterId["IntMap"] = "intMap"; + // DPI_SelectedAuthSettingIndices, having type Dictionary(of int) + ParameterId["SelectedAuthSettingIndices"] = "selectedAuthSettingIndices"; + // DPI_ActiveStoryPointID, having type uint + ParameterId["ActiveStoryPointID"] = "activeStoryPointId"; + // DPI_ActiveZoneID, having type uint + ParameterId["ActiveZoneID"] = "activeZoneId"; + // DPI_ActualSize, having type uint + ParameterId["ActualSize"] = "actualSize"; + // DPI_AddInDebugPort, having type uint + ParameterId["AddInDebugPort"] = "addInDebugPort"; + // DPI_AggregationIndex, having type uint + ParameterId["AggregationIndex"] = "aggregationIndex"; + // DPI_AnnotationID, having type uint + ParameterId["AnnotationID"] = "annotationId"; + // DPI_AssignedAliasCount, having type uint + ParameterId["AssignedAliasCount"] = "assignedAliasCount"; + // DPI_CapabilityId, having type uint + ParameterId["CapabilityId"] = "capabilityId"; + // DPI_CaretIndex, having type uint + ParameterId["CaretIndex"] = "caretIndex"; + // DPI_CellID, having type uint + ParameterId["CellID"] = "cellId"; + // DPI_ColumnIndex, having type uint + ParameterId["ColumnIndex"] = "columnIndex"; + // DPI_CommandID, having type uint + ParameterId["CommandID"] = "id"; + // DPI_CommandIndex, having type uint + ParameterId["CommandIndex"] = "index"; + // DPI_ControllerId, having type uint + ParameterId["ControllerId"] = "controllerId"; + // DPI_Count, having type uint + ParameterId["Count"] = "count"; + // DPI_URowCount, having type uint + ParameterId["URowCount"] = "uRowCount"; + // DPI_UColumnCount, having type uint + ParameterId["UColumnCount"] = "uColumnCount"; + // DPI_CurrentPage, having type uint + ParameterId["CurrentPage"] = "currentPage"; + // DPI_DatePeriodsCount, having type uint + ParameterId["DatePeriodsCount"] = "datePeriodsCount"; + // DPI_Decimals, having type uint + ParameterId["Decimals"] = "decimals"; + // DPI_DefaultHeight, having type uint + ParameterId["DefaultHeight"] = "defaultHeight"; + // DPI_DefaultItem, having type uint + ParameterId["DefaultItem"] = "defaultItem"; + // DPI_DefaultWidth, having type uint + ParameterId["DefaultWidth"] = "defaultWidth"; + // DPI_Depth, having type uint + ParameterId["Depth"] = "depth"; + // DPI_DetailID, having type uint + ParameterId["DetailID"] = "detailId"; + // DPI_DrillLevel, having type uint + ParameterId["DrillLevel"] = "drillLevel"; + // DPI_DuplicateIndex, having type uint + ParameterId["DuplicateIndex"] = "duplicateIndex"; + // DPI_EndIndex, having type uint + ParameterId["EndIndex"] = "endIndex"; + // DPI_FieldIconIdx, having type uint + ParameterId["FieldIconIdx"] = "fieldIconIdx"; + // DPI_FilterLevel, having type uint + ParameterId["FilterLevel"] = "filterLevel"; + // DPI_FilterTileSize, having type uint + ParameterId["FilterTileSize"] = "filterTileSize"; + // DPI_FiscalYearStart, having type uint + ParameterId["FiscalYearStart"] = "fiscalYearStart"; + // DPI_FitPagesAcross, having type uint + ParameterId["FitPagesAcross"] = "pageFitHorizontal"; + // DPI_FitPagesDown, having type uint + ParameterId["FitPagesDown"] = "pageFitVertical"; + // DPI_FixedIndex, having type uint + ParameterId["FixedIndex"] = "fixedIndex"; + // DPI_FlipboardZoneID, having type uint + ParameterId["FlipboardZoneID"] = "flipboardZoneId"; + // DPI_ForecastAutoRangeSize, having type uint + ParameterId["ForecastAutoRangeSize"] = "forecastAutoRangeSize"; + // DPI_ForecastEndOfRange, having type uint + ParameterId["ForecastEndOfRange"] = "forecastEndOfRange"; + // DPI_ForecastIgnoreLast, having type uint + ParameterId["ForecastIgnoreLast"] = "forecastIgnoreLast"; + // DPI_ForecastNextRangeSize, having type uint + ParameterId["ForecastNextRangeSize"] = "forecastNextRangeSize"; + // DPI_GroupFlags, having type uint + ParameterId["GroupFlags"] = "groupFlag"; + // DPI_HierarchyLevels, having type uint + ParameterId["HierarchyLevels"] = "hierarchyLevels"; + // DPI_HierarchyMemberId, having type uint + ParameterId["HierarchyMemberId"] = "hierarchyMemberId"; + // DPI_HitTestFlags, having type uint + ParameterId["HitTestFlags"] = "hitTestFlags"; + // DPI_ImageHeight, having type uint + ParameterId["ImageHeight"] = "imageHeight"; + // DPI_ImageWidth, having type uint + ParameterId["ImageWidth"] = "imageWidth"; + // DPI_ItemIndex, having type uint + ParameterId["ItemIndex"] = "itemIndex"; + // DPI_ItemIndex1, having type uint + ParameterId["ItemIndex1"] = "itemIndex1"; + // DPI_LineHeight, having type uint + ParameterId["LineHeight"] = "lineHeight"; + // DPI_MapIntermediateLevels, having type uint + ParameterId["MapIntermediateLevels"] = "mapIntermediateLevels"; + // DPI_MapWorldRepeats, having type uint + ParameterId["MapWorldRepeats"] = "mapWorldRepeats"; + // DPI_MaxAlpha, having type uint + ParameterId["MaxAlpha"] = "maxAlpha"; + // DPI_MaxHeight, having type uint + ParameterId["MaxHeight"] = "maxHeight"; + // DPI_MaxNumberWebListItems, having type uint + ParameterId["MaxNumberWebListItems"] = "maxNumberWebListItems"; + // DPI_MaxPrevOrNextValues, having type uint + ParameterId["MaxPrevOrNextValues"] = "maxPrevOrNextValues"; + // DPI_MaxRows, having type uint + ParameterId["MaxRows"] = "maxRows"; + // DPI_MaxTransparency, having type uint + ParameterId["MaxTransparency"] = "colorMaxTransparencyValue"; + // DPI_MaxWidth, having type uint + ParameterId["MaxWidth"] = "maxWidth"; + // DPI_MinColumns, having type uint + ParameterId["MinColumns"] = "minColumns"; + // DPI_MinHeight, having type uint + ParameterId["MinHeight"] = "minHeight"; + // DPI_MinPrevOrNextValues, having type uint + ParameterId["MinPrevOrNextValues"] = "minPrevOrNextValues"; + // DPI_MinTransparency, having type uint + ParameterId["MinTransparency"] = "colorMinTransparencyValue"; + // DPI_MinWidth, having type uint + ParameterId["MinWidth"] = "minWidth"; + // DPI_NestedCalcsIndex, having type uint + ParameterId["NestedCalcsIndex"] = "nestedCalcsIndex"; + // DPI_NextValues, having type uint + ParameterId["NextValues"] = "nextValues"; + // DPI_NodeLevel, having type uint + ParameterId["NodeLevel"] = "nodeLevel"; + // DPI_NumHighlighted, having type uint + ParameterId["NumHighlighted"] = "numHighlighted"; + // DPI_NumberOfNextValues, having type uint + ParameterId["NumberOfNextValues"] = "numberOfNextValues"; + // DPI_NumberOfPrevValues, having type uint + ParameterId["NumberOfPrevValues"] = "numberOfPrevValues"; + // DPI_ObjectID, having type uint + ParameterId["ObjectID"] = "objectId"; + // DPI_OrderingTypeIndex, having type uint + ParameterId["OrderingTypeIndex"] = "orderingTypeIndex"; + // DPI_PageCount, having type uint + ParameterId["PageCount"] = "pageCount"; + // DPI_PageFadeEnd, having type uint + ParameterId["PageFadeEnd"] = "fadeEnd"; + // DPI_PageFadeStart, having type uint + ParameterId["PageFadeStart"] = "fadeStart"; + // DPI_PageIndex, having type uint + ParameterId["PageIndex"] = "pageIndex"; + // DPI_PageNumber, having type uint + ParameterId["PageNumber"] = "pageNumber"; + // DPI_PageScalePercent, having type uint + ParameterId["PageScalePercent"] = "pageScalePercent"; + // DPI_PageTrailLength, having type uint + ParameterId["PageTrailLength"] = "historyLength"; + // DPI_PaletteFlagsVal, having type uint + ParameterId["PaletteFlagsVal"] = "paletteFlagsVal"; + // DPI_PaneIndex, having type uint + ParameterId["PaneIndex"] = "paneIndex"; + // DPI_ParamCtrlDisplayFlags, having type uint + ParameterId["ParamCtrlDisplayFlags"] = "paramDisplayFlags"; + // DPI_ParentZoneID, having type uint + ParameterId["ParentZoneID"] = "parentZoneId"; + // DPI_PercentileParam, having type uint + ParameterId["PercentileParam"] = "percentileParam"; + // DPI_PrevValues, having type uint + ParameterId["PrevValues"] = "prevValues"; + // DPI_QRGBColor, having type uint + ParameterId["QRGBColor"] = "qrgbColor"; + // DPI_RangeN, having type uint + ParameterId["RangeN"] = "rangeN"; + // DPI_RankTypeIndex, having type uint + ParameterId["RankTypeIndex"] = "rankTypeIndex"; + // DPI_RenderComplexity, having type uint + ParameterId["RenderComplexity"] = "renderComplexityLimit"; + // DPI_RowIndex, having type uint + ParameterId["RowIndex"] = "rowIndex"; + // DPI_SelectedAuthSettingIndex, having type uint + ParameterId["SelectedAuthSettingIndex"] = "selectedAuthSettingIndex"; + // DPI_SelectedFullScheduleIndex, having type uint + ParameterId["SelectedFullScheduleIndex"] = "selectedFullScheduleIndex"; + // DPI_SelectedIncrScheduleIndex, having type uint + ParameterId["SelectedIncrScheduleIndex"] = "selectedIncrScheduleIndex"; + // DPI_SelectedPublishChoiceIndex, having type uint + ParameterId["SelectedPublishChoiceIndex"] = "selectedPublishChoiceIndex"; + // DPI_SelectedMemberCount, having type uint + ParameterId["SelectedMemberCount"] = "selectedMemberCount"; + // DPI_ShapeID, having type uint + ParameterId["ShapeID"] = "shapeId"; + // DPI_SheetUseCount, having type uint + ParameterId["SheetUseCount"] = "useCount"; + // DPI_ShelfItemID, having type uint + ParameterId["ShelfItemID"] = "shelfItemId"; + // DPI_SigFigs, having type uint + ParameterId["SigFigs"] = "sigFigs"; + // DPI_SortAggIndex, having type uint + ParameterId["SortAggIndex"] = "sortAggIndvValues"; + // DPI_SortColumnIndex, having type uint + ParameterId["SortColumnIndex"] = "sortColumnIndex"; + // DPI_SortDirectionIndex, having type uint + ParameterId["SortDirectionIndex"] = "sortDirectionIndex"; + // DPI_SortFieldIndex, having type uint + ParameterId["SortFieldIndex"] = "sortFieldIndex"; + // DPI_StartIndex, having type uint + ParameterId["StartIndex"] = "startIndex"; + // DPI_StartOfWeek, having type uint + ParameterId["StartOfWeek"] = "startOfWeek"; + // DPI_StoryPointID, having type uint + ParameterId["StoryPointID"] = "storyPointId"; + // DPI_TableCalcTypeIndex, having type uint + ParameterId["TableCalcTypeIndex"] = "tableCalcTypeIndex"; + // DPI_TableCalcTypesUsed, having type uint + ParameterId["TableCalcTypesUsed"] = "tableCalcTypesUsed"; + // DPI_TemplateIndex, having type uint + ParameterId["TemplateIndex"] = "templateIndex"; + // DPI_TileCount, having type uint + ParameterId["TileCount"] = "tileCount"; + // DPI_TimeoutSeconds, having type uint + ParameterId["TimeoutSeconds"] = "timeoutSeconds"; + // DPI_TopN, having type uint + ParameterId["TopN"] = "topN"; + // DPI_TotalNumberOfItemsInSet, having type uint + ParameterId["TotalNumberOfItemsInSet"] = "totalNumberOfItemsInSet"; + // DPI_TotalMemberCount, having type uint + ParameterId["TotalMemberCount"] = "totalMemberCount"; + // DPI_Transparency, having type uint + ParameterId["Transparency"] = "colorTransparencyValue"; + // DPI_TupleID, having type uint + ParameterId["TupleID"] = "tupleId"; + // DPI_UIndex, having type uint + ParameterId["UIndex"] = "uindex"; + // DPI_UndoPosition, having type uint + ParameterId["UndoPosition"] = "undoPosition"; + // DPI_UnsignedWidth, having type uint + ParameterId["UnsignedWidth"] = "uw"; + // DPI_UnsignedWidthBottom, having type uint + ParameterId["UnsignedWidthBottom"] = "uwb"; + // DPI_UnsignedWidthLeft, having type uint + ParameterId["UnsignedWidthLeft"] = "uwl"; + // DPI_UnsignedWidthRight, having type uint + ParameterId["UnsignedWidthRight"] = "uwr"; + // DPI_UnsignedWidthTop, having type uint + ParameterId["UnsignedWidthTop"] = "uwt"; + // DPI_ValueIndex, having type uint + ParameterId["ValueIndex"] = "valueIndex"; + // DPI_ValueInt, having type uint + ParameterId["ValueInt"] = "valueInt"; + // DPI_WorldOffset, having type uint + ParameterId["WorldOffset"] = "worldOffset"; + // DPI_XDuplicateIndex, having type uint + ParameterId["XDuplicateIndex"] = "xDuplicateIndex"; + // DPI_XIndex, having type uint + ParameterId["XIndex"] = "xIndex"; + // DPI_YDuplicateIndex, having type uint + ParameterId["YDuplicateIndex"] = "yDuplicateIndex"; + // DPI_YIndex, having type uint + ParameterId["YIndex"] = "yIndex"; + // DPI_ZoneID, having type uint + ParameterId["ZoneID"] = "zoneId"; + // DPI_ZoneZOrder, having type uint + ParameterId["ZoneZOrder"] = "zoneZOrder"; + // DPI_ComponentID, having type uint + ParameterId["ComponentID"] = "componentId"; + // DPI_NonThreadPoolUseCount, having type uint + ParameterId["NonThreadPoolUseCount"] = "nonThreadPoolUseCount"; + // DPI_AddressingIndices, having type uint[] + ParameterId["AddressingIndices"] = "addressingIndices"; + // DPI_AddressingInvalidIndices, having type uint[] + ParameterId["AddressingInvalidIndices"] = "addressingInvalidIndices"; + // DPI_ChildZoneIds, having type uint[] + ParameterId["ChildZoneIds"] = "childZoneIds"; + // DPI_ColorList, having type uint[] + ParameterId["ColorList"] = "colorList"; + // DPI_DuplicateIndices, having type uint[] + ParameterId["DuplicateIndices"] = "duplicateIndices"; + // DPI_FilterAddIndices, having type uint[] + ParameterId["FilterAddIndices"] = "filterAddIndices"; + // DPI_FilterIndices, having type uint[] + ParameterId["FilterIndices"] = "filterIndices"; + // DPI_FilterLevelAdd, having type uint[] + ParameterId["FilterLevelAdd"] = "filterLevelAdd"; + // DPI_FilterLevelRemove, having type uint[] + ParameterId["FilterLevelRemove"] = "filterLevelRemove"; + // DPI_FilterLevels, having type uint[] + ParameterId["FilterLevels"] = "filterLevels"; + // DPI_FilterRemoveIndices, having type uint[] + ParameterId["FilterRemoveIndices"] = "filterRemoveIndices"; + // DPI_FixedValues, having type uint[] + ParameterId["FixedValues"] = "fixedValues"; + // DPI_HierarchyMemberIdList, having type uint[] + ParameterId["HierarchyMemberIdList"] = "hierarchyMemberIdList"; + // DPI_InvalidIndices, having type uint[] + ParameterId["InvalidIndices"] = "invalidIndices"; + // DPI_ItemIndices, having type uint[] + ParameterId["ItemIndices"] = "itemIndices"; + // DPI_LineTupleIDs, having type uint[] + ParameterId["LineTupleIDs"] = "lineTupleIds"; + // DPI_ObjectIDs, having type uint[] + ParameterId["ObjectIDs"] = "objectIds"; + // DPI_PageIndices, having type uint[] + ParameterId["PageIndices"] = "pageIndices"; + // DPI_QRGB, having type uint[] + ParameterId["QRGB"] = "qrgbList"; + // DPI_QRGBColors, having type uint[] + ParameterId["QRGBColors"] = "qrgbColors"; + // DPI_RefLineID, having type uint[] + ParameterId["RefLineID"] = "reflineId"; + // DPI_ShapeIDs, having type uint[] + ParameterId["ShapeIDs"] = "shapeIds"; + // DPI_ShelfSelection, having type uint[] + ParameterId["ShelfSelection"] = "shelfSelection"; + // DPI_StoryPointIDs, having type uint[] + ParameterId["StoryPointIDs"] = "storyPointIds"; + // DPI_TupleIDs, having type uint[] + ParameterId["TupleIDs"] = "tupleIds"; + // DPI_Widths, having type uint[] + ParameterId["Widths"] = "widths"; + // DPI_UintMap, having type Dictionary(of uint32_t) + ParameterId["UintMap"] = "uintMap"; + // DPI_Alpha, having type float + ParameterId["Alpha"] = "alpha"; + // DPI_Angle, having type float + ParameterId["Angle"] = "angle"; + // DPI_BreakPointValue, having type float + ParameterId["BreakPointValue"] = "breakPointValue"; + // DPI_DevicePixelRatio, having type float + ParameterId["DevicePixelRatio"] = "devicePixelRatio"; + // DPI_Distance, having type float + ParameterId["Distance"] = "distance"; + // DPI_FloatX, having type float + ParameterId["FloatX"] = "floatX"; + // DPI_FloatY, having type float + ParameterId["FloatY"] = "floatY"; + // DPI_FogDesaturation, having type float + ParameterId["FogDesaturation"] = "fogDesaturation"; + // DPI_MarkScale, having type float + ParameterId["MarkScale"] = "markScale"; + // DPI_MarkSizeInPixelUnits, having type float + ParameterId["MarkSizeInPixelUnits"] = "markSizeInPixelUnits"; + // DPI_PointSize, having type float + ParameterId["PointSize"] = "pointSize"; + // DPI_StrokeWidth, having type float + ParameterId["StrokeWidth"] = "strokeWidth"; + // DPI_TextRegionOrientation, having type float + ParameterId["TextRegionOrientation"] = "orientation"; + // DPI_TransformAngle, having type float + ParameterId["TransformAngle"] = "transformAngle"; + // DPI_ZoomLevel, having type float + ParameterId["ZoomLevel"] = "zoomLevel"; + // DPI_OldZoomLevel, having type float + ParameterId["OldZoomLevel"] = "oldZoomLevel"; + // DPI_NewZoomLevel, having type float + ParameterId["NewZoomLevel"] = "newZoomLevel"; + // DPI_AspectRatio, having type float + ParameterId["AspectRatio"] = "aspectRatio"; + // DPI_BottomPrintMargin, having type float + ParameterId["BottomPrintMargin"] = "bottomPrintMargin"; + // DPI_EarthRadius, having type float + ParameterId["EarthRadius"] = "earthRadius"; + // DPI_FloatHeight, having type float + ParameterId["FloatHeight"] = "floatHeight"; + // DPI_FloatLeft, having type float + ParameterId["FloatLeft"] = "floatLeft"; + // DPI_FloatRadius, having type float + ParameterId["FloatRadius"] = "floatRadius"; + // DPI_FloatTop, having type float + ParameterId["FloatTop"] = "floatTop"; + // DPI_FloatWidth, having type float + ParameterId["FloatWidth"] = "floatWidth"; + // DPI_LeftPrintMargin, having type float + ParameterId["LeftPrintMargin"] = "leftPrintMargin"; + // DPI_MapCenterLatitude, having type float + ParameterId["MapCenterLatitude"] = "mapCenterLatitude"; + // DPI_MapCenterLongitude, having type float + ParameterId["MapCenterLongitude"] = "mapCenterLongitude"; + // DPI_MapDisplayScale, having type float + ParameterId["MapDisplayScale"] = "mapDisplayScale"; + // DPI_MapMaxStretch, having type float + ParameterId["MapMaxStretch"] = "mapMaxStretch"; + // DPI_MapMaxZoom, having type float + ParameterId["MapMaxZoom"] = "mapMaxZoom"; + // DPI_MapMinShrink, having type float + ParameterId["MapMinShrink"] = "mapMinShrink"; + // DPI_MapMinZoom, having type float + ParameterId["MapMinZoom"] = "mapMinZoom"; + // DPI_MapRequestZoom, having type float + ParameterId["MapRequestZoom"] = "mapRequestZoom"; + // DPI_MapWashout, having type float + ParameterId["MapWashout"] = "mapWashout"; + // DPI_MaxLatitude, having type float + ParameterId["MaxLatitude"] = "maxLatitude"; + // DPI_MaxLongitude, having type float + ParameterId["MaxLongitude"] = "maxLongitude"; + // DPI_MinLatitude, having type float + ParameterId["MinLatitude"] = "minLatitude"; + // DPI_MinLongitude, having type float + ParameterId["MinLongitude"] = "minLongitude"; + // DPI_RightPrintMargin, having type float + ParameterId["RightPrintMargin"] = "rightPrintMargin"; + // DPI_TopPrintMargin, having type float + ParameterId["TopPrintMargin"] = "topPrintMargin"; + // DPI_UIAutomationMaximum, having type float + ParameterId["UIAutomationMaximum"] = "uiAutomationMaximum"; + // DPI_UIAutomationMinimum, having type float + ParameterId["UIAutomationMinimum"] = "uiAutomationMinimum"; + // DPI_UIAutomationOffset, having type float + ParameterId["UIAutomationOffset"] = "uiAutomationOffset"; + // DPI_UnitDivisor, having type float + ParameterId["UnitDivisor"] = "unitDivisor"; + // DPI_UnitTransition, having type float + ParameterId["UnitTransition"] = "unitTransition"; + // DPI_AutomaticDrillIdx, having type float[] + ParameterId["AutomaticDrillIdx"] = "automaticDrillIdx"; + // DPI_DestinationBox, having type float[] + ParameterId["DestinationBox"] = "destBox"; + // DPI_LowerEnd, having type float[] + ParameterId["LowerEnd"] = "lowerEnd"; + // DPI_OppositeAxis, having type float[] + ParameterId["OppositeAxis"] = "oppositeAxis"; + // DPI_PointsF, having type float[] + ParameterId["PointsF"] = "pointsF"; + // DPI_SourceBox, having type float[] + ParameterId["SourceBox"] = "sourceBox"; + // DPI_TransformOffset, having type float[] + ParameterId["TransformOffset"] = "transformOffset"; + // DPI_TransformScale, having type float[] + ParameterId["TransformScale"] = "transformScale"; + // DPI_UpperEnd, having type float[] + ParameterId["UpperEnd"] = "upperEnd"; + // DPI_FloatMap, having type Dictionary(of float) + ParameterId["FloatMap"] = "floatMap"; + // DPI_BGSS, having type double + ParameterId["BGSS"] = "betweenGroupSumOfSquares"; + // DPI_ConfidenceLevel, having type double + ParameterId["ConfidenceLevel"] = "confidenceLevel"; + // DPI_ConfidencePercentage, having type double + ParameterId["ConfidencePercentage"] = "confidencePercentage"; + // DPI_DoubleLeft, having type double + ParameterId["DoubleLeft"] = "doubleLeft"; + // DPI_DoubleTop, having type double + ParameterId["DoubleTop"] = "doubleTop"; + // DPI_DoubleValue, having type double + ParameterId["DoubleValue"] = "doubleValue"; + // DPI_DoubleX, having type double + ParameterId["DoubleX"] = "doubleX"; + // DPI_DoubleY, having type double + ParameterId["DoubleY"] = "doubleY"; + // DPI_FStatistic, having type double + ParameterId["FStatistic"] = "fStatistic"; + // DPI_FilterRangeMax, having type double + ParameterId["FilterRangeMax"] = "filterRangeMax"; + // DPI_FilterRangeMin, having type double + ParameterId["FilterRangeMin"] = "filterRangeMin"; + // DPI_GeographicSearchCandidateScore, having type double + ParameterId["GeographicSearchCandidateScore"] = "geographicSearchCandidateScore"; + // DPI_HeightD, having type double + ParameterId["HeightD"] = "height"; + // DPI_InflectionFraction, having type double + ParameterId["InflectionFraction"] = "inflectionFraction"; + // DPI_InflectionValue, having type double + ParameterId["InflectionValue"] = "inflectionValue"; + // DPI_MSE, having type double + ParameterId["MSE"] = "meanSquaredError"; + // DPI_MSM, having type double + ParameterId["MSM"] = "meanSquaredModel"; + // DPI_MapScaleMarginOfError, having type double + ParameterId["MapScaleMarginOfError"] = "mapScaleMarginOfError"; + // DPI_MarkSize, having type double + ParameterId["MarkSize"] = "markSize"; + // DPI_MaxMarkSize, having type double + ParameterId["MaxMarkSize"] = "maxMarkSize"; + // DPI_MinMarkSize, having type double + ParameterId["MinMarkSize"] = "minMarkSize"; + // DPI_NotchPosition, having type double + ParameterId["NotchPosition"] = "notchPosition"; + // DPI_NotchValue, having type double + ParameterId["NotchValue"] = "notchValue"; + // DPI_PValue, having type double + ParameterId["PValue"] = "pValue"; + // DPI_PercentDimensions, having type double + ParameterId["PercentDimensions"] = "percentDimensions"; + // DPI_PercentGroups, having type double + ParameterId["PercentGroups"] = "percentGroups"; + // DPI_PercentMeasures, having type double + ParameterId["PercentMeasures"] = "percentMeasures"; + // DPI_RSquared, having type double + ParameterId["RSquared"] = "rSquared"; + // DPI_SSE, having type double + ParameterId["SSE"] = "sumSquaredError"; + // DPI_SSM, having type double + ParameterId["SSM"] = "sumSquaredModel"; + // DPI_StandardError, having type double + ParameterId["StandardError"] = "standardError"; + // DPI_TSS, having type double + ParameterId["TSS"] = "totalSumOfSquares"; + // DPI_WGSS, having type double + ParameterId["WGSS"] = "withinGroupSumOfSquares"; + // DPI_WidthD, having type double + ParameterId["WidthD"] = "width"; + // DPI_ZoomFactor, having type double + ParameterId["ZoomFactor"] = "zoomFactor"; + // DPI_CoefficientPValueVec, having type double[] + ParameterId["CoefficientPValueVec"] = "coefficientPValueVector"; + // DPI_CoefficientStdErrVec, having type double[] + ParameterId["CoefficientStdErrVec"] = "coefficientStdErrorVector"; + // DPI_CoefficientTValueVec, having type double[] + ParameterId["CoefficientTValueVec"] = "coefficientTValueVector"; + // DPI_CoefficientVec, having type double[] + ParameterId["CoefficientVec"] = "coefficientVector"; + // DPI_FStatisticVec, having type double[] + ParameterId["FStatisticVec"] = "trendLineFStatisticVector"; + // DPI_Factors, having type double[] + ParameterId["Factors"] = "factors"; + // DPI_MSEVec, having type double[] + ParameterId["MSEVec"] = "meanSquaredErrorVector"; + // DPI_Means, having type double[] + ParameterId["Means"] = "means"; + // DPI_PValueVec, having type double[] + ParameterId["PValueVec"] = "pValueVector"; + // DPI_Percentages, having type double[] + ParameterId["Percentages"] = "percentages"; + // DPI_Percentiles, having type double[] + ParameterId["Percentiles"] = "percentiles"; + // DPI_SSEVec, having type double[] + ParameterId["SSEVec"] = "sumSquaredErrorVector"; + // DPI_StDevs, having type double[] + ParameterId["StDevs"] = "stdev"; + // DPI_UnscaledMeans, having type double[] + ParameterId["UnscaledMeans"] = "unscaledMeans"; + // DPI_DeltaTimeMs, having type long + ParameterId["DeltaTimeMs"] = "deltaTimeMs"; + // DPI_ExtractHistoryRowCount, having type long + ParameterId["ExtractHistoryRowCount"] = "extractRowCount"; + // DPI_ExtractHistoryRowsRemoved, having type long + ParameterId["ExtractHistoryRowsRemoved"] = "extractRowsRemoved"; + // DPI_ExtractsSize, having type long + ParameterId["ExtractsSize"] = "extractsSize"; + // DPI_OldExtractSize, having type long + ParameterId["OldExtractSize"] = "oldExtractSize"; + // DPI_RowsInserted, having type long + ParameterId["RowsInserted"] = "rowsInserted"; + // DPI_SampleSize, having type long + ParameterId["SampleSize"] = "sampleSize"; + // DPI_SampleSpace, having type long + ParameterId["SampleSpace"] = "sampleSpace"; + // DPI_ThreadPoolUseCount, having type long + ParameterId["ThreadPoolUseCount"] = "threadPoolUseCount"; + // DPI_ActionId, having type string + ParameterId["ActionId"] = "actionId"; + // DPI_AxisColumn, having type string + ParameterId["AxisColumn"] = "axisColumn"; + // DPI_BaseColumnName, having type string + ParameterId["BaseColumnName"] = "baseColumnName"; + // DPI_BreakPointFieldName, having type string + ParameterId["BreakPointFieldName"] = "breakPointFieldName"; + // DPI_PairedFieldName, having type string + ParameterId["PairedFieldName"] = "pairedFn"; + // DPI_FieldNameAllowEmpty, having type string + ParameterId["FieldNameAllowEmpty"] = "fieldNameAllowEmpty"; + // DPI_FieldNameDisAgg, having type string + ParameterId["FieldNameDisAgg"] = "fnDisagg"; + // DPI_FieldNameLocal, having type string + ParameterId["FieldNameLocal"] = "fieldNameLocal"; + // DPI_FieldNamePrev, having type string + ParameterId["FieldNamePrev"] = "fnPrev"; + // DPI_FieldNameSource, having type string + ParameterId["FieldNameSource"] = "fnSource"; + // DPI_FieldNameTarget, having type string + ParameterId["FieldNameTarget"] = "fnTarget"; + // DPI_FieldNameX, having type string + ParameterId["FieldNameX"] = "fnX"; + // DPI_FieldNameY, having type string + ParameterId["FieldNameY"] = "fnY"; + // DPI_FieldToSort, having type string + ParameterId["FieldToSort"] = "fieldToSort"; + // DPI_GlobalFieldName, having type string + ParameterId["GlobalFieldName"] = "globalFieldName"; + // DPI_HierarchyName, having type string + ParameterId["HierarchyName"] = "hierarchyName"; + // DPI_InvalidAggFieldName, having type string + ParameterId["InvalidAggFieldName"] = "invalidAggFieldName"; + // DPI_InvalidFieldName, having type string + ParameterId["InvalidFieldName"] = "invalidFieldName"; + // DPI_LimitParameterName, having type string + ParameterId["LimitParameterName"] = "limitParameterName"; + // DPI_LocalBaseColumnName, having type string + ParameterId["LocalBaseColumnName"] = "localBaseColumnName"; + // DPI_MeasureName, having type string + ParameterId["MeasureName"] = "measureName"; + // DPI_NestedCalcField, having type string + ParameterId["NestedCalcField"] = "nestedCalcFn"; + // DPI_ParameterName, having type string + ParameterId["ParameterName"] = "parameterName"; + // DPI_ReferenceParam, having type string + ParameterId["ReferenceParam"] = "referenceParam"; + // DPI_ReplacementFieldName, having type string + ParameterId["ReplacementFieldName"] = "replacementFieldName"; + // DPI_RHSTableAlias, having type string + ParameterId["RHSTableAlias"] = "rhsTableAlias"; + // DPI_SortMeasureName, having type string + ParameterId["SortMeasureName"] = "sortMeasureName"; + // DPI_UniqueName, having type string + ParameterId["UniqueName"] = "uniqueName"; + // DPI_ValueColumn, having type string + ParameterId["ValueColumn"] = "valueColumn"; + // DPI_PairedValueColumn, having type string + ParameterId["PairedValueColumn"] = "pairedValueColumn"; + // DPI_ActionIds, having type string[] + ParameterId["ActionIds"] = "actionIds"; + // DPI_AddressingValues, having type string[] + ParameterId["AddressingValues"] = "addressingValues"; + // DPI_AllColumns, having type string[] + ParameterId["AllColumns"] = "allColumns"; + // DPI_AtTheLevelValues, having type string[] + ParameterId["AtTheLevelValues"] = "atTheLevelValues"; + // DPI_AutomaticDrillFieldName, having type string[] + ParameterId["AutomaticDrillFieldName"] = "automaticDrillFieldName"; + // DPI_BlendingFieldCandidates, having type string[] + ParameterId["BlendingFieldCandidates"] = "blendingFieldCandidates"; + // DPI_Columns, having type string[] + ParameterId["Columns"] = "columns"; + // DPI_CurrentBlendingFields, having type string[] + ParameterId["CurrentBlendingFields"] = "currentBlendingFields"; + // DPI_DimensionsToSort, having type string[] + ParameterId["DimensionsToSort"] = "dimensionsToSort"; + // DPI_DrillFieldVector, having type string[] + ParameterId["DrillFieldVector"] = "drillFieldVector"; + // DPI_EncodingFieldVector, having type string[] + ParameterId["EncodingFieldVector"] = "encodingFieldVector"; + // DPI_FieldVector, having type string[] + ParameterId["FieldVector"] = "fieldVector"; + // DPI_FilterFields, having type string[] + ParameterId["FilterFields"] = "filterFields"; + // DPI_LODFieldVector, having type string[] + ParameterId["LODFieldVector"] = "lodFieldVector"; + // DPI_LegendColumns, having type string[] + ParameterId["LegendColumns"] = "legendColumns"; + // DPI_LegendNames, having type string[] + ParameterId["LegendNames"] = "legendNames"; + // DPI_NodeColumns, having type string[] + ParameterId["NodeColumns"] = "nodeColumns"; + // DPI_PageFields, having type string[] + ParameterId["PageFields"] = "pageFields"; + // DPI_ParamValues, having type string[] + ParameterId["ParamValues"] = "paramValues"; + // DPI_RefLineFields, having type string[] + ParameterId["RefLineFields"] = "reflineFields"; + // DPI_ReferencedColumns, having type string[] + ParameterId["ReferencedColumns"] = "referencedColumns"; + // DPI_RelatedFieldNames, having type string[] + ParameterId["RelatedFieldNames"] = "relatedFieldNames"; + // DPI_RemoveActionResults, having type string[] + ParameterId["RemoveActionResults"] = "removeActionResults"; + // DPI_ResponseVector, having type string[] + ParameterId["ResponseVector"] = "responseVector"; + // DPI_RestartEveryValues, having type string[] + ParameterId["RestartEveryValues"] = "restartEveryValues"; + // DPI_ResultFields, having type string[] + ParameterId["ResultFields"] = "resultFields"; + // DPI_SortFieldValues, having type string[] + ParameterId["SortFieldValues"] = "sortFieldValues"; + // DPI_XFields, having type string[] + ParameterId["XFields"] = "xFields"; + // DPI_YFields, having type string[] + ParameterId["YFields"] = "yFields"; + // DPI_ConnectionFullName, having type string + ParameterId["ConnectionFullName"] = "connectionFullName"; + // DPI_ConnectionFullNames, having type string[] + ParameterId["ConnectionFullNames"] = "connectionFullNames"; + // DPI_BoundDataValue, having type object + ParameterId["BoundDataValue"] = "boundDataValue"; + // DPI_DataValue, having type object + ParameterId["DataValue"] = "dataValue"; + // DPI_DataValueIncrement, having type object + ParameterId["DataValueIncrement"] = "dataValueIncrement"; + // DPI_DataValueLowerX, having type object + ParameterId["DataValueLowerX"] = "dataValueLowerX"; + // DPI_DataValueLowerY, having type object + ParameterId["DataValueLowerY"] = "dataValueLowerY"; + // DPI_DataValueUpperX, having type object + ParameterId["DataValueUpperX"] = "dataValueUpperX"; + // DPI_DataValueUpperY, having type object + ParameterId["DataValueUpperY"] = "dataValueUpperY"; + // DPI_DefaultDataValue, having type object + ParameterId["DefaultDataValue"] = "defaultDataValue"; + // DPI_MaxDataValue, having type object + ParameterId["MaxDataValue"] = "maxDataValue"; + // DPI_MinDataValue, having type object + ParameterId["MinDataValue"] = "minDataValue"; + // DPI_ValidatedDataValue, having type object + ParameterId["ValidatedDataValue"] = "validatedDataValue"; + // DPI_BinSize, having type object + ParameterId["BinSize"] = "binSize"; + // DPI_LimitCount, having type object + ParameterId["LimitCount"] = "limitCount"; + // DPI_DataValueList, having type object[] + ParameterId["DataValueList"] = "dataValueList"; + // DPI_FieldCaptionPair, having type FieldCaptionPairPresModel + ParameterId["FieldCaptionPair"] = "fieldCaptionPair"; + // DPI_FieldCaptionPairs, having type FieldCaptionPairPresModel[] + ParameterId["FieldCaptionPairs"] = "fieldCaptionPairs"; + // DPI_ParameterCaptionPairs, having type FieldCaptionPairPresModel[] + ParameterId["ParameterCaptionPairs"] = "parameterCaptionPairs"; + // DPI_VaryingAttributeDimensions, having type FieldCaptionPairPresModel[] + ParameterId["VaryingAttributeDimensions"] = "varyingAttributeDimensions"; + // DPI_FieldCaptionPairState, having type FieldCaptionPairStatePresModel + ParameterId["FieldCaptionPairState"] = "fieldCaptionPairState"; + // DPI_FieldCaptionPairStates, having type FieldCaptionPairStatePresModel[] + ParameterId["FieldCaptionPairStates"] = "fieldCaptionPairStates"; + // DPI_DatasourceCaptionPair, having type DatasourceCaptionPairPresModel + ParameterId["DatasourceCaptionPair"] = "datasourceCaptionPair"; + // DPI_DatasourceCaptionPairs, having type DatasourceCaptionPairPresModel[] + ParameterId["DatasourceCaptionPairs"] = "datasourceCaptionPairs"; + // DPI_SheetNameInfoPair, having type SheetNameInfoPairPresModel + ParameterId["SheetNameInfoPair"] = "sheetNameInfoPair"; + // DPI_SheetNameInfoPairs, having type SheetNameInfoPairPresModel[] + ParameterId["SheetNameInfoPairs"] = "sheetNameInfoPairs"; + // DPI_BGActiveColor, having type string + ParameterId["BGActiveColor"] = "bgActiveColor"; + // DPI_BGColor, having type string + ParameterId["BGColor"] = "bgColor"; + // DPI_BGRestColor, having type string + ParameterId["BGRestColor"] = "bgRestColor"; + // DPI_BorderColor, having type string + ParameterId["BorderColor"] = "borderColor"; + // DPI_BorderColorBottom, having type string + ParameterId["BorderColorBottom"] = "borderColorBottom"; + // DPI_BorderColorLeft, having type string + ParameterId["BorderColorLeft"] = "borderColorLeft"; + // DPI_BorderColorRight, having type string + ParameterId["BorderColorRight"] = "borderColorRight"; + // DPI_BorderColorTop, having type string + ParameterId["BorderColorTop"] = "borderColorTop"; + // DPI_Color, having type string + ParameterId["Color"] = "color"; + // DPI_Color1, having type string + ParameterId["Color1"] = "color1"; + // DPI_Color2, having type string + ParameterId["Color2"] = "color2"; + // DPI_DefaultColor, having type string + ParameterId["DefaultColor"] = "defaultColor"; + // DPI_DistanceFontColor, having type string + ParameterId["DistanceFontColor"] = "distanceFontColor"; + // DPI_FillColor, having type string + ParameterId["FillColor"] = "fillColor"; + // DPI_FogColor, having type string + ParameterId["FogColor"] = "fogColor"; + // DPI_HeaderColor, having type string + ParameterId["HeaderColor"] = "headerColor"; + // DPI_HighlightBGColor, having type string + ParameterId["HighlightBGColor"] = "highlightBgColor"; + // DPI_HighlightTextColor, having type string + ParameterId["HighlightTextColor"] = "highlightTextColor"; + // DPI_HoverColor, having type string + ParameterId["HoverColor"] = "hoverColor"; + // DPI_MapAttributionFill, having type string + ParameterId["MapAttributionFill"] = "mapAttributionFill"; + // DPI_MapAttributionTextColor, having type string + ParameterId["MapAttributionTextColor"] = "mapAttributionTextColor"; + // DPI_MapPaneBackgroundFill, having type string + ParameterId["MapPaneBackgroundFill"] = "mapPaneBackgroundFill"; + // DPI_MapScaleBorderColor, having type string + ParameterId["MapScaleBorderColor"] = "mapScaleBorderColor"; + // DPI_MapScaleColor, having type string + ParameterId["MapScaleColor"] = "mapScaleColor"; + // DPI_MapWaitTileFill, having type string + ParameterId["MapWaitTileFill"] = "mapWaitTileFill"; + // DPI_MarkColor, having type string + ParameterId["MarkColor"] = "markColor"; + // DPI_NavArrowDisabledColor, having type string + ParameterId["NavArrowDisabledColor"] = "navArrowDisabledColor"; + // DPI_NavArrowHoverColor, having type string + ParameterId["NavArrowHoverColor"] = "navArrowHoverColor"; + // DPI_NavArrowIdleColor, having type string + ParameterId["NavArrowIdleColor"] = "navArrowIdleColor"; + // DPI_NavArrowPressedColor, having type string + ParameterId["NavArrowPressedColor"] = "navArrowPressedColor"; + // DPI_PaneColor, having type string + ParameterId["PaneColor"] = "paneColor"; + // DPI_PressColor, having type string + ParameterId["PressColor"] = "pressColor"; + // DPI_ResizeBorderColor, having type string + ParameterId["ResizeBorderColor"] = "resizeBorderColor"; + // DPI_SelectBGColor, having type string + ParameterId["SelectBGColor"] = "selectBgColor"; + // DPI_SelectionTextColor, having type string + ParameterId["SelectionTextColor"] = "selectionTextColor"; + // DPI_SwatchBackgroundColor, having type string + ParameterId["SwatchBackgroundColor"] = "swatchBgColor"; + // DPI_SwatchBorderColor, having type string + ParameterId["SwatchBorderColor"] = "swatchBorderColor"; + // DPI_TabColor, having type string + ParameterId["TabColor"] = "tabColor"; + // DPI_Colors, having type string[] + ParameterId["Colors"] = "colors"; + // DPI_ColorMap, having type Dictionary(of string) + ParameterId["ColorMap"] = "colorMap"; + // DPI_Pixmap, having type string + ParameterId["Pixmap"] = "pixmap"; + // DPI_Image, having type string + ParameterId["Image"] = "image"; + // DPI_OverlayImage, having type string + ParameterId["OverlayImage"] = "overlayImage"; + // DPI_IconImage, having type string + ParameterId["IconImage"] = "iconImage"; + // DPI_ImageList, having type string[] + ParameterId["ImageList"] = "imageList"; + // DPI_ImageMap, having type Dictionary(of string) + ParameterId["ImageMap"] = "imageMap"; + // DPI_UUID, having type object + ParameterId["UUID"] = "uuid"; + // DPI_Nanoseconds, having type object + ParameterId["Nanoseconds"] = "nanoseconds"; + // DPI_Microseconds, having type object + ParameterId["Microseconds"] = "microseconds"; + // DPI_Milliseconds, having type object + ParameterId["Milliseconds"] = "milliseconds"; + // DPI_TimeoutS, having type object + ParameterId["TimeoutS"] = "timeoutS"; + // DPI_Minutes, having type object + ParameterId["Minutes"] = "minutes"; + // DPI_Hours, having type object + ParameterId["Hours"] = "hours"; + // DPI_CardType, having type CardType + ParameterId["CardType"] = "cardType"; + // DPI_DocParameterID, having type string + ParameterId["DocParameterID"] = "type"; + // DPI_ArgumentParam, having type string + ParameterId["ArgumentParam"] = "argumentParam"; + // DPI_ArgumentParams, having type string[] + ParameterId["ArgumentParams"] = "argumentParams"; + // DPI_ActionType, having type ActionType + ParameterId["ActionType"] = "actionType"; + // DPI_AnnotateEnum, having type AnnotateEnum + ParameterId["AnnotateEnum"] = "annotateEnum"; + // DPI_JoinType, having type SQLJoinType + ParameterId["JoinType"] = "joinType"; + // DPI_SupportedJoinTypes, having type SQLJoinType[] + ParameterId["SupportedJoinTypes"] = "supportedJoinTypes"; + // DPI_Rounding, having type Rounding + ParameterId["Rounding"] = "roundingEnum"; + // DPI_BodyType, having type BodyType + ParameterId["BodyType"] = "bodyType"; + // DPI_LineEnd, having type LineEnd + ParameterId["LineEnd"] = "lineEndEnum"; + // DPI_LineEndSize, having type LineEndSize + ParameterId["LineEndSize"] = "lineEndSizeEnum"; + // DPI_BrushSpecialFields, having type BrushSpecialFields + ParameterId["BrushSpecialFields"] = "specialFields"; + // DPI_CellSizeChange, having type CellSizeChange + ParameterId["CellSizeChange"] = "cellSizeChange"; + // DPI_CellType, having type CellType + ParameterId["CellType"] = "cellType"; + // DPI_ConnectionAttemptResult, having type ConnectionAttemptResult + ParameterId["ConnectionAttemptResult"] = "connectionAttemptResult"; + // DPI_ConnectionErrorStage, having type ConnectionErrorStage + ParameterId["ConnectionErrorStage"] = "connectionErrorStage"; + // DPI_ConnectionErrorType, having type ConnectionErrorType + ParameterId["ConnectionErrorType"] = "connectionErrorType"; + // DPI_DataServerConnectionResult, having type DataServerConnectionResult + ParameterId["DataServerConnectionResult"] = "dsConnectionResult"; + // DPI_DropWhen, having type DropWhen + ParameterId["DropWhen"] = "dropWhen"; + // DPI_DropType, having type DropFieldResult + ParameterId["DropType"] = "dropType"; + // DPI_EncodingType, having type EncodingType + ParameterId["EncodingType"] = "encodingType"; + // DPI_DropdownEncodingType, having type EncodingType + ParameterId["DropdownEncodingType"] = "dropdownEncodingType"; + // DPI_EncodingTypes, having type EncodingType[] + ParameterId["EncodingTypes"] = "encodingTypes"; + // DPI_FieldOrderType, having type FieldOrderType + ParameterId["FieldOrderType"] = "fieldOrderType"; + // DPI_FilterIconType, having type FilterIconType + ParameterId["FilterIconType"] = "filterIconType"; + // DPI_FilterIconTypes, having type FilterIconType[] + ParameterId["FilterIconTypes"] = "filterIconTypes"; + // DPI_FloatingToolbarVis, having type FloatingToolbarVisibility + ParameterId["FloatingToolbarVis"] = "toolbarVisibility"; + // DPI_FolderRole, having type FolderRole + ParameterId["FolderRole"] = "folderRole"; + // DPI_LegendType, having type Enum + ParameterId["LegendType"] = "legendType"; + // DPI_ForecastModelType, having type ForecastModelType + ParameterId["ForecastModelType"] = "forecastModelType"; + // DPI_ForecastTrendType, having type ForecastComponentType + ParameterId["ForecastTrendType"] = "forecastTrendType"; + // DPI_ForecastSeasonType, having type ForecastComponentType + ParameterId["ForecastSeasonType"] = "forecastSeasonType"; + // DPI_ForecastRangeType, having type ForecastRangeType + ParameterId["ForecastRangeType"] = "forecastRangeType"; + // DPI_ForecastStatus, having type ForecastStatus + ParameterId["ForecastStatus"] = "forecastStatus"; + // DPI_SheetForecastStatus, having type ForecastStatus + ParameterId["SheetForecastStatus"] = "sheetForecastStatus"; + // DPI_PDForecastStatusList, having type ForecastStatus[] + ParameterId["PDForecastStatusList"] = "paneDescriptorForecastStatusList"; + // DPI_ForecastColumnType, having type ForecastColumnType + ParameterId["ForecastColumnType"] = "forecastColumnType"; + // DPI_DataScaling, having type DataScaling + ParameterId["DataScaling"] = "dataScaling"; + // DPI_GetFilterItemsJsonResponse, having type GetJsonResponseEnum + ParameterId["GetFilterItemsJsonResponse"] = "getFilterItemsJsonResponse"; + // DPI_FilterSearchJsonResponse, having type GetJsonResponseEnum + ParameterId["FilterSearchJsonResponse"] = "filterSearchJsonResponse"; + // DPI_FilterSearchWithIndexJsonResponse, having type GetJsonResponseEnum + ParameterId["FilterSearchWithIndexJsonResponse"] = "filterSearchWithIndexJsonResponse"; + // DPI_FilterShowChildrenJsonResponse, having type GetJsonResponseEnum + ParameterId["FilterShowChildrenJsonResponse"] = "filterShowChildrenJsonResponse"; + // DPI_HAlignment, having type LabelHAlignment + ParameterId["HAlignment"] = "horizontalLabelAlignment"; + // DPI_JoinValidationError, having type JoinValidationError + ParameterId["JoinValidationError"] = "joinValidationError"; + // DPI_NameConflictResolution, having type NameConflictResolution + ParameterId["NameConflictResolution"] = "nameConflictResolution"; + // DPI_LabelDir, having type TextOrient + ParameterId["LabelDir"] = "labelDirection"; + // DPI_LabelAlign, having type TextAlign + ParameterId["LabelAlign"] = "labelAlignment"; + // DPI_LabelWrap, having type TextWrapMode + ParameterId["LabelWrap"] = "labelWrap"; + // DPI_WrapMode, having type TextWrapMode + ParameterId["WrapMode"] = "wrapMode"; + // DPI_MarkEnum, having type MarkEnum + ParameterId["MarkEnum"] = "markEnum"; + // DPI_PercentMode, having type PercentMode + ParameterId["PercentMode"] = "percentageMode"; + // DPI_ReferenceOptionsSet, having type ReferenceOptionsSet + ParameterId["ReferenceOptionsSet"] = "referenceOptionsSet"; + // DPI_ReferenceOptionsSets, having type ReferenceOptionsSet[] + ParameterId["ReferenceOptionsSets"] = "referenceOptionsSets"; + // DPI_RankType, having type RankType + ParameterId["RankType"] = "rankType"; + // DPI_RankTypeValues, having type RankType[] + ParameterId["RankTypeValues"] = "rankTypeValues"; + // DPI_SpecialValuesMode, having type SpecialValuesMode + ParameterId["SpecialValuesMode"] = "specialValuesMode"; + // DPI_VAlignment, having type LabelVAlignment + ParameterId["VAlignment"] = "verticalLabelAlignment"; + // DPI_ColorMode, having type ColorMode + ParameterId["ColorMode"] = "colorMode"; + // DPI_MarkLabelsMode, having type MarkLabelsMode + ParameterId["MarkLabelsMode"] = "markLabelsMode"; + // DPI_MarkLabelsScope, having type MarkLabelsScope + ParameterId["MarkLabelsScope"] = "markLabelsScope"; + // DPI_MarkLabelsVisibility, having type MarkLabelsVisibility + ParameterId["MarkLabelsVisibility"] = "markLabelsVisibility"; + // DPI_PrimitiveType, having type PrimitiveType + ParameterId["PrimitiveType"] = "primitiveType"; + // DPI_ActualPrimitiveType, having type PrimitiveType + ParameterId["ActualPrimitiveType"] = "actualPrimitiveType"; + // DPI_PrimitiveTypes, having type PrimitiveType[] + ParameterId["PrimitiveTypes"] = "primitiveTypes"; + // DPI_ShapeType, having type ShapeType + ParameterId["ShapeType"] = "shapeType"; + // DPI_SortType, having type SortType + ParameterId["SortType"] = "sortBy"; + // DPI_SortEnd, having type SortEnd + ParameterId["SortEnd"] = "sortEnd"; + // DPI_StackingMode, having type StackingMode + ParameterId["StackingMode"] = "stackingMode"; + // DPI_StyleTheme, having type StyleTheme + ParameterId["StyleTheme"] = "styleTheme"; + // DPI_TrendLineFitType, having type TrendLineFitType + ParameterId["TrendLineFitType"] = "fitType"; + // DPI_UpdateScope, having type UpdateScope + ParameterId["UpdateScope"] = "updateScope"; + // DPI_ParameterCtrlDisplayMode, having type DisplayMode + ParameterId["ParameterCtrlDisplayMode"] = "paramDisplayMode"; + // DPI_ParameterCtrlDisplayFlag, having type ParameterCtrlDisplayFlag + ParameterId["ParameterCtrlDisplayFlag"] = "paramDisplayFlag"; + // DPI_Included, having type QuantitativeIncludedValues + ParameterId["Included"] = "included"; + // DPI_CommandsType, having type CommandsType + ParameterId["CommandsType"] = "commandsType"; + // DPI_ParameterDomainType, having type DomainType + ParameterId["ParameterDomainType"] = "parameterDomainType"; + // DPI_FilterDomainType, having type DomainType + ParameterId["FilterDomainType"] = "filterDomainType"; + // DPI_FilterDomains, having type DomainType[] + ParameterId["FilterDomains"] = "filterDomains"; + // DPI_CategoricalFilterType, having type CategoricalFilterType + ParameterId["CategoricalFilterType"] = "categoricalFilterType"; + // DPI_DatePeriodType, having type DatePeriodType + ParameterId["DatePeriodType"] = "datePeriodType"; + // DPI_FilterPatternType, having type PatternType + ParameterId["FilterPatternType"] = "filterPatternType"; + // DPI_FilterConditionType, having type ConditionType + ParameterId["FilterConditionType"] = "filterConditionType"; + // DPI_FiltersPresetType, having type PresetType + ParameterId["FiltersPresetType"] = "filtersPresetType"; + // DPI_FiltersRangeType, having type RangeType + ParameterId["FiltersRangeType"] = "filtersRangeType"; + // DPI_DateRangeType, having type RelativeDateRangeType + ParameterId["DateRangeType"] = "dateRangeType"; + // DPI_PageFlag, having type PageNavFlags + ParameterId["PageFlag"] = "pageFlag"; + // DPI_MarksToTrail, having type MarksToTrail + ParameterId["MarksToTrail"] = "marksToTrail"; + // DPI_TrailType, having type TrailType + ParameterId["TrailType"] = "trailType"; + // DPI_ChangePageDirection, having type ChangePageType + ParameterId["ChangePageDirection"] = "changeTo"; + // DPI_AnimationControl, having type PageAnimationControl + ParameterId["AnimationControl"] = "animationControl"; + // DPI_LinePattern, having type LinePattern + ParameterId["LinePattern"] = "linePattern"; + // DPI_LineCap, having type LineCap + ParameterId["LineCap"] = "lineCap"; + // DPI_LineJoin, having type LineJoin + ParameterId["LineJoin"] = "lineJoin"; + // DPI_LineAlignment, having type LineAlignment + ParameterId["LineAlignment"] = "lineAlignment"; + // DPI_FillMode, having type FillMode + ParameterId["FillMode"] = "fillMode"; + // DPI_CursorShape, having type CursorShape + ParameterId["CursorShape"] = "cursorShape"; + // DPI_ShowMeCommandType, having type ShowMeCommandType + ParameterId["ShowMeCommandType"] = "showMeCommandType"; + // DPI_ShelfIconType, having type ShelfIconType + ParameterId["ShelfIconType"] = "shelfIconType"; + // DPI_ShelfIconTypes, having type ShelfIconType[] + ParameterId["ShelfIconTypes"] = "shelfIconTypes"; + // DPI_ItemDrawStyle, having type ItemDrawStyle + ParameterId["ItemDrawStyle"] = "itemDrawStyle"; + // DPI_ScaleMode, having type ScaleMode + ParameterId["ScaleMode"] = "pageScaleMode"; + // DPI_PageOrientationOption, having type PageOrientation + ParameterId["PageOrientationOption"] = "pageOrientationOption"; + // DPI_PageSizeOption, having type PageSizeOption + ParameterId["PageSizeOption"] = "pageSizeOption"; + // DPI_SortRegionType, having type SortRegionType + ParameterId["SortRegionType"] = "sortRegion"; + // DPI_LegendItemLayout, having type LegendItemLayout + ParameterId["LegendItemLayout"] = "legendLayout"; + // DPI_LegendItemOrder, having type LegendItemOrder + ParameterId["LegendItemOrder"] = "legendOrder"; + // DPI_VizImageRegion, having type VizImageRegion + ParameterId["VizImageRegion"] = "r"; + // DPI_LegacyMenuName, having type LegacyMenuName + ParameterId["LegacyMenuName"] = "legacyMenuName"; + // DPI_LegacyMenuState, having type LegacyMenuState + ParameterId["LegacyMenuState"] = "legacyMenuState"; + // DPI_LegacyMenuStateList, having type LegacyMenuState[] + ParameterId["LegacyMenuStateList"] = "legacyMenuStates"; + // DPI_DimensionType, having type DimensionType + ParameterId["DimensionType"] = "dimensionType"; + // DPI_LayoutType, having type LayoutType + ParameterId["LayoutType"] = "layoutType"; + // DPI_ShelfType, having type ShelfType + ParameterId["ShelfType"] = "shelfType"; + // DPI_LastSelectionShelf, having type ShelfType + ParameterId["LastSelectionShelf"] = "lastShelf"; + // DPI_SchemaViewerDataSourceType, having type SchemaViewerDataSourceType + ParameterId["SchemaViewerDataSourceType"] = "schemaDatasourceType"; + // DPI_SchemaItemType, having type SchemaItemType + ParameterId["SchemaItemType"] = "schemaItemType"; + // DPI_HSMSelectionMode, having type SelectionMode + ParameterId["HSMSelectionMode"] = "hsmSelectionMode"; + // DPI_HSMDefaultMemberType, having type DefaultMemberType + ParameterId["HSMDefaultMemberType"] = "hsmDefaultMemberType"; + // DPI_HSMNotificationType, having type NotificationType + ParameterId["HSMNotificationType"] = "hsmNotificationType"; + // DPI_HSMSelectionRequestType, having type SelectionRequestType + ParameterId["HSMSelectionRequestType"] = "hsmSelectionRequestType"; + // DPI_HSMMemberSelectRequestType, having type MemberSelectRequestType + ParameterId["HSMMemberSelectRequestType"] = "hsmMemberSelectRequestType"; + // DPI_PivotStrategy, having type FieldPivotStrategy + ParameterId["PivotStrategy"] = "pivotStrategy"; + // DPI_AliasType, having type AliasType + ParameterId["AliasType"] = "aliasType"; + // DPI_DSODimensionSortOrder, having type DataSourceOrder + ParameterId["DSODimensionSortOrder"] = "dsoDimensionSortOrder"; + // DPI_DSOMeasureSortOrder, having type DataSourceOrder + ParameterId["DSOMeasureSortOrder"] = "dsoMeasureSortOrder"; + // DPI_DSOSortOrder, having type DataSourceOrder + ParameterId["DSOSortOrder"] = "dsoSortOrder"; + // DPI_VTAggType, having type VTAggType + ParameterId["VTAggType"] = "vtAggregation"; + // DPI_FieldTypeIconSet, having type FieldTypeIconSet + ParameterId["FieldTypeIconSet"] = "fieldIconSet"; + // DPI_VisualPart, having type VisualPart + ParameterId["VisualPart"] = "visualPart"; + // DPI_DefaultMapToolEnum, having type MapToolSelection + ParameterId["DefaultMapToolEnum"] = "defaultMapToolEnum"; + // DPI_DefaultMapUnitEnum, having type MapUnitSelectionEnum + ParameterId["DefaultMapUnitEnum"] = "defaultMapUnitEnum"; + // DPI_SceneModelDetail, having type Detail + ParameterId["SceneModelDetail"] = "sceneModelDetailEnum"; + // DPI_SceneModelHitType, having type HitType + ParameterId["SceneModelHitType"] = "sceneModelHitType"; + // DPI_HitTestStyle, having type HitTestStyle + ParameterId["HitTestStyle"] = "hitTestStyle"; + // DPI_MarkState, having type MarkState + ParameterId["MarkState"] = "markState"; + // DPI_SheetType, having type SheetType + ParameterId["SheetType"] = "sheetType"; + // DPI_DragSource, having type DragDropType + ParameterId["DragSource"] = "dragSource"; + // DPI_DropTarget, having type DragDropType + ParameterId["DropTarget"] = "dropTarget"; + // DPI_ShelfDropAction, having type ShelfDropAction + ParameterId["ShelfDropAction"] = "shelfDropAction"; + // DPI_ShelfDropContext, having type ShelfDropContext + ParameterId["ShelfDropContext"] = "shelfDropContext"; + // DPI_FilterSelectionTracking, having type SelectionTracking + ParameterId["FilterSelectionTracking"] = "filterSelectionTracking"; + // DPI_FilterUpdateType, having type FilterUpdateType + ParameterId["FilterUpdateType"] = "filterUpdateType"; + // DPI_FilterUpdateQualifierType, having type FilterUpdateQualifierType + ParameterId["FilterUpdateQualifierType"] = "filterUpdateQualifierType"; + // DPI_ParameterError, having type ParameterError + ParameterId["ParameterError"] = "parameterError"; + // DPI_SelectionType, having type SelectionType + ParameterId["SelectionType"] = "selectionType"; + // DPI_SelectionUpdateType, having type SelectionUpdateType + ParameterId["SelectionUpdateType"] = "selectionUpdateType"; + // DPI_SelectOptions, having type SelectOptions + ParameterId["SelectOptions"] = "selectOptions"; + // DPI_WhitespaceSelectionBehavior, having type WhitespaceSelectionBehavior + ParameterId["WhitespaceSelectionBehavior"] = "whitespaceSelectionBehavior"; + // DPI_AxisOrientation, having type Orientation + ParameterId["AxisOrientation"] = "axisOrientation"; + // DPI_DecimalMode, having type DecimalMode + ParameterId["DecimalMode"] = "decimalMode"; + // DPI_ActivationMethod, having type ActivationMethod + ParameterId["ActivationMethod"] = "activation"; + // DPI_SourceType, having type SourceType + ParameterId["SourceType"] = "sourceType"; + // DPI_OnClear, having type OnClear + ParameterId["OnClear"] = "onClear"; + // DPI_MergeOrSplit, having type MergeOrSplit + ParameterId["MergeOrSplit"] = "mergeOrSplit"; + // DPI_FilterMode, having type FilterMode + ParameterId["FilterMode"] = "filterMode"; + // DPI_FilterType, having type FilterType + ParameterId["FilterType"] = "filterType"; + // DPI_ZoneType, having type ZoneType + ParameterId["ZoneType"] = "zoneType"; + // DPI_ZoneLayoutType, having type ZoneLayoutType + ParameterId["ZoneLayoutType"] = "zoneLayoutType"; + // DPI_QuickTableCalcType, having type QuickTableCalcCommandType + ParameterId["QuickTableCalcType"] = "quickTableCalcType"; + // DPI_TableCalcCommandType, having type TableCalcCommandType + ParameterId["TableCalcCommandType"] = "tableCalcCommandType"; + // DPI_TableCalcAddressType, having type TableCalcAddressCommandType + ParameterId["TableCalcAddressType"] = "tableCalcAddressType"; + // DPI_MarkLayoutPrimitive, having type Primitive + ParameterId["MarkLayoutPrimitive"] = "markLayoutPrimitive"; + // DPI_MarkLayoutVizType, having type VizType + ParameterId["MarkLayoutVizType"] = "markLayoutVizType"; + // DPI_MarkAlignment, having type MarkAlignment + ParameterId["MarkAlignment"] = "markAlignment"; + // DPI_ModifyZoneZOrderType, having type ModifyZoneZOrderCommandType + ParameterId["ModifyZoneZOrderType"] = "modifyZoneZOrderType"; + // DPI_TextRegionHAlign, having type TextRegionHAlign + ParameterId["TextRegionHAlign"] = "halign"; + // DPI_TextRegionVAlign, having type TextRegionVAlign + ParameterId["TextRegionVAlign"] = "valign"; + // DPI_PathElement, having type PathElement + ParameterId["PathElement"] = "pathElement"; + // DPI_PathElements, having type PathElement[] + ParameterId["PathElements"] = "pathElements"; + // DPI_RenderMode, having type RenderMode + ParameterId["RenderMode"] = "renderMode"; + // DPI_FontStyle, having type TableauFontStyle + ParameterId["FontStyle"] = "fontStyle"; + // DPI_FontWeight, having type FontWeight + ParameterId["FontWeight"] = "fontWeight"; + // DPI_TextDecoration, having type TextDecoration + ParameterId["TextDecoration"] = "textDecoration"; + // DPI_BorderStyle, having type BorderStyle + ParameterId["BorderStyle"] = "borderStyle"; + // DPI_BorderStyleTop, having type BorderStyle + ParameterId["BorderStyleTop"] = "borderStyleTop"; + // DPI_BorderStyleRight, having type BorderStyle + ParameterId["BorderStyleRight"] = "borderStyleRight"; + // DPI_BorderStyleBottom, having type BorderStyle + ParameterId["BorderStyleBottom"] = "borderStyleBottom"; + // DPI_BorderStyleLeft, having type BorderStyle + ParameterId["BorderStyleLeft"] = "borderStyleLeft"; + // DPI_FloatingToolbarVisibility, having type FloatingToolbarVisibility + ParameterId["FloatingToolbarVisibility"] = "floatingToolbarVisibility"; + // DPI_GeoSearchVisibility, having type GeoSearchVisibility + ParameterId["GeoSearchVisibility"] = "geographicSearchVisibility"; + // DPI_MapScaleVisibility, having type MapScaleVisibility + ParameterId["MapScaleVisibility"] = "mapScaleVisibility"; + // DPI_VizNavigationSetting, having type VizNavigationSetting + ParameterId["VizNavigationSetting"] = "vizNavigationSetting"; + // DPI_AutoDrillVisibility, having type AutoDrillVisibility + ParameterId["AutoDrillVisibility"] = "autoDrillVisibility"; + // DPI_ClientUIMetricType, having type ClientUIMetricType + ParameterId["ClientUIMetricType"] = "clientUiMetricType"; + // DPI_SheetScrollDirection, having type SheetScrollDirection + ParameterId["SheetScrollDirection"] = "sheetScrollDirection"; + // DPI_SizeMode, having type SizeMode + ParameterId["SizeMode"] = "sizeMode"; + // DPI_PerspectiveAggregate, having type PerspectiveAggregate + ParameterId["PerspectiveAggregate"] = "perspectiveAggregation"; + // DPI_StyleAttribute, having type StyleAttribute + ParameterId["StyleAttribute"] = "styleAttribute"; + // DPI_StyleAttributes, having type StyleAttribute[] + ParameterId["StyleAttributes"] = "styleAttributes"; + // DPI_StyleElement, having type StyleElement + ParameterId["StyleElement"] = "styleElement"; + // DPI_StyleDataClass, having type StyleDataClass + ParameterId["StyleDataClass"] = "styleClass"; + // DPI_StyleFieldScope, having type StyleFieldScope + ParameterId["StyleFieldScope"] = "styleScope"; + // DPI_FormatControlType, having type FormatControlType + ParameterId["FormatControlType"] = "formatType"; + // DPI_LineInterpolationMode, having type LineInterpolationMode + ParameterId["LineInterpolationMode"] = "lineInterpolationMode"; + // DPI_LineMarkerPosition, having type LineMarkerPosition + ParameterId["LineMarkerPosition"] = "lineMarkerPosition"; + // DPI_MarkersMode, having type MarkMarkersMode + ParameterId["MarkersMode"] = "markersMode"; + // DPI_AppConfigEnum, having type AppConfigEnum + ParameterId["AppConfigEnum"] = "appConfigEnum"; + // DPI_ColorPaletteType, having type ColorPaletteType + ParameterId["ColorPaletteType"] = "colorPaletteType"; + // DPI_ExtractType, having type ExtractType + ParameterId["ExtractType"] = "extractType"; + // DPI_ActivityDisposition, having type ActivityDisposition + ParameterId["ActivityDisposition"] = "activityDisposition"; + // DPI_ActivityResult, having type ActivityResult + ParameterId["ActivityResult"] = "activityResult"; + // DPI_TooltipMode, having type TooltipMode + ParameterId["TooltipMode"] = "tooltipMode"; + // DPI_RuntimeOutput, having type RuntimeOutput + ParameterId["RuntimeOutput"] = "runtimeOutput"; + // DPI_AnalyticsObjectType, having type AnalyticsObjectType + ParameterId["AnalyticsObjectType"] = "analyticsObjectType"; + // DPI_UIAutomationStatus, having type UIAutomationCommandStatus + ParameterId["UIAutomationStatus"] = "uiAutomationStatus"; + // DPI_TableViewDataType, having type TableViewDataType + ParameterId["TableViewDataType"] = "tableViewerDataType"; + // DPI_UnitsFormat, having type UnitsFormatEnum + ParameterId["UnitsFormat"] = "unitsFormat"; + // DPI_FilterLimitType, having type LimitType + ParameterId["FilterLimitType"] = "filterLimitType"; + // DPI_DistributionSelectedType, having type DistributionType + ParameterId["DistributionSelectedType"] = "distributionSelectedType"; + // DPI_DistributionType, having type DistributionType + ParameterId["DistributionType"] = "distributionType"; + // DPI_TranslatedDistributionType, having type TranslatedDistributionTypePresModel + ParameterId["TranslatedDistributionType"] = "translatedDistributionType"; + // DPI_TranslatedDistributionTypes, having type TranslatedDistributionTypePresModel[] + ParameterId["TranslatedDistributionTypes"] = "translatedDistributionTypes"; + // DPI_RefLineFormulaGroup, having type FormulaGroup + ParameterId["RefLineFormulaGroup"] = "reflineFormulaGroup"; + // DPI_ReferenceLineScopeType, having type ScopeType + ParameterId["ReferenceLineScopeType"] = "referenceLineScopeType"; + // DPI_StDevType, having type StDevType + ParameterId["StDevType"] = "stdevType"; + // DPI_ShowBounds, having type ShowBounds + ParameterId["ShowBounds"] = "showBounds"; + // DPI_BoxplotWhiskerType, having type BoxplotWhiskerType + ParameterId["BoxplotWhiskerType"] = "boxplotWhiskerType"; + // DPI_ReferenceLineLabelType, having type LabelType + ParameterId["ReferenceLineLabelType"] = "referenceLineLabelType"; + // DPI_PairedReferenceLineLabelType, having type LabelType + ParameterId["PairedReferenceLineLabelType"] = "pairedReferenceLineLabelType"; + // DPI_ConfidenceIntervalSelectedState, having type ConfidenceIntervalState + ParameterId["ConfidenceIntervalSelectedState"] = "confidenceIntervalSelectedState"; + // DPI_ConfidenceIntervalState, having type ConfidenceIntervalState + ParameterId["ConfidenceIntervalState"] = "confidenceIntervalState"; + // DPI_TranslatedLabelType, having type TranslatedLabelTypePresModel + ParameterId["TranslatedLabelType"] = "translatedLabelType"; + // DPI_ReferenceLineValidLabelTypes, having type TranslatedLabelTypePresModel[] + ParameterId["ReferenceLineValidLabelTypes"] = "validReferenceLineLabelTypes"; + // DPI_ReferenceLineFormulaType, having type FormulaType + ParameterId["ReferenceLineFormulaType"] = "referenceLineFormulaType"; + // DPI_PairedReferenceLineFormulaType, having type FormulaType + ParameterId["PairedReferenceLineFormulaType"] = "pairedReferenceLineFormulaType"; + // DPI_TranslatedFormulaType, having type TranslatedFormulaTypePresModel + ParameterId["TranslatedFormulaType"] = "translatedFormulaType"; + // DPI_ReferenceLineValidFormulaTypes, having type TranslatedFormulaTypePresModel[] + ParameterId["ReferenceLineValidFormulaTypes"] = "validReferenceLineFormulaTypes"; + // DPI_ReferenceLineValidPairedFormulaTypes, having type TranslatedFormulaTypePresModel[] + ParameterId["ReferenceLineValidPairedFormulaTypes"] = "validReferenceLinePairedFormulaTypes"; + // DPI_TranslatedConfidenceIntervalState, having type TranslatedConfidenceIntervalStatePresModel + ParameterId["TranslatedConfidenceIntervalState"] = "translatedConfidenceIntervalState"; + // DPI_TranslatedConfidenceIntervalStates, having type TranslatedConfidenceIntervalStatePresModel[] + ParameterId["TranslatedConfidenceIntervalStates"] = "translatedConfidenceIntervalStates"; + // DPI_TranslatedStDevType, having type TranslatedStDevTypePresModel + ParameterId["TranslatedStDevType"] = "translatedStdevType"; + // DPI_TranslatedStDevTypes, having type TranslatedStDevTypePresModel[] + ParameterId["TranslatedStDevTypes"] = "translatedStdevTypes"; + // DPI_ReferenceLineLODCalcType, having type LODCalcType + ParameterId["ReferenceLineLODCalcType"] = "referenceLineLodCalcType"; + // DPI_ValueDomainType, having type ValueDomainType + ParameterId["ValueDomainType"] = "valueDomainType"; + // DPI_ValueDomainTypes, having type ValueDomainType[] + ParameterId["ValueDomainTypes"] = "valueDomainTypes"; + // DPI_OperationType, having type OperationType + ParameterId["OperationType"] = "operationType"; + // DPI_OperationTypes, having type OperationType[] + ParameterId["OperationTypes"] = "operationTypes"; + // DPI_ConnectionTypeCategory, having type ConnectionTypeCategory + ParameterId["ConnectionTypeCategory"] = "connectionTypeCategory"; + // DPI_ConnectionTypeGroup, having type ConnectionTypeGroup + ParameterId["ConnectionTypeGroup"] = "connectionTypeGroup"; + // DPI_CommandRedirectType, having type CommandRedirectType + ParameterId["CommandRedirectType"] = "commandRedirectType"; + // DPI_CustomSplitMode, having type SplitMode + ParameterId["CustomSplitMode"] = "customSplitMode"; + // DPI_CustomSplitSeparatorType, having type SeparatorType + ParameterId["CustomSplitSeparatorType"] = "customSplitSeparatorType"; + // DPI_LevelSelectionState, having type LevelSelectionState + ParameterId["LevelSelectionState"] = "levelSelectionState"; + // DPI_LevelSelectionStates, having type LevelSelectionState[] + ParameterId["LevelSelectionStates"] = "levelSelectionStates"; + // DPI_SourceDestIcon, having type SourceDestIcon + ParameterId["SourceDestIcon"] = "sourceDestIcon"; + // DPI_LegendLayout, having type LegendLayout + ParameterId["LegendLayout"] = "pageLegendLayout"; + // DPI_ImagesEditResultCode, having type ImagesEditResultCode + ParameterId["ImagesEditResultCode"] = "imagesEditResultCode"; + // DPI_CalculationContext, having type CalculationContext + ParameterId["CalculationContext"] = "calculationContext"; + // DPI_WorkgroupPublishErrorType, having type WorkgroupPublishErrorType + ParameterId["WorkgroupPublishErrorType"] = "workgroupPublishErrorType"; + // DPI_IsParameter, having type TriBool + ParameterId["IsParameter"] = "isParameter"; + // DPI_AddressingState, having type WidgetState + ParameterId["AddressingState"] = "addressingState"; + // DPI_AllPagesState, having type WidgetState + ParameterId["AllPagesState"] = "allPagesState"; + // DPI_AtTheLevelState, having type WidgetState + ParameterId["AtTheLevelState"] = "atTheLevelState"; + // DPI_ComputeCompoundedRateState, having type WidgetState + ParameterId["ComputeCompoundedRateState"] = "computeCompoundedRateState"; + // DPI_CustomNullIfIncompleteState, having type WidgetState + ParameterId["CustomNullIfIncompleteState"] = "customNullIfIncompleteState"; + // DPI_NestedCalcsState, having type WidgetState + ParameterId["NestedCalcsState"] = "nestedCalcsState"; + // DPI_RankTypeState, having type WidgetState + ParameterId["RankTypeState"] = "rankTypeState"; + // DPI_ReferenceOptionsState, having type WidgetState + ParameterId["ReferenceOptionsState"] = "referenceOptionsState"; + // DPI_RestartEveryState, having type WidgetState + ParameterId["RestartEveryState"] = "restartEveryState"; + // DPI_SortAggState, having type WidgetState + ParameterId["SortAggState"] = "sortAggState"; + // DPI_SortState, having type WidgetState + ParameterId["SortState"] = "sortState"; + // DPI_TableCalcTypeState, having type WidgetState + ParameterId["TableCalcTypeState"] = "tableCalcTypeState"; + // DPI_TableCalcAssistanceWidgetState, having type WidgetState + ParameterId["TableCalcAssistanceWidgetState"] = "tableCalcAssistanceWidgetState"; + // DPI_CalcNestingLevel, having type CalcNestingLevel + ParameterId["CalcNestingLevel"] = "calcNestingLevel"; + // DPI_DataProviderType, having type DataProviderType + ParameterId["DataProviderType"] = "dataProviderType"; + // DPI_HeuristicCommandReinterpretation, having type HeuristicCommandReinterpretation + ParameterId["HeuristicCommandReinterpretation"] = "heuristicCommandReinterpretation"; + // DPI_ExtractRefreshStatus, having type ExtractRefreshStatus + ParameterId["ExtractRefreshStatus"] = "extractRefreshStatus"; + // DPI_RichTextEditorWidgetKey, having type RichTextEditorWidgetKey + ParameterId["RichTextEditorWidgetKey"] = "richTextEditorWidgetKey"; + // DPI_RichTextWidgetKeys, having type RichTextEditorWidgetKey[] + ParameterId["RichTextWidgetKeys"] = "richTextWidgetKeys"; + // DPI_TypeOfFormatItem, having type TypeOfFormatItem + ParameterId["TypeOfFormatItem"] = "typeOfFormatItem"; + // DPI_TypeOfFormatContainer, having type TypeOfFormatContainer + ParameterId["TypeOfFormatContainer"] = "typeOfFormatContainer"; + // DPI_TypeOfFormatControl, having type TypeOfFormatControl + ParameterId["TypeOfFormatControl"] = "typeOfFormatControl"; + // DPI_FormatWidgetKey, having type FormatWidgetKey + ParameterId["FormatWidgetKey"] = "formatWidgetKey"; + // DPI_ColorSwatchType, having type ColorSwatchType + ParameterId["ColorSwatchType"] = "formatColorSwatchType"; + // DPI_PickerType, having type PickerType + ParameterId["PickerType"] = "pickerType"; + // DPI_ExtractHistoryRefreshType, having type RefreshType + ParameterId["ExtractHistoryRefreshType"] = "extractHistoryRefreshTypeEnum"; + // DPI_AxisFoldState, having type AxisFoldState + ParameterId["AxisFoldState"] = "axisFoldState"; + // DPI_TickMarkSpacingUnits, having type TickSpacingUnits + ParameterId["TickMarkSpacingUnits"] = "tickSpacingUnits"; + // DPI_TickMarkState, having type TickMarkState + ParameterId["TickMarkState"] = "tickMarkState"; + // DPI_AxisRangeType, having type AxisRangeType + ParameterId["AxisRangeType"] = "axisRangeType"; + // DPI_ScaleType, having type ScaleType + ParameterId["ScaleType"] = "scaleType"; + // DPI_DashboardDeviceLayout, having type DashboardDeviceLayout + ParameterId["DashboardDeviceLayout"] = "dashboardDeviceLayout"; + // DPI_ActivateDeviceLayout, having type DashboardDeviceLayout + ParameterId["ActivateDeviceLayout"] = "activateDeviceLayout"; + // DPI_DashboardDeviceLayouts, having type DashboardDeviceLayout[] + ParameterId["DashboardDeviceLayouts"] = "dashboardDeviceLayouts"; + // DPI_DeviceSource, having type DeviceSource + ParameterId["DeviceSource"] = "deviceSource"; + // DPI_DashboardSizingDimension, having type DashboardSizingDimension + ParameterId["DashboardSizingDimension"] = "dashboardSizingDimension"; + // DPI_GridOverlayMode, having type GridOverlayMode + ParameterId["GridOverlayMode"] = "gridOverlayMode"; + // DPI_DashboardSizingMode, having type DashboardSizingMode + ParameterId["DashboardSizingMode"] = "dashboardSizingMode"; + // DPI_FlipboardNavType, having type FlipboardNavType + ParameterId["FlipboardNavType"] = "flipboardNavType"; + // DPI_FieldPickerDialogUseCase, having type FieldPickerDialogUseCase + ParameterId["FieldPickerDialogUseCase"] = "fieldPickerDialogUseCase"; + // DPI_StartOfWeekEnum, having type SOWValue + ParameterId["StartOfWeekEnum"] = "startOfWeekEnum"; + // DPI_StartOfFiscalYear, having type FYSValues + ParameterId["StartOfFiscalYear"] = "startOfFiscalYear"; + // DPI_TotalsInclusionValue, having type TotalsInclusion + ParameterId["TotalsInclusionValue"] = "totalsInclusionValue"; + // DPI_FormatCode, having type FormatCode + ParameterId["FormatCode"] = "formatCode"; + // DPI_FindType, having type FindType + ParameterId["FindType"] = "findType"; + // DPI_PerspectiveType, having type PerspectiveType + ParameterId["PerspectiveType"] = "perspectiveType"; + // DPI_GeometryType, having type GeometryType + ParameterId["GeometryType"] = "geometryType"; + // DPI_PaneLabelComposition, having type PaneLabelComposition + ParameterId["PaneLabelComposition"] = "paneLabelComposition"; + // DPI_WarningType, having type WarningType + ParameterId["WarningType"] = "warningType"; + // DPI_UIMode, having type WorkbookUIMode + ParameterId["UIMode"] = "uiMode"; + // DPI_MenuItemId, having type TopLevelMenuItem + ParameterId["MenuItemId"] = "menuItemId"; + // DPI_CommandReturn, having type object + ParameterId["CommandReturn"] = "commandReturn"; + // DPI_LegacyPresModel, having type object + ParameterId["LegacyPresModel"] = "legacyPresModel"; + // DPI_PresentationModel, having type object + ParameterId["PresentationModel"] = "presModelHolder"; + // DPI_Event, having type object + ParameterId["Event"] = "eventContainer"; + // DPI_LineStyle, having type Array + ParameterId["LineStyle"] = "lineStyle"; + // DPI_StrokeStyle, having type Array + ParameterId["StrokeStyle"] = "strokeStyle"; + // DPI_Schema, having type Array + ParameterId["Schema"] = "schema"; + // DPI_StartTuple, having type Array + ParameterId["StartTuple"] = "startTuple"; + // DPI_EndTuple, having type Array + ParameterId["EndTuple"] = "endTuple"; + // DPI_Tuple, having type Array + ParameterId["Tuple"] = "tuple"; + // DPI_Tuples, having type Array[] + ParameterId["Tuples"] = "tuples"; + // DPI_CustomDomainTuples, having type Array[] + ParameterId["CustomDomainTuples"] = "customDomainTuples"; + // DPI_UpdatedTuples, having type Array[] + ParameterId["UpdatedTuples"] = "updatedTuples"; + // DPI_Table, having type Array + ParameterId["Table"] = "table"; + // DPI_AliasedValue, having type Array + ParameterId["AliasedValue"] = "valueAlias"; + // DPI_FirstAliasedValue, having type Array + ParameterId["FirstAliasedValue"] = "firstAlisedValue"; + // DPI_MaximumRange, having type Array + ParameterId["MaximumRange"] = "maximumRangeValue"; + // DPI_MinimumRange, having type Array + ParameterId["MinimumRange"] = "minimumRangeValue"; + // DPI_SecondAliasedValue, having type Array + ParameterId["SecondAliasedValue"] = "secondAlisedValue"; + // DPI_AliasedSelectionList, having type Array[] + ParameterId["AliasedSelectionList"] = "aliasedSelectionList"; + // DPI_AliasedValues, having type Array[] + ParameterId["AliasedValues"] = "valuesAliases"; + // DPI_VerboseAliasedRangeMax, having type Array + ParameterId["VerboseAliasedRangeMax"] = "verboseAliasedRangeMax"; + // DPI_VerboseAliasedValue, having type Array + ParameterId["VerboseAliasedValue"] = "verboseAliasedValue"; + // DPI_MultiBucket, having type MultiBucket + ParameterId["MultiBucket"] = "xValues"; + // DPI_PageName, having type PageName + ParameterId["PageName"] = "pageName"; + // DPI_Selector, having type object + ParameterId["Selector"] = "selector"; + // DPI_PaneId, having type object + ParameterId["PaneId"] = "paneId"; + // DPI_PaneIds, having type PaneId[] + ParameterId["PaneIds"] = "paneIds"; + // DPI_ImageRegionInfo, having type object + ParameterId["ImageRegionInfo"] = "vizRegionRect"; + // DPI_ImageRegionInfoList, having type object[] + ParameterId["ImageRegionInfoList"] = "vizRegionRectList"; + // DPI_VisualID, having type VisualID + ParameterId["VisualID"] = "visualId"; + // DPI_VisualIDPM, having type VisualIDPresModel + ParameterId["VisualIDPM"] = "visualIdPresModel"; + // DPI_InvalidSheets, having type VisualIDPresModel[] + ParameterId["InvalidSheets"] = "invalidSheets"; + // DPI_VisualIDPMs, having type VisualIDPresModel[] + ParameterId["VisualIDPMs"] = "visualIds"; + // DPI_SheetPathPM, having type SheetPathPresModel + ParameterId["SheetPathPM"] = "sheetPath"; + // DPI_CapturedSheetPM, having type SheetPathPresModel + ParameterId["CapturedSheetPM"] = "capturedSheetPm"; + // DPI_CurrentSheetPM, having type SheetPathPresModel + ParameterId["CurrentSheetPM"] = "currentSheetPm"; + // DPI_DashboardPM, having type SheetPathPresModel + ParameterId["DashboardPM"] = "dashboardPm"; + // DPI_NewSheetPM, having type SheetPathPresModel + ParameterId["NewSheetPM"] = "newSheetPm"; + // DPI_SheetNamePM, having type SheetPathPresModel + ParameterId["SheetNamePM"] = "sheetNamePm"; + // DPI_SheetPM, having type SheetPathPresModel + ParameterId["SheetPM"] = "sheetPm"; + // DPI_SourceDashboardPM, having type SheetPathPresModel + ParameterId["SourceDashboardPM"] = "sourceDashboardPm"; + // DPI_SourceSheetPM, having type SheetPathPresModel + ParameterId["SourceSheetPM"] = "sourceSheetPm"; + // DPI_TargetSheetPM, having type SheetPathPresModel + ParameterId["TargetSheetPM"] = "targetSheetPm"; + // DPI_WorksheetPM, having type SheetPathPresModel + ParameterId["WorksheetPM"] = "worksheetPm"; + // DPI_ModifiedSheets, having type SheetPathPresModel[] + ParameterId["ModifiedSheets"] = "modifiedSheets"; + // DPI_DataColumn, having type DataColumnPresModel + ParameterId["DataColumn"] = "dataColumn"; + // DPI_DataColumns, having type DataColumnPresModel[] + ParameterId["DataColumns"] = "dataColumns"; + // DPI_Addresses, having type DataColumnPresModel[] + ParameterId["Addresses"] = "addresses"; + // DPI_EncodingColumns, having type Dictionary(of DataColumnPresModel) + ParameterId["EncodingColumns"] = "encodingColumns"; + // DPI_TextRunColumns, having type Dictionary(of DataColumnPresModel) + ParameterId["TextRunColumns"] = "textRunColumns"; + // DPI_TextStyleColumns, having type Dictionary(of DataColumnPresModel) + ParameterId["TextStyleColumns"] = "textStyleColumns"; + // DPI_NamedDataColumn, having type NamedDataColumnPresModel + ParameterId["NamedDataColumn"] = "namedDataColumn"; + // DPI_NamedDataColumns, having type NamedDataColumnPresModel[] + ParameterId["NamedDataColumns"] = "namedDataColumns"; + // DPI_DataTable, having type DataTablePresModel + ParameterId["DataTable"] = "dataTable"; + // DPI_ActionSpecification, having type None + ParameterId["ActionSpecification"] = "actionSpec"; + // DPI_Column, having type Column + ParameterId["Column"] = "columnContext"; + // DPI_SetFunction, having type SetFunction + ParameterId["SetFunction"] = "setFunction"; + // DPI_SetFunctions, having type SetFunctions + ParameterId["SetFunctions"] = "setFunctions"; + // DPI_VisualProfileShowMe, having type VisualProfileShowMe + ParameterId["VisualProfileShowMe"] = "vpsm"; + // DPI_DataSourcePtr, having type DataSource + ParameterId["DataSourcePtr"] = "datasourcePtr"; + // DPI_WorkgroupConnection, having type WorkgroupConnection + ParameterId["WorkgroupConnection"] = "workgroupConnection"; + // DPI_Authenticator, having type AuthenticatorRawPtr + ParameterId["Authenticator"] = "authenticator"; + // DPI_UpgradeAttr, having type UpgradeAttr + ParameterId["UpgradeAttr"] = "upgradeAttr"; + // DPI_ExtractAttr, having type ExtractAttr + ParameterId["ExtractAttr"] = "extractAttr"; + // DPI_RefreshAttr, having type RefreshAttr + ParameterId["RefreshAttr"] = "refreshAttr"; + // DPI_ContextSpecification, having type ContextSpecification + ParameterId["ContextSpecification"] = "contextSpecification"; + // DPI_SchemaViewerSelector, having type SchemaViewerSelectorPtr + ParameterId["SchemaViewerSelector"] = "schemaViewerSelector"; + // DPI_Buckets, having type Buckets + ParameterId["Buckets"] = "buckets"; + // DPI_LegendItems, having type MultiBuckets + ParameterId["LegendItems"] = "legendItems"; + // DPI_LegendItem, having type MultiBucket + ParameterId["LegendItem"] = "legendItem"; + // DPI_SourceItem, having type MultiBucket + ParameterId["SourceItem"] = "sourceItem"; + // DPI_DestItem, having type MultiBucket + ParameterId["DestItem"] = "destItem"; + // DPI_IQuickSortState, having type IQuickSortState + ParameterId["IQuickSortState"] = "quickSortState"; + // DPI_AppBuildDate, having type DateTime + ParameterId["AppBuildDate"] = "appBuildDate"; + // DPI_ForecastDateRangeEnd, having type DateTime + ParameterId["ForecastDateRangeEnd"] = "forecastDateRangeEnd"; + // DPI_ForecastDateRangeStart, having type DateTime + ParameterId["ForecastDateRangeStart"] = "forecastDateRangeStart"; + // DPI_LastModified, having type DateTime + ParameterId["LastModified"] = "lastModified"; + // DPI_SearchDomainPtr, having type MultiDomain + ParameterId["SearchDomainPtr"] = "searchDomainPtr"; + // DPI_ResultsDomainPtr, having type MultiDomain + ParameterId["ResultsDomainPtr"] = "resultsDomainPtr"; + // DPI_Actions, having type object + ParameterId["Actions"] = "actions"; + // DPI_SRCommands, having type object + ParameterId["SRCommands"] = "selectionRelaxationCommands"; + // DPI_Commands, having type object + ParameterId["Commands"] = "commands"; + // DPI_DataTypeCommands, having type object + ParameterId["DataTypeCommands"] = "datatypeCommands"; + // DPI_MultiSelectCommands, having type object + ParameterId["MultiSelectCommands"] = "multiselectCommands"; + // DPI_NonVizCommands, having type object + ParameterId["NonVizCommands"] = "nonVizCommands"; + // DPI_QuickFilterCommands, having type object + ParameterId["QuickFilterCommands"] = "quickFilterCommands"; + // DPI_ShowMeCommands, having type object + ParameterId["ShowMeCommands"] = "showMeCommands"; + // DPI_SortIndicatorMenu, having type object + ParameterId["SortIndicatorMenu"] = "sortIndicatorMenu"; + // DPI_StandardCommands, having type object + ParameterId["StandardCommands"] = "standardCommands"; + // DPI_VizCommands, having type object + ParameterId["VizCommands"] = "vizCommands"; + // DPI_ZoneChromeCommands, having type object + ParameterId["ZoneChromeCommands"] = "zoneChromeCommands"; + // DPI_CommandItem, having type CommandsItem + ParameterId["CommandItem"] = "commandItem"; + // DPI_CommandItems, having type CommandsItem[] + ParameterId["CommandItems"] = "commandItems"; + // DPI_Command, having type SimpleCommandsPresModel + ParameterId["Command"] = "simpleCommandModel"; + // DPI_AddCommand, having type SimpleCommandsPresModel + ParameterId["AddCommand"] = "addSimpleCommandModel"; + // DPI_RemoveCommand, having type SimpleCommandsPresModel + ParameterId["RemoveCommand"] = "removeSimpleCommandModel"; + // DPI_AcceptCommand, having type SimpleCommandsPresModel + ParameterId["AcceptCommand"] = "acceptSimpleCommandModel"; + // DPI_DeclineCommand, having type SimpleCommandsPresModel + ParameterId["DeclineCommand"] = "declineSimpleCommandModel"; + // DPI_DropCommand, having type SimpleCommandsPresModel + ParameterId["DropCommand"] = "dropCommandModel"; + // DPI_EditCaptionCommand, having type SimpleCommandsPresModel + ParameterId["EditCaptionCommand"] = "editCaptionCommandModel"; + // DPI_FontCommand, having type SimpleCommandsPresModel + ParameterId["FontCommand"] = "fontCommandModel"; + // DPI_LineStyleCommand, having type SimpleCommandsPresModel + ParameterId["LineStyleCommand"] = "lineStyleCommandModel"; + // DPI_FormatCommand, having type SimpleCommandsPresModel + ParameterId["FormatCommand"] = "formatCommandModel"; + // DPI_DestructorCommand, having type SimpleCommandsPresModel + ParameterId["DestructorCommand"] = "destructorCommand"; + // DPI_ClearFormatCommand, having type SimpleCommandsPresModel + ParameterId["ClearFormatCommand"] = "clearFormatCommandModel"; + // DPI_RichTextCommand, having type SimpleCommandsPresModel + ParameterId["RichTextCommand"] = "richTextCommandModel"; + // DPI_SortIndicatorCommand, having type SimpleCommandsPresModel + ParameterId["SortIndicatorCommand"] = "sortIndicatorCommand"; + // DPI_CommandList, having type SimpleCommandsPresModel[] + ParameterId["CommandList"] = "commandList"; + // DPI_ParameterCtrl, having type ParameterCtrlPresModel + ParameterId["ParameterCtrl"] = "parameterControl"; + // DPI_ParameterCtrls, having type ParameterCtrlPresModel[] + ParameterId["ParameterCtrls"] = "parameterControls"; + // DPI_PageModel, having type PagePresModel + ParameterId["PageModel"] = "pageModel"; + // DPI_PageTrailOptions, having type PageTrailOptionsPresModel + ParameterId["PageTrailOptions"] = "pageTrailOptions"; + // DPI_Field, having type FieldPresModel + ParameterId["Field"] = "field"; + // DPI_FieldList, having type FieldPresModel[] + ParameterId["FieldList"] = "fieldList"; + // DPI_FieldColumn, having type FieldColumnPresModel + ParameterId["FieldColumn"] = "column"; + // DPI_FieldColumnList, having type FieldColumnPresModel[] + ParameterId["FieldColumnList"] = "columnList"; + // DPI_Parameter, having type ParameterPresModel + ParameterId["Parameter"] = "parameter"; + // DPI_Dimension, having type DimensionPresModel + ParameterId["Dimension"] = "dimension"; + // DPI_AttributeDimensionList, having type DimensionPresModel[] + ParameterId["AttributeDimensionList"] = "attributeDimensionList"; + // DPI_RelationalTable, having type RelationalTablePresModel + ParameterId["RelationalTable"] = "relationalTable"; + // DPI_DrillPath, having type DrillPathPresModel + ParameterId["DrillPath"] = "drillPath"; + // DPI_FieldFolder, having type FieldFolderPresModel + ParameterId["FieldFolder"] = "fieldFolder"; + // DPI_Group, having type GroupPresModel + ParameterId["Group"] = "group"; + // DPI_Hierarchy, having type HierarchyPresModel + ParameterId["Hierarchy"] = "hierarchy"; + // DPI_HierarchyList, having type HierarchyPresModel[] + ParameterId["HierarchyList"] = "hierarchyList"; + // DPI_HierarchyMemberSelectedState, having type HierarchySelect_MemberSelectedStatePresModel + ParameterId["HierarchyMemberSelectedState"] = "hierarchyMemberSelectedState"; + // DPI_HierarchySelectionChanges, having type HierarchySelect_MemberSelectedStatePresModel[] + ParameterId["HierarchySelectionChanges"] = "hierarchySelectionChanges"; + // DPI_DisplayFolder, having type DisplayFolderPresModel + ParameterId["DisplayFolder"] = "displayFolder"; + // DPI_DisplayFolderList, having type DisplayFolderPresModel[] + ParameterId["DisplayFolderList"] = "displayFolderList"; + // DPI_DataSourceLayout, having type DataSourceLayoutPresModel + ParameterId["DataSourceLayout"] = "dataSourceLayout"; + // DPI_BaseDataSource, having type BaseDataSourcePresModel + ParameterId["BaseDataSource"] = "baseDataSource"; + // DPI_BaseDataSources, having type Dictionary(of BaseDataSourcePresModel) + ParameterId["BaseDataSources"] = "baseDataSources"; + // DPI_DataSource, having type DataSourcePresModel + ParameterId["DataSource"] = "dataSource"; + // DPI_DataSources, having type Dictionary(of DataSourcePresModel) + ParameterId["DataSources"] = "dataSources"; + // DPI_SchemaViewerDataSource, having type SchemaViewerDataSourcePresModel + ParameterId["SchemaViewerDataSource"] = "schemaViewerDataSource"; + // DPI_SchemaViewerDataSources, having type Dictionary(of SchemaViewerDataSourcePresModel) + ParameterId["SchemaViewerDataSources"] = "schemaViewerDataSources"; + // DPI_BaseDataSchema, having type BaseDataSchemaPresModel + ParameterId["BaseDataSchema"] = "baseDataSchema"; + // DPI_DataSchema, having type DataSchemaPresModel + ParameterId["DataSchema"] = "dataSchema"; + // DPI_SchemaViewerDataSchema, having type SchemaViewerDataSchemaPresModel + ParameterId["SchemaViewerDataSchema"] = "schemaViewerDataSchema"; + // DPI_SheetListItem, having type SheetListItemPresModel + ParameterId["SheetListItem"] = "sheetListItem"; + // DPI_SheetListItems, having type SheetListItemPresModel[] + ParameterId["SheetListItems"] = "sheetListItems"; + // DPI_SheetList, having type SheetListPresModel + ParameterId["SheetList"] = "sheetList"; + // DPI_SizeModeOption, having type SizeModeOptionPresModel + ParameterId["SizeModeOption"] = "sizeModeOption"; + // DPI_SizeModeOptions, having type SizeModeOptionPresModel[] + ParameterId["SizeModeOptions"] = "sizeModeOptions"; + // DPI_DashboardSizeControl, having type DashboardSizeControlPresModel + ParameterId["DashboardSizeControl"] = "dashboardSizeControl"; + // DPI_DeviceLayoutInfoItem, having type DeviceLayoutInfoItemPresModel + ParameterId["DeviceLayoutInfoItem"] = "deviceLayoutInfoItem"; + // DPI_DeviceLayoutInfoItems, having type DeviceLayoutInfoItemPresModel[] + ParameterId["DeviceLayoutInfoItems"] = "deviceLayoutInfoItems"; + // DPI_DeviceLayoutInfoList, having type DeviceLayoutInfoListPresModel + ParameterId["DeviceLayoutInfoList"] = "deviceLayoutInfoList"; + // DPI_SpecializedDeviceLayoutItem, having type SpecializedDeviceLayoutItemPresModel + ParameterId["SpecializedDeviceLayoutItem"] = "specializedDeviceLayoutItem"; + // DPI_SpecializedDeviceLayoutItems, having type SpecializedDeviceLayoutItemPresModel[] + ParameterId["SpecializedDeviceLayoutItems"] = "specializedDeviceLayoutItems"; + // DPI_SpecializedDeviceLayoutList, having type SpecializedDeviceLayoutListPresModel + ParameterId["SpecializedDeviceLayoutList"] = "specializedDeviceLayoutList"; + // DPI_SizeItem, having type SizeItemPresModel + ParameterId["SizeItem"] = "sizeItem"; + // DPI_SizeItems, having type SizeItemPresModel[] + ParameterId["SizeItems"] = "sizeItems"; + // DPI_DeviceSizesList, having type SizeItemListPresModel + ParameterId["DeviceSizesList"] = "deviceSizesList"; + // DPI_PresetSizesList, having type SizeItemListPresModel + ParameterId["PresetSizesList"] = "presetSizesList"; + // DPI_SizeItemList, having type SizeItemListPresModel + ParameterId["SizeItemList"] = "sizeItemList"; + // DPI_SubstitutionKeyword, having type SubstitutionKeywordPresModel + ParameterId["SubstitutionKeyword"] = "substitutionKeyword"; + // DPI_SubstitutionKeywords, having type SubstitutionKeywordPresModel[] + ParameterId["SubstitutionKeywords"] = "substitutionKeywords"; + // DPI_SubstitutionKeywordSubList, having type SubstitutionKeywordSubListPresModel + ParameterId["SubstitutionKeywordSubList"] = "substitutionKeywordsSublist"; + // DPI_SubstitutionKeywordSubLists, having type SubstitutionKeywordSubListPresModel[] + ParameterId["SubstitutionKeywordSubLists"] = "substitutionKeywordSublists"; + // DPI_SubstitutionKeywordList, having type SubstitutionKeywordListPresModel + ParameterId["SubstitutionKeywordList"] = "substitutionKeywordsList"; + // DPI_DeviceZoneListItem, having type DeviceZoneListItemPresModel + ParameterId["DeviceZoneListItem"] = "deviceZoneListItem"; + // DPI_DeviceZoneListItems, having type DeviceZoneListItemPresModel[] + ParameterId["DeviceZoneListItems"] = "deviceZoneListItems"; + // DPI_DeviceZoneList, having type DeviceZoneListPresModel + ParameterId["DeviceZoneList"] = "deviceZoneList"; + // DPI_ZoneSnapLineListItem, having type ZoneSnapLineListItemPresModel + ParameterId["ZoneSnapLineListItem"] = "snapLineListItem"; + // DPI_OuterHorizontalSnapLines, having type ZoneSnapLineListItemPresModel[] + ParameterId["OuterHorizontalSnapLines"] = "outerHorizontalSnapLines"; + // DPI_OuterVerticalSnapLines, having type ZoneSnapLineListItemPresModel[] + ParameterId["OuterVerticalSnapLines"] = "outerVerticalSnapLines"; + // DPI_InnerHorizontalSnapLines, having type ZoneSnapLineListItemPresModel[] + ParameterId["InnerHorizontalSnapLines"] = "innerHorizontalSnapLines"; + // DPI_InnerVerticalSnapLines, having type ZoneSnapLineListItemPresModel[] + ParameterId["InnerVerticalSnapLines"] = "innerVerticalSnapLines"; + // DPI_ZoneSnapLineList, having type ZoneSnapLineListPresModel + ParameterId["ZoneSnapLineList"] = "snapLineList"; + // DPI_DashboardZoneHierarchy, having type DashboardZoneHierarchyPresModel + ParameterId["DashboardZoneHierarchy"] = "dashboardZoneHierarchy"; + // DPI_DeviceZoneVisibilityListItem, having type DeviceZoneVisibilityListItemPresModel + ParameterId["DeviceZoneVisibilityListItem"] = "deviceZoneVisibilityListItem"; + // DPI_DeviceZoneVisibilityListItems, having type DeviceZoneVisibilityListItemPresModel[] + ParameterId["DeviceZoneVisibilityListItems"] = "deviceZoneVisibilityListItems"; + // DPI_DeviceZoneVisibilityList, having type DeviceZoneVisibilityListPresModel + ParameterId["DeviceZoneVisibilityList"] = "deviceZoneVisibilityList"; + // DPI_WorksheetDataSchema, having type WorksheetDataSchemaPresModel + ParameterId["WorksheetDataSchema"] = "worksheetDataSchema"; + // DPI_WorksheetDataSchemaMap, having type Dictionary(of WorksheetDataSchemaPresModel) + ParameterId["WorksheetDataSchemaMap"] = "worksheetDataSchemaMap"; + // DPI_Shelf, having type ShelfPresModel + ParameterId["Shelf"] = "shelf"; + // DPI_ShelfDetail, having type ShelfPresModel + ParameterId["ShelfDetail"] = "shelfDetail"; + // DPI_ShelfList, having type ShelfPresModel[] + ParameterId["ShelfList"] = "shelfList"; + // DPI_ShelfItem, having type ShelfItemPresModel + ParameterId["ShelfItem"] = "shelfItem"; + // DPI_ShelfItems, having type ShelfItemPresModel[] + ParameterId["ShelfItems"] = "shelfItems"; + // DPI_Shelves, having type ShelvesPresModel + ParameterId["Shelves"] = "shelves"; + // DPI_FieldEncoding, having type FieldEncodingPresModel + ParameterId["FieldEncoding"] = "fieldEncoding"; + // DPI_FieldEncodings, having type FieldEncodingPresModel[] + ParameterId["FieldEncodings"] = "fieldEncodings"; + // DPI_UberTip, having type UberTipPresModel + ParameterId["UberTip"] = "uberTip"; + // DPI_AnalyticsObjectDragInfo, having type AnalyticsObjectDragInfoPresModel + ParameterId["AnalyticsObjectDragInfo"] = "analyticsObjectDragInfo"; + // DPI_TrendLine, having type TrendLinePresModel + ParameterId["TrendLine"] = "trendLine"; + // DPI_TrendLineDialog, having type TrendLineDialogPresModel + ParameterId["TrendLineDialog"] = "trendLineDialog"; + // DPI_TrendLineDescribePresModel, having type TrendLineDescribePresModel + ParameterId["TrendLineDescribePresModel"] = "trendLineDescribePresModel"; + // DPI_TrendLineAOVModelPresModel, having type TrendLineAOVModelPresModel + ParameterId["TrendLineAOVModelPresModel"] = "trendLineAovModelPresModel"; + // DPI_TrendLineAOVModelsPresModel, having type TrendLineAOVModelPresModel[] + ParameterId["TrendLineAOVModelsPresModel"] = "trendModelDescriptionVector"; + // DPI_TrendLineLineCoefficientPresModel, having type TrendLineLineCoefficientPresModel + ParameterId["TrendLineLineCoefficientPresModel"] = "trendLineLineCoefficient"; + // DPI_TrendLineLineCoefficientsPresModel, having type TrendLineLineCoefficientPresModel[] + ParameterId["TrendLineLineCoefficientsPresModel"] = "trendLineLineCoefficientsPresModel"; + // DPI_TrendLineLinesPresModel, having type TrendLineLinesPresModel + ParameterId["TrendLineLinesPresModel"] = "trendLineLinesPresModel"; + // DPI_TrendLineAOVPresModel, having type TrendLineAOVPresModel + ParameterId["TrendLineAOVPresModel"] = "trendLineAnovaPresModel"; + // DPI_ReferenceLine, having type ReferenceLinePresModel + ParameterId["ReferenceLine"] = "referenceLine"; + // DPI_ReferenceLines, having type ReferenceLinePresModel[] + ParameterId["ReferenceLines"] = "referenceLines"; + // DPI_PercentileEditDataValue, having type EditDataValuePresModel + ParameterId["PercentileEditDataValue"] = "percentileEditDataValue"; + // DPI_LimitEditDataValue, having type EditDataValuePresModel + ParameterId["LimitEditDataValue"] = "limitEditDataValue"; + // DPI_ConfidenceLevelCombo, having type EditValueWidgetPresModel + ParameterId["ConfidenceLevelCombo"] = "confidenceLevelCombo"; + // DPI_DistributionQuantilesCombo, having type EditValueWidgetPresModel + ParameterId["DistributionQuantilesCombo"] = "distributionQuantilesLevelCombo"; + // DPI_PercentilesCombo, having type EditValueWidgetPresModel + ParameterId["PercentilesCombo"] = "distributionPercentilesLevelCombo"; + // DPI_NumericBinSizeCombo, having type EditValueWidgetPresModel + ParameterId["NumericBinSizeCombo"] = "numericBinSizeCombo"; + // DPI_FieldPickerField, having type FieldPickerFieldPresModel + ParameterId["FieldPickerField"] = "fieldPickerField"; + // DPI_FieldPickerFields, having type FieldPickerFieldPresModel[] + ParameterId["FieldPickerFields"] = "fieldPickerFields"; + // DPI_FieldPickerCombo, having type FieldPickerComboPresModel + ParameterId["FieldPickerCombo"] = "fieldPickerCombo"; + // DPI_PairedFieldPickerCombo, having type FieldPickerComboPresModel + ParameterId["PairedFieldPickerCombo"] = "pairedFieldPickerCombo"; + // DPI_ReferenceLineEditorPresModel, having type ReferenceLineEditorPresModel + ParameterId["ReferenceLineEditorPresModel"] = "referenceLineEditor"; + // DPI_CloseDataSourceErrorDialogPresModel, having type CloseDataSourceErrorDialogPresModel + ParameterId["CloseDataSourceErrorDialogPresModel"] = "closeDsErrorDialog"; + // DPI_EditReferenceLine, having type EditReferenceLinePresModel + ParameterId["EditReferenceLine"] = "editReferenceLine"; + // DPI_EditReferenceBand, having type EditReferenceBandPresModel + ParameterId["EditReferenceBand"] = "editReferenceBand"; + // DPI_EditDistribution, having type EditDistributionPresModel + ParameterId["EditDistribution"] = "editDistribution"; + // DPI_DistributionPercentages, having type DistributionPercentagesPresModel + ParameterId["DistributionPercentages"] = "distributionPercentages"; + // DPI_DistributionPercentiles, having type DistributionPercentilesPresModel + ParameterId["DistributionPercentiles"] = "distributionPercentiles"; + // DPI_DistributionQuantiles, having type DistributionQuantilesPresModel + ParameterId["DistributionQuantiles"] = "distributionQuantiles"; + // DPI_DistributionStandardDeviation, having type DistributionStandardDeviationPresModel + ParameterId["DistributionStandardDeviation"] = "distributionStddev"; + // DPI_SortIndicators, having type SortIndicatorsPresModel + ParameterId["SortIndicators"] = "sortIndicators"; + // DPI_SortIndicatorRegion, having type SortIndicatorRegionPresModel + ParameterId["SortIndicatorRegion"] = "sortIndicatorRegion"; + // DPI_SortIndicatorRegions, having type SortIndicatorRegionPresModel[] + ParameterId["SortIndicatorRegions"] = "sortIndicatorRegions"; + // DPI_SortIndicatorItem, having type SortIndicatorItemPresModel + ParameterId["SortIndicatorItem"] = "sortIndicatorItem"; + // DPI_SortIndicatorItems, having type SortIndicatorItemPresModel[] + ParameterId["SortIndicatorItems"] = "sortIndicatorItems"; + // DPI_BuilderConfig, having type BuilderConfigPresModel + ParameterId["BuilderConfig"] = "builderConfig"; + // DPI_SheetLayoutInfo, having type SheetLayoutInfoPresModel + ParameterId["SheetLayoutInfo"] = "sheetLayoutInfo"; + // DPI_AreaRect, having type RectanglePresModel + ParameterId["AreaRect"] = "areaRect"; + // DPI_Border, having type RectanglePresModel + ParameterId["Border"] = "borderRect"; + // DPI_BoundsRect, having type RectanglePresModel + ParameterId["BoundsRect"] = "boundsRect"; + // DPI_ButtonRect, having type RectanglePresModel + ParameterId["ButtonRect"] = "buttonRect"; + // DPI_DragRect, having type RectanglePresModel + ParameterId["DragRect"] = "dragRect"; + // DPI_FocusRect, having type RectanglePresModel + ParameterId["FocusRect"] = "focusRect"; + // DPI_ImageTileRect, having type RectanglePresModel + ParameterId["ImageTileRect"] = "tileRect"; + // DPI_ItemRect, having type RectanglePresModel + ParameterId["ItemRect"] = "itemRect"; + // DPI_LabelRect, having type RectanglePresModel + ParameterId["LabelRect"] = "labelRect"; + // DPI_MarkRect, having type RectanglePresModel + ParameterId["MarkRect"] = "markRect"; + // DPI_MarkTooltipRect, having type RectanglePresModel + ParameterId["MarkTooltipRect"] = "markTooltipRect"; + // DPI_MenuButtonRect, having type RectanglePresModel + ParameterId["MenuButtonRect"] = "menuButtonRect"; + // DPI_OutRegionRect, having type RectanglePresModel + ParameterId["OutRegionRect"] = "outRegionRect"; + // DPI_PaneRect, having type RectanglePresModel + ParameterId["PaneRect"] = "paneRect"; + // DPI_PixelExtents, having type RectanglePresModel + ParameterId["PixelExtents"] = "pixelExtents"; + // DPI_RectMaxLabel, having type RectanglePresModel + ParameterId["RectMaxLabel"] = "rectMaxLabel"; + // DPI_RectMinLabel, having type RectanglePresModel + ParameterId["RectMinLabel"] = "rectMinLabel"; + // DPI_RectRamp, having type RectanglePresModel + ParameterId["RectRamp"] = "rectRamp"; + // DPI_RectTitle, having type RectanglePresModel + ParameterId["RectTitle"] = "rectTitle"; + // DPI_RegionRect, having type RectanglePresModel + ParameterId["RegionRect"] = "regionRect"; + // DPI_SelectionRect, having type RectanglePresModel + ParameterId["SelectionRect"] = "selectionRect"; + // DPI_UnusedRect, having type RectanglePresModel + ParameterId["UnusedRect"] = "unusedRect"; + // DPI_ZoneEdgeRect, having type RectanglePresModel + ParameterId["ZoneEdgeRect"] = "zoneEdge"; + // DPI_ZoneEdgeRectPix, having type RectanglePresModel + ParameterId["ZoneEdgeRectPix"] = "zoneEdgePix"; + // DPI_ZoneEdgeRectPp, having type RectanglePresModel + ParameterId["ZoneEdgeRectPp"] = "zoneEdgePp"; + // DPI_UIAutomationLinkRect, having type RectanglePresModel + ParameterId["UIAutomationLinkRect"] = "linkRect"; + // DPI_Borders, having type RectanglePresModel[] + ParameterId["Borders"] = "borderRects"; + // DPI_UIAutomationLinkRects, having type RectanglePresModel[] + ParameterId["UIAutomationLinkRects"] = "linkRects"; + // DPI_DomainExtents, having type DoubleRectanglePresModel + ParameterId["DomainExtents"] = "domainExtents"; + // DPI_MapDomainExtents, having type DoubleRectanglePresModel + ParameterId["MapDomainExtents"] = "mapDomainExtents"; + // DPI_MapLatLongRect, having type MapRectPresModel + ParameterId["MapLatLongRect"] = "mapLatLongRect"; + // DPI_Center, having type PointPresModel + ParameterId["Center"] = "center"; + // DPI_CenterMarkLineBegin, having type PointPresModel + ParameterId["CenterMarkLineBegin"] = "centerMarkLineBegin"; + // DPI_CenterMarkLineEnd, having type PointPresModel + ParameterId["CenterMarkLineEnd"] = "centerMarkLineEnd"; + // DPI_DropLocation, having type PointPresModel + ParameterId["DropLocation"] = "dropLocation"; + // DPI_EndPt, having type PointPresModel + ParameterId["EndPt"] = "endPoint"; + // DPI_GrabLocation, having type PointPresModel + ParameterId["GrabLocation"] = "grabLocation"; + // DPI_GridOrigin, having type PointPresModel + ParameterId["GridOrigin"] = "gridOrigin"; + // DPI_LassoSelectionPoint, having type PointPresModel + ParameterId["LassoSelectionPoint"] = "lassoSelectionPoint"; + // DPI_MenuLocation, having type PointPresModel + ParameterId["MenuLocation"] = "menuLocation"; + // DPI_MoveOffset, having type PointPresModel + ParameterId["MoveOffset"] = "moveOffset"; + // DPI_OverlayAnchor, having type PointPresModel + ParameterId["OverlayAnchor"] = "overlayAnchor"; + // DPI_PanAmount, having type PointPresModel + ParameterId["PanAmount"] = "panAmount"; + // DPI_PanLocation, having type PointPresModel + ParameterId["PanLocation"] = "panLocation"; + // DPI_PaneResolverLocation, having type PointPresModel + ParameterId["PaneResolverLocation"] = "paneResolverLocation"; + // DPI_PixelExtentsOffset, having type PointPresModel + ParameterId["PixelExtentsOffset"] = "extentsOffset"; + // DPI_Point1, having type PointPresModel + ParameterId["Point1"] = "pt1"; + // DPI_Point2, having type PointPresModel + ParameterId["Point2"] = "pt2"; + // DPI_Point3, having type PointPresModel + ParameterId["Point3"] = "pt3"; + // DPI_RegionPoint, having type PointPresModel + ParameterId["RegionPoint"] = "regionPoint"; + // DPI_ScrollOffset, having type PointPresModel + ParameterId["ScrollOffset"] = "scrollOffset"; + // DPI_SelectAtPoint, having type PointPresModel + ParameterId["SelectAtPoint"] = "selectAtPoint"; + // DPI_SelectOffset, having type PointPresModel + ParameterId["SelectOffset"] = "selectOffset"; + // DPI_TargetPt, having type PointPresModel + ParameterId["TargetPt"] = "targetPoint"; + // DPI_TextOrigin, having type PointPresModel + ParameterId["TextOrigin"] = "textOrigin"; + // DPI_TooltipAnchorPoint, having type PointPresModel + ParameterId["TooltipAnchorPoint"] = "tooltipAnchorPoint"; + // DPI_TooltipOffset, having type PointPresModel + ParameterId["TooltipOffset"] = "tooltipOffset"; + // DPI_VizLocation, having type PointPresModel + ParameterId["VizLocation"] = "vizLocation"; + // DPI_ZoomAnchorPoint, having type PointPresModel + ParameterId["ZoomAnchorPoint"] = "zoomAnchorPoint"; + // DPI_MenuAnchorPoint, having type PointPresModel + ParameterId["MenuAnchorPoint"] = "menuAnchorPoint"; + // DPI_OverlayAnchors, having type PointPresModel[] + ParameterId["OverlayAnchors"] = "overlayAnchors"; + // DPI_LassoSelection, having type PointPresModel[] + ParameterId["LassoSelection"] = "lassoSelection"; + // DPI_ScrollOffsetPoints, having type PointPresModel[] + ParameterId["ScrollOffsetPoints"] = "scrollOffsetPoints"; + // DPI_RadialSelection, having type CirclePresModel + ParameterId["RadialSelection"] = "radialSelection"; + // DPI_DomainOrigin, having type FloatPointPresModel + ParameterId["DomainOrigin"] = "domainOrigin"; + // DPI_FloatCenter, having type FloatPointPresModel + ParameterId["FloatCenter"] = "floatCenter"; + // DPI_FloatPoint, having type FloatPointPresModel + ParameterId["FloatPoint"] = "floatPoint"; + // DPI_ClientAvailableSpace, having type SizePresModel + ParameterId["ClientAvailableSpace"] = "clientAvailableSpace"; + // DPI_DashboardPortSize, having type SizePresModel + ParameterId["DashboardPortSize"] = "dashboardPort"; + // DPI_LegendSize, having type SizePresModel + ParameterId["LegendSize"] = "legendSize"; + // DPI_StoryPortSize, having type SizePresModel + ParameterId["StoryPortSize"] = "storyPort"; + // DPI_SwatchAreaSize, having type SizePresModel + ParameterId["SwatchAreaSize"] = "areaSize"; + // DPI_SwatchImageSize, having type SizePresModel + ParameterId["SwatchImageSize"] = "imageSize"; + // DPI_ViewportSize, having type SizePresModel + ParameterId["ViewportSize"] = "viewportSize"; + // DPI_WorksheetPortSize, having type SizePresModel + ParameterId["WorksheetPortSize"] = "worksheetPort"; + // DPI_ResizeEntity, having type ResizeEntityPresModel + ParameterId["ResizeEntity"] = "resizeEntity"; + // DPI_RowResizers, having type ResizeEntityPresModel[] + ParameterId["RowResizers"] = "rowResizers"; + // DPI_ColResizers, having type ResizeEntityPresModel[] + ParameterId["ColResizers"] = "colResizers"; + // DPI_ResizeInfoPresModel, having type ResizeInfoPresModel + ParameterId["ResizeInfoPresModel"] = "resizeInfo"; + // DPI_ServerSheet, having type ServerSheetPresModel + ParameterId["ServerSheet"] = "serverSheet"; + // DPI_ServerSheets, having type ServerSheetPresModel[] + ParameterId["ServerSheets"] = "serverSheets"; + // DPI_SheetInfo, having type SheetInfoPresModel + ParameterId["SheetInfo"] = "sheetInfo"; + // DPI_SheetsInfo, having type SheetInfoPresModel[] + ParameterId["SheetsInfo"] = "sheetsInfo"; + // DPI_ServerWorkbook, having type ServerWorkbookPresModel + ParameterId["ServerWorkbook"] = "serverWorkbook"; + // DPI_PDFExportOptionsPresModel, having type PDFExportOptionsPresModel + ParameterId["PDFExportOptionsPresModel"] = "pdfExport"; + // DPI_ExportFileResultPresModel, having type ExportFileResultPresModel + ParameterId["ExportFileResultPresModel"] = "pdfResult"; + // DPI_PDFSheet, having type PDFSheetPresModel + ParameterId["PDFSheet"] = "pdfSheet"; + // DPI_SheetOptions, having type PDFSheetPresModel[] + ParameterId["SheetOptions"] = "sheetOptions"; + // DPI_ExportLayoutOptions, having type ExportLayoutOptionsPresModel + ParameterId["ExportLayoutOptions"] = "exportLayoutOptions"; + // DPI_DataAlertConditionOperationType, having type DataAlertConditionOperationType + ParameterId["DataAlertConditionOperationType"] = "dataAlertConditionOp"; + // DPI_DataAlertDialogPresModel, having type DataAlertDialogPresModel + ParameterId["DataAlertDialogPresModel"] = "dataAlertDialogPresModel"; + // DPI_DataAlertMeasure, having type DataAlertMeasurePresModel + ParameterId["DataAlertMeasure"] = "dataAlertMeasure"; + // DPI_DataAlertMeasures, having type DataAlertMeasurePresModel[] + ParameterId["DataAlertMeasures"] = "dataAlertMeasures"; + // DPI_DataAlertConstantCondition, having type DataAlertConstantConditionPresModel + ParameterId["DataAlertConstantCondition"] = "dataAlertConstantCondition"; + // DPI_DataAlertDialogMode, having type DataAlertDialogMode + ParameterId["DataAlertDialogMode"] = "dataAlertDialogMode"; + // DPI_LightweightMapOptions, having type LightweightMapOptionsPresModel + ParameterId["LightweightMapOptions"] = "lightweightMapOptions"; + // DPI_DataHighlighter, having type DataHighlighterPresModel + ParameterId["DataHighlighter"] = "dataHighlighter"; + // DPI_DataHighlighterItemSet, having type DataHighlighterItemSetPresModel + ParameterId["DataHighlighterItemSet"] = "dataHighlighterItemSet"; + // DPI_DataHighlighterItem, having type DataHighlighterItemPresModel + ParameterId["DataHighlighterItem"] = "dataHighlighterItem"; + // DPI_DataHighlighterItems, having type DataHighlighterItemPresModel[] + ParameterId["DataHighlighterItems"] = "dataHighlighterItems"; + // DPI_CategoricalLegendLayout, having type CategoricalLegendLayoutPresModel + ParameterId["CategoricalLegendLayout"] = "catLegendLayout"; + // DPI_CategoricalLegend, having type CategoricalLegendPresModel + ParameterId["CategoricalLegend"] = "categoricalLegend"; + // DPI_CategoricalLegends, having type CategoricalLegendPresModel[] + ParameterId["CategoricalLegends"] = "categoricalLegends"; + // DPI_CategoricalColorLegend, having type CategoricalColorLegendPresModel + ParameterId["CategoricalColorLegend"] = "colorLegend"; + // DPI_ColorLegendItem, having type CategoricalColorLegendItemPresModel + ParameterId["ColorLegendItem"] = "colorLegendItem"; + // DPI_ColorLegendItems, having type CategoricalColorLegendItemPresModel[] + ParameterId["ColorLegendItems"] = "colorLegendItems"; + // DPI_CategoricalShapeLegend, having type CategoricalShapeLegendPresModel + ParameterId["CategoricalShapeLegend"] = "categoricalShapeLegend"; + // DPI_ShapeLegendItem, having type CategoricalShapeLegendItemPresModel + ParameterId["ShapeLegendItem"] = "shapeLegendItem"; + // DPI_ShapeLegendItems, having type CategoricalShapeLegendItemPresModel[] + ParameterId["ShapeLegendItems"] = "shapeLegendItems"; + // DPI_CategoricalHighlightLegend, having type CategoricalHighlightLegendPresModel + ParameterId["CategoricalHighlightLegend"] = "categoricalHighlightLegend"; + // DPI_HighlightLegendItem, having type CategoricalLegendItemPresModel + ParameterId["HighlightLegendItem"] = "highlightLegendItem"; + // DPI_HighlightLegendItems, having type CategoricalLegendItemPresModel[] + ParameterId["HighlightLegendItems"] = "highlightLegendItems"; + // DPI_CategoricalSizeLegend, having type CategoricalSizeLegendPresModel + ParameterId["CategoricalSizeLegend"] = "categoricalSizeLegend"; + // DPI_SizeLegendItem, having type CategoricalSizeLegendItemPresModel + ParameterId["SizeLegendItem"] = "sizeLegendItem"; + // DPI_SizeLegendItems, having type CategoricalSizeLegendItemPresModel[] + ParameterId["SizeLegendItems"] = "sizeLegendItems"; + // DPI_CategoricalMapLegend, having type CategoricalMapLegendPresModel + ParameterId["CategoricalMapLegend"] = "categoricalMapLegend"; + // DPI_QuantitativeColorLegend, having type QuantitativeColorLegendPresModel + ParameterId["QuantitativeColorLegend"] = "quantitativeColorLegend"; + // DPI_QuantitativeColorLegends, having type QuantitativeColorLegendPresModel[] + ParameterId["QuantitativeColorLegends"] = "quantitativeColorLegends"; + // DPI_QuantitativeLegendLayout, having type QuantitativeLegendLayoutPresModel + ParameterId["QuantitativeLegendLayout"] = "quantitativeLegendLayout"; + // DPI_ServerRenderedLegend, having type ServerRenderedLegendPresModel + ParameterId["ServerRenderedLegend"] = "serverRenderedLegend"; + // DPI_CategoricalFilter, having type CategoricalFilterPresModel + ParameterId["CategoricalFilter"] = "categoricalFilter"; + // DPI_CategoricalFilterRelational, having type CategoricalFilterRelationalPresModel + ParameterId["CategoricalFilterRelational"] = "categoricalFilterRelational"; + // DPI_CategoricalFilterMemberDomainPage, having type CategoricalFilterMemberDomainPagePresModel + ParameterId["CategoricalFilterMemberDomainPage"] = "categoricalFilterMemberDomainPage"; + // DPI_CategoricalFilterCacheInfo, having type CategoricalFilterCacheInfoPresModel + ParameterId["CategoricalFilterCacheInfo"] = "categoricalFilterCacheInfo"; + // DPI_CategoricalFilterPatternDisplay, having type CategoricalFilterPatternDisplayPresModel + ParameterId["CategoricalFilterPatternDisplay"] = "categoricalFilterPatternDisplay"; + // DPI_CategoricalFilterPatternUpdate, having type CategoricalFilterPatternUpdatePresModel + ParameterId["CategoricalFilterPatternUpdate"] = "categoricalFilterPatternUpdate"; + // DPI_CategoricalFilterConditionDisplay, having type CategoricalFilterConditionDisplayPresModel + ParameterId["CategoricalFilterConditionDisplay"] = "categoricalFilterConditionDisplay"; + // DPI_CategoricalFilterConditionUpdate, having type CategoricalFilterConditionUpdatePresModel + ParameterId["CategoricalFilterConditionUpdate"] = "categoricalFilterConditionUpdate"; + // DPI_CategoricalFilterLimitDisplay, having type CategoricalFilterLimitDisplayPresModel + ParameterId["CategoricalFilterLimitDisplay"] = "categoricalFilterLimitDisplay"; + // DPI_CategoricalFilterLimitUpdate, having type CategoricalFilterLimitUpdatePresModel + ParameterId["CategoricalFilterLimitUpdate"] = "categoricalFilterLimitUpdate"; + // DPI_CategoricalFilterNew, having type CategoricalFilter_NewPresModel + ParameterId["CategoricalFilterNew"] = "categoricalFilterNew"; + // DPI_CategoricalFilterHierarchy, having type CategoricalFilterHierarchyPresModel + ParameterId["CategoricalFilterHierarchy"] = "categoricalFilterHirerarchy"; + // DPI_CategoricalFilterUpdate, having type CategoricalFilterUpdatePresModel + ParameterId["CategoricalFilterUpdate"] = "categoricalFilterUpdate"; + // DPI_CategoricalFilterRelationalState, having type CategoricalFilterRelationalStatePresModel + ParameterId["CategoricalFilterRelationalState"] = "categoricalRelationalState"; + // DPI_CategoricalFilterRelationalUpdatedState, having type CategoricalFilterRelationalStatePresModel + ParameterId["CategoricalFilterRelationalUpdatedState"] = "categoricalRelationalUpdatedState"; + // DPI_CategoricalFilterRelationalDomainInfo, having type CategoricalFilterRelationalDomainInfoPresModel + ParameterId["CategoricalFilterRelationalDomainInfo"] = "categoricalFilterRelationalDomainInfo"; + // DPI_CategoricalFilterRelationalDisplay, having type CategoricalFilterRelationalDisplayPresModel + ParameterId["CategoricalFilterRelationalDisplay"] = "categoricalFilterRelationalDisplay"; + // DPI_ExpressionToken, having type ExpressionTokenPresModel + ParameterId["ExpressionToken"] = "expressionToken"; + // DPI_ExpressionTokens, having type ExpressionTokenPresModel[] + ParameterId["ExpressionTokens"] = "expressionTokens"; + // DPI_FormulaValidation, having type FormulaValidationPresModel + ParameterId["FormulaValidation"] = "formulaValidation"; + // DPI_CaptionedFilterValue, having type FilterValuePresModel + ParameterId["CaptionedFilterValue"] = "captionedFilterValue"; + // DPI_CaptionedRangeMin, having type FilterValuePresModel + ParameterId["CaptionedRangeMin"] = "captionedRangeMin"; + // DPI_CaptionedRangeMax, having type FilterValuePresModel + ParameterId["CaptionedRangeMax"] = "captionedRangeMax"; + // DPI_CaptionedAnchorDate, having type FilterValuePresModel + ParameterId["CaptionedAnchorDate"] = "captionedAnchorDate"; + // DPI_CaptionedFilterValueList, having type FilterValuePresModel[] + ParameterId["CaptionedFilterValueList"] = "captionedFilterValueList"; + // DPI_CategoricalFilterInfo, having type CategoricalFilterInfoPresModel + ParameterId["CategoricalFilterInfo"] = "categoricalFilterInfo"; + // DPI_QuantitativeFilterInfo, having type QuantitativeFilterInfoPresModel + ParameterId["QuantitativeFilterInfo"] = "quantitativeFilterInfo"; + // DPI_RelativeDateFilterInfo, having type RelativeDateFilterInfoPresModel + ParameterId["RelativeDateFilterInfo"] = "relativeDateFilterInfo"; + // DPI_FilterInfo, having type FilterInfoPresModel + ParameterId["FilterInfo"] = "filterInfo"; + // DPI_FiltersInfo, having type FilterInforPresModel[] + ParameterId["FiltersInfo"] = "filtersInfo"; + // DPI_CategoricalDomain, having type CategoricalDomainPresModel + ParameterId["CategoricalDomain"] = "categoricalDomain"; + // DPI_QuantitativeDomain, having type QuantitativeDomainPresModel + ParameterId["QuantitativeDomain"] = "quantitativeDomain"; + // DPI_ValidationResults, having type ValidationResultsPresModel + ParameterId["ValidationResults"] = "validationResults"; + // DPI_DomainMember, having type DomainMemberPresModel + ParameterId["DomainMember"] = "domainMember"; + // DPI_DomainMembers, having type DomainMemberPresModel[] + ParameterId["DomainMembers"] = "domainMembers"; + // DPI_QuickFilterDisplay, having type QuickFilterDisplayPresModel + ParameterId["QuickFilterDisplay"] = "quickFilterDisplay"; + // DPI_QuickFilter, having type QuickFilterPresModel + ParameterId["QuickFilter"] = "quickFilter"; + // DPI_QuantitativeQuickFilter, having type QuantitativeQuickFilterPresModel + ParameterId["QuantitativeQuickFilter"] = "quantitativeQuickFilter"; + // DPI_RelativeDateQuickFilter, having type RelativeDateQuickFilterPresModel + ParameterId["RelativeDateQuickFilter"] = "relativeDateQuickFilter"; + // DPI_CategoricalQuickFilter, having type CategoricalQuickFilterPresModel + ParameterId["CategoricalQuickFilter"] = "categoricalQuickFilter"; + // DPI_HierarchicalQuickFilter, having type HierarchicalQuickFilterPresModel + ParameterId["HierarchicalQuickFilter"] = "hierarchicalQuickFilter"; + // DPI_DomainTable, having type DomainTablePresModel + ParameterId["DomainTable"] = "domainTable"; + // DPI_DomainTables, having type DomainTablePresModel[] + ParameterId["DomainTables"] = "domainTables"; + // DPI_DomainTuples, having type Tuples + ParameterId["DomainTuples"] = "domainTuples"; + // DPI_SearchTuples, having type Tuples + ParameterId["SearchTuples"] = "searchTuples"; + // DPI_SelectedTuples, having type TupleHash + ParameterId["SelectedTuples"] = "selectedTuples"; + // DPI_PendingTuples, having type TupleHash + ParameterId["PendingTuples"] = "pendingTuples"; + // DPI_Domain, having type MultiDomain + ParameterId["Domain"] = "domain"; + // DPI_DateOption, having type DateBinDialogOptionPresModel + ParameterId["DateOption"] = "dateOption"; + // DPI_DateOptions, having type DateBinDialogOptionPresModel[] + ParameterId["DateOptions"] = "dateOptions"; + // DPI_FilterRangeAdd, having type FilterRangePresModel + ParameterId["FilterRangeAdd"] = "filterRangeAdd"; + // DPI_FilterRangeRemove, having type FilterRangePresModel + ParameterId["FilterRangeRemove"] = "filterRangeRemove"; + // DPI_FilterOptions, having type FilterOptionsPresModel + ParameterId["FilterOptions"] = "filterOptions"; + // DPI_Layer, having type LayerPresModel + ParameterId["Layer"] = "layer"; + // DPI_Layers, having type LayerPresModel[] + ParameterId["Layers"] = "layers"; + // DPI_MarksCardPresModel, having type MarksCardPresModel + ParameterId["MarksCardPresModel"] = "marksCardPresModel"; + // DPI_UIItem, having type UIItemPresModel + ParameterId["UIItem"] = "uiItem"; + // DPI_EncodingUIItem, having type EncodingUIItemPresModel + ParameterId["EncodingUIItem"] = "encodingUiItem"; + // DPI_EncodingUIItems, having type EncodingUIItemPresModel[] + ParameterId["EncodingUIItems"] = "encodingUiItems"; + // DPI_PrimTypeUIItem, having type PrimitiveTypeUIItemPresModel + ParameterId["PrimTypeUIItem"] = "primitiveTypeUiItem"; + // DPI_PrimTypeUIItems, having type PrimitiveTypeUIItemPresModel[] + ParameterId["PrimTypeUIItems"] = "primitiveTypeUiItems"; + // DPI_PrimitiveTypeUIItemOptions, having type PrimitiveTypeUIItemOptionsPresModel + ParameterId["PrimitiveTypeUIItemOptions"] = "primitiveTypeUiItemOptions"; + // DPI_LineUIItemOptions, having type LineUIItemOptionsPresModel + ParameterId["LineUIItemOptions"] = "lineUiItemOptions"; + // DPI_LineInterpolationModeUIItem, having type LineInterpolationModeUIItemPresModel + ParameterId["LineInterpolationModeUIItem"] = "lineInterpolationModeUiItem"; + // DPI_LineInterpolationModeUIItemSet, having type LineInterpolationModeUIItemPresModel[] + ParameterId["LineInterpolationModeUIItemSet"] = "lineInterpolationModeUiItemSet"; + // DPI_LineMarkerPositionUIItem, having type LineMarkerPositionUIItemPresModel + ParameterId["LineMarkerPositionUIItem"] = "lineMarkerPositionUiItem"; + // DPI_LineMarkerPositionUIItemSet, having type LineMarkerPositionUIItemPresModel[] + ParameterId["LineMarkerPositionUIItemSet"] = "lineMarkerPositionUiItemSet"; + // DPI_MarksCardDropdownItem, having type MarksCardDropdownItemPresModel + ParameterId["MarksCardDropdownItem"] = "marksCardDropdownItem"; + // DPI_TooltipDropdownItem, having type TooltipDropdownItemPresModel + ParameterId["TooltipDropdownItem"] = "tooltipDropdownItem"; + // DPI_TextDropdownItem, having type TextDropdownItemPresModel + ParameterId["TextDropdownItem"] = "textDropdownItem"; + // DPI_ColorDropdownItem, having type ColorDropdownItemPresModel + ParameterId["ColorDropdownItem"] = "colorDropdownItem"; + // DPI_SizeSliderPresModel, having type SizeSliderPresModel + ParameterId["SizeSliderPresModel"] = "sizeSliderPresModel"; + // DPI_InflectionPoint, having type InflectionPointPresModel + ParameterId["InflectionPoint"] = "inflectionPoint"; + // DPI_InflectionPoints, having type InflectionPointPresModel[] + ParameterId["InflectionPoints"] = "inflectionPoints"; + // DPI_Notch, having type NotchPresModel + ParameterId["Notch"] = "notch"; + // DPI_Notches, having type NotchPresModel[] + ParameterId["Notches"] = "notches"; + // DPI_MarkSizeOptionsPresModel, having type MarkSizeOptionsPresModel + ParameterId["MarkSizeOptionsPresModel"] = "markSizeOptionsPresModel"; + // DPI_ModifyMarksInSet, having type AddOrRemoveMarks + ParameterId["ModifyMarksInSet"] = "addOrRemoveMarks"; + // DPI_MarkLabelsSpecification, having type MarkLabelsSpecificationPresModel + ParameterId["MarkLabelsSpecification"] = "markLabelsSpecification"; + // DPI_ColorPalette, having type ColorPalettePresModel + ParameterId["ColorPalette"] = "colorPalette"; + // DPI_SelectedColorPalette, having type ColorPalettePresModel + ParameterId["SelectedColorPalette"] = "selectedColorPalette"; + // DPI_ColorPalettes, having type ColorPalettePresModel[] + ParameterId["ColorPalettes"] = "colorPalettes"; + // DPI_ColorPaletteGroup, having type ColorPaletteGroupPresModel + ParameterId["ColorPaletteGroup"] = "colorPaletteGroup"; + // DPI_CatColorPaletteGroups, having type ColorPaletteGroupPresModel[] + ParameterId["CatColorPaletteGroups"] = "catColorPaletteGroups"; + // DPI_QColorPaletteGroups, having type ColorPaletteGroupPresModel[] + ParameterId["QColorPaletteGroups"] = "qColorPaletteGroups"; + // DPI_ColorPaletteCollection, having type ColorPaletteCollectionPresModel + ParameterId["ColorPaletteCollection"] = "colorPaletteCollection"; + // DPI_QuantitativeColor, having type QuantitativeColorPresModel + ParameterId["QuantitativeColor"] = "quantitativeColor"; + // DPI_CategoricalColor, having type CategoricalColorPresModel + ParameterId["CategoricalColor"] = "categoricalColor"; + // DPI_ItemColorPair, having type ItemColorPairPresModel + ParameterId["ItemColorPair"] = "itemColorPair"; + // DPI_ItemColorPairs, having type ItemColorPairPresModel[] + ParameterId["ItemColorPairs"] = "itemColorPairs"; + // DPI_VQLCommandResponse, having type VQLCommandResponsePresModel + ParameterId["VQLCommandResponse"] = "vqlCmdResponse"; + // DPI_LayoutStatus, having type LayoutStatusPresModel + ParameterId["LayoutStatus"] = "layoutStatus"; + // DPI_VizState, having type VizStatePresModel + ParameterId["VizState"] = "vizState"; + // DPI_VizStateList, having type VizStatePresModel[] + ParameterId["VizStateList"] = "vizStateList"; + // DPI_CommandResult, having type CommandResultPresModel + ParameterId["CommandResult"] = "cmdResult"; + // DPI_CommandResultList, having type CommandResultPresModel[] + ParameterId["CommandResultList"] = "cmdResultList"; + // DPI_URLAction, having type URLActionPresModel + ParameterId["URLAction"] = "urlAction"; + // DPI_URLActionList, having type URLActionPresModel[] + ParameterId["URLActionList"] = "urlActionList"; + // DPI_LegacyMenu, having type LegacyMenuPresModel + ParameterId["LegacyMenu"] = "legacyMenu"; + // DPI_LegacyMenus, having type LegacyMenuPresModel[] + ParameterId["LegacyMenus"] = "legacyMenus"; + // DPI_ConnectionAttemptInfo, having type ConnectionAttemptInfoPresModel + ParameterId["ConnectionAttemptInfo"] = "connectionAttemptInfo"; + // DPI_DataSourceConnectionAttemptInfo, having type DataSourceConnectionAttemptInfoPresModel + ParameterId["DataSourceConnectionAttemptInfo"] = "dataSourceConnectionAttemptInfo"; + // DPI_DataSourceConnectionAttemptInfos, having type DataSourceConnectionAttemptInfoPresModel[] + ParameterId["DataSourceConnectionAttemptInfos"] = "dataSourceConnectionAttemptInfos"; + // DPI_CommandValidationPresModel, having type CommandValidationPresModel + ParameterId["CommandValidationPresModel"] = "commandValidationPresModel"; + // DPI_WarningMessage, having type WarningMessagePresModel + ParameterId["WarningMessage"] = "warningMessagePresModel"; + // DPI_ApplicationPresModel, having type ApplicationPresModel + ParameterId["ApplicationPresModel"] = "applicationPresModel"; + // DPI_ToolbarPresModel, having type ToolbarPresModel + ParameterId["ToolbarPresModel"] = "toolbarPresModel"; + // DPI_WorkbookPresModel, having type WorkbookPresModel + ParameterId["WorkbookPresModel"] = "workbookPresModel"; + // DPI_ServerFonts, having type ServerFontsPresModel + ParameterId["ServerFonts"] = "serverFonts"; + // DPI_PublishDataSourceMetadataPresModel, having type PublishDataSourceMetadataPresModel + ParameterId["PublishDataSourceMetadataPresModel"] = "publishDataSourceMetadataPresModel"; + // DPI_DashboardPresModel, having type DashboardPresModel + ParameterId["DashboardPresModel"] = "dashboardPresModel"; + // DPI_DashboardSizePresModel, having type DashboardSizePresModel + ParameterId["DashboardSizePresModel"] = "dashboardSizePresModel"; + // DPI_DashboardSizeWithValidationPresModel, having type DashboardSizeWithValidationPresModel + ParameterId["DashboardSizeWithValidationPresModel"] = "dashboardSizeWithValidationPresModel"; + // DPI_DashboardInfoPresModel, having type DashboardInfoPresModel + ParameterId["DashboardInfoPresModel"] = "dashboardInfoPresModel"; + // DPI_VisualPresModel, having type VisualPresModel + ParameterId["VisualPresModel"] = "visual"; + // DPI_VisualPresModels, having type VisualPresModel[] + ParameterId["VisualPresModels"] = "visuals"; + // DPI_DropLinesPresModel, having type DropLinesPresModel + ParameterId["DropLinesPresModel"] = "dropLinesPresModel"; + // DPI_DropFieldPresModel, having type DropFieldPresModel + ParameterId["DropFieldPresModel"] = "dropFieldPresModel"; + // DPI_DropFieldResultPresModel, having type DropFieldResultPresModel + ParameterId["DropFieldResultPresModel"] = "dropFieldResultPresModel"; + // DPI_CurrentAxisRange, having type DataValueRangePresModel + ParameterId["CurrentAxisRange"] = "currentAxisRange"; + // DPI_CurrentAxisRangeNoTime, having type DataValueRangePresModel + ParameterId["CurrentAxisRangeNoTime"] = "currentAxisRangeNoTime"; + // DPI_DefaultAxisRange, having type DataValueRangePresModel + ParameterId["DefaultAxisRange"] = "defaultAxisRange"; + // DPI_NewAxisRange, having type DataValueRangePresModel + ParameterId["NewAxisRange"] = "newAxisRange"; + // DPI_AxisOptions, having type AxisOptionsPresModel + ParameterId["AxisOptions"] = "axis"; + // DPI_AxisMajorTicks, having type TickMarkInfoPresModel + ParameterId["AxisMajorTicks"] = "axisMajorTicks"; + // DPI_AxisMinorTicks, having type TickMarkInfoPresModel + ParameterId["AxisMinorTicks"] = "axisMinorTicks"; + // DPI_EditAxisDialog, having type EditAxisDialogPresModel + ParameterId["EditAxisDialog"] = "editAxisDialog"; + // DPI_MarkLabels, having type ScenePresModel + ParameterId["MarkLabels"] = "markLabels"; + // DPI_Scene, having type ScenePresModel + ParameterId["Scene"] = "scene"; + // DPI_MapServer, having type MapServerPresModel + ParameterId["MapServer"] = "mapServer"; + // DPI_VisualList, having type VisualListPresModel + ParameterId["VisualList"] = "visualList"; + // DPI_DrawFirst, having type VisualListPresModel[] + ParameterId["DrawFirst"] = "drawFirst"; + // DPI_DrawLast, having type VisualListPresModel[] + ParameterId["DrawLast"] = "drawLast"; + // DPI_DrawPane, having type VisualListPresModel[] + ParameterId["DrawPane"] = "drawPane"; + // DPI_UserPaneInfo, having type UserPaneInfoPresModel + ParameterId["UserPaneInfo"] = "userPaneInfo"; + // DPI_AnalyticsPane, having type AnalyticsPanePresModel + ParameterId["AnalyticsPane"] = "analyticsPane"; + // DPI_AnalyticsObjectItem, having type AnalyticsObjectItemPresModel + ParameterId["AnalyticsObjectItem"] = "analyticsObjectItem"; + // DPI_AnalyticsObjectItems, having type AnalyticsObjectItemPresModel[] + ParameterId["AnalyticsObjectItems"] = "analyticsObjectItems"; + // DPI_AnalyticsObjectGroup, having type AnalyticsObjectGroupPresModel + ParameterId["AnalyticsObjectGroup"] = "analyticsObjectGroup"; + // DPI_AnalyticsObjectGroups, having type AnalyticsObjectGroupPresModel[] + ParameterId["AnalyticsObjectGroups"] = "analyticsObjectGroups"; + // DPI_DropZoneItem, having type DropZoneItemPresModel + ParameterId["DropZoneItem"] = "dropZoneItem"; + // DPI_DropZoneItems, having type DropZoneItemPresModel[] + ParameterId["DropZoneItems"] = "dropZoneItems"; + // DPI_DropTargetInfo, having type DropTargetInfoPresModel + ParameterId["DropTargetInfo"] = "dropTargetInfo"; + // DPI_Pane, having type PanePresModel + ParameterId["Pane"] = "pane"; + // DPI_Panes, having type PanePresModel[] + ParameterId["Panes"] = "panes"; + // DPI_RadialSelectionDistanceInfo, having type RadialSelectionDistanceInfoPresModel + ParameterId["RadialSelectionDistanceInfo"] = "radialSelectionDistanceInfo"; + // DPI_MapScaleInfo, having type MapScaleInfoPresModel + ParameterId["MapScaleInfo"] = "mapScaleInfo"; + // DPI_RenderNode, having type RenderNodePresModel + ParameterId["RenderNode"] = "renderNode"; + // DPI_RenderNodes, having type RenderNodePresModel[] + ParameterId["RenderNodes"] = "renderNodes"; + // DPI_PredictionBand, having type PredictionBandPresModel + ParameterId["PredictionBand"] = "predictionBand"; + // DPI_PredictionWhisker, having type PredictionWhiskerPresModel + ParameterId["PredictionWhisker"] = "predictionWhisker"; + // DPI_DrawGroup, having type DrawPointsPresModel + ParameterId["DrawGroup"] = "drawGroup"; + // DPI_ClipReset, having type DrawItemPresModel + ParameterId["ClipReset"] = "clipReset"; + // DPI_DrawItem, having type DrawItemPresModel + ParameterId["DrawItem"] = "drawItem"; + // DPI_TransformPop, having type DrawItemPresModel + ParameterId["TransformPop"] = "transformPop"; + // DPI_TransformPush, having type DrawItemPresModel + ParameterId["TransformPush"] = "transformPush"; + // DPI_DrawItems, having type DrawItemPresModel[] + ParameterId["DrawItems"] = "drawItems"; + // DPI_ClipRect, having type DrawPointsPresModel + ParameterId["ClipRect"] = "clipRect"; + // DPI_DrawEllipse, having type DrawPointsPresModel + ParameterId["DrawEllipse"] = "drawEllipse"; + // DPI_DrawFillEllipse, having type DrawPointsPresModel + ParameterId["DrawFillEllipse"] = "drawFillEllipse"; + // DPI_DrawFillPolygon, having type DrawPointsPresModel + ParameterId["DrawFillPolygon"] = "drawFillPolygon"; + // DPI_DrawFillRect, having type DrawPointsPresModel + ParameterId["DrawFillRect"] = "drawFillRect"; + // DPI_DrawPolygon, having type DrawPointsPresModel + ParameterId["DrawPolygon"] = "drawPolygon"; + // DPI_DrawPolyline, having type DrawPointsPresModel + ParameterId["DrawPolyline"] = "drawPolyline"; + // DPI_DrawRect, having type DrawPointsPresModel + ParameterId["DrawRect"] = "drawRect"; + // DPI_DrawFillPath, having type DrawPathPresModel + ParameterId["DrawFillPath"] = "drawFillPath"; + // DPI_DrawPath, having type DrawPathPresModel + ParameterId["DrawPath"] = "drawPath"; + // DPI_DrawText, having type DrawTextPresModel + ParameterId["DrawText"] = "drawText"; + // DPI_DrawImage, having type DrawImagePresModel + ParameterId["DrawImage"] = "drawImage"; + // DPI_ImageTileInfo, having type ImageTileInfoPresModel + ParameterId["ImageTileInfo"] = "tileInfo"; + // DPI_ImageTileInfos, having type ImageTileInfoPresModel[] + ParameterId["ImageTileInfos"] = "tileInfos"; + // DPI_DrawImageTiles, having type DrawImageTilesPresModel + ParameterId["DrawImageTiles"] = "drawImageTiles"; + // DPI_DrawPen, having type DrawPenPresModel + ParameterId["DrawPen"] = "drawPen"; + // DPI_DrawSolidBrush, having type DrawSolidBrushPresModel + ParameterId["DrawSolidBrush"] = "drawSolidBrush"; + // DPI_DrawTextProperties, having type DrawTextPropertiesPresModel + ParameterId["DrawTextProperties"] = "drawTextProps"; + // DPI_DrawGradientBrush, having type DrawGradientBrushPresModel + ParameterId["DrawGradientBrush"] = "drawGradientBrush"; + // DPI_DrawTransform, having type DrawTransformPresModel + ParameterId["DrawTransform"] = "transform"; + // DPI_DrawAntialias, having type DrawAntialiasPresModel + ParameterId["DrawAntialias"] = "drawAntialias"; + // DPI_ImageDictionary, having type ImageDictionaryPresModel + ParameterId["ImageDictionary"] = "imageDictionary"; + // DPI_ColorDictionary, having type ColorDictionaryPresModel + ParameterId["ColorDictionary"] = "colorDictionary"; + // DPI_MarkShape, having type MarkShapePresModel + ParameterId["MarkShape"] = "markShape"; + // DPI_MarkShapeList, having type MarkShapePresModel[] + ParameterId["MarkShapeList"] = "markShapeList"; + // DPI_PaneDescriptor, having type PaneDescriptorPresModel + ParameterId["PaneDescriptor"] = "paneDescriptor"; + // DPI_PDMarks, having type PDMarksPresModel + ParameterId["PDMarks"] = "pdMarks"; + // DPI_PDMarksMap, having type Dictionary(of PDMarksPresModel) + ParameterId["PDMarksMap"] = "pdMarksMap"; + // DPI_LabelTextTable, having type LabelTextTable + ParameterId["LabelTextTable"] = "labelTextTable"; + // DPI_TextTableHelper, having type TextTableHelper + ParameterId["TextTableHelper"] = "textTableHelper"; + // DPI_GeometryTable, having type GeometryTable + ParameterId["GeometryTable"] = "geometryTable"; + // DPI_PaneMarks, having type PaneMarksPresModel + ParameterId["PaneMarks"] = "paneMarks"; + // DPI_PaneMarksList, having type PaneMarksPresModel[] + ParameterId["PaneMarksList"] = "paneMarksList"; + // DPI_BrushingSelection, having type SelectionPresModel + ParameterId["BrushingSelection"] = "brushing"; + // DPI_Selection, having type SelectionPresModel + ParameterId["Selection"] = "selection"; + // DPI_BrushingSelectionList, having type SelectionPresModel[] + ParameterId["BrushingSelectionList"] = "brushingSelectionList"; + // DPI_SelectionList, having type SelectionPresModel[] + ParameterId["SelectionList"] = "selectionList"; + // DPI_ShelfSelectionModel, having type ShelfSelectionPresModel + ParameterId["ShelfSelectionModel"] = "shelfSelectionModel"; + // DPI_ShelfSelectionModels, having type ShelfSelectionPresModel[] + ParameterId["ShelfSelectionModels"] = "shelfSelectionModels"; + // DPI_ShelfSelectionsModel, having type ShelfSelectionsPresModel + ParameterId["ShelfSelectionsModel"] = "shelfSelectionsModel"; + // DPI_DimValSelectionModel, having type DimensionValueSelectionPresModel + ParameterId["DimValSelectionModel"] = "dimensionValueSelectionModel"; + // DPI_DimValSelectionModels, having type DimensionValueSelectionPresModel[] + ParameterId["DimValSelectionModels"] = "dimensionValueSelectionModels"; + // DPI_HierValSelectionModel, having type HierarchicalValueSelectionPresModel + ParameterId["HierValSelectionModel"] = "hierarchicalValueSelectionModel"; + // DPI_HierValSelectionModels, having type HierarchicalValueSelectionPresModel[] + ParameterId["HierValSelectionModels"] = "hierarchicalValueSelectionModels"; + // DPI_QuantRangeSelectionModel, having type QuantativeRangeSelectionPresModel + ParameterId["QuantRangeSelectionModel"] = "quantativeRangeSelectionModel"; + // DPI_QuantRangeSelectionModels, having type QuantativeRangeSelectionPresModel[] + ParameterId["QuantRangeSelectionModels"] = "quantativeRangeSelectionModels"; + // DPI_QuantValueSelectionModel, having type QuantativeValueSelectionPresModel + ParameterId["QuantValueSelectionModel"] = "quantativeValueSelectionModel"; + // DPI_QuantValueSelectionModels, having type QuantativeValueSelectionPresModel[] + ParameterId["QuantValueSelectionModels"] = "quantativeValueSelectionModels"; + // DPI_LegendSelectionInfo, having type LegendSelectionInfoPresModel + ParameterId["LegendSelectionInfo"] = "legendSelectionInfo"; + // DPI_NodeReference, having type NodeReferencePresModel + ParameterId["NodeReference"] = "nodeReference"; + // DPI_PageReference, having type PageReferencePresModel + ParameterId["PageReference"] = "pageReference"; + // DPI_OrientedNodeReference, having type OrientedNodeReferencePresModel + ParameterId["OrientedNodeReference"] = "orientedNodeReference"; + // DPI_OrientedNodeReferences, having type OrientedNodeReferencePresModel[] + ParameterId["OrientedNodeReferences"] = "orientedNodeReferences"; + // DPI_SelectionData, having type SelectionDataPresModel + ParameterId["SelectionData"] = "selectionData"; + // DPI_HighlightedData, having type HighlightedDataPresModel + ParameterId["HighlightedData"] = "highlightedData"; + // DPI_Node, having type NodePresModel + ParameterId["Node"] = "node"; + // DPI_Nodes, having type NodePresModel[] + ParameterId["Nodes"] = "nodes"; + // DPI_SelectedNodes, having type NodePresModel[] + ParameterId["SelectedNodes"] = "selectedNodes"; + // DPI_UserAction, having type ActionPresModel + ParameterId["UserAction"] = "userAction"; + // DPI_UserActions, having type ActionPresModel[] + ParameterId["UserActions"] = "userActions"; + // DPI_LinkSpec, having type LinkSpecPresModel + ParameterId["LinkSpec"] = "linkSpec"; + // DPI_ActionSpecificationModel, having type ActionSpecificationPresModel + ParameterId["ActionSpecificationModel"] = "actionSpecification"; + // DPI_LinkSpecification, having type LinkSpecificationPresModel + ParameterId["LinkSpecification"] = "linkSpecification"; + // DPI_ScriptDescription, having type ScriptDescriptionPresModel + ParameterId["ScriptDescription"] = "scriptDescription"; + // DPI_ActionSource, having type ActionSourcePresModel + ParameterId["ActionSource"] = "actionSource"; + // DPI_FieldExprItem, having type FieldExprItemPresModel + ParameterId["FieldExprItem"] = "fieldExpressionItem"; + // DPI_FieldExprVector, having type FieldExprItemPresModel[] + ParameterId["FieldExprVector"] = "fieldExpressionVector"; + // DPI_ActionComboItem, having type ActionComboItemPresModel + ParameterId["ActionComboItem"] = "actionComboItem"; + // DPI_ActionComboVector, having type ActionComboItemPresModel[] + ParameterId["ActionComboVector"] = "actionComboVector"; + // DPI_ActionSourceCombo, having type ActionSourceComboPresModel + ParameterId["ActionSourceCombo"] = "actionSourceCombo"; + // DPI_ActionDestCombo, having type ActionComboPresModel + ParameterId["ActionDestCombo"] = "actionDestCombo"; + // DPI_ActionFieldList, having type ActionFieldListPresModel + ParameterId["ActionFieldList"] = "actionFieldList"; + // DPI_EditBrushAction, having type EditBrushActionPresModel + ParameterId["EditBrushAction"] = "editBrushAction"; + // DPI_UpdateActionSource, having type UpdateActionSourcePresModel + ParameterId["UpdateActionSource"] = "updateActionSource"; + // DPI_UpdateBrushAction, having type UpdateBrushActionPresModel + ParameterId["UpdateBrushAction"] = "updateBrushAction"; + // DPI_ActionWarnings, having type ActionWarningsPresModel + ParameterId["ActionWarnings"] = "actionWarnings"; + // DPI_EditHyperlinkAction, having type EditHyperlinkActionPresModel + ParameterId["EditHyperlinkAction"] = "editHyperlinkAction"; + // DPI_UpdateHyperlinkAction, having type UpdateHyperlinkActionPresModel + ParameterId["UpdateHyperlinkAction"] = "updateHyperlinkAction"; + // DPI_EditSheetLinkAction, having type EditSheetLinkActionPresModel + ParameterId["EditSheetLinkAction"] = "editSheetlinkAction"; + // DPI_UpdateSheetLinkAction, having type UpdateSheetLinkActionPresModel + ParameterId["UpdateSheetLinkAction"] = "updateSheetlinkAction"; + // DPI_ActionItem, having type ActionItemPresModel + ParameterId["ActionItem"] = "actionItem"; + // DPI_ActionItemList, having type ActionItemPresModel[] + ParameterId["ActionItemList"] = "actionItemList"; + // DPI_DataSegment, having type DataSegmentPresModel + ParameterId["DataSegment"] = "dataSegment"; + // DPI_DataSegments, having type Dictionary(of DataSegmentPresModel) + ParameterId["DataSegments"] = "dataSegments"; + // DPI_DataDictionary, having type DataDictionaryPresModel + ParameterId["DataDictionary"] = "dataDictionary"; + // DPI_VizData, having type VizDataPresModel + ParameterId["VizData"] = "vizData"; + // DPI_VizColumn, having type VizColumnPresModel + ParameterId["VizColumn"] = "vizColumn"; + // DPI_VizColumns, having type VizColumnPresModel[] + ParameterId["VizColumns"] = "vizColumns"; + // DPI_VizDataColumn, having type VizDataColumnPresModel + ParameterId["VizDataColumn"] = "vizDataColumn"; + // DPI_VizDataColumns, having type VizDataColumnPresModel[] + ParameterId["VizDataColumns"] = "vizDataColumns"; + // DPI_VizPaneColumn, having type VizPaneColumnPresModel + ParameterId["VizPaneColumn"] = "vizPaneColumn"; + // DPI_VizPaneColumns, having type VizPaneColumnPresModel[] + ParameterId["VizPaneColumns"] = "vizPaneColumns"; + // DPI_PaneColumns, having type PaneColumnsPresModel + ParameterId["PaneColumns"] = "paneColumns"; + // DPI_PaneColumnsList, having type PaneColumnsPresModel[] + ParameterId["PaneColumnsList"] = "paneColumnsList"; + // DPI_PaneColumnsData, having type PaneColumnsDataPresModel + ParameterId["PaneColumnsData"] = "paneColumnsData"; + // DPI_FilterContext, having type FilterContextPresModel + ParameterId["FilterContext"] = "filterContext"; + // DPI_UberTipPaneData, having type UberTipPaneDataPresModel + ParameterId["UberTipPaneData"] = "ubertipPaneData"; + // DPI_UberTipPaneDatas, having type UberTipPaneDataPresModel[] + ParameterId["UberTipPaneDatas"] = "ubertipPaneDatas"; + // DPI_UberTipData, having type UberTipDataPresModel + ParameterId["UberTipData"] = "ubertipData"; + // DPI_RefLineTip, having type RefLineTipPresModel + ParameterId["RefLineTip"] = "refLineTip"; + // DPI_RefLineTips, having type RefLineTipPresModel[] + ParameterId["RefLineTips"] = "refLineTips"; + // DPI_NumericBin, having type NumericBinPresModel + ParameterId["NumericBin"] = "numericBin"; + // DPI_NumericBinDialog, having type NumericBinDialogPresModel + ParameterId["NumericBinDialog"] = "numericBinDialog"; + // DPI_DomainRange, having type DomainRangePresModel + ParameterId["DomainRange"] = "domainRange"; + // DPI_BinSizeInfo, having type BinSizeInfoPresModel + ParameterId["BinSizeInfo"] = "binSizeInfo"; + // DPI_DetailedErrorDialog, having type DetailedErrorPresModel + ParameterId["DetailedErrorDialog"] = "detailedErrorDialog"; + // DPI_DragSourcePosition, having type ShelfDropPositionPresModel + ParameterId["DragSourcePosition"] = "shelfDragSourcePosition"; + // DPI_DropTargetPosition, having type ShelfDropPositionPresModel + ParameterId["DropTargetPosition"] = "shelfDropTargetPosition"; + // DPI_ShelfDropPosition, having type ShelfDropPositionPresModel + ParameterId["ShelfDropPosition"] = "shelfDropPosition"; + // DPI_ShelfDropPositions, having type ShelfDropPositionPresModel[] + ParameterId["ShelfDropPositions"] = "shelfDropPositions"; + // DPI_ShelfDropModel, having type ShelfDropPresModel + ParameterId["ShelfDropModel"] = "shelfDropModel"; + // DPI_ShelfDropModels, having type ShelfDropPresModel[] + ParameterId["ShelfDropModels"] = "shelfDropModels"; + // DPI_Drag, having type DragPresModel + ParameterId["Drag"] = "drag"; + // DPI_SceneElement, having type SceneElementPresModel + ParameterId["SceneElement"] = "sceneElement"; + // DPI_SceneElements, having type SceneElementPresModel[] + ParameterId["SceneElements"] = "sceneElements"; + // DPI_QuickFilterType, having type QuickFilterType + ParameterId["QuickFilterType"] = "quickFilterType"; + // DPI_CatMode, having type QuickFilterCategoricalMode + ParameterId["CatMode"] = "categoricalMode"; + // DPI_CatCtrl, having type QuickFilterCategoricalCtrl + ParameterId["CatCtrl"] = "categoricalControl"; + // DPI_QuantMode, having type QuickFilterQuantitativeMode + ParameterId["QuantMode"] = "quantitativeMode"; + // DPI_QuantCtrl, having type QuickFilterQuantitativeCtrl + ParameterId["QuantCtrl"] = "quantitativeControl"; + // DPI_ZoneCommon, having type ZoneCommonPresModel + ParameterId["ZoneCommon"] = "zoneCommon"; + // DPI_ZoneCommonListItems, having type ZoneCommonPresModel[] + ParameterId["ZoneCommonListItems"] = "zoneCommonListItems"; + // DPI_Zone, having type ZonePresModel + ParameterId["Zone"] = "zone"; + // DPI_Zones, having type Dictionary(of ZonePresModel) + ParameterId["Zones"] = "zones"; + // DPI_ImageZone, having type ImageZonePresModel + ParameterId["ImageZone"] = "imageZone"; + // DPI_WebZone, having type WebZonePresModel + ParameterId["WebZone"] = "webZone"; + // DPI_ButtonZonePresModel, having type ButtonZonePresModel + ParameterId["ButtonZonePresModel"] = "buttonZone"; + // DPI_ZoneEdgeMoveType, having type ZoneEdgeMove + ParameterId["ZoneEdgeMoveType"] = "zoneEdgeMoveType"; + // DPI_ZoneSide, having type SideType + ParameterId["ZoneSide"] = "zoneSide"; + // DPI_SnapPoint, having type SnapPointPresModel + ParameterId["SnapPoint"] = "snapPoint"; + // DPI_SnapPoints, having type SnapPointPresModel[] + ParameterId["SnapPoints"] = "snapPoints"; + // DPI_TargetPreviewPair, having type DragDropTargetPreviewPairPresModel + ParameterId["TargetPreviewPair"] = "targetPreviewPair"; + // DPI_TargetPreviewPairs, having type DragDropTargetPreviewPairPresModel[] + ParameterId["TargetPreviewPairs"] = "targetPreviewPairs"; + // DPI_ContainerGuide, having type DragDropContainerGuidePresModel + ParameterId["ContainerGuide"] = "containerGuide"; + // DPI_ContainerGuides, having type DragDropContainerGuidePresModel[] + ParameterId["ContainerGuides"] = "containerGuides"; + // DPI_ZoneBorder, having type DragDropZoneBorderPresModel + ParameterId["ZoneBorder"] = "zoneBorder"; + // DPI_ZoneBorders, having type DragDropZoneBorderPresModel[] + ParameterId["ZoneBorders"] = "zoneBorders"; + // DPI_DashboardDragDrop, having type DashboardDragDropPresModel + ParameterId["DashboardDragDrop"] = "zoneDragDrop"; + // DPI_DragZoneResize, having type DragZoneResizePresModel + ParameterId["DragZoneResize"] = "zoneResize"; + // DPI_DashboardText, having type TextRegionPresModel + ParameterId["DashboardText"] = "dashboardText"; + // DPI_DashboardTitle, having type TextRegionPresModel + ParameterId["DashboardTitle"] = "dashboardTitle"; + // DPI_QuickFilterTitle, having type TextRegionPresModel + ParameterId["QuickFilterTitle"] = "quickFilterTitle"; + // DPI_VisualCaption, having type TextRegionPresModel + ParameterId["VisualCaption"] = "visualCaption"; + // DPI_VisualTitle, having type TextRegionPresModel + ParameterId["VisualTitle"] = "visualTitle"; + // DPI_ZoneTitleRegion, having type TextRegionPresModel + ParameterId["ZoneTitleRegion"] = "zoneTitle"; + // DPI_ForecastOptions, having type ForecastPresModel + ParameterId["ForecastOptions"] = "forecastOptions"; + // DPI_ForecastDescription, having type ForecastDescribePresModel + ParameterId["ForecastDescription"] = "forecastDescription"; + // DPI_WorkgroupPublishObject, having type WorkgroupPublishObjectPresModel + ParameterId["WorkgroupPublishObject"] = "publishDataSource"; + // DPI_PublishPermissionsSummary, having type PublishPermissionsSummaryPresModel + ParameterId["PublishPermissionsSummary"] = "publishPermissionsSummary"; + // DPI_CheckNameResults, having type CheckNameResultsPresModel + ParameterId["CheckNameResults"] = "checkNameResults"; + // DPI_ValidatePublishViewsResult, having type ValidatePublishViewsResultPresModel + ParameterId["ValidatePublishViewsResult"] = "validatePublishViewsResult"; + // DPI_PublishAuthenticationSettings, having type PublishAuthenticationSettingsPresModel + ParameterId["PublishAuthenticationSettings"] = "publishAuthenticationSettings"; + // DPI_ManageDatasources, having type ManageDatasourcesPresModel + ParameterId["ManageDatasources"] = "manageDatasources"; + // DPI_CredentialsAuthSettings, having type CredentialsAuthSettingsPresModel + ParameterId["CredentialsAuthSettings"] = "credentialsAuthSettings"; + // DPI_ConnectionCredentialsAuthSettings, having type ConnectionCredentialsAuthSettingsPresModel + ParameterId["ConnectionCredentialsAuthSettings"] = "connectionCredentialsAuthSettings"; + // DPI_ConnectionCredentialsAuthSettingsList, having type ConnectionCredentialsAuthSettingsPresModel[] + ParameterId["ConnectionCredentialsAuthSettingsList"] = "connectionCredentialsAuthSettingsList"; + // DPI_PublishDatasourceFromWorkbookInfo, having type PublishDatasourceFromWorkbookInfoPresModel + ParameterId["PublishDatasourceFromWorkbookInfo"] = "publishDatasourceFromWorkbookInfo"; + // DPI_PublishDatasourcesFromWorkbookInfo, having type PublishDatasourceFromWorkbookInfoPresModel[] + ParameterId["PublishDatasourcesFromWorkbookInfo"] = "publishDatasourcesFromWorkbookInfo"; + // DPI_PublishSheet, having type PublishSheetPresModel + ParameterId["PublishSheet"] = "publishSheet"; + // DPI_PublishSheets, having type PublishSheetPresModel[] + ParameterId["PublishSheets"] = "publishSheets"; + // DPI_PublishObjectViews, having type PublishObjectViewsPresModel + ParameterId["PublishObjectViews"] = "publishObjectViews"; + // DPI_PublishObjectPublishSheetResults, having type PublishObjectPublishSheetResultsPresModel + ParameterId["PublishObjectPublishSheetResults"] = "publishObjectPublishSheetResults"; + // DPI_RefreshExtractSchedulingSettings, having type RefreshExtractSchedulingSettingsPresModel + ParameterId["RefreshExtractSchedulingSettings"] = "refreshExtractSchedulingSettings"; + // DPI_SetRefreshExtractScheduleResult, having type SetRefreshExtractScheduleResultPresModel + ParameterId["SetRefreshExtractScheduleResult"] = "setRefreshExtractScheduleResult"; + // DPI_CheckPublishObjectNameWarningsResults, having type CheckPublishObjectNameWarningsResultsPresModel + ParameterId["CheckPublishObjectNameWarningsResults"] = "checkPublishObjectNameWarningsResults"; + // DPI_PublishDatasourceOnWorkbookPublishResults, having type PublishDatasourceOnWorkbookPublishResultsPresModel + ParameterId["PublishDatasourceOnWorkbookPublishResults"] = "publishDatasourceOnWorkbookPublishResult"; + // DPI_PublishDataSourceResult, having type PublishDataSourceResultPresModel + ParameterId["PublishDataSourceResult"] = "publishDataSourceResult"; + // DPI_PublishWarningMessage, having type PublishWarningMessagePresModel + ParameterId["PublishWarningMessage"] = "publishWarningMessage"; + // DPI_MustDowngradeToPublishWarningMessagePresModel, having type PublishWarningMessagePresModel + ParameterId["MustDowngradeToPublishWarningMessagePresModel"] = "mustDowngradeToPublishWarningMessagePresModel"; + // DPI_PublishSelectedAttributes, having type PublishSelectedAttributesPresModel + ParameterId["PublishSelectedAttributes"] = "publishSelectedAttributes"; + // DPI_AutosaveFile, having type AutosaveFilePresModel + ParameterId["AutosaveFile"] = "autosaveFile"; + // DPI_AutosaveFiles, having type AutosaveFilePresModel[] + ParameterId["AutosaveFiles"] = "autosaveFiles"; + // DPI_FunctionGroup, having type FunctionGroup + ParameterId["FunctionGroup"] = "funcGrp"; + // DPI_FunctionGroups, having type FunctionGroup[] + ParameterId["FunctionGroups"] = "funcGrps"; + // DPI_FunctionArgType, having type FunctionArgType + ParameterId["FunctionArgType"] = "funcArgType"; + // DPI_FunctionArgTypes, having type FunctionArgType[] + ParameterId["FunctionArgTypes"] = "funcArgTypes"; + // DPI_CalculationStyle, having type CalcStyle + ParameterId["CalculationStyle"] = "calculationStyle"; + // DPI_Calculation, having type CalculationPresModel + ParameterId["Calculation"] = "calculation"; + // DPI_TypeInPill, having type CalculationPresModel + ParameterId["TypeInPill"] = "typeInPill"; + // DPI_CalcErrorInfo, having type CalcErrorInfoPresModel + ParameterId["CalcErrorInfo"] = "errorInfo"; + // DPI_CalcErrorInfos, having type CalcErrorInfoPresModel[] + ParameterId["CalcErrorInfos"] = "errorInfoList"; + // DPI_CalcualtionValidation, having type CalculationValidationPresModel + ParameterId["CalcualtionValidation"] = "calculationValidation"; + // DPI_ExpressionFunction, having type ExpressionFunctionPresModel + ParameterId["ExpressionFunction"] = "expressionFunc"; + // DPI_ExpressionFunctions, having type ExpressionFunctionPresModel[] + ParameterId["ExpressionFunctions"] = "expressionFuncList"; + // DPI_ExpressionFunctionsPM, having type ExpressionFunctionsPresModel + ParameterId["ExpressionFunctionsPM"] = "expressionFuncPm"; + // DPI_StyleToken, having type StyleTokenPresModel + ParameterId["StyleToken"] = "styleToken"; + // DPI_StyleTokens, having type StyleTokenPresModel[] + ParameterId["StyleTokens"] = "styleTokenList"; + // DPI_CalcEditorTextSelection, having type CalcEditorTextSelectionPresModel + ParameterId["CalcEditorTextSelection"] = "calcEditorTextSelection"; + // DPI_AutoCompleteItemType, having type AutoCompleteItemType + ParameterId["AutoCompleteItemType"] = "autocompleteType"; + // DPI_AutoCompleteItem, having type AutoCompleteItemPresModel + ParameterId["AutoCompleteItem"] = "autocompleteItem"; + // DPI_AutoCompleteItems, having type AutoCompleteItemPresModel[] + ParameterId["AutoCompleteItems"] = "autocompleteItemList"; + // DPI_CalculationAutoCompleteContextMenu, having type CalculationAutoCompleteContextMenuPresModel + ParameterId["CalculationAutoCompleteContextMenu"] = "calculationAutocompleteContextMenu"; + // DPI_CalcApplyResult, having type CalcApplyResult + ParameterId["CalcApplyResult"] = "calculationApplyResult"; + // DPI_RampBorderStyledBox, having type StyledBoxPresModel + ParameterId["RampBorderStyledBox"] = "rampBorderStyledBox"; + // DPI_StyledBox, having type StyledBoxPresModel + ParameterId["StyledBox"] = "styledBox"; + // DPI_GlobalStyledBox, having type StyledBoxPresModel + ParameterId["GlobalStyledBox"] = "globalStyledBox"; + // DPI_StyleContext, having type StyleContextPresModel + ParameterId["StyleContext"] = "styleContext"; + // DPI_CurrentTextStyle, having type TextStylePresModel + ParameterId["CurrentTextStyle"] = "currentTextStyle"; + // DPI_LabelTextStyle, having type TextStylePresModel + ParameterId["LabelTextStyle"] = "labelTextStyle"; + // DPI_OriginalTextStyle, having type TextStylePresModel + ParameterId["OriginalTextStyle"] = "originalTextStyle"; + // DPI_SelectedTextStyleModel, having type TextStylePresModel + ParameterId["SelectedTextStyleModel"] = "selectedTextStyleModel"; + // DPI_SwatchTextStyleModel, having type TextStylePresModel + ParameterId["SwatchTextStyleModel"] = "swatchTextStyle"; + // DPI_TextStyleModel, having type TextStylePresModel + ParameterId["TextStyleModel"] = "textStyle"; + // DPI_TitleStyleModel, having type TextStylePresModel + ParameterId["TitleStyleModel"] = "titleStyleModel"; + // DPI_PropertyBag, having type PropertyBagPresModel + ParameterId["PropertyBag"] = "propBagWrapper"; + // DPI_PresModelMap, having type Dictionary(of PropertyBagPresModel) + ParameterId["PresModelMap"] = "presModelMap"; + // DPI_PresentationLayerNotifications, having type PresModelMapPresModel + ParameterId["PresentationLayerNotifications"] = "presentationLayerNotifications"; + // DPI_SecondaryInfo, having type PresModelMapPresModel + ParameterId["SecondaryInfo"] = "secondaryInfo"; + // DPI_ClientDashboardUIMetric, having type ClientDashboardUIMetricPresModel + ParameterId["ClientDashboardUIMetric"] = "clientDashboardUiMetric"; + // DPI_ClientDashboardUIMetrics, having type ClientDashboardUIMetricPresModel[] + ParameterId["ClientDashboardUIMetrics"] = "clientDashboardUiMetrics"; + // DPI_ClientDashboardUIMetricContainer, having type ClientDashboardUIMetricContainerPresModel + ParameterId["ClientDashboardUIMetricContainer"] = "clientDashboardUiMetricContainer"; + // DPI_ExtSvcConfig, having type ExtSvcConfigPresModel + ParameterId["ExtSvcConfig"] = "extSvcConfig"; + // DPI_StoryboardSheetItem, having type StoryboardSheetItemPresModel + ParameterId["StoryboardSheetItem"] = "storyboardSheetItem"; + // DPI_StoryboardSheetItems, having type StoryboardSheetItemPresModel[] + ParameterId["StoryboardSheetItems"] = "storyboardSheetItems"; + // DPI_StoryboardSheetList, having type StoryboardSheetListPresModel + ParameterId["StoryboardSheetList"] = "storyboardSheetList"; + // DPI_FitToStoryBoardOptionItem, having type FitToStoryBoardOptionItemPresModel + ParameterId["FitToStoryBoardOptionItem"] = "fitToStoryboardOptionItem"; + // DPI_FitToStoryBoardOptionItems, having type FitToStoryBoardOptionItemPresModel[] + ParameterId["FitToStoryBoardOptionItems"] = "fitToStoryboardOptionItems"; + // DPI_FitToStoryBoardOptionList, having type FitToStoryBoardOptionListPresModel + ParameterId["FitToStoryBoardOptionList"] = "fitToStoryboardOptionList"; + // DPI_StoryPointNavItem, having type StoryPointNavItemPresModel + ParameterId["StoryPointNavItem"] = "storypointNavItem"; + // DPI_StoryPointNavItems, having type StoryPointNavItemPresModel[] + ParameterId["StoryPointNavItems"] = "storypointNavItems"; + // DPI_FlipboardNav, having type FlipboardNavPresModel + ParameterId["FlipboardNav"] = "flipboardNav"; + // DPI_ScrollBarStyle, having type ScrollBarStylePresModel + ParameterId["ScrollBarStyle"] = "scrollBarStyle"; + // DPI_DashboardZoneLayoutPane, having type DashboardZoneLayoutPanePresModel + ParameterId["DashboardZoneLayoutPane"] = "dashboardZoneLayoutPane"; + // DPI_SelectedStoryPointStyle, having type StoryPointCaptionStylePresModel + ParameterId["SelectedStoryPointStyle"] = "selectedStoryPointStyle"; + // DPI_UnselectedStoryPointStyle, having type StoryPointCaptionStylePresModel + ParameterId["UnselectedStoryPointStyle"] = "unselectedStoryPointStyle"; + // DPI_FlipboardNavStyle, having type FlipboardNavStylePresModel + ParameterId["FlipboardNavStyle"] = "flipboardNavStyle"; + // DPI_StoryPoint, having type StoryPointPresModel + ParameterId["StoryPoint"] = "storyPoint"; + // DPI_StoryPoints, having type Dictionary(of StoryPointPresModel) + ParameterId["StoryPoints"] = "storyPoints"; + // DPI_Flipboard, having type FlipboardPresModel + ParameterId["Flipboard"] = "flipboard"; + // DPI_StoryPair, having type StoryPairPresModel + ParameterId["StoryPair"] = "storyPair"; + // DPI_StoryPairs, having type StoryPairPresModel[] + ParameterId["StoryPairs"] = "storyPairs"; + // DPI_StoryboardPM, having type StoryboardPresModel + ParameterId["StoryboardPM"] = "storyboardPm"; + // DPI_HiDpiIconDictionary, having type ImageCollectionPresModel + ParameterId["HiDpiIconDictionary"] = "hiDpiIconDictionary"; + // DPI_IconDictionary, having type ImageCollectionPresModel + ParameterId["IconDictionary"] = "iconDictionary"; + // DPI_IconResourceDictionary, having type ImageResourceCollectionPresModel + ParameterId["IconResourceDictionary"] = "iconResDictionary"; + // DPI_DataPreviewWindowMessage, having type DataPreviewWindowMessagePresModel + ParameterId["DataPreviewWindowMessage"] = "dataPreviewWindowMessage"; + // DPI_DataSourceData, having type DataSourceDataPresModel + ParameterId["DataSourceData"] = "dataSrcData"; + // DPI_DataSourceSort, having type DataSourceSortPresModel + ParameterId["DataSourceSort"] = "dataSrcSort"; + // DPI_ColumnInfo, having type DSColumnInfoPresModel + ParameterId["ColumnInfo"] = "columnInfo"; + // DPI_ColumnInfos, having type DSColumnInfoPresModel[] + ParameterId["ColumnInfos"] = "columnInfos"; + // DPI_DataFormatter, having type DVFormatter + ParameterId["DataFormatter"] = "dataFormatter"; + // DPI_JoinDescription, having type JoinDescriptionPresModel + ParameterId["JoinDescription"] = "joinDescription"; + // DPI_JoinDescriptions, having type Dictionary(of JoinDescriptionPresModel) + ParameterId["JoinDescriptions"] = "joinDescriptions"; + // DPI_FileTableInfo, having type FileTableInfoPresModel + ParameterId["FileTableInfo"] = "fileTableInfo"; + // DPI_FieldMapping, having type FieldMappingPresModel + ParameterId["FieldMapping"] = "fieldMapping"; + // DPI_FieldMappingData, having type FieldMappingDataPresModel + ParameterId["FieldMappingData"] = "fieldMappingData"; + // DPI_FieldMappingDataVector, having type FieldMappingDataPresModel[] + ParameterId["FieldMappingDataVector"] = "fieldMappingDataVector"; + // DPI_FrameFinder, having type FrameFinderPresModel + ParameterId["FrameFinder"] = "frameFinder"; + // DPI_SheetLinkFieldMapping, having type SheetLinkFieldMappingPresModel + ParameterId["SheetLinkFieldMapping"] = "sheetLinkFieldMapping"; + // DPI_UnionInfo, having type UnionInfoPresModel + ParameterId["UnionInfo"] = "unionInfo"; + // DPI_UnionTableInfo, having type UnionTableInfoPresMode + ParameterId["UnionTableInfo"] = "unionTableInfo"; + // DPI_UnionTableInfos, having type UnionTableInfoPresModel[] + ParameterId["UnionTableInfos"] = "unionTableInfos"; + // DPI_ConnectionPBUnionInfo, having type PBUnionInfoPresModel + ParameterId["ConnectionPBUnionInfo"] = "connectionPbunionInfo"; + // DPI_ConnectionPBUnionInfos, having type PBUnionInfoPresModel[] + ParameterId["ConnectionPBUnionInfos"] = "connectionPbunionInfos"; + // DPI_JoinClause, having type JoinClausePresModel + ParameterId["JoinClause"] = "joinClause"; + // DPI_JoinClauses, having type JoinClausePresModel[] + ParameterId["JoinClauses"] = "joinClauses"; + // DPI_JoinValidationResult, having type JoinValidationResultPresModel + ParameterId["JoinValidationResult"] = "joinValidationResult"; + // DPI_JoinTableInfo, having type JoinTableInfoPresModel + ParameterId["JoinTableInfo"] = "joinTableInfo"; + // DPI_ParameterInfo, having type JoinTableInfoPresModel + ParameterId["ParameterInfo"] = "parameterInfo"; + // DPI_JoinTableInfos, having type JoinTableInfoPresModel[] + ParameterId["JoinTableInfos"] = "joinTableInfos"; + // DPI_JoinOnCalcInfo, having type JoinOnCalcInfoPresModel + ParameterId["JoinOnCalcInfo"] = "joinOnCalcInfo"; + // DPI_ConnectionSummary, having type ConnectionSummaryPresModel + ParameterId["ConnectionSummary"] = "connectionSummary"; + // DPI_ConnectionSummaries, having type ConnectionSummaryPresModel[] + ParameterId["ConnectionSummaries"] = "connectionSummaries"; + // DPI_TopLevelConnectionDescription, having type TopLevelConnectionDescriptionPresModel + ParameterId["TopLevelConnectionDescription"] = "topLevelConnectionDescription"; + // DPI_DataConnectionTableViewMessages, having type DataConnectionTableViewMessagesPresModel + ParameterId["DataConnectionTableViewMessages"] = "dataConnectionTableViewMessages"; + // DPI_TextTransformScript, having type TextTransformScriptPresModel + ParameterId["TextTransformScript"] = "textTransformScript"; + // DPI_CalendarDateOptions, having type CalendarDateOptionsPresModel + ParameterId["CalendarDateOptions"] = "calendarDateOptions"; + // DPI_GoToWorksheetTooltipPresModel, having type GoToWorksheetTooltipPresModel + ParameterId["GoToWorksheetTooltipPresModel"] = "goToWorksheetTooltipPresModel"; + // DPI_TableCleaningPresModel, having type TableCleaningPresModel + ParameterId["TableCleaningPresModel"] = "tableCleaningPresModel"; + // DPI_PivotPresModel, having type PivotPresModel + ParameterId["PivotPresModel"] = "pivotPresModel"; + // DPI_PivotTreeItemPresModel, having type PivotTreeItemPresModel + ParameterId["PivotTreeItemPresModel"] = "pivotTreeItemPresModel"; + // DPI_PivotTreeItems, having type PivotTreeItemPresModel[] + ParameterId["PivotTreeItems"] = "pivotTreeItemsPresModel"; + // DPI_PivotDisplay, having type PivotDisplayPresModel + ParameterId["PivotDisplay"] = "pivotDisplay"; + // DPI_PivotTag, having type NameColumnsPairPresModel + ParameterId["PivotTag"] = "pivotTag"; + // DPI_PivotGroups, having type NameColumnsPairPresModel[] + ParameterId["PivotGroups"] = "pivotGroups"; + // DPI_DataSourceDropdown, having type DataSourceDropdownPresModel + ParameterId["DataSourceDropdown"] = "dataSourceDropdown"; + // DPI_ConnectionDropdown, having type ConnectionDropdownPresModel + ParameterId["ConnectionDropdown"] = "connectionDropdown"; + // DPI_ActivityEvent, having type ActivityEventPresModel + ParameterId["ActivityEvent"] = "activityEvent"; + // DPI_UIAutomation, having type UIAutomationPresModel + ParameterId["UIAutomation"] = "uiAutomation"; + // DPI_UIAutomationIndex, having type UIAutomationIndexPresModel + ParameterId["UIAutomationIndex"] = "uiAutomationIndex"; + // DPI_UIAutomationIndexList, having type UIAutomationIndexPresModel[] + ParameterId["UIAutomationIndexList"] = "uiAutomationIndexList"; + // DPI_UIAutomationComponentInfo, having type UIAutomationComponentInfoPresModel + ParameterId["UIAutomationComponentInfo"] = "uiAutomationComponentInfo"; + // DPI_UIAutomationComponentInfoList, having type UIAutomationComponentInfoPresModel[] + ParameterId["UIAutomationComponentInfoList"] = "uiAutomationComponentInfoList"; + // DPI_Geometry, having type GeometryPresModel + ParameterId["Geometry"] = "geometry"; + // DPI_MultiPoint, having type MultiPointPresModel + ParameterId["MultiPoint"] = "multiPoint"; + // DPI_MultiLine, having type MultiLinePresModel + ParameterId["MultiLine"] = "multiLine"; + // DPI_MultiPolygon, having type MultiPolygonPresModel + ParameterId["MultiPolygon"] = "multiPolygon"; + // DPI_Polygon, having type PolygonPresModel + ParameterId["Polygon"] = "polygon"; + // DPI_PolygonList, having type PolygonPresModel[] + ParameterId["PolygonList"] = "polygonList"; + // DPI_Line, having type LinePresModel + ParameterId["Line"] = "line"; + // DPI_LineList, having type LinePresModel[] + ParameterId["LineList"] = "lineList"; + // DPI_TabbedAuthentication, having type TabbedAuthenticationPresModel + ParameterId["TabbedAuthentication"] = "tabbedAuthentication"; + // DPI_TabbedAuthenticationTabInfo, having type TabbedAuthenticationTabInfoPresModel + ParameterId["TabbedAuthenticationTabInfo"] = "tabbedAuthenticationTabInfo"; + // DPI_TabbedAuthenticationTabInfos, having type TabbedAuthenticationTabInfoPresModel[] + ParameterId["TabbedAuthenticationTabInfos"] = "tabbedAuthenticationTabInfos"; + // DPI_GeographicSearchCandidate, having type GeographicSearchCandidatePresModel + ParameterId["GeographicSearchCandidate"] = "geographicSearchCandidate"; + // DPI_GeographicSearchCandidateList, having type GeographicSearchCandidatePresModel[] + ParameterId["GeographicSearchCandidateList"] = "geographicSearchCandidateList"; + // DPI_GeographicSearchResults, having type GeographicSearchPresModel + ParameterId["GeographicSearchResults"] = "geographicSearchResults"; + // DPI_ParamInfo, having type ParameterInfoPresModel + ParameterId["ParamInfo"] = "paramInfo"; + // DPI_ParamInfos, having type ParameterInfoPresModel[] + ParameterId["ParamInfos"] = "paramInfos"; + // DPI_ParamNamespaceInfo, having type ParameterNamespaceInfoInfoPresModel + ParameterId["ParamNamespaceInfo"] = "paramNamespaceInfo"; + // DPI_ParamNamespaceInfos, having type ParameterNamespaceInfoPresModel[] + ParameterId["ParamNamespaceInfos"] = "paramNamespaceInfos"; + // DPI_ParamRegistryInfo, having type ParameterRegistryInfoPresModel + ParameterId["ParamRegistryInfo"] = "paramRegistryInfo"; + // DPI_DataSourceProperties, having type DataSourcePropertiesPresModel + ParameterId["DataSourceProperties"] = "connectionProperties"; + // DPI_ConnectionTypePresModel, having type ConnectionTypePresModel + ParameterId["ConnectionTypePresModel"] = "connectionTypePresModel"; + // DPI_ConnectionTypes, having type ConnectionTypePresModel[] + ParameterId["ConnectionTypes"] = "connectionTypes"; + // DPI_ConnectionTypeGroupPresModel, having type ConnectionTypeGroupPresModel + ParameterId["ConnectionTypeGroupPresModel"] = "connectionTypeGroupPresModel"; + // DPI_SavedDataSourcePresModel, having type SavedDataSourcePresModel + ParameterId["SavedDataSourcePresModel"] = "savedDatasourcePresModel"; + // DPI_SavedDataSources, having type SavedDataSourcePresModel[] + ParameterId["SavedDataSources"] = "savedDatasources"; + // DPI_SavedDataSourcesPresModel, having type SavedDataSourcesPresModel + ParameterId["SavedDataSourcesPresModel"] = "savedDatasourcesPresModel"; + // DPI_OpenPaneItemPresModel, having type OpenPaneItemPresModel + ParameterId["OpenPaneItemPresModel"] = "openPaneItemPresModel"; + // DPI_OpenPaneItems, having type OpenPaneItemPresModel[] + ParameterId["OpenPaneItems"] = "openPaneItems"; + // DPI_OpenPaneItemsPresModel, having type OpenPaneItemsPresModel + ParameterId["OpenPaneItemsPresModel"] = "openPaneItemsPresModel"; + // DPI_VariableValue, having type VariableValuePresModel + ParameterId["VariableValue"] = "variableValue"; + // DPI_VariableValues, having type VariableValuePresModel[] + ParameterId["VariableValues"] = "variableValues"; + // DPI_ServerVariableValue, having type ServerVariableValuePresModel + ParameterId["ServerVariableValue"] = "serverVariableValue"; + // DPI_EditableVariableValue, having type EditableVariableValuePresModel + ParameterId["EditableVariableValue"] = "editableVariableValue"; + // DPI_ServerVariableMetadata, having type ServerVariableMetadataPresModel + ParameterId["ServerVariableMetadata"] = "serverVariableMetadata"; + // DPI_PromptVariable, having type PromptVariablePresModel + ParameterId["PromptVariable"] = "promptVariable"; + // DPI_PromptVariables, having type PromptVariablePresModel[] + ParameterId["PromptVariables"] = "promptVariables"; + // DPI_VariablePromptDialog, having type VariablePromptDialogPresModel + ParameterId["VariablePromptDialog"] = "variablePromptDialog"; + // DPI_VariableValueOperation, having type VariableValueOperationPresModel + ParameterId["VariableValueOperation"] = "variableValueOperation"; + // DPI_VariableValueOperations, having type VariableValueOperationPresModel[] + ParameterId["VariableValueOperations"] = "variableValueOperations"; + // DPI_TableOptionsPresModel, having type TableOptionsPresModel + ParameterId["TableOptionsPresModel"] = "tableOptionsPresModel"; + // DPI_ClientInfoPresModel, having type ClientInfoPresModel + ParameterId["ClientInfoPresModel"] = "clientInfoPresModel"; + // DPI_TableauFileInfoPresModel, having type TableauFileInfoPresModel + ParameterId["TableauFileInfoPresModel"] = "tableauFileInfoPresModel"; + // DPI_DebuggingInfoPresModel, having type DebuggingInfoPresModel + ParameterId["DebuggingInfoPresModel"] = "debuggingInfoPresModel"; + // DPI_RunningThreadInfoPresModel, having type RunningThreadInfoPresModel + ParameterId["RunningThreadInfoPresModel"] = "runningThreadInfoPresModel"; + // DPI_AboutDialogInfoPresModel, having type AboutDialogInfoPresModel + ParameterId["AboutDialogInfoPresModel"] = "aboutDialogInfoPresModel"; + // DPI_HybridUIShowcasePresModel, having type HybridUIShowcasePresModel + ParameterId["HybridUIShowcasePresModel"] = "hybridUiShowcasePresModel"; + // DPI_MenuConfiguration, having type MenuConfigurationPresModel + ParameterId["MenuConfiguration"] = "menuConfiguration"; + // DPI_MenuItem, having type MenuItemPresModel + ParameterId["MenuItem"] = "menuItem"; + // DPI_MenuItemModels, having type MenuItemPresModel[] + ParameterId["MenuItemModels"] = "menuItemModels"; + // DPI_DefaultTextFormat, having type DefaultTextFormatPresModel + ParameterId["DefaultTextFormat"] = "defaultTextFormat"; + // DPI_MapBoxServerInfoPresModel, having type MapBoxServerInfoPresModel + ParameterId["MapBoxServerInfoPresModel"] = "mapboxServerInfoPresModel"; + // DPI_WMSServerInfoPresModel, having type WMSServerInfoPresModel + ParameterId["WMSServerInfoPresModel"] = "wmsServerInfoPresModel"; + // DPI_MapSourceConflictPresModel, having type MapSourceConflictPresModel + ParameterId["MapSourceConflictPresModel"] = "mapSourceConflictPresModel"; + // DPI_EnumeratedSetDialogPresModel, having type EnumeratedSetDialogPresModel + ParameterId["EnumeratedSetDialogPresModel"] = "enumeratedSetDialogPresModel"; + // DPI_EditAliasesDialog, having type EditAliasesDialogPresModel + ParameterId["EditAliasesDialog"] = "editAliasesDialogPresModel"; + // DPI_AliasesPresModel, having type AliasesPresModel + ParameterId["AliasesPresModel"] = "aliasesPresModel"; + // DPI_ClearAliasesPresModel, having type AliasesPresModel + ParameterId["ClearAliasesPresModel"] = "clearAliasesPresModel"; + // DPI_NewAliasesPresModel, having type NewAliasesPresModel + ParameterId["NewAliasesPresModel"] = "newAliasesPresModel"; + // DPI_AliasPresModel, having type AliasPresModel + ParameterId["AliasPresModel"] = "aliasPresModel"; + // DPI_AliasItem, having type AliasItemPresModel + ParameterId["AliasItem"] = "aliasItem"; + // DPI_DuplicateAliasItem, having type AliasItemPresModel + ParameterId["DuplicateAliasItem"] = "duplicateAliasItem"; + // DPI_AliasList, having type AliasItemPresModel[] + ParameterId["AliasList"] = "aliasList"; + // DPI_AliasResultItem, having type AliasResultItemPresModel + ParameterId["AliasResultItem"] = "aliasResultItem"; + // DPI_AliasResultList, having type AliasResultItemPresModel[] + ParameterId["AliasResultList"] = "aliasResultList"; + // DPI_AliasResults, having type AliasResultsPresModel + ParameterId["AliasResults"] = "aliasResults"; + // DPI_EditSetDialogPresModel, having type EditSetDialogPresModel + ParameterId["EditSetDialogPresModel"] = "editSetDialogPresModel"; + // DPI_ConfirmationPresModel, having type ConfirmationPresModel + ParameterId["ConfirmationPresModel"] = "confirmationPresModel"; + // DPI_NotificationPresModel, having type NotificationPresModel + ParameterId["NotificationPresModel"] = "notificationPresModel"; + // DPI_RetargetDataSourceDialogPresModel, having type RetargetDataSourceDialogPresModel + ParameterId["RetargetDataSourceDialogPresModel"] = "retargetDatasourceDialogPresModel"; + // DPI_SharedFilterPresModel, having type SharedFilterPresModel + ParameterId["SharedFilterPresModel"] = "sharedFilterPresModel"; + // DPI_SharedFilterWorksheetInfo, having type SharedFilterWorksheetInfoPresModel + ParameterId["SharedFilterWorksheetInfo"] = "sharedFilterWorksheetInfo"; + // DPI_SharedFilterWorksheetInfoList, having type SharedFilterWorksheetInfoPresModel[] + ParameterId["SharedFilterWorksheetInfoList"] = "sharedFilterWorksheetInfoList"; + // DPI_FieldPickerTreePresModel, having type FieldPickerTreePresModel + ParameterId["FieldPickerTreePresModel"] = "fieldPickerTreePresModel"; + // DPI_FieldPickerTreePresModelSource, having type FieldPickerTreePresModel + ParameterId["FieldPickerTreePresModelSource"] = "fieldPickerTreePresModelSource"; + // DPI_FieldPickerTreePresModelTarget, having type FieldPickerTreePresModel + ParameterId["FieldPickerTreePresModelTarget"] = "fieldPickerTreePresModelTarget"; + // DPI_ErrorInfo, having type ErrorInfoPresModel + ParameterId["ErrorInfo"] = "errorInfoPresModel"; + // DPI_CustomSplitPresModel, having type CustomSplitPresModel + ParameterId["CustomSplitPresModel"] = "customSplitPresModel"; + // DPI_PageSetup, having type PageSetupPresModel + ParameterId["PageSetup"] = "pageSetup"; + // DPI_ServerConnectStatus, having type ServerConnectionStatus + ParameterId["ServerConnectStatus"] = "serverConnectionStatus"; + // DPI_GetFilterItemsResponse, having type GetFilterItemsResponsePresModel + ParameterId["GetFilterItemsResponse"] = "getFilterItemsResponse"; + // DPI_FilterSearchResponse, having type FilterSearchResponsePresModel + ParameterId["FilterSearchResponse"] = "filterSearchResponse"; + // DPI_FilterSearchWithIndexResponse, having type FilterSearchWithIndexResponsePresModel + ParameterId["FilterSearchWithIndexResponse"] = "filterSearchWithIndexResponse"; + // DPI_FilterShowChildrenResponse, having type FilterShowChildrenResponsePresModel + ParameterId["FilterShowChildrenResponse"] = "filterShowChildrenResponse"; + // DPI_EditDataServerConnection, having type EditDataServerConnectionPresModel + ParameterId["EditDataServerConnection"] = "editDataServerConnection"; + // DPI_ImagesEdit, having type ImagesEditPresModel + ParameterId["ImagesEdit"] = "imagesEdit"; + // DPI_BackgroundImage, having type BackgroundImagePresModel + ParameterId["BackgroundImage"] = "backgroundImage"; + // DPI_BackgroundImages, having type BackgroundImagePresModel[] + ParameterId["BackgroundImages"] = "backgroundImages"; + // DPI_Predicate, having type PredicatePresModel + ParameterId["Predicate"] = "predicate"; + // DPI_Predicates, having type PredicatePresModel[] + ParameterId["Predicates"] = "predicates"; + // DPI_ImagesEditResult, having type ImagesEditResultPresModel + ParameterId["ImagesEditResult"] = "imagesEditResult"; + // DPI_SortDialogPresModel, having type SortDialogPresModel + ParameterId["SortDialogPresModel"] = "sortDialogPresModel"; + // DPI_CompoundTableCalc, having type CompoundTableCalculationPresModel + ParameterId["CompoundTableCalc"] = "compoundTableCalculationPresModel"; + // DPI_TableCalc, having type TableCalculationPresModel + ParameterId["TableCalc"] = "tableCalculationPresModel"; + // DPI_TableCalcs, having type TableCalculationPresModel[] + ParameterId["TableCalcs"] = "tableCalculationPresModels"; + // DPI_TableCalcIdentifier, having type TableCalcIdentifierPresModel + ParameterId["TableCalcIdentifier"] = "tableCalcIdentifier"; + // DPI_NestedTableCalcInfo, having type NestedTableCalcInfoPresModel + ParameterId["NestedTableCalcInfo"] = "nestedTableCalcInfo"; + // DPI_NestedTableCalcInfos, having type NestedTableCalcInfoPresModel[] + ParameterId["NestedTableCalcInfos"] = "nestedTableCalcInfos"; + // DPI_Ordering, having type TableCalcOrderingPresModel + ParameterId["Ordering"] = "tableCalcOrderingPresModel"; + // DPI_Cumulative, having type CumulativeTableCalcPresModel + ParameterId["Cumulative"] = "cumulativeTableCalcPresModel"; + // DPI_ReferenceOptions, having type TableCalcReferenceOptionsPresModel + ParameterId["ReferenceOptions"] = "tableCalcReferenceOptionsPresModel"; + // DPI_Difference, having type DifferenceTableCalcPresModel + ParameterId["Difference"] = "differenceTableCalcPresModel"; + // DPI_Window, having type WindowTableCalcPresModel + ParameterId["Window"] = "windowTableCalcPresModel"; + // DPI_PercentTotal, having type PercentTotalTableCalcPresModel + ParameterId["PercentTotal"] = "percentTotalTableCalcPresModel"; + // DPI_Rank, having type RankTableCalcPresModel + ParameterId["Rank"] = "rankTableCalcPresModel"; + // DPI_Custom, having type CustomTableCalcPresModel + ParameterId["Custom"] = "customTableCalcPresModel"; + // DPI_WebDataUrl, having type WebDataUrlPresModel + ParameterId["WebDataUrl"] = "webDataUrl"; + // DPI_VisitedWebDataConnectors, having type WebDataUrlPresModel[] + ParameterId["VisitedWebDataConnectors"] = "visitedWebDataConnectors"; + // DPI_WebDataSessionUrls, having type WebDataUrlPresModel[] + ParameterId["WebDataSessionUrls"] = "webDataSessionUrls"; + // DPI_WebDataUrls, having type WebDataUrlPresModel[] + ParameterId["WebDataUrls"] = "webDataUrls"; + // DPI_FieldPicker, having type FieldPickerPresModel + ParameterId["FieldPicker"] = "fieldPicker"; + // DPI_DescribeField, having type DescribeFieldPresModel + ParameterId["DescribeField"] = "describeField"; + // DPI_ShowDataPresModel, having type ShowDataPresModel + ParameterId["ShowDataPresModel"] = "showDataPresModel"; + // DPI_DataTablePresModel, having type ShowDataTablePresModel + ParameterId["DataTablePresModel"] = "dataTablePresModel"; + // DPI_DataTablePresModels, having type ShowDataTablePresModel[] + ParameterId["DataTablePresModels"] = "dataTablePresModels"; + // DPI_SummaryTablePresModels, having type ShowDataTablePresModel[] + ParameterId["SummaryTablePresModels"] = "summaryTablePresModels"; + // DPI_RefreshAllExtractsPresModel, having type RefreshAllExtractsPresModel + ParameterId["RefreshAllExtractsPresModel"] = "refeshAllExtractsPresModel"; + // DPI_RefreshExtractDataSourcePresModel, having type RefreshExtractDataSourcePresModel + ParameterId["RefreshExtractDataSourcePresModel"] = "refreshExtractDatasourcePresModel"; + // DPI_RefreshExtractDataSourceList, having type RefreshExtractDataSourcePresModel[] + ParameterId["RefreshExtractDataSourceList"] = "refreshExtractDatasourceList"; + // DPI_ExtractHistoryPresModel, having type ExtractHistoryPresModel + ParameterId["ExtractHistoryPresModel"] = "extractHistoryPresModel"; + // DPI_ExtractHistoryItemPresModel, having type ExtractHistoryItemPresModel + ParameterId["ExtractHistoryItemPresModel"] = "extractHistoryItem"; + // DPI_ExtractHistoryList, having type ExtractHistoryItemPresModel[] + ParameterId["ExtractHistoryList"] = "extractHistoryList"; + // DPI_DataProviderPresModel, having type DataProviderPresModel + ParameterId["DataProviderPresModel"] = "dataProviderPresModel"; + // DPI_FormatItem, having type FormatItemPresModel + ParameterId["FormatItem"] = "formatItem"; + // DPI_FormatItemList, having type FormatItemPresModel[] + ParameterId["FormatItemList"] = "formatItemList"; + // DPI_FormatContainer, having type FormatContainerPresModel + ParameterId["FormatContainer"] = "formatContainer"; + // DPI_FormatPane, having type FormatPanePresModel + ParameterId["FormatPane"] = "formatPane"; + // DPI_FormatSection, having type FormatSectionPresModel + ParameterId["FormatSection"] = "formatSection"; + // DPI_CollapsibleSection, having type CollapsibleSectionPresModel + ParameterId["CollapsibleSection"] = "collapsibleSection"; + // DPI_CompositeContainer, having type CompositeContainerPresModel + ParameterId["CompositeContainer"] = "compositeContainer"; + // DPI_UnitContainer, having type UnitContainerPresModel + ParameterId["UnitContainer"] = "unitContainer"; + // DPI_TabGroup, having type TabGroupPresModel + ParameterId["TabGroup"] = "tabGroup"; + // DPI_Tab, having type TabPresModel + ParameterId["Tab"] = "tab"; + // DPI_FormatControl, having type FormatControlPresModel + ParameterId["FormatControl"] = "formatControl"; + // DPI_TextControl, having type TextControlPresModel + ParameterId["TextControl"] = "textControl"; + // DPI_NumericControl, having type NumericControlPresModel + ParameterId["NumericControl"] = "numericControl"; + // DPI_ColorControl, having type ColorControlPresModel + ParameterId["ColorControl"] = "colorControl"; + // DPI_ToggleControl, having type ToggleControlPresModel + ParameterId["ToggleControl"] = "toggleControl"; + // DPI_SelectorControl, having type SelectorControlPresModel + ParameterId["SelectorControl"] = "enumStringStyle"; + // DPI_StatsAnalyticSpec, having type StatsAnalyticSpecPresModel + ParameterId["StatsAnalyticSpec"] = "statsAnalyticSpec"; + // DPI_ClusterSpec, having type ClusterSpecPresModel + ParameterId["ClusterSpec"] = "clusteringSpec"; + // DPI_ClusterResults, having type ClusterResultsPresModel + ParameterId["ClusterResults"] = "clusterResults"; + // DPI_ClusterUnit, having type ClusterUnitPresModel + ParameterId["ClusterUnit"] = "cluster"; + // DPI_ClusterUnits, having type ClusterUnitPresModel[] + ParameterId["ClusterUnits"] = "clusterUnitPresModels"; + // DPI_ClusterFieldANOVA, having type ClusterFieldANOVAPresModel + ParameterId["ClusterFieldANOVA"] = "clusterFieldAnova"; + // DPI_ClusterFieldANOVATable, having type ClusterFieldANOVAPresModel[] + ParameterId["ClusterFieldANOVATable"] = "clusterFieldAnovaTablePresModel"; + // DPI_ClusterEdit, having type ClusterEditPresModel + ParameterId["ClusterEdit"] = "clusterEditPresModel"; + // DPI_ClusterDescription, having type ClusterDescribePresModel + ParameterId["ClusterDescription"] = "clusterDescription"; + // DPI_OutlierResults, having type OutlierResultsPresModel + ParameterId["OutlierResults"] = "outlierResults"; + // DPI_ConnectToDataServerSourceResult, having type ConnectToDataServerSourceResultPresModel + ParameterId["ConnectToDataServerSourceResult"] = "connectToDataServerSourceResult"; + // DPI_DataServerConnectionReturnStatus, having type ConnectToDataServerSourceResultPresModel + ParameterId["DataServerConnectionReturnStatus"] = "dataServerConnectionReturnStatus"; + // DPI_WebQuantitativeColorDialog, having type WebQuantitativeColorDialogPresModel + ParameterId["WebQuantitativeColorDialog"] = "quantitativeColorDialog"; + // DPI_WebCategoricalColorDialog, having type WebCategoricalColorDialogPresModel + ParameterId["WebCategoricalColorDialog"] = "categoricalColorDialog"; + // DPI_WebSaveDatasourceDialog, having type WebSaveDatasourceDialogPresModel + ParameterId["WebSaveDatasourceDialog"] = "saveDatasourceDialog"; + // DPI_BorderStyleSpec, having type StyleSpecPresModel + ParameterId["BorderStyleSpec"] = "borderStyleSpec"; + // DPI_HaloStyleSpec, having type StyleSpecPresModel + ParameterId["HaloStyleSpec"] = "haloStyleSpec"; + // DPI_MarksColorUberEffects, having type MarksColorUberEffectsPresModel + ParameterId["MarksColorUberEffects"] = "marksColorUberEffects"; + // DPI_CategoricalColorEncoding, having type CategoricalColorEncodingPresModel + ParameterId["CategoricalColorEncoding"] = "categoricalColorEncoding"; + // DPI_CategoricalShapeEncoding, having type CategoricalShapeEncodingPresModel + ParameterId["CategoricalShapeEncoding"] = "categoricalShapeEncoding"; + // DPI_ShapePalettePresModel, having type ShapePalettePresModel + ParameterId["ShapePalettePresModel"] = "shapePalettePresModel"; + // DPI_ShapePalettePresModels, having type ShapePalettePresModel[] + ParameterId["ShapePalettePresModels"] = "shapePalettePresModels"; + // DPI_DataSourceDateProperties, having type DataSourceDatePropertiesPresModel + ParameterId["DataSourceDateProperties"] = "datasourceDateProperties"; + // DPI_DatePropertiesDateFormat, having type DatePropertiesDateFormatPresModel + ParameterId["DatePropertiesDateFormat"] = "datePropertiesDateFormat"; + // DPI_DatePropertiesDateFormats, having type DatePropertiesDateFormatPresModel[] + ParameterId["DatePropertiesDateFormats"] = "datePropertiesDateFormats"; + // DPI_HierarchySelect, having type HierarchySelectModel + ParameterId["HierarchySelect"] = "hierarchySelect"; + // DPI_HierarchySelectMember, having type HierarchySelectMemberPresModel + ParameterId["HierarchySelectMember"] = "hierarchySelectMember"; + // DPI_HierarchySelectMemberList, having type HierarchySelectMemberPresModel[] + ParameterId["HierarchySelectMemberList"] = "hierarchySelectMemberList"; + // DPI_HierarchySetDefaultMember, having type HierarchySetDefaultMemberPresModel + ParameterId["HierarchySetDefaultMember"] = "hierarchySetDefaultMember"; + // DPI_SemiStructSchema, having type SemiStructSchemaPresModel + ParameterId["SemiStructSchema"] = "semiStructSchema"; + // DPI_SemiStructSchemaMember, having type SemiStructSchemaMemberPresModel + ParameterId["SemiStructSchemaMember"] = "semiStructSchemaMember"; + // DPI_SemiStructSchemaMemberList, having type SemiStructSchemaMemberPresModel[] + ParameterId["SemiStructSchemaMemberList"] = "semiStructSchemaMemberList"; + // DPI_ParameterEditInfo, having type ParameterEditInfoPresModel + ParameterId["ParameterEditInfo"] = "parameterEditInfo"; + // DPI_ProductParameterInfo, having type ProductParameterInfoPresModel + ParameterId["ProductParameterInfo"] = "productParameterInfo"; + // DPI_CaptionedDatasourceField, having type CaptionedDatasourceInfoPresModel + ParameterId["CaptionedDatasourceField"] = "captionedDatasourceField"; + // DPI_CaptionedDatasourceFields, having type CaptionedDatasourceInfoPresModel[] + ParameterId["CaptionedDatasourceFields"] = "captionedDatasourceFields"; + // DPI_EditedParameterRangeDomain, having type ParameterRangeDomainPresModel + ParameterId["EditedParameterRangeDomain"] = "editedParameterRangeDomain"; + // DPI_ParameterRangeDomain, having type ParameterRangeDomainPresModel + ParameterId["ParameterRangeDomain"] = "parameterRangeDomain"; + // DPI_ParameterListDomain, having type ParameterListDomainPresModel + ParameterId["ParameterListDomain"] = "parameterListDomain"; + // DPI_ParameterListDomainMember, having type ParameterListDomainMemberPresModel + ParameterId["ParameterListDomainMember"] = "parameterListDomainMember"; + // DPI_ParameterListDomainMembers, having type ParameterListDomainMemberPresModel[] + ParameterId["ParameterListDomainMembers"] = "parameterListDomainMembers"; + // DPI_IndexedDomainMember, having type IndexedDomainMemberPresModel + ParameterId["IndexedDomainMember"] = "indexedDomainMember"; + // DPI_IndexedDomainMembers, having type IndexedDomainMemberPresModel[] + ParameterId["IndexedDomainMembers"] = "indexedDomainMembers"; + // DPI_NewIndexedDomainMembers, having type IndexedDomainMemberPresModel[] + ParameterId["NewIndexedDomainMembers"] = "newIndexedDomainMembers"; + // DPI_ParameterListDomainDiff, having type parameter-list-domain-diff + ParameterId["ParameterListDomainDiff"] = "parameterListDomainDiff"; + // DPI_IndexRange, having type IndexRangePresModel + ParameterId["IndexRange"] = "indexRange"; + // DPI_IndexRanges, having type IndexRangePresModel[] + ParameterId["IndexRanges"] = "indexRanges"; + // DPI_CategoricalFind, having type CategoricalFindPresModel + ParameterId["CategoricalFind"] = "categoricalFind"; + // DPI_CaptionedDataValue, having type CaptionedDataValuePresModel + ParameterId["CaptionedDataValue"] = "captionedDataValue"; + // DPI_SelectedValueCaption, having type CaptionedDataValuePresModel + ParameterId["SelectedValueCaption"] = "selectedValueCaption"; + // DPI_DataValueCaptionList, having type CaptionedDataValuePresModel[] + ParameterId["DataValueCaptionList"] = "dataValueCatpionList"; + // DPI_RangeDataValue, having type RangeDataValuePresModel + ParameterId["RangeDataValue"] = "rangeDataValue"; + // DPI_ParameterRangeDataValue, having type RangeDataValuePresModel + ParameterId["ParameterRangeDataValue"] = "parameterRangeDataValue"; + // DPI_DataValueRangeCaptions, having type DataValueRangeCaptionsPresModel + ParameterId["DataValueRangeCaptions"] = "dataValueRangeCaptions"; + // DPI_IndependentDimension, having type IndependentDimensionPresModel + ParameterId["IndependentDimension"] = "independentDimension"; + // DPI_IndependentDimensions, having type IndependentDimensionPresModel[] + ParameterId["IndependentDimensions"] = "independentDimensions"; + // DPI_AttributePerspective, having type PerspectivePresModel + ParameterId["AttributePerspective"] = "attributePerspective"; + // DPI_CubePerspective, having type PerspectivePresModel + ParameterId["CubePerspective"] = "cubePerspective"; + // DPI_AttributePerspectives, having type PerspectivePresModel[] + ParameterId["AttributePerspectives"] = "attributePerspectives"; + // DPI_CalculatedMembersForEditingPresModel, having type EditCalculatedMembersPresModel + ParameterId["CalculatedMembersForEditingPresModel"] = "calculatedMembersForEditingPresmodel"; + // DPI_CalculatedMember, having type CalculatedMemberPresModel + ParameterId["CalculatedMember"] = "calculatedMember"; + // DPI_NewCalculatedMember, having type CalculatedMemberPresModel + ParameterId["NewCalculatedMember"] = "newCalculatedMember"; + // DPI_UpdatedCalculatedMember, having type CalculatedMemberPresModel + ParameterId["UpdatedCalculatedMember"] = "updatedCalculatedMember"; + // DPI_CalculatedMembersList, having type CalculatedMemberPresModel[] + ParameterId["CalculatedMembersList"] = "calculatedMembersList"; + // DPI_CalculatedMemberHierarchyItem, having type CalculatedMemberHierarchyItemPresModel + ParameterId["CalculatedMemberHierarchyItem"] = "calculatedMemberHierarchyItem"; + // DPI_CalculatedMemberHierarchyList, having type CalculatedMemberHierarchyItemPresModel[] + ParameterId["CalculatedMemberHierarchyList"] = "calculatedMemberHierarchyList"; + // DPI_SummaryCardPresModel, having type SummaryCardPresModel + ParameterId["SummaryCardPresModel"] = "summaryCard"; + // DPI_MeasureSummary, having type MeasureSummaryPresModel + ParameterId["MeasureSummary"] = "measureSummary"; + // DPI_MeasureSummaryList, having type MeasureSummaryPresModel[] + ParameterId["MeasureSummaryList"] = "measureSummaryList"; + // DPI_AnnotationPresModel, having type AnnotationPresModel + ParameterId["AnnotationPresModel"] = "annotation"; + // DPI_AnnotationList, having type AnnotationPresModel[] + ParameterId["AnnotationList"] = "annotationList"; + // DPI_AnnotationShapeStyle, having type AnnotationShapeStylePresModel + ParameterId["AnnotationShapeStyle"] = "annotationShapeStyle"; + // DPI_Telemetry, having type TelemetryPresModel + ParameterId["Telemetry"] = "telemetry"; + // DPI_DataSourceTelemetry, having type DataSourceTelemetryPresModel + ParameterId["DataSourceTelemetry"] = "dataSourceTelemetry"; + // DPI_DataSourceTelemetryList, having type DataSourceTelemetryPresModel[] + ParameterId["DataSourceTelemetryList"] = "dataSourceTelemetryList"; + // DPI_VisualSpecificationTelemetry, having type VisualSpecificationTelemetryPresModel + ParameterId["VisualSpecificationTelemetry"] = "visualSpecificationTelemetry"; + // DPI_VisualSpecificationTelemetryList, having type VisualSpecificationTelemetryPresModel[] + ParameterId["VisualSpecificationTelemetryList"] = "visualSpecificationTelemetryList"; + // DPI_UnderlyingDataTable, having type UnderlyingDataTablePresModel + ParameterId["UnderlyingDataTable"] = "underlyingDataTable"; + // DPI_UnderlyingDataTables, having type UnderlyingDataTablePresModel[] + ParameterId["UnderlyingDataTables"] = "underlyingDataTables"; + // DPI_UnderlyingDataTableColumn, having type UnderlyingDataTableColumnPresModel + ParameterId["UnderlyingDataTableColumn"] = "underlyingDataTableColumn"; + // DPI_UnderlyingDataTableColumns, having type UnderlyingDataTableColumnPresModel[] + ParameterId["UnderlyingDataTableColumns"] = "underlyingDataTableColumns"; + // DPI_PageCacheID, having type PageCacheIDPresModel + ParameterId["PageCacheID"] = "pageCacheId"; + // DPI_RelationalPageCacheID, having type PageCacheIDPresModel + ParameterId["RelationalPageCacheID"] = "relationalPageCacheId"; + // DPI_SearchResultsCacheID, having type PageCacheIDPresModel + ParameterId["SearchResultsCacheID"] = "searchResultsCacheId"; + // DPI_PageInfo, having type PageInfoPresModel + ParameterId["PageInfo"] = "pageInfo"; + // DPI_RowColPair, having type RowColPairPresModel + ParameterId["RowColPair"] = "rowColPair"; + // DPI_TopLeftRowCol, having type RowColPairPresModel + ParameterId["TopLeftRowCol"] = "topLeftRowCol"; + // DPI_BotRightRowCol, having type RowColPairPresModel + ParameterId["BotRightRowCol"] = "botRightRowCol"; + // DPI_RowColPairs, having type RowColPairPresModel[] + ParameterId["RowColPairs"] = "rowColPairs"; + // DPI_TableViewCacheInfo, having type TableViewCachePresModel + ParameterId["TableViewCacheInfo"] = "tableViewCacheInfo"; + // DPI_TableViewInfo, having type tableViewInfoPresModel + ParameterId["TableViewInfo"] = "tableViewInfo"; + // DPI_TableViewColumnInfo, having type TableViewColumnInfoPresModel + ParameterId["TableViewColumnInfo"] = "tableViewColumnInfo"; + // DPI_TableViewColumns, having type TableViewColumnInfoPresModel[] + ParameterId["TableViewColumns"] = "tableViewColumns"; + // DPI_TableViewPageItem, having type TableViewPageItemPresModel + ParameterId["TableViewPageItem"] = "tableViewPageItem"; + // DPI_TableViewPageColumns, having type TableViewPageItemPresModel[] + ParameterId["TableViewPageColumns"] = "tableViewPageColumns"; + // DPI_TableViewPageRow, having type TableViewPageRowPresModel + ParameterId["TableViewPageRow"] = "tableViewPageRow"; + // DPI_TableViewPageRows, having type TableViewPageRowPresModel[] + ParameterId["TableViewPageRows"] = "tableViewPageRows"; + // DPI_TableViewPage, having type TableViewPagePresModel + ParameterId["TableViewPage"] = "tableViewPage"; + // DPI_CategoricalValuePicker, having type CategoricalValuePickerPresModel + ParameterId["CategoricalValuePicker"] = "categoricalValuePicker"; + // DPI_AnnotationShapeBorderStyle, having type LineStylePresModel + ParameterId["AnnotationShapeBorderStyle"] = "annotationShapeBorderStyle"; + // DPI_AnotationShapeStrokeStyle, having type LineStylePresModel + ParameterId["AnotationShapeStrokeStyle"] = "annotationShapeStrokeStyle"; + // DPI_CategoricalBinEditorPresModel, having type CategoricalBinEditorPresModel + ParameterId["CategoricalBinEditorPresModel"] = "categoricalBinEditor"; + // DPI_CategoricalBinItem, having type CategoricalBinItemPresModel + ParameterId["CategoricalBinItem"] = "categoricalBinItemPresModel"; + // DPI_CategoricalBinItems, having type CategoricalBinItemPresModel[] + ParameterId["CategoricalBinItems"] = "categoricalBinItemPresModels"; + // DPI_MeasurePickerFieldInfo, having type MeasurePickerFieldInfoPresModel + ParameterId["MeasurePickerFieldInfo"] = "measurePickerFieldInfo"; + // DPI_MeasurePickerFields, having type MeasurePickerFieldInfoPresModel[] + ParameterId["MeasurePickerFields"] = "measurePickerFields"; + // DPI_MeasureAggregationInfo, having type MeasureAggregationInfoPresModel + ParameterId["MeasureAggregationInfo"] = "measureAggregationInfo"; + // DPI_MeasureAggregations, having type MeasureAggregationInfoPresModel[] + ParameterId["MeasureAggregations"] = "measureAggregations"; + // DPI_TuplePair, having type TuplePairPresModel + ParameterId["TuplePair"] = "tuplePair"; + // DPI_DimensionBound, having type DimensionBoundPresModel + ParameterId["DimensionBound"] = "dimensionBound"; + // DPI_PerspectiveBounds, having type DimensionBoundPresModel[] + ParameterId["PerspectiveBounds"] = "perspectiveBounds"; + // DPI_FilterPerspectiveInfoPresModel, having type FilterPerspectiveInfoPresModel + ParameterId["FilterPerspectiveInfoPresModel"] = "filterPerspectiveInfo"; + // DPI_TableRelevance, having type TableRelevancePresModel + ParameterId["TableRelevance"] = "tableRelevance"; + // DPI_AddInRegistrationPresModel, having type AddInRegistrationPresModel + ParameterId["AddInRegistrationPresModel"] = "addInRegistrationPresModel"; + // DPI_AddInRegistrationPresModelList, having type AddInRegistrationPresModel[] + ParameterId["AddInRegistrationPresModelList"] = "addInRegistrationPresModelList"; + // DPI_AddInDashboardAuthoringWidget, having type AddInDashboardWidgetPresModel + ParameterId["AddInDashboardAuthoringWidget"] = "addInDashboardAuthoringWidgetPresModel"; + // DPI_AddInInstance, having type AddInInstancePresModel + ParameterId["AddInInstance"] = "addInInstancePresModel"; + // DPI_AddInLocator, having type AddInLocatorPresModel + ParameterId["AddInLocator"] = "addInLocatorPresModel"; + // DPI_AddInContext, having type AddInContext + ParameterId["AddInContext"] = "addInContext"; + // DPI_AddInMode, having type AddInMode + ParameterId["AddInMode"] = "addInMode"; + // DPI_SetAxisRangeResult, having type SetAxisRangeResult + ParameterId["SetAxisRangeResult"] = "setAxisRangeResult"; + // DPI_SetTickOriginResult, having type SetTickOriginResult + ParameterId["SetTickOriginResult"] = "setTickOriginResult"; + // DPI_SetTickSpacingResult, having type SetTickSpacingResult + ParameterId["SetTickSpacingResult"] = "setTickSpacingResult"; + // DPI_AxisExtentStartType, having type AxisExtentType + ParameterId["AxisExtentStartType"] = "axisExtentStartType"; + // DPI_AxisExtentEndType, having type AxisExtentType + ParameterId["AxisExtentEndType"] = "axisExtentEndType"; + // DPI_AxisExtentsType, having type AxisExtentType + ParameterId["AxisExtentsType"] = "axisExtentsType"; + // DPI_AddInEnvironment, having type AddInEnvironmentPresModel + ParameterId["AddInEnvironment"] = "addInEnvironmentPresModel"; + // DPI_AddInDashboardInfo, having type AddInDashboardInfoPresModel + ParameterId["AddInDashboardInfo"] = "addInDashboardInfoPresModel"; + // DPI_AddInSettingsInfo, having type AddInSettingsInfoPresModel + ParameterId["AddInSettingsInfo"] = "addInSettingsInfo"; + // DPI_AddInBootstrapInfo, having type AddInBootstrapInfoPresModel + ParameterId["AddInBootstrapInfo"] = "addInBootstrapInfo"; + // DPI_AddInDebugSettings, having type AddInDebugSettingsPresModel + ParameterId["AddInDebugSettings"] = "addInDebugSettings"; + // DPI_RichText, having type RichTextPresModel + ParameterId["RichText"] = "richText"; + // DPI_RichTextKeywordSubList, having type RichTextKeywordSubListPresModel + ParameterId["RichTextKeywordSubList"] = "richTextKeywordsSublist"; + // DPI_RichTextKeywordSubLists, having type RichTextKeywordSubListPresModel[] + ParameterId["RichTextKeywordSubLists"] = "richTextKeywordSublists"; + // DPI_RichTextKeywordList, having type RichTextKeywordListPresModel + ParameterId["RichTextKeywordList"] = "richTextKeywordsList"; + // DPI_RichTextBlockStyle, having type RichTextBlockStylePresModel + ParameterId["RichTextBlockStyle"] = "richTextBlockStyle"; + // DPI_RichTextContentStyle, having type RichTextContentStylePresModel + ParameterId["RichTextContentStyle"] = "richTextContentStyle"; + })(ParameterId = exports.ParameterId || (exports.ParameterId = {})); + + +/***/ }, +/* 71 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var api_internal_contract_1 = __webpack_require__(69); + var CommandIds_1 = __webpack_require__(72); + var Params_1 = __webpack_require__(70); + var CommandMappingRegistry_1 = __webpack_require__(73); + var CommandRegistration_1 = __webpack_require__(74); + var CommandMappingRegistryFactory = (function () { + function CommandMappingRegistryFactory() { + } + /** + * Creates and populates a new CommandMappingRegistry for the specific version number requested + * + * @static + * @param {VersionNumber} versionNumber + * @returns {CommandMappingRegistry} + * @memberof CommandMappingRegistryFactory + */ + CommandMappingRegistryFactory.createCommandMappingRegistry = function (versionNumber) { + var result = new CommandMappingRegistry_1.CommandMappingRegistry(); + result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.InitializeExtension, CommandIds_1.DocCommands.InitializeAddInInstance, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ExtensionLocator, Params_1.ParameterId.AddInLocator)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ExtensionBootstrapInfo, Params_1.ParameterId.AddInBootstrapInfo))); + result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetUnderlyingData, CommandIds_1.DocCommands.GetUnderlyingData, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.IgnoreAliases, Params_1.ParameterId.IgnoreAliases), + new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.IgnoreSelection, Params_1.ParameterId.IgnoreSelection), + new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.IncludeAllColumns, Params_1.ParameterId.IncludeAllColumns), + new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.MaxRows, Params_1.ParameterId.MaxRows), + new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.VisualIDPM)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.UnderlyingDataTable, Params_1.ParameterId.UnderlyingDataTable))); + result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetDataSummaryData, CommandIds_1.DocCommands.GetSummaryData, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.IgnoreAliases, Params_1.ParameterId.IgnoreAliases), + new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.IgnoreSelection, Params_1.ParameterId.IgnoreSelection), + new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.VisualIDPM)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.UnderlyingSummaryDataTable, Params_1.ParameterId.UnderlyingDataTable))); + result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetDataSourceData, CommandIds_1.DocCommands.GetDataSourceData, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.DataSourceId, Params_1.ParameterId.Datasource), + new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.IgnoreAliases, Params_1.ParameterId.IgnoreAliases), + new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.MaxRows, Params_1.ParameterId.MaxRows), + new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ColumnsToInclude, Params_1.ParameterId.FieldDisplayNames)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.DataSourceDataTable, Params_1.ParameterId.UnderlyingDataTable))); + result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.ApplyCategoricalFilter, CommandIds_1.DocCommands.CategoricalFilter, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FieldName, Params_1.ParameterId.QualifiedFieldCaption), + new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FilterValues, Params_1.ParameterId.FilterAliases), + new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FilterUpdateType, Params_1.ParameterId.FilterUpdateType), + new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.IsExcludeMode, Params_1.ParameterId.Exclude, true), + new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.Worksheet), + new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.Dashboard)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FieldName, Params_1.ParameterId.FieldCaption))); + result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.ApplyRangeFilter, CommandIds_1.DocCommands.RangeFilter, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FieldName, Params_1.ParameterId.QualifiedFieldCaption), + new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FilterRangeMin, Params_1.ParameterId.RangeMin, true), + new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FilterRangeMax, Params_1.ParameterId.RangeMax, true), + new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FilterRangeNullOption, Params_1.ParameterId.Included, true), + new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.Worksheet), + new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.Dashboard)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FieldName, Params_1.ParameterId.FieldCaption))); + result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.ClearFilter, CommandIds_1.DocCommands.ClearExistingFilter, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FieldName, Params_1.ParameterId.QualifiedFieldCaption), + new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.Worksheet), + new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.Dashboard)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FieldName, Params_1.ParameterId.FieldCaption))); + result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetSelectedMarks, CommandIds_1.DocCommands.GetSelectionData, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.VisualIDPM)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.SelectedData, Params_1.ParameterId.SelectionData))); + result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetHighlightedMarks, CommandIds_1.DocCommands.GetHighlightedData, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.VisualIDPM)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.HighlightedData, Params_1.ParameterId.HighlightedData))); + result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.SaveExtensionSettings, CommandIds_1.DocCommands.SaveAddInSettings, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ExtensionLocator, Params_1.ParameterId.AddInLocator), + new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.SettingsValues, Params_1.ParameterId.AddInSettings)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ExtensionSettingsInfo, Params_1.ParameterId.AddInSettingsInfo))); + result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetParametersForSheet, CommandIds_1.DocCommands.GetParameterModels, [], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ParameterInfos, Params_1.ParameterId.ParameterCtrls))); + result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.FindParameter, CommandIds_1.DocCommands.FindParameterModel, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ParameterCaption, Params_1.ParameterId.FieldCaption, true), + new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ParameterFieldName, Params_1.ParameterId.FieldNameString, true)], + // We might not get a response if the parameter isn't found + new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ParameterInfo, Params_1.ParameterId.ParameterCtrl, true))); + result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.ChangeParameterValue, CommandIds_1.DocCommands.SetParameterValue, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ParameterFieldName, Params_1.ParameterId.GlobalFieldName), + new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ParameterValue, Params_1.ParameterId.ValueStr)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ParameterInfo, Params_1.ParameterId.ParameterCtrl))); + result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.ClearSelectedMarks, CommandIds_1.DocCommands.ClearSelectedMarks, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.VisualIDPM)])); + result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.SelectByValue, CommandIds_1.DocCommands.SelectByValue, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.VisualIDPM), + new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.Selection, Params_1.ParameterId.Selection, true), + new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.SelectionUpdateType, Params_1.ParameterId.SelectionUpdateType), + new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.HierValSelectionModels, Params_1.ParameterId.HierValSelectionModels, true), + new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.DimValSelectionModels, Params_1.ParameterId.DimValSelectionModels, true), + new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.QuantRangeSelectionModels, Params_1.ParameterId.QuantRangeSelectionModels, true)])); + result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetDataSources, CommandIds_1.DocCommands.GetSchema, [], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.DataSchema, Params_1.ParameterId.DataSchema))); + result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.RefreshDataSource, CommandIds_1.UICommands.RefreshDataSourceUI, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.DataSourceId, Params_1.ParameterId.Datasource)], undefined, CommandRegistration_1.CommandNamespace.TabUI)); + result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetFilters, CommandIds_1.DocCommands.GetWorksheetFilters, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.VisualIDPM)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.WorksheetFilters, Params_1.ParameterId.FiltersInfo))); + result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetCategoricalDomain, CommandIds_1.DocCommands.GetCategoricalDomain, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.VisualIDPM), + new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FieldId, Params_1.ParameterId.FieldName), + new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.DomainType, Params_1.ParameterId.FilterDomainType)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.CategoricalDomain, Params_1.ParameterId.CategoricalDomain))); + result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetRangeDomain, CommandIds_1.DocCommands.GetQuantitativeDomain, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.VisualIDPM), + new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FieldId, Params_1.ParameterId.FieldName), + new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.DomainType, Params_1.ParameterId.FilterDomainType)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.QuantitativeDomain, Params_1.ParameterId.QuantitativeDomain))); + return result; + }; + return CommandMappingRegistryFactory; + }()); + exports.CommandMappingRegistryFactory = CommandMappingRegistryFactory; + + +/***/ }, +/* 72 */ +/***/ function(module, exports) { + + "use strict"; + /* tslint:disable */ + // ----------------------------------------------------------------------------- + // + // This file is the copyrighted property of Tableau Software and is protected + // by registered patents and other applicable U.S. and international laws and + // regulations. + // + // Unlicensed use of the contents of this file is prohibited. Please refer to + // the NOTICES.txt file for further details. + // + // ----------------------------------------------------------------------------- + // WARNING: Computer generated file. Do not hand modify. + // DEPENDS ON: ['../typescript/js-api/api-core/node_modules/@tableau/preslayer-codegen-typescript/templates/commands-enum-ts.template', u'../typescript/js-api/api-core/temp-pres-layer/all-cmd-wrappers.data'] + Object.defineProperty(exports, "__esModule", { value: true }); + var DocCommands; + (function (DocCommands) { + // Saves the settings for the specified add-in id + DocCommands["SaveAddInSettings"] = "save-add-in-settings"; + // Gets the pres model for an add-in instance. + DocCommands["GetAddInInstancePresModel"] = "get-add-in-instance-pres-model"; + // Gets the pres model for the dashboard authoring widget for add-ins. + DocCommands["GetAddInDashboardAuthoringWidgetPresModel"] = "get-add-in-dashboard-authoring-widget-pres-model"; + // Gets the necessary information for an add-in to initialize itself. + DocCommands["InitializeAddInInstance"] = "initialize-add-in-instance"; + // Enables or disable javascript debugging of an add-in. + DocCommands["SetAddInJsDebuggingEnabled"] = "set-add-in-js-debugging-enabled"; + // Whether or not we should pause before loading. If missing, toggle the value + DocCommands["SetPauseBeforeLoadingAddIn"] = "set-pause-before-loading-add-in"; + // Reloads the Add-In widget and web page. + DocCommands["ReloadAddIn"] = "reload-add-in"; + // Retrieves the context menu for a dashboard add-in. + DocCommands["GetAddInZoneContextMenu"] = "get-add-in-zone-context-menu"; + // Gets the pres model which indicates what the debug settings for add-ins is. + DocCommands["GetAddInDebugSettingsPresModel"] = "get-add-in-debug-settings-pres-model"; + // Primary use is for building context menus + DocCommands["IsSelectionAnEditableParameter"] = "is-selection-an-editable-parameter"; + // Check if selection can be used as base for creating a new parameter. Primary use is for building context menus + DocCommands["GetCreateParameterState"] = "get-create-parameter-state"; + // Uses EditParameter to get and return info about the presmodel without maintaining the controller + DocCommands["GetParameterEditInfo"] = "get-parameter-edit-info"; + // Initialize the controller and its stored parameter then return a populated presmodel + DocCommands["CreateParameter"] = "create-parameter"; + // Same underlying logic as CreateParameter but edits rather than creating a new parameter + DocCommands["EditParameter_New"] = "edit-parameter-new"; + // Add a member of a parameter domain. Changes are applied to intermediate state and saved on commit + DocCommands["AddParameterMember"] = "add-parameter-member"; + // Edit a member of a parameter domain. Changes are applied to intermediate state and saved on commit + DocCommands["EditParameterMember"] = "edit-parameter-member"; + // Delete a series of ranges of members from the parameter list. + DocCommands["DeleteParameterMembers"] = "delete-parameter-members"; + // Copy a series of ranges of members of a parameter list + DocCommands["CopyParameterMembers"] = "copy-parameter-members"; + // Move a series of ranges of members of a parameter list + DocCommands["MoveParameterMembers"] = "move-parameter-members"; + // Change domain of a parameter. Changes are applied to intermediate state and saved on commit + DocCommands["EditParameterDomainType"] = "edit-parameter-domain-type"; + // Change datatype of a parameter. Changes are applied to intermediate state and saved on commit + DocCommands["EditParameterDataType"] = "edit-parameter-data-type"; + // Change display format of a parameter. Changes are applied to intermediate state and saved on commit + DocCommands["EditParameterFormat"] = "edit-parameter-format"; + // Validate changes to a parameter's range domain and apply to intermediate state. Changes are saved on commit + DocCommands["EditParameterRange"] = "edit-parameter-range"; + // Edit the value of a non-list domain parameter + DocCommands["EditParameterValue"] = "edit-parameter-value"; + // Edit the value of a list domain parameter + DocCommands["EditParameterValueIndex"] = "edit-parameter-value-index"; + // Update the parameter caption and description - used to keep backend in sync. No verification/return is requried. + DocCommands["EditParameterDisplayInfo"] = "edit-parameter-display-info"; + // Update the domain of the parameter using a field (column or parameter) as a base + DocCommands["UpdateParameterFromField"] = "update-parameter-from-field"; + // Update the list domain of a parameter from a plain text representation of values + DocCommands["ParseParameterListDomain"] = "parse-parameter-list-domain"; + // Clears the parameter's domain of all members + DocCommands["ClearParameterListDomain"] = "clear-parameter-list-domain"; + // Creates or edits parameter from intermediate state. Takes a few properties that are cached in dialog and applies them pre-commit. + DocCommands["CommitParameterEdits"] = "commit-parameter-edits"; + // Gets the model for a particular parameter or returns an empty response if one is not found. + DocCommands["FindParameterModel"] = "find-parameter-model"; + // Gets the pres model for the show data dialog + DocCommands["GetShowDataPresModel"] = "get-show-data-pres-model"; + // Export underlying data from the ShowDataDialog to a CSV file + DocCommands["ShowDataExportToCSV"] = "show-data-export-to-csv"; + // Gets the summary data for a worksheet + DocCommands["GetSummaryData"] = "get-summary-data"; + // Gets the underlying data for a worksheet + DocCommands["GetUnderlyingData"] = "get-underlying-data"; + // Gets the underlying data for a specific data source. + DocCommands["GetDataSourceData"] = "get-data-source-data"; + // Select all marks that have the tuple's value for the given field . + DocCommands["SelectByTupleValue"] = "select-by-tuple-value"; + // Clear all the selected marks for the given worksheet + DocCommands["ClearSelectedMarks"] = "clear-selected-marks"; + // Creates or updates and existing filter based on the provided updates. + DocCommands["ApplyCategoricalFilterUpdates"] = "apply-categorical-filter-updates"; + // Search filter domain for text and return any matching tuples. + DocCommands["CategoricalFilterSearch"] = "categorical-filter-search"; + // Clear all members from the table of the identified cache. + DocCommands["CategoricalFilterClearRelationalCache"] = "categorical-filter-clear-relational-cache"; + // Create tuples for an existing filter from supplied text. + DocCommands["GetCategoricalFilterTuplesFromText"] = "get-categorical-filter-tuples-from-text"; + // Returns a presmodel backing a categorical filter, initializing a data cache for fast lookup of the filter's member domain. + DocCommands["GetCategoricalFilter"] = "get-categorical-filter"; + // Retrieves a page of data to display in the filter's list domain + DocCommands["GetCategoricalFilterDomainPage"] = "get-categorical-filter-domain-page"; + // Reset filter to committed state + DocCommands["ResetCategoricalFilterDeferred"] = "reset-categorical-filter-deferred"; + // Use uncommitted state to reset the filter's controller + DocCommands["RecreateCategoricalFilterController"] = "recreate-categorical-filter-controller"; + // Validates a Categroical Filter name. + DocCommands["ValidateCategoricalFilterName"] = "validate-categorical-filter-name"; + // Gets a summary of the filter pattern. + DocCommands["GetCategoricalFilterPatternSummary"] = "get-categorical-filter-pattern-summary"; + // Gets a summery of the filter condition. + DocCommands["GetCategoricalFilterConditionSummary"] = "get-categorical-filter-condition-summary"; + // Load the current minimum and maximum data value range for the condition field. + DocCommands["LoadCategoricalFilterConditionFieldValueRange"] = "load-categorical-filter-condition-field-value-range"; + // Validates a Categorical Filter's condition formula and re-writes it. + DocCommands["ValidateCategoricalFilterConditionFormula"] = "validate-categorical-filter-condition-formula"; + // Gets a summery of the filter limit. + DocCommands["GetCategoricalFilterLimitSummary"] = "get-categorical-filter-limit-summary"; + // Validates a Categorical Filter's limit count. + DocCommands["ValidateCategoricalFilterLimitCount"] = "validate-categorical-filter-limit-count"; + // Validates a Categorical Filter's limit formula, and re-writes the formula. + DocCommands["ValidateCategoricalFilterLimitFormula"] = "validate-categorical-filter-limit-formula"; + // Validates a Categorical Filter's limit. + DocCommands["ValidateCategoricalFilterLimit"] = "validate-categorical-filter-limit"; + // Inform cache when a user changes the range + DocCommands["CategoricalFilterSetRangeTypeDeferred"] = "categorical-filter-set-range-type-deferred"; + // Inform cache when a user changes whether the selection is exclusive + DocCommands["CategoricalFilterSetSelectionExclusiveDeferred"] = "categorical-filter-set-selection-exclusive-deferred"; + // Inform cache when a user changes whether an empty selection should be considered a selection of 'All' in a Manual selection mode + DocCommands["CategoricalFilterSetUseAllWhenManualIsEmptyDeferred"] = "categorical-filter-set-use-all-when-manual-is-empty-deferred"; + // Inform cache when a user alters the preset type + DocCommands["CategoricalFilterSetPresetTypeDeferred"] = "categorical-filter-set-preset-type-deferred"; + // Inform cache the user has selected one or more members + DocCommands["CategoricalFilterSelectRelationalMembersDeferred"] = "categorical-filter-select-relational-members-deferred"; + // Inform cache the user has deselected one or more members + DocCommands["CategoricalFilterDeselectRelationalMembersDeferred"] = "categorical-filter-deselect-relational-members-deferred"; + // Inform cache when a user selects everything in the domain + DocCommands["CategoricalFilterSelectAllRelationalMembersDeferred"] = "categorical-filter-select-all-relational-members-deferred"; + // Inform cache when a user deselects everything in the domain + DocCommands["CategoricalFilterDeselectAllRelationalMembersDeferred"] = "categorical-filter-deselect-all-relational-members-deferred"; + // Inform cache the user wants to see a different domain (e.g. relevant values only) + DocCommands["CategoricalFilterSetDomainTypeDeferred"] = "categorical-filter-set-domain-type-deferred"; + // Set whether filters apply to totals as well as non-totals table calcs + DocCommands["FilterApplyToTotalTableCalcs"] = "filter-apply-to-total-table-calcs"; + // Gets the list of filters used in a worksheet + DocCommands["GetWorksheetFilters"] = "get-worksheet-filters"; + // Gets the domain for a categorical Filter + DocCommands["GetCategoricalDomain"] = "get-categorical-domain"; + // Gets the domain for a quantitative Filter + DocCommands["GetQuantitativeDomain"] = "get-quantitative-domain"; + // + DocCommands["GetHighlightedData"] = "get-highlighted-data"; + // + DocCommands["GetSelectionData"] = "get-selection"; + // + DocCommands["Select"] = "select"; + // + DocCommands["SelectAll"] = "select-all"; + // + DocCommands["SelectByValue"] = "select-by-value"; + // + DocCommands["SelectNoneIncludingMaster"] = "select-none-including-master"; + // + DocCommands["AddManualItemsToFilter"] = "add-manual-items-to-filter"; + // + DocCommands["CategoricalFilter"] = "categorical-filter"; + // + DocCommands["CategoricalFilterByIndex"] = "categorical-filter-by-index"; + // + DocCommands["ChangeSharedFilter"] = "change-shared-filter"; + // + DocCommands["ClearContextFilters"] = "clear-context-filters"; + // + DocCommands["ClearExistingFilter"] = "clear-existing-filter"; + // + DocCommands["DefaultFilter"] = "default-filter"; + // + DocCommands["FilterGeo"] = "filter-geo"; + // + DocCommands["FilterNeg"] = "filter-neg"; + // + DocCommands["FilterNulls"] = "filter-nulls"; + // + DocCommands["FilterTargets"] = "filter-targets"; + // + DocCommands["GetSharedFilterPresModel"] = "get-shared-filter-pres-model"; + // + DocCommands["HierarchicalFilter"] = "hierarchical-filter"; + // + DocCommands["KeepOnlyOrExclude"] = "keep-only-or-exclude"; + // + DocCommands["RangeFilter"] = "range-filter"; + // + DocCommands["RelDateFilter"] = "relative-date-filter"; + // + DocCommands["ResetFilter"] = "reset-filter"; + // + DocCommands["ShowGeoAtDefault"] = "show-geo-at-default"; + // + DocCommands["ShowSVAtDefault"] = "show-sv-at-default"; + // + DocCommands["ToggleLockQuickFilters"] = "toggle-lock-quick-filters"; + // + DocCommands["AddDataConnection"] = "add-data-connection"; + // + DocCommands["AddDrillPath"] = "add-drill-path"; + // + DocCommands["AddCredentialsFromKeychain"] = "add-credentials-from-keychain"; + // + DocCommands["AddCredentialsFromKeychainFile"] = "add-credentials-from-keychain-file"; + // + DocCommands["AddFieldFolder"] = "add-field-folder"; + // + DocCommands["AddSubtotals"] = "add-subtotals"; + // + DocCommands["AddToDrillPath"] = "add-to-drill-path"; + // + DocCommands["AddToFieldFolder"] = "add-to-field-folder"; + // + DocCommands["AggregateMeasuresFlag"] = "aggregate-measures"; + // + DocCommands["ApplyCalculation"] = "apply-calculation"; + // + DocCommands["ApplyPageSetupOptions"] = "apply-page-setup-options"; + // + DocCommands["ApplyTableOptions"] = "apply-table-options"; + // + DocCommands["ApplyTypeInPill"] = "apply-type-in-pill"; + // + DocCommands["Assert"] = "assert"; + // + DocCommands["AttemptConnectDataSourcesOnSheet"] = "attempt-connect-datasources-on-sheet"; + // + DocCommands["AttemptConnectWorkbook"] = "attempt-connect-workbook"; + // + DocCommands["AttemptDataSourcesConnection"] = "attempt-datasources-connection"; + // + DocCommands["AutoUpdates"] = "auto-update"; + // + DocCommands["Brush"] = "highlight"; + // + DocCommands["BrushSpecial"] = "highlight-special"; + // + DocCommands["BuildDataSchemaDataSourceContextMenu"] = "build-data-schema-data-source-context-menu"; + // + DocCommands["BuildDataSchemaContextMenu"] = "build-data-schema-context-menu"; + // + DocCommands["BuildDataSchemaFieldContextMenu"] = "build-data-schema-field-context-menu"; + // + DocCommands["BuildDataSchemaDrillPathContextMenu"] = "build-data-schema-drill-path-context-menu"; + // + DocCommands["BuildFileTableInfoPresModel"] = "build-file-table-info-pres-model"; + // + DocCommands["BuildSheetTabContextMenu"] = "build-sheet-tab-context-menu"; + // + DocCommands["CancelDataSourcePresModel"] = "cancel-datasource-pres-model"; + // + DocCommands["CatBinMergeSplitLabel"] = "categorical-bin-merge-split"; + // + DocCommands["CategoricalQuickFilterEdit"] = "categorical-quick-filter-edit"; + // + DocCommands["CategoricalQuickFilterExcludeValues"] = "categorical-quick-filter-exclude-values"; + // + DocCommands["CategoricalQuickFilterIncludeAllWhenEmpty"] = "categorical-quick-filter-include-all-when-empty"; + // + DocCommands["CategoricalQuickFilterMode"] = "categorical-quick-filter-mode"; + // + DocCommands["CategoricalQuickFilterPattern"] = "categorical-quick-filter-pattern"; + // + DocCommands["ChangeAggregation"] = "change-aggregation"; + // + DocCommands["ChangeAlphaLevel"] = "change-alpha-level"; + // + DocCommands["ChangeBorder"] = "change-border"; + // + DocCommands["ChangeFieldType"] = "change-field-type"; + // + DocCommands["ChangeForecastColumnType"] = "change-forecast-column-type"; + // + DocCommands["ChangeHalo"] = "change-halo"; + // + DocCommands["ChangeMarkers"] = "change-markers"; + // + DocCommands["ChangeSize"] = "change-size"; + // + DocCommands["ChangeSheetTabColor"] = "change-sheet-tab-color"; + // + DocCommands["ClearAllAxisRanges"] = "clear-axis-ranges"; + // + DocCommands["ClearCalcModel"] = "clear-calculation-model"; + // + DocCommands["ClearFilters"] = "clear-filters"; + // + DocCommands["ClearFormatting"] = "clear-formatting"; + // + DocCommands["ClearFuture"] = "clear-future"; + // + DocCommands["ClearLayout"] = "clear-layout"; + // + DocCommands["ClearQuickFilter"] = "clear-quick-filter"; + // + DocCommands["ClearSorts"] = "clear-sorts"; + // + DocCommands["CloseConnection"] = "close-connection"; + // + DocCommands["CloseDataSource"] = "close-data-source"; + // + DocCommands["ConnectionAddGoogleAnalyticsDimension"] = "connection-add-google-analytics-dimension"; + // + DocCommands["ConnectionAddGoogleAnalyticsMeasure"] = "connection-add-google-analytics-measure"; + // + DocCommands["ConnectionAddNewTable"] = "connection-add-new-table"; + // + DocCommands["ConnectionAddCoalesce"] = "connection-add-coalesce"; + // + DocCommands["ConnectionAddPivot"] = "connection-add-pivot"; + // + DocCommands["ConnectionConvertToUnionAndEdit"] = "connection-convert-to-union-and-edit"; + // + DocCommands["ConnectionConvertToUnion"] = "connection-convert-to-union"; + // + DocCommands["ConnectionEditUnion"] = "connection-edit-union"; + // + DocCommands["ConnectionAddOrEditBatchUnion"] = "connection-add-or-edit-batch-union"; + // + DocCommands["ConnectionChangeTableProperty"] = "connection-change-table-property"; + // + DocCommands["ConnectionCountEntity"] = "connection-count-entity"; + // + DocCommands["ConnectionDataServerFetchMoreDatasources"] = "connection-dataserver-fetch-more-datasources"; + // + DocCommands["ConnectionDataServerProjectSelect"] = "connection-dataserver-change-selected-project"; + // + DocCommands["ConnectionDataServerUpdateFetchParameters"] = "connection-dataserver-update-fetch-parameters"; + // + DocCommands["ConnectionDataServerFlushCache"] = "connection-dataserver-flush-cache"; + // + DocCommands["ConnectionDeleteAllTables"] = "connection-delete-all-tables"; + // + DocCommands["ConnectionDeleteTable"] = "connection-delete-table"; + // + DocCommands["ConnectionEditCaption"] = "connection-edit-caption"; + // + DocCommands["ConnectionEditGoogleAnalyticsAccount"] = "connection-edit-google-analytics-account"; + // + DocCommands["ConnectionEditGoogleAnalyticsDateRange"] = "connection-edit-google-analytics-date-range"; + // + DocCommands["ConnectionEditGoogleAnalyticsMeasureGroup"] = "connection-edit-google-analytics-measure-group"; + // + DocCommands["ConnectionToggleGAQueryPartitioning"] = "connection-toggle-ga-query-partitioning"; + // + DocCommands["ConnectionEditGoogleAnalyticsProperty"] = "connection-edit-google-analytics-property"; + // + DocCommands["ConnectionEditGoogleAnalyticsView"] = "connection-edit-google-analytics-view"; + // + DocCommands["ConnectionEditGoogleAnalyticsSegment"] = "connection-edit-google-analytics-segment"; + // + DocCommands["ConnectionEditJoinClauses"] = "connection-edit-join-clauses"; + // + DocCommands["ConnectionEditJoinType"] = "connection-edit-join-type"; + // + DocCommands["ConnectionEditSQLText"] = "connection-edit-sql-text"; + // + DocCommands["ConnectionFetchEntity"] = "connection-fetch-entity"; + // + DocCommands["ConnectionSetForceExtractRefresh"] = "connection-set-force-extract-refresh"; + // + DocCommands["ConnectionPrepareDataSourceForEdit"] = "connection-prepare-datasource-for-edit"; + // + DocCommands["ConnectionClearRefreshAttributes"] = "connection-clear-refresh-attributes"; + // + DocCommands["ConnectionRemoveGoogleAnalyticsDimension"] = "connection-remove-google-analytics-dimension"; + // + DocCommands["ConnectionRemoveGoogleAnalyticsMeasure"] = "connection-remove-google-analytics-measure"; + // + DocCommands["ConnectionRemoveCoalesce"] = "connection-remove-coalesce"; + // + DocCommands["ConnectionRemovePivot"] = "connection-remove-pivot"; + // + DocCommands["ConnectionAddDateParseFormats"] = "connection-add-date-parse-formats"; + // + DocCommands["ConnectionRenameTable"] = "connection-rename-table"; + // + DocCommands["ConnectionReplaceRelationWithSQLText"] = "connection-replace-relation-with-sql-text"; + // + DocCommands["ConnectionReplaceTable"] = "connection-replace-table"; + // + DocCommands["ConnectionResetTableAlias"] = "connection-reset-table-alias"; + // + DocCommands["ConnectionSelectCatalog"] = "connection-select-catalog"; + // + DocCommands["ConnectionSelectCube"] = "connection-select-cube"; + // + DocCommands["ConnectionSelectDatabase"] = "connection-select-database"; + // + DocCommands["ConnectionSelectSchema"] = "connection-select-schema"; + // + DocCommands["ConnectionSelectStoredProcedure"] = "connection-select-stored-procedure"; + // + DocCommands["ConnectionSelectWarehouse"] = "connection-select-warehouse"; + // + DocCommands["ConnectionSelectBigQueryLegacySQLCheckBox"] = "connection-select-bigquery-legacy-check"; + // + DocCommands["ConnectionToggleHasHeaderRow"] = "connection-toggle-has-header-row"; + // + DocCommands["ConnectionToggleTableCleaning"] = "connection-toggle-table-cleaning"; + // + DocCommands["ConnectionToggleUseExtract"] = "connection-toggle-use-extract"; + // + DocCommands["ConnectionViewTableCleaningResults"] = "connection-view-table-cleaning-results"; + // + DocCommands["ConnectToDataServerSource"] = "connect-data-server-datasource"; + // + DocCommands["ConsiderZerosEmptyFlag"] = "consider-zeros-empty"; + // + DocCommands["ConvertUnnamedFields"] = "convert-unnamed-fields"; + // + DocCommands["Crash"] = "crash"; + // + DocCommands["CreateAggregateRole"] = "create-aggregate-role"; + // + DocCommands["CreateConnection"] = "create-connection"; + // + DocCommands["CreateDefaultQuickFilter"] = "create-default-quick-filter"; + // + DocCommands["CreateTypeInPill"] = "create-type-in-pill"; + // + DocCommands["CustomDataGridFieldOrder"] = "custom-datagrid-field-order"; + // + DocCommands["CustomDateAggregation"] = "custom-date-aggregation"; + // + DocCommands["CustomSplitField"] = "custom-split-field"; + // + DocCommands["DebugAssertion"] = "debug-assertion"; + // + DocCommands["DecrementParameterValue"] = "decr-parameter-value"; + // + DocCommands["DeleteFields"] = "delete-calculation-fields-command"; + // + DocCommands["DeleteSheet"] = "delete-sheet"; + // + DocCommands["DescribeDrillPath"] = "describe-drill-path"; + // + DocCommands["DescribeSortFilter"] = "describe-sort-filter"; + // + DocCommands["DismissNullWart"] = "dismiss-null-wart"; + // + DocCommands["DomainQuickFilter"] = "domain-quick-filter"; + // + DocCommands["DoubleFreeCrash"] = "double-free"; + // + DocCommands["DropNowhere"] = "drop-nowhere"; + // + DocCommands["DropOnSchemaViewer"] = "drop-on-schema-viewer"; + // + DocCommands["DropOnShelf"] = "drop-on-shelf"; + // + DocCommands["DropOnCalcEditor"] = "drop-on-calc-editor"; + // + DocCommands["DropOnShowMe"] = "drop-on-showme"; + // + DocCommands["DropPrepare"] = "drop-prepare"; + // + DocCommands["DualAxis"] = "dual-axis"; + // + DocCommands["DuplicateSheet"] = "duplicate-sheet"; + // + DocCommands["EditCopyCalc"] = "edit-copy-calc"; + // + DocCommands["EditDropLines"] = "edit-drop-lines"; + // + DocCommands["EditEnumeratedGroup"] = "edit-enumerated-group"; + // + DocCommands["EditNestedGroup"] = "edit-nested-group"; + // + DocCommands["EditPill"] = "edit-pill"; + // + DocCommands["EditPrimitiveType"] = "edit-primitive-type"; + // + DocCommands["EnableAllBrushing"] = "enable-all-highlights"; + // + DocCommands["EnableQuickFilter"] = "enable-quick-filter"; + // + DocCommands["EnableSheetBrushing"] = "enable-sheet-highlights"; + // + DocCommands["EnableThemedBrushing"] = "enable-themed-highlights"; + // + DocCommands["EnumerateVariables"] = "enumerate-variables"; + // + DocCommands["EnumerateVariableSelectionValues"] = "enumerate-variable-selection-values"; + // + DocCommands["EstablishConnection"] = "establish-connection"; + // + DocCommands["EstablishMatchingConnections"] = "establish-matching-connections"; + // + DocCommands["ExportDataToText"] = "export-data-to-text"; + // + DocCommands["ExtSvcConfig"] = "ext-svc-config"; + // + DocCommands["ExtSvcConfigConnect"] = "ext-svc-config-connect"; + // + DocCommands["Extract"] = "extract"; + // + DocCommands["SetDataGridCurrentTable"] = "set-data-grid-current-table"; + // + DocCommands["FetchTableRelevance"] = "fetch-table-relevance"; + // + DocCommands["FetchCachedTableRelevance"] = "fetch-cached-table-relevance"; + // + DocCommands["FlipLabels"] = "flip-labels"; + // + DocCommands["FloatingToolbar"] = "zoom-controls"; + // + DocCommands["FloatingToolbarToggle"] = "zoom-controls-toggle"; + // + DocCommands["ForecastConfig"] = "forecast-config"; + // + DocCommands["ForecastToggle"] = "forecast-toggle"; + // + DocCommands["FormatWorkbook"] = "format-workbook"; + // + DocCommands["GeographicSearchQuery"] = "geographic-search-query"; + // + DocCommands["GeographicSearchLoadData"] = "geographic-search-load-data"; + // + DocCommands["GeographicSearchIsDataDoneLoading"] = "geographic-search-data-done-loading"; + // + DocCommands["GeographicSearchToggleVisibility"] = "geographic-search-toggle-visibility"; + // + DocCommands["GetEditConnectionPresModel"] = "get-edit-connection-pres-model"; + // + DocCommands["GetEditEnumeratedGroupPresModel"] = "get-edit-enumerated-group-pres-model"; + // + DocCommands["GetEditNestedGroupPresModel"] = "get-edit-nested-group-pres-model"; + // + DocCommands["GetFrameFinderPresModel"] = "get-frame-finder-pres-model"; + // + DocCommands["GetGoogleSheetsListPresModel"] = "get-google-sheets-list-pres-model"; + // + DocCommands["GetGoogleSheetPanePresModel"] = "get-google-sheet-pane-pres-model"; + // + DocCommands["GetInitialSQLPresModel"] = "get-initial-sql-pres-model"; + // + DocCommands["GetQueryBandingPresModel"] = "get-query-banding-pres-model"; + // + DocCommands["GetTabbedAuthenticationPresModel"] = "get-tabbed-authentication-pres-model"; + // + DocCommands["GetActiveSheet"] = "get-active-sheet"; + // + DocCommands["GetAlphaLevel"] = "get-alpha-level"; + // + DocCommands["GetAppConfig"] = "get-app-config"; + // + DocCommands["GetDisabledSecondaryDSFields"] = "get-disabled-secondaryds-fields"; + // + DocCommands["GetBlendingFields"] = "get-blending-fields"; + // + DocCommands["GetCalculationPresModel"] = "get-calculation-pres-model"; + // + DocCommands["GetCategoricalColor"] = "get-categorical-color"; + // + DocCommands["GetClientInfo"] = "get-client-info"; + // + DocCommands["GetCommands"] = "get-commands"; + // + DocCommands["GetConnectionDescriptionPresModel"] = "get-connection-description-pres-model"; + // + DocCommands["GetDSDropdownPresModel"] = "get-ds-dropdown-pres-model"; + // + DocCommands["GetDataPreviewWindowMessagePresModel"] = "get-data-preview-window-pres-model"; + // + DocCommands["GetDataSourcePresModel"] = "get-datasource-pres-model"; + // + DocCommands["GetDataSourceSortPresModel"] = "get-datasource-sort-pres-model"; + // + DocCommands["GetDataSourcePropertiesPresModel"] = "get-datasource-properties-pres-model"; + // + DocCommands["GetConnectionSettingsPresModel"] = "get-connection-settings-pres-model"; + // + DocCommands["GetDashboard"] = "get-dashboard"; + // + DocCommands["GetDataPreview"] = "get-data-preview"; + // + DocCommands["GetDatabaseEnumerationPresModel"] = "get-database-enumeration-pres-model"; + // + DocCommands["GetDefaultColor"] = "get-default-color"; + // + DocCommands["GetDefaultShape"] = "get-default-shape"; + // + DocCommands["GetDragPresModelForText"] = "get-drag-pres-model-for-text"; + // + DocCommands["GetDropTargetPresModel"] = "get-drop-target-pres-model"; + // + DocCommands["GetEditDataServerConnectionPresModel"] = "get-edit-data-server-connection-pres-model"; + // + DocCommands["GetEditDropLinesModel"] = "get-edit-drop-lines-model"; + // + DocCommands["GetEncodingState"] = "get-encoding-state"; + // + DocCommands["GetEncodingTypeMenuModel"] = "get-encoding-type-menu"; + // + DocCommands["GetExtSvcConfig"] = "get-ext-svc-config"; + // + DocCommands["GetForecastPresModel"] = "get-forecast-pres-model"; + // + DocCommands["GetJoinDescriptionPresModel"] = "get-join-description-pres-model"; + // + DocCommands["GetQuickFilter"] = "get-quick-filter"; + // + DocCommands["GetQuickFilters"] = "get-quick-filters"; + // + DocCommands["GetReferenceLinePresModel"] = "get-reference-line-pres-model"; + // + DocCommands["GetParameters"] = "get-parameters"; + // + DocCommands["GetParameterModels"] = "get-parameter-models"; + // + DocCommands["GetParametersRegistryInfo"] = "get-params-registry-info"; + // + DocCommands["GetPivotPresModel"] = "get-pivot-pres-model"; + // + DocCommands["GetScene"] = "get-scene"; + // + DocCommands["GetSchemaEnumerationPresModel"] = "get-schema-enumeration-pres-model"; + // + DocCommands["GetSheetsInfo"] = "get-sheets-info"; + // + DocCommands["GetShowMe"] = "get-show-me"; + // + DocCommands["GetStandardConnectionEnumerationPresModel"] = "get-standard-connection-enumeration-pres-model"; + // + DocCommands["GetStoredProcedureEnumerationPresModel"] = "get-stored-procedure-enumeration-pres-model"; + // + DocCommands["GetStoredProcedureParametersPresModel"] = "get-stored-procedure-parameters-pres-model"; + // + DocCommands["GetTableEnumerationPresModel"] = "get-table-enumeration-pres-model"; + // + DocCommands["GetTableCleaningPresModel"] = "get-table-cleaning-pres-model"; + // + DocCommands["GetTargetFieldList"] = "get-target-field-list"; + // + DocCommands["GetTopLevelConnectionDescriptionPresModel"] = "get-top-level-connection-description-pres-model"; + // + DocCommands["GetTypeInPillPresModel"] = "get-type-in-pill-pres-model"; + // + DocCommands["GetUberTipPresModel"] = "get-ubertip-pres-model"; + // + DocCommands["GetUnionInfoPresModel"] = "get-union-info-pres-model"; + // + DocCommands["GetVisual"] = "get-visual"; + // + DocCommands["GetVizData"] = "get-viz-data"; + // + DocCommands["GetWarehouseEnumerationPresModel"] = "get-warehouse-enumeration-pres-model"; + // + DocCommands["GetWorkbook"] = "get-workbook"; + // + DocCommands["GetWorldUpdate"] = "get-world-update"; + // + DocCommands["GoToSheet"] = "goto-sheet"; + // + DocCommands["HeapCorruptionCrash"] = "corrupt-heap"; + // + DocCommands["HideColumnFieldLabel"] = "hide-column-field-label"; + // + DocCommands["HideEmptyColsFlag"] = "hide-empty-cols"; + // + DocCommands["HideEmptyRowsFlag"] = "hide-empty-rows"; + // + DocCommands["HideLabel"] = "hide-label"; + // + DocCommands["HideRowFieldLabel"] = "hide-row-field-label"; + // + DocCommands["HierarchicalQuickFilterUpdateSetFunction"] = "hierarchical-quick-filter-update-set-function"; + // + DocCommands["IncludeInTooltip"] = "include-in-tooltip"; + // + DocCommands["IncludeOtherCategoricalBin"] = "include-other-cat-bin"; + // + DocCommands["IncrementExtract"] = "increment-extract"; + // + DocCommands["IncrementParameterValue"] = "incr-parameter-value"; + // + DocCommands["CreateCalc"] = "create-calc"; + // + DocCommands["EditCalc"] = "edit-calc"; + // + DocCommands["InvokeHyperlink"] = "invoke-hyperlink"; + // + DocCommands["KeepOnlyOrExcludeSelection"] = "keep-only-or-exclude-selection"; + // + DocCommands["LabelDrill"] = "label-drill"; + // + DocCommands["LabelDrillCtx"] = "label-drill-ctx"; + // + DocCommands["LevelDrill"] = "level-drill"; + // + DocCommands["LoadUrl"] = "load-url"; + // + DocCommands["ListPublishedDataSources"] = "list-published-datasources"; + // + DocCommands["MarkLabel"] = "mark-label"; + // + DocCommands["MarkTrail"] = "mark-trail"; + // + DocCommands["MemoryDumpObjectCounts"] = "memory-dump-object-counts"; + // + DocCommands["MemoryLeak"] = "memory-leak"; + // + DocCommands["Merge"] = "merge-or-split"; + // + DocCommands["MigrateDataSource"] = "migrate-data-source"; + // + DocCommands["ModifyMarksInSet"] = "add-or-remove-marks"; + // + DocCommands["MoveAreaAnnotationText"] = "move-area-annotation-text"; + // + DocCommands["MoveColumnTotals"] = "move-column-totals"; + // + DocCommands["MoveMark"] = "move-mark"; + // + DocCommands["MovePointAnnotation"] = "move-point-annotation"; + // + DocCommands["MovePointAnnotationTarget"] = "move-point-annotation-target"; + // + DocCommands["MoveReferenceLine"] = "move-reference-line"; + // + DocCommands["MoveRowTotals"] = "move-row-totals"; + // + DocCommands["NavigateToSheet"] = "navigate-to-sheet"; + // + DocCommands["PostCalcJoinClauseResult"] = "post-calc-join-clause-result"; + // + DocCommands["NewDocDashboard"] = "new-dashboard"; + // + DocCommands["NewDocWorksheet"] = "new-worksheet"; + // + DocCommands["NonRangedRemoveReferenceLine"] = "non-ranged-remove-reference-line"; + // + DocCommands["OptimizeExtract"] = "optimize-extract"; + // + DocCommands["OptOutActions"] = "opt-out-actions"; + // + DocCommands["PageHistorySettings"] = "page-history-settings"; + // + DocCommands["PageToggleTrails"] = "page-toggle-trails"; + // + DocCommands["ParseUIName"] = "parse-ui-name"; + // + DocCommands["Percentages"] = "percentages"; + // + DocCommands["Perspectives"] = "perspectives"; + // + DocCommands["PositionPointAnnotation"] = "position-point-annotation"; + // + DocCommands["ProtocolPoolLog"] = "protocol-pool-log"; + // + DocCommands["PublishDataSource"] = "publish-datasource"; + // + DocCommands["PublishDataSourceFromData"] = "publish-data-source-from-data"; + // + DocCommands["PublishDataSourceFromWorkbookData"] = "publish-data-source-from-workbook-data"; + // + DocCommands["QuantitativeQuickFilterEdit"] = "quantitative-quick-filter-edit"; + // + DocCommands["QuantitativeModeQuickFilter"] = "quantitative-mode-quick-filter"; + // + DocCommands["QueryMigrateDataSources"] = "query-migrate-data-sources"; + // + DocCommands["QuickSort"] = "quick-sort"; + // + DocCommands["RangedByIndexMerge"] = "ranged-by-index-merge"; + // + DocCommands["RangedByValueMerge"] = "ranged-by-value-merge"; + // + DocCommands["Record"] = "record"; + // + DocCommands["Redo"] = "redo"; + // + DocCommands["RefreshExtract"] = "refresh-extract"; + // + DocCommands["RefreshFromSource"] = "refresh-from-source"; + // + DocCommands["RelativeDateQuickFilterEdit"] = "relative-date-quick-filter-edit"; + // + DocCommands["RemoveAllReferenceLines"] = "remove-all-reference-lines"; + // + DocCommands["RemoveDrillPath"] = "remove-drill-path"; + // + DocCommands["RemoveExtract"] = "remove-extract"; + // + DocCommands["RemoveFieldFolder"] = "remove-field-folder"; + // + DocCommands["RemoveFieldLabel"] = "remove-field-label"; + // + DocCommands["RemoveFields"] = "remove-fields"; + // + DocCommands["RemoveFieldsFromShelf"] = "remove-fields-from-shelf"; + // + DocCommands["RemoveFromDrillPath"] = "remove-from-drill-path"; + // + DocCommands["RemoveFromFieldFolder"] = "remove-from-field-folder"; + // + DocCommands["RemoveReferenceLine"] = "remove-reference-line"; + // + DocCommands["RemoveSubtotals"] = "remove-subtotals"; + // + DocCommands["RenameDataSource"] = "rename-data-source"; + // + DocCommands["RenameDrillPath"] = "rename-drill-path"; + // + DocCommands["RenameFieldFolder"] = "rename-field-folder"; + // + DocCommands["RenameSheet"] = "rename-sheet"; + // + DocCommands["ReorderLabels"] = "reorder-labels"; + // + DocCommands["ReportBug"] = "report-bug"; + // + DocCommands["RequestDataSourcePresModel"] = "request-datasource-pres-model"; + // + DocCommands["ResetParameterCtrlTitle"] = "reset-parameter-ctrl-title"; + // + DocCommands["ResetTooltip"] = "reset-tooltip"; + // + DocCommands["ResizeAreaAnnotationText"] = "resize-area-annotation-text"; + // + DocCommands["ResizeAxis"] = "resize-axis"; + // + DocCommands["ResizeCell"] = "resize-cell"; + // + DocCommands["ResizeHeader"] = "resize-header"; + // + DocCommands["ResizePointAnnotation"] = "resize-point-annotation"; + // + DocCommands["Revert"] = "revert"; + // + DocCommands["RotateFieldLabel"] = "rotate-field-label"; + // + DocCommands["RotateLabel"] = "rotate-label"; + // + DocCommands["SplitFieldLabel"] = "split-field-label"; + // + DocCommands["RunAction"] = "run-action"; + // + DocCommands["RunScript"] = "run-script"; + // + DocCommands["RunUpdates"] = "run-update"; + // + DocCommands["SaveModel"] = "save-model"; + // + DocCommands["SavePublishedDStoFile"] = "save-published-ds-to-file"; + // + DocCommands["SelectDataSource"] = "select-data-source"; + // + DocCommands["SelectFieldsInShelf"] = "select-fields-in-shelf"; + // + DocCommands["SendDataConnectionTableViewMessage"] = "send-data-connection-tableview-message"; + // + DocCommands["SetActiveDataSourceName"] = "set-active-data-source-name"; + // + DocCommands["SetActiveConnectionName"] = "set-active-connection-name"; + // + DocCommands["SetActiveDataSource"] = "set-active-datasource"; + // + DocCommands["SetBasePalette"] = "set-base-palette"; + // + DocCommands["SetCategoricalColor"] = "set-categorical-color"; + // + DocCommands["SetDataCacheDelta"] = "set-data-cache-delta"; + // + DocCommands["SetDataPreviewAutoUpdate"] = "set-data-preview-auto-update"; + // + DocCommands["SetDataPreviewCustomFieldOrder"] = "set-data-preview-custom-field-order"; + // + DocCommands["SetDefaultColor"] = "set-default-color"; + // + DocCommands["SetDefaultShape"] = "set-default-shape"; + // + DocCommands["SetFilterContext"] = "set-filter-context"; + // + DocCommands["SetFilterShared"] = "set-filter-shared"; + // + DocCommands["SetInitialSQL"] = "set-initial-sql"; + // + DocCommands["SetItemColor"] = "set-item-color"; + // + DocCommands["SetItemColorResetCustomization"] = "set-item-color-reset-customization"; + // + DocCommands["SetItemEncodingType"] = "set-item-encoding-type"; + // + DocCommands["SetMarkSize"] = "set-mark-size"; + // + DocCommands["SetPageNavFlag"] = "set-page-flag"; + // + DocCommands["SetParameterCtrlDisplayFlags"] = "set-parameter-ctrl-display-flags"; + // + DocCommands["SetParameterCtrlDisplayMode"] = "set-parameter-ctrl-display-mode"; + // + DocCommands["SetParameterCtrlTitle"] = "set-parameter-ctrl-title"; + // + DocCommands["SetParameterValue"] = "set-parameter-value"; + // + DocCommands["SetPrimitive"] = "set-primitive"; + // + DocCommands["SetQueryBanding"] = "set-query-banding"; + // + DocCommands["SetQuickFilterIncludedValues"] = "set-quick-filter-included"; + // + DocCommands["SetReferenceLineFormula"] = "set-reference-line-formula"; + // + DocCommands["SetReferenceLineConstantValue"] = "set-reference-line-constant-value"; + // + DocCommands["SetSheetFormatting"] = "set-sheet-formatting"; + // + DocCommands["SetSheetSize"] = "set-sheet-size"; + // + DocCommands["SetTotalsType"] = "set-totals-type"; + // + DocCommands["SetWorkbookLocale"] = "set-workbook-locale"; + // + DocCommands["ShowCatCtrlQuickFilter"] = "show-cat-ctrl-quick-filter"; + // + DocCommands["ShowColFieldNamesFlag"] = "show-col-field-names"; + // + DocCommands["ShowColTotalsFlag"] = "show-col-totals"; + // + DocCommands["ShowColumnFieldLabel"] = "show-column-field-label"; + // + DocCommands["ShowEmptyColsFlag"] = "show-empty-cols"; + // + DocCommands["ShowEmptyRowsFlag"] = "show-empty-rows"; + // + DocCommands["ShowForecastEditor"] = "show-forecast-editor"; + // + DocCommands["ShowFullRange"] = "show-full-range"; + // + DocCommands["ShowHeader"] = "show-header"; + // + DocCommands["ShowHiddenData"] = "show-hidden-data"; + // + DocCommands["ShowMe"] = "show-me"; + // + DocCommands["ShowQuantCtrlQuickFilter"] = "show-quant-ctrl-quick-filter"; + // + DocCommands["ShowQuickFilterDoc"] = "show-quickfilter-doc"; + // + DocCommands["ShowReferenceLineEditor"] = "show-reference-line-editor"; + // + DocCommands["ShowReferenceLineConstantValueEditor"] = "show-reference-line-constant-value-editor"; + // + DocCommands["ShowReferenceLineFormatter"] = "show-reference-line-formatter"; + // + DocCommands["ShowRowFieldLabel"] = "show-row-field-label"; + // + DocCommands["ShowRowFieldNamesFlag"] = "show-row-field-names"; + // + DocCommands["ShowRowTotalsFlag"] = "show-row-totals"; + // + DocCommands["SimpleCommandList"] = "simple-command-list"; + // + DocCommands["Sleep"] = "sleep"; + // + DocCommands["SleepBackgroundThread"] = "sleep-background-thread"; + // + DocCommands["SortDataGridByColumn"] = "sort-datagrid-by-column"; + // + DocCommands["SortDataGridFields"] = "sort-datagrid-fields"; + // + DocCommands["SpecialValues"] = "special-values"; + // + DocCommands["SplitField"] = "split-field"; + // + DocCommands["StackMarks"] = "stack-marks"; + // + DocCommands["StackOverflowCrash"] = "stack-overflow"; + // + DocCommands["SubtotalAggregation"] = "subtotal-aggregation"; + // + DocCommands["Subtotals"] = "subtotals"; + // + DocCommands["SwapFields"] = "swap-fields"; + // + DocCommands["SwapRowsAndColumns"] = "swap-rows-and-columns"; + // + DocCommands["TableauException"] = "tableau-exception"; + // + DocCommands["ToggleDropLines"] = "toggle-drop-lines"; + // + DocCommands["ToggleFieldBlending"] = "toggle-field-blending"; + // + DocCommands["ToggleMarkLabels"] = "toggle-mark-labels"; + // + DocCommands["TogglePageTitle"] = "toggle-page-title"; + // + DocCommands["ToggleParameterCtrlDisplayFlag"] = "toggle-parameter-ctrl-display-flag"; + // + DocCommands["ToggleParameterCtrlTitle"] = "toggle-parameter-ctrl-title"; + // + DocCommands["ToggleQuickFilterTitle"] = "toggle-quick-filter-title"; + // + DocCommands["ToggleVizNavigationSetting"] = "toggle-viz-navigation-setting"; + // + DocCommands["Undo"] = "undo"; + // + DocCommands["UnhideData"] = "unhide-data"; + // + DocCommands["UnhideLabel"] = "unhide-label"; + // + DocCommands["UpdateAreaAnnotation"] = "update-area-annotation"; + // + DocCommands["UpdateCalcScopeIsolation"] = "update-scope-isolation-for-calculation"; + // + DocCommands["UpdateDataServerConnectionInfo"] = "update-data-server-connection-info"; + // + DocCommands["UpdatePointAnnotationPullback"] = "update-point-annotation-pullback"; + // + DocCommands["UpdateTableCalcInfo"] = "update-table-calc-infomation"; + // + DocCommands["UpgradeExtract"] = "upgrade-extract"; + // + DocCommands["UseExtract"] = "use-extract"; + // + DocCommands["ValidateDrillPathName"] = "validate-drill-path-name"; + // + DocCommands["ValidateFormula"] = "validate-formula"; + // + DocCommands["ValidateInitialSQL"] = "validate-initial-sql"; + // + DocCommands["ValidateQueryBanding"] = "validate-query-banding"; + // + DocCommands["ValidateTypeInPill"] = "validate-type-in-pill"; + // + DocCommands["ViewParameterCtrls"] = "view-param-ctrls"; + // + DocCommands["ViewQuickFilters"] = "view-quick-filters"; + // + DocCommands["GetSchema"] = "get-schema"; + // + DocCommands["GetSchemaViewerDataSchema"] = "get-schema-viewer-data-schema"; + // + DocCommands["ConvertToDimension"] = "convert-to-dimension"; + // + DocCommands["ConvertToMeasure"] = "convert-to-measure"; + // + DocCommands["ConvertToContinuous"] = "convert-to-continuous"; + // + DocCommands["ConvertToDiscrete"] = "convert-to-discrete"; + // + DocCommands["RenameField"] = "rename-field"; + // + DocCommands["HideField"] = "hide-field"; + // + DocCommands["UnhideField"] = "unhide-field"; + // + DocCommands["HideUnusedFields"] = "hide-unused-fields"; + // + DocCommands["DuplicateFields"] = "duplicate-fields"; + // + DocCommands["CleanValues"] = "clean-values"; + // + DocCommands["ParseDate"] = "parse-date"; + // + DocCommands["MakeDate"] = "make-date"; + // + DocCommands["SetQualifyNames"] = "set-qualify-names"; + // + DocCommands["CreateMeasureFromColumn"] = "create-measure-from-column"; + // + DocCommands["RemoveFromSchemaDrillPath"] = "remove-from-schema-drill-path"; + // + DocCommands["AddToSchemaDrillPath"] = "add-to-schema-drill-path"; + // + DocCommands["RemoveSchemaDrillPath"] = "remove-schema-drill-path"; + // + DocCommands["ShowHiddenFields"] = "show-hidden-fields"; + // + DocCommands["ShowAliases"] = "show-aliases"; + // + DocCommands["SetRowDisplayCount"] = "set-row-display-count"; + // + DocCommands["ShowStructure"] = "show-structure"; + // + DocCommands["GroupByTable"] = "group-by-table"; + // + DocCommands["ChangeDataType"] = "change-data-type"; + // + DocCommands["ChangePivotStrategy"] = "change-pivot-strategy"; + // + DocCommands["ChangeDisplayAlias"] = "change-display-alias"; + // + DocCommands["SetIncludeSharedMembers"] = "set-include-shared-members"; + // + DocCommands["SetUtilityDimension"] = "set-utility-dimension"; + // + DocCommands["SetDefaultHierarchy"] = "set-default-hierarchy"; + // + DocCommands["DataSourceSortOrder"] = "data-source-sort-order"; + // + DocCommands["ClearUtilityDimension"] = "clear-utility-dimension"; + // + DocCommands["ClearDefaultSort"] = "clear-default-sort"; + // + DocCommands["SetDefaultAggregation"] = "set-default-aggregation"; + // + DocCommands["SetDefaultVTAggregation"] = "set-default-vtaggregation"; + // + DocCommands["ChangeFiscalYear"] = "change-fiscal-year"; + // + DocCommands["ChangeSemanticRole"] = "change-semantic-role"; + // + DocCommands["AddToSheet"] = "add-to-sheet"; + // + DocCommands["DropSchemaSelOnShelf"] = "drop-schema-sel-on-shelf"; + // + DocCommands["AddToSchemaFieldFolder"] = "add-to-schema-field-folder"; + // + DocCommands["RemoveFromSchemaFieldFolder"] = "remove-from-schema-field-folder"; + // + DocCommands["RemoveSchemaFieldFolder"] = "remove-schema-field-folder"; + // + DocCommands["DefaultTextFormat"] = "default-text-format"; + // + DocCommands["EditSchemaCaption"] = "edit-schema-caption"; + // + DocCommands["ResetSchemaCaption"] = "reset-schema-caption"; + // + DocCommands["CreateOutlierSet"] = "create-outlier-set"; + })(DocCommands = exports.DocCommands || (exports.DocCommands = {})); + var UICommands; + (function (UICommands) { + // + UICommands["About"] = "about"; + // + UICommands["AddDataServerDataSourceUI"] = "add-data-server-datasource-ui"; + // + UICommands["SwitchToDocumentAndAddDataServerDataSourceUI"] = "switch-to-document-and-add-data-server-ds-ui"; + // + UICommands["AddDrillPathUI"] = "add-drillpath-ui"; + // + UICommands["AddFieldFolderUI"] = "add-field-folder-ui"; + // + UICommands["AddFileToExtractUI"] = "add-file-to-extract-ui"; + // + UICommands["AddDataSourceToExtractUI"] = "add-data-source-to-extract-ui"; + // + UICommands["AddQCToSheetUI"] = "add-qc-to-sheet-ui"; + // + UICommands["AddReferenceLineUI"] = "add-reference-line-ui"; + // + UICommands["AddSchemaFieldFolderUI"] = "add-to-schema-field-folder-ui"; + // + UICommands["AddTableauServerDSConnectionUI"] = "add-tableau-server-ds-connection-ui"; + // + UICommands["AddToSchemaDrillPathUI"] = "add-to-schema-drillpath-ui"; + // + UICommands["AddToSheetUI"] = "add-to-sheet-ui"; + // + UICommands["AnnotateUI"] = "annotate-ui"; + // + UICommands["AppendDataSourceToRemoteExtractUI"] = "append-data-source-to-remote-extract-ui"; + // + UICommands["AttemptConnectDataSourcesOnSheetUI"] = "attempt-connect-datasources-on-sheet-ui"; + // + UICommands["AttemptDataSourceConnectionUI"] = "attempt-datasource-connect-ui"; + // + UICommands["AutoHideSheet"] = "auto-hide-sheet"; + // + UICommands["AutomationClickMRUItem"] = "click-mru-item"; + // + UICommands["CalculatedMembersUI"] = "calculated-members-ui"; + // + UICommands["ChangeAggregationUI"] = "change-aggregation-ui"; + // + UICommands["ChangeDataServerLogonUI"] = "change-data-server-logon-ui"; + // + UICommands["ChangeEssbaseAliasFile"] = "change-essbase-alias-file"; + // + UICommands["ChangeFieldTypeUI"] = "change-field-type-ui"; + // + UICommands["ChangeTabColorSheet"] = "change-tab-color-sheet"; + // + UICommands["CheckForProductUpdates"] = "check-for-product-updates"; + // + UICommands["ClearDashboardUI"] = "clear-dashboard-ui"; + // + UICommands["ClearSheetUI"] = "clear-sheet-ui"; + // + UICommands["ClearStoryUI"] = "clear-story-ui"; + // + UICommands["ClearVizUI"] = "clear-viz-ui"; + // + UICommands["CloseCalculationUI"] = "close-calculation-ui"; + // + UICommands["CloseDataSourceUI"] = "close-datasource-ui"; + // + UICommands["CloseWorkbook"] = "close-workbook"; + // + UICommands["ColorLegendEditUI"] = "color-legend-edit-ui"; + // + UICommands["CommitPillEditUI"] = "commit-pill-edit-ui"; + // + UICommands["ConnectDataSourceUI"] = "connect-datasource-ui"; + // + UICommands["ConnectRepromptUI"] = "connect-reprompt-ui"; + // + UICommands["ConnectVariablePromptUI"] = "connect-variable-prompt-ui"; + // + UICommands["ConnectVariablePromptMatchingUI"] = "connect-variable-prompt-matching-ui"; + // + UICommands["ConnectionAddNewCustomSQLUI"] = "connection-add-new-custom-sql-ui"; + // + UICommands["ConnectionAddNewTableUI"] = "connection-add-new-table-ui"; + // + UICommands["ConnectionDataGridCopyUI"] = "connection-data-grid-copy-ui"; + // + UICommands["ConnectionEditCustomSQLUI"] = "connection-custom-sql-ui"; + // + UICommands["ConnectionEditExtractUI"] = "connection-extract-ui"; + // + UICommands["ConnectionEditDBVariablesUI"] = "connection-edit-db-variables-ui"; + // + UICommands["ConnectionEditConnectionUI"] = "connection-edit-connection-ui"; + // + UICommands["ConnectionFinalizeDataSourceUI"] = "connection-finalize-datasource-ui"; + // + UICommands["ConnectionFinalizeExtractStatesUI"] = "connection-finalize-extract-states-ui"; + // + UICommands["ConnectionGetTypeGroupPresModelUI"] = "connection-get-type-group-pres-model-ui"; + // + UICommands["ConnectionGetSavedDataSourcesPresModelUI"] = "connection-get-saved-ds-pres-model-ui"; + // + UICommands["ConnectionPartitioningFailureUI"] = "connection-partitioning-failure-ui"; + // + UICommands["ConnectionReplaceTableUI"] = "connection-replace-table-ui"; + // + UICommands["ConnectionSearchCatalogUI"] = "connection-search-catalog-ui"; + // + UICommands["ConnectionSearchCubeUI"] = "connection-search-cube-ui"; + // + UICommands["ConnectionSelectCatalogUI"] = "connection-select-catalog-ui"; + // + UICommands["ConnectionSelectCubeUI"] = "connection-select-cube-ui"; + // + UICommands["ConnectionSelectDatabaseUI"] = "connection-select-database-ui"; + // + UICommands["ConnectionSelectStandardConnectionUI"] = "connection-select-standard-connection-ui"; + // + UICommands["ConnectionSelectStoredProcedureUI"] = "connection-select-stored-procedure-ui"; + // + UICommands["ConnectionShowEditTableDialogUI"] = "connection-show-edit-table-ui"; + // + UICommands["ConnectionShowPivotDialogUI"] = "conneciton-show-pivot-dialog-ui"; + // + UICommands["ConnectionSortCatalogUI"] = "connection-sort-catalog-ui"; + // + UICommands["ConnectionSortCubeUI"] = "connection-sort-cube-ui"; + // + UICommands["ConnectionValidateCustomSQLUI"] = "connection-validate-custom-sql-ui"; + // + UICommands["ConnectToCloudFile"] = "connect-to-cloud-file"; + // + UICommands["ConnectToDataServerSourceUI"] = "connect-data-server-datasource-ui"; + // + UICommands["ConnectionConvertToSQLUI"] = "connection-convert-to-sql-ui"; + // + UICommands["ConnectionRenameConnectionUI"] = "connection-rename-connection-ui"; + // + UICommands["ExportUnderlyingDataToCSVUI"] = "export-to-csv-with-progress-ui"; + // + UICommands["ConnectODBCUI"] = "connect-odbc-ui"; + // + UICommands["CopyCrosstab"] = "copy-crosstab"; + // + UICommands["CopyData"] = "copy-data"; + // + UICommands["CopyDrillPathFieldsUI"] = "copy-drill-path-fields-ui"; + // + UICommands["CopyFieldsDefnUI"] = "copy-fields-defn-ui"; + // + UICommands["CopyImage"] = "copy-image"; + // + UICommands["CopyImageDashboard"] = "copy-image-dashboard"; + // + UICommands["CopyImageWorksheet"] = "copy-image-worksheet"; + // + UICommands["CopyImageStory"] = "copy-image-story"; + // + UICommands["CopyWorksheetFormatting"] = "copy-formatting"; + // + UICommands["CreateCalculatedSetUI"] = "create-calculated-set-ui"; + // + UICommands["CreateCalculationUI"] = "create-calculation-ui"; + // + UICommands["CreateCombinedFieldUI"] = "create-combined-field-ui"; + // + UICommands["CreateConnectionUI"] = "create-connection-ui"; + // + UICommands["CreateDateBinUI"] = "create-Date-bin-ui"; + // + UICommands["CreateGroupSelectionUI"] = "create-group-selection-ui"; + // + UICommands["CreateGroupUI"] = "create-group-ui"; + // + UICommands["CreateIdentitySet"] = "create-user-filter"; + // + UICommands["CreateLeafConnectionUI"] = "create-leaf-connection-ui"; + // + UICommands["CreateNumericBinsUI"] = "create-numeric-bins-ui"; + // + UICommands["CreateSetUI"] = "create-set-ui"; + // + UICommands["CustomDateAggregationUI"] = "custom-date-aggregation-ui"; + // + UICommands["CutDrillPathFieldsUI"] = "cut-drill-path-fields-ui"; + // + UICommands["CutFieldsDefnUI"] = "cut-fields-defn-ui"; + // + UICommands["DeactivateDashboard"] = "deactivate-dashboard"; + // + UICommands["DeleteCookies"] = "delete-cookies"; + // + UICommands["DeleteFieldsUI"] = "delete-fields-ui"; + // + UICommands["DeleteSheetUI"] = "delete-sheet-ui"; + // + UICommands["DescribeAdhocClusterUI"] = "describe-adhoc-cluster-ui"; + // + UICommands["DescribeDrillPathUI"] = "describe-drillpath-ui"; + // + UICommands["DescribeFieldUI"] = "describe-field-ui"; + // + UICommands["DescribeForecastUI"] = "describe-forecast-ui"; + // + UICommands["DescribeSchemaDrillPathUI"] = "describe-schema-drillpath-ui"; + // + UICommands["DescribeTrendLine"] = "describe-trend-line"; + // + UICommands["DescribeTrendModel"] = "describe-trend-model"; + // + UICommands["OpenDiscoverPaneLinks"] = "open-discover-pane-links"; + // + UICommands["DismissGoToWorksheetTooltipUI"] = "dismiss-go-to-worksheet-tooltip-ui"; + // + UICommands["DownloadCopyDataSource"] = "download-copy-data-source"; + // + UICommands["DrilldownUI"] = "drilldown-ui"; + // + UICommands["DropSchemaSelOnShelfUI"] = "drop-schema-sel-on-shelf-ui"; + // + UICommands["DropUI"] = "drop-ui"; + // + UICommands["DuplicateDataSourceUI"] = "duplicate-datasource-ui"; + // + UICommands["DuplicateSheetAsCrosstab"] = "duplicate-sheet-as-crosstab"; + // + UICommands["DuplicateSheetOrCrosstabUI"] = "duplicate-sheet-or-crosstab-ui"; + // + UICommands["DuplicateSheetUI"] = "duplicate-sheet-ui"; + // + UICommands["EditAliasesUI"] = "edit-aliases-ui"; + // + UICommands["EditAnnotation"] = "edit-annotation"; + // + UICommands["EditAxisUI"] = "edit-axis-ui"; + // + UICommands["EditCalculatedSetUI"] = "edit-calculated-set-ui"; + // + UICommands["EditCalculationUI"] = "edit-calculation-ui"; + // + UICommands["EditCaptionUI"] = "edit-caption"; + // + UICommands["EditCombinedFieldUI"] = "edit-combined-field"; + // + UICommands["EditCopyFieldUI"] = "edit-copy-field-ui"; + // + UICommands["EditDataSourceUI"] = "edit-datasource-ui"; + // + UICommands["EditDataSourceFieldAliases"] = "edit-datasource-field-aliases"; + // + UICommands["EditDataSourceFiltersUI"] = "edit-datasource-filters-ui"; + // + UICommands["EditDataSourceSitePathsUI"] = "edit-datasource-site-paths-ui"; + // + UICommands["EditDateBinUI"] = "edit-date-bin-ui"; + // + UICommands["EditDefaultSortUI"] = "edit-default-sort-ui"; + // + UICommands["EditDropLinesUI"] = "edit-drop-lines-ui"; + // + UICommands["EditDropFieldUI"] = "edit-drop-field-ui"; + // + UICommands["EditDataSourceRelationshipsUI"] = "edit-datasource-relationships-ui"; + // + UICommands["EditEnumeratedSetUI"] = "edit-enumerated-set"; + // + UICommands["EditFilterQuickFilter"] = "edit-filter-quick-filter"; + // + UICommands["EditFilterUI"] = "edit-filter-ui"; + // + UICommands["EditForecastUI"] = "edit-forecast-ui"; + // + UICommands["EditGroupUI"] = "edit-group-ui"; + // + UICommands["EditGroupValue"] = "edit-group-value"; + // + UICommands["EditGroupValueLabel"] = "edit-group-value-label"; + // + UICommands["EditLegendGroupValueUI"] = "edit-group-value-legend"; + // + UICommands["EditImageUI"] = "edit-image-ui"; + // + UICommands["EditLegendMemberAliasUI"] = "edit-legend-member-alias-ui"; + // + UICommands["EditLegendTitleUI"] = "edit-legend-title-ui"; + // + UICommands["EditMarkColorUI"] = "edit-mark-color-ui"; + // + UICommands["EditMarkShapeUI"] = "edit-mark-shape-ui"; + // + UICommands["EditMemberAlias"] = "edit-member-alias"; + // + UICommands["EditMemberAliasLabel"] = "edit-member-alias-label"; + // + UICommands["EditPageTitleUI"] = "edit-page-title-ui"; + // + UICommands["EditParameterCtrlTitle"] = "edit-param-control-title"; + // + UICommands["EditPdfPageSelectionUI"] = "edit-pdf-page-selection-ui"; + // + UICommands["EditPrimaryAliasesUI"] = "edit-primary-aliases-ui"; + // + UICommands["EditReferenceLine"] = "edit-reference-line"; + // + UICommands["EditSchemaCalculationUI"] = "edit-schema-calculation-ui"; + // + UICommands["EditSchemaCalculationRangeUI"] = "edit-schema-calculation-range-ui"; + // + UICommands["EditSchemaCaptionUI"] = "edit-schema-caption-ui"; + // + UICommands["EditSchemaFieldAliasUI"] = "edit-schema-field-alias-ui"; + // + UICommands["ResetSchemaCaptionUI"] = "reset-schema-field-alias-ui"; + // + UICommands["ResetMultipleSchemaCaptionsUI"] = "reset-multiple-schema-field-alias-ui"; + // + UICommands["EditSchemaNumericBinsUI"] = "edit-schema-numeric-bins-ui"; + // + UICommands["EditSetUI"] = "edit-set-ui"; + // + UICommands["EditTitleQuickFilter"] = "edit-title-quick-filter"; + // + UICommands["EditTitleUI"] = "edit-title"; + // + UICommands["EditTooltipUI"] = "edit-tooltip"; + // + UICommands["EditTrendLinesUI"] = "edit-trend-lines-ui"; + // + UICommands["EditUserDescriptionUI"] = "edit-user-description-ui"; + // + UICommands["EditWMSMapTileServer"] = "edit-wms-map-tile-server"; + // + UICommands["EditZoneParam"] = "edit-zone-param"; + // + UICommands["EditZoneUrl"] = "edit-zone-url"; + // + UICommands["EstablishConnectionUI"] = "establish-connection-ui"; + // + UICommands["EstablishTableauServerConnectionUI"] = "establish-tableau-server-connection-ui"; + // + UICommands["ExecuteUIAutomationButton"] = "execute-ui-button-action"; + // + UICommands["ExecuteUIAutomationComboBox"] = "execute-ui-combo-box-action"; + // + UICommands["ExecuteUIAutomationGenericWidget"] = "execute-ui-generic-widget-action"; + // + UICommands["ExecuteUIAutomationLabel"] = "execute-ui-label-action"; + // + UICommands["ExecuteUIAutomationMenu"] = "execute-ui-menu-action"; + // + UICommands["ExecuteUIAutomationItemView"] = "execute-ui-item-view-action"; + // + UICommands["ExecuteUIAutomationTextBox"] = "execute-ui-text-box-action"; + // + UICommands["ExecuteUIAutomationToggleButton"] = "execute-ui-toggle-button-action"; + // + UICommands["ExecuteUIAutomationSlider"] = "execute-ui-slider-action"; + // + UICommands["ExecuteUIAutomationWindow"] = "execute-ui-window-action"; + // + UICommands["ExecuteUIAutomationWebView"] = "execute-ui-web-view-action"; + // + UICommands["ExecuteUIAutomationTab"] = "execute-ui-tab-action"; + // + UICommands["ExecuteUIAutomationTextBrowser"] = "execute-ui-text-browser-action"; + // + UICommands["ExitApplication"] = "exit-application"; + // + UICommands["ExportData"] = "export-data"; + // + UICommands["ExportDataSourceUI"] = "export-datasource-ui"; + // + UICommands["ExportPackagedWorkbook"] = "export-packaged"; + // + UICommands["ExportWorkbookSheetsUI"] = "export-workbook-sheets-ui"; + // + UICommands["ExtSvcConfigUI"] = "ext-svc-config-ui"; + // + UICommands["ExtractHistory"] = "extract-history"; + // + UICommands["ExtractPropertiesUI"] = "extract-properties-ui"; + // + UICommands["ExtractUI"] = "extract-ui"; + // + UICommands["FilterFieldLabelUI"] = "filter-field-label-ui"; + // + UICommands["FormatAnnotation"] = "format-annotation"; + // + UICommands["FormatAxisUI"] = "format-axis-ui"; + // + UICommands["FormatCaptionTitleUI"] = "format-caption-title"; + // + UICommands["FormatField"] = "format-pane"; + // + UICommands["FormatFieldLabelUI"] = "format-field-label-ui"; + // + UICommands["FormatLabel"] = "format-label"; + // + UICommands["FormatLegendsUI"] = "format-legends-ui"; + // + UICommands["FormatReferenceLine"] = "format-reference-line"; + // + UICommands["FormatUI"] = "format-ui"; + // + UICommands["FullScreen"] = "fullscreen"; + // + UICommands["GetDashboardSidePaneMode"] = "get-dashboard-sidepane-mode"; + // + UICommands["GetDebuggingInfo"] = "get-debugging-info"; + // + UICommands["GetIconPathForEncodingType"] = "get-icon-path-for-encoding-type"; + // + UICommands["GetIconPathForPrimitiveType"] = "get-icon-path-for-primitive-type"; + // + UICommands["GetTableOptionsPresModel"] = "get-table-options-pres-model"; + // + UICommands["GetWindowNameUI"] = "get-window-name"; + // + UICommands["GetWorksheetSidePaneMode"] = "get-worksheet-sidepane-mode"; + // + UICommands["GetHiddenSheets"] = "get-hidden-sheets"; + // + UICommands["GetOpenPaneMRUs"] = "get-open-pane-mrus"; + // + UICommands["GetOpenPaneSampleWorkbooks"] = "get-open-pane-sample-workbooks"; + // + UICommands["GetRetargetDataSourcePresModelUI"] = "get-retarget-datasource-pres-model-ui"; + // + UICommands["GetSchemaViewerPresModel"] = "get-schema-viewer-pres-model"; + // + UICommands["GetSelectedSheets"] = "get-selected-sheets"; + // + UICommands["GetSheetSorterThumbnail"] = "get-sheet-sorter-thumbnail"; + // + UICommands["GetSheetTabUIThumbnail"] = "get-sheet-tab-ui-thumbnail"; + // + UICommands["GetSheetTabUIText"] = "get-sheet-tab-ui-text"; + // + UICommands["GetVisibleTreeItems"] = "get-visible-tree-items"; + // + UICommands["GotoSheetRange"] = "goto"; + // + UICommands["GotoURL"] = "goto-url"; + // + UICommands["HideCaptionUI"] = "hide-caption"; + // + UICommands["HideFilmstripUI"] = "hide-filmstrip-ui"; + // + UICommands["HideTitleUI"] = "hide-title"; + // + UICommands["HideZoneUI"] = "hide-zone-ui"; + // + UICommands["HideAllSheetsUI"] = "hide-all-sheets-ui"; + // + UICommands["UnhideAllSheetsUI"] = "unhide-all-sheets-ui"; + // + UICommands["ImportLocalDataUI"] = "import-local-data-ui"; + // + UICommands["ImportMapSource"] = "import-map-source"; + // + UICommands["ImportMapSourceUI"] = "import-map-source-ui"; + // + UICommands["ImportWorkbookUI"] = "import-workbook-ui"; + // + UICommands["LoadDefaultFormattingUI"] = "load-formatting-ui"; + // + UICommands["LocateFieldUI"] = "locate-field-ui"; + // + UICommands["LogMemoryUsage"] = "log-memory-usage"; + // + UICommands["ManageLicensing"] = "manage-licensing"; + // + UICommands["ManageMapbox"] = "manage-mapbox"; + // + UICommands["ManagePublicWorkbooks"] = "manage-public"; + // + UICommands["ManageMapServices"] = "manage-map-services"; + // + UICommands["MapLayersUI"] = "map-layers-ui"; + // + UICommands["ManageWMS"] = "manage-wms"; + // + UICommands["UpgradeDataSourcesUI"] = "upgrade-datasources-ui"; + // + UICommands["UpgradeDataSourceUI"] = "upgrade-datasource-ui"; + // + UICommands["MoveRepository"] = "move-repository"; + // + UICommands["NewSchemaDrillPathUI"] = "new-schema-drill-path-ui"; + // + UICommands["NewUIDashboard"] = "new-dashboard-ui"; + // + UICommands["NewUIWorksheet"] = "new-worksheet-ui"; + // + UICommands["NewUIStoryboard"] = "new-storyboard-ui"; + // + UICommands["NewWorkbook"] = "new-workbook"; + // + UICommands["NextSheet"] = "next-sheet"; + // + UICommands["NonRangedEditReferenceLine"] = "non-ranged-edit-reference-line"; + // + UICommands["OpenBookmark"] = "open-bookmark"; + // + UICommands["OpenFromWorkgroup"] = "open-workbook-from-workgroup"; + // + UICommands["OpenMapSource"] = "open-map-source"; + // + UICommands["OpenMapSourceUI"] = "open-map-source-ui"; + // + UICommands["OpenSampleWorkbook"] = "open-sample-workbook"; + // + UICommands["OpenWorkbook"] = "open-workbook"; + // + UICommands["OpenRecentWorkbook"] = "open-recent-workbook"; + // + UICommands["OpenOtherFiles"] = "open-other-files"; + // + UICommands["OptimizeExtractUI"] = "optimize-extract-ui"; + // + UICommands["PageSetup"] = "page-setup"; + // + UICommands["Paste"] = "paste"; + // + UICommands["PasteFieldsDefnUI"] = "paste-fields-defn-ui"; + // + UICommands["PasteWorksheetFormatting"] = "paste-formatting"; + // + UICommands["PDFExport"] = "export-pdf"; + // + UICommands["PerspectivesUI"] = "perspectives-ui"; + // + UICommands["PresentationMode"] = "presentation-mode"; + // + UICommands["Print"] = "print"; + // + UICommands["PromptScript"] = "prompt-command"; + // + UICommands["PropertiesDataSourceUI"] = "properties-datasource-ui"; + // + UICommands["PublishDatasourceToWorkgroup"] = "publish-datasource-to-workgroup"; + // + UICommands["PublishDatasourceToWorkgroupFromData"] = "publish-datasource-to-workgroup-from-data"; + // + UICommands["PublishDatasourceToWorkgroupRange"] = "publish-datasource-to-workgroup-range"; + // + UICommands["PublishWorkbookToWorkgroup"] = "publish-workbook-to-workgroup"; + // + UICommands["PublishDatasourceToWorkgroupFromWorkbookData"] = "publish-datasource-to-workgroup-from-workbook-data"; + // + UICommands["PromptForDataSourceFileUI"] = "prompt-for-datasource-file-ui"; + // + UICommands["PromptUnknownWDCUrlUI"] = "prompt-unknown-wdc-url-ui"; + // + UICommands["QueryDataSourceUI"] = "query-datasource-ui"; + // + UICommands["QuickFilterFieldLabelUI"] = "quick-filter-field-label-ui"; + // + UICommands["QuickTableCalcUI"] = "quick-table-calc-ui"; + // + UICommands["ReconnectMapSourceUI"] = "reconnect-map-source-ui"; + // + UICommands["RecordPerformance"] = "record-perf"; + // + UICommands["RefreshAllExtractsUI"] = "refresh-all-extracts-ui"; + // + UICommands["RefreshAllThumbnailsUI"] = "refresh-all-thumbnails"; + // + UICommands["RefreshAutoExtractUI"] = "refresh-auto-extract-ui"; + // + UICommands["RefreshDataSourceUI"] = "refresh-datasource-ui"; + // + UICommands["RefreshExtractUI"] = "refresh-extract-ui"; + // + UICommands["RefreshFromSourceUI"] = "refresh-from-source-ui"; + // + UICommands["RefreshLocalDataUI"] = "refresh-local-data-ui"; + // + UICommands["RefreshThumbnailUI"] = "refresh-thumbnail"; + // + UICommands["ReleaseMemory"] = "release-memory"; + // + UICommands["RemoveAnnotation"] = "remove-annotation"; + // + UICommands["RemoveExtractUI"] = "remove-extract-ui"; + // + UICommands["RemoveMRUItem"] = "remove-mru"; + // + UICommands["RemoveSavedDataSourceUI"] = "remove-saved-datasource"; + // + UICommands["RemoveSheetFromDashboardUI"] = "remove-sheet-from-dashboard-ui"; + // + UICommands["RemoveTableUI"] = "remove-table-ui"; + // + UICommands["RenameDataSourceUI"] = "rename-datasource-ui"; + // + UICommands["RenameSchemaFieldFolderUI"] = "rename-field-folder-ui"; + // + UICommands["RenameSchemaDrillPathUI"] = "rename-schema-drillpath-ui"; + // + UICommands["RenameSheetUI"] = "rename-sheet-ui"; + // + UICommands["ReorderSheetsUI"] = "reorder-sheets-ui"; + // + UICommands["ReplaceDataSourceWithDataServerDataSourceUI"] = "replace-datasource-with-data-server-datasource-ui"; + // + UICommands["ReplaceFieldUI"] = "replace-field-ui"; + // + UICommands["ResetCaptionUI"] = "reset-caption-ui"; + // + UICommands["ResetCards"] = "reset-cards"; + // + UICommands["ResetLocalDataUI"] = "remove-local-data-ui"; + // + UICommands["ResetMessages"] = "reset-messages"; + // + UICommands["StartOnlineSyncClient"] = "start-online-sync-client"; + // + UICommands["ResetTitleUI"] = "reset-title-ui"; + // + UICommands["ResetToDefaultsMapCard"] = "reset-map-to-defaults"; + // + UICommands["ResetWorkbook"] = "revert-workbook-ui"; + // + UICommands["RetargetDataSource"] = "retarget-datasource"; + // + UICommands["RetargetDataSourceUI"] = "retarget-datasource-ui"; + // + UICommands["SaveAsWorkbook"] = "save-as-workbook"; + // + UICommands["SaveBookmark"] = "save-bookmark"; + // + UICommands["SaveDebuggingWorkbook"] = "save-debugging-workbook"; + // + UICommands["SaveDefaultFormattingUI"] = "save-formatting-ui"; + // + UICommands["SaveWorkbook"] = "save-workbook"; + // + UICommands["SchemaDefaultMemberUI"] = "schema-default-member-ui"; + // + UICommands["ScrollSheet"] = "scroll-sheet"; + // + UICommands["SetAccountsDimension"] = "set-accounts-dimension"; + // + UICommands["SetActiveConnectionUI"] = "set-active-connection-ui"; + // + UICommands["SetAnalyticsDropTargetVisibility"] = "set-analytics-drop-target-visibility"; + // + UICommands["SetDashboardSidePaneMode"] = "set-dashboard-sidepane-mode"; + // + UICommands["SetDefaultDateFormatUI"] = "set-default-date-format-ui"; + // + UICommands["SetDefaultLocationUI"] = "set-default-location-ui"; + // + UICommands["SetDefaultMapSourceUI"] = "set-default-mapsource-ui"; + // + UICommands["SetDefaultTextFormatUI"] = "set-default-text-format-ui"; + // + UICommands["SetDefaultUtilityMember"] = "set-default-utility-member"; + // + UICommands["SetFreeFormDashboardUI"] = "set-free-form-dashboard-ui"; + // + UICommands["SetFilterSharedUI"] = "set-filter-shared-ui"; + // + UICommands["SetKey"] = "set-key"; + // + UICommands["SetProductAutoUpdate"] = "set-auto-update"; + // + UICommands["SetQueryFailure"] = "set-query-failure"; + // + UICommands["SetRendering"] = "set-rendering"; + // + UICommands["SetRuntimeImmediateMode"] = "set-runtime-immediate-mode"; + // + UICommands["SetUILanguage"] = "set-ui-language"; + // + UICommands["SetWorkbookLocaleUI"] = "set-workbook-locale-ui"; + // + UICommands["SetWorksheetSidePaneMode"] = "set-worksheet-sidepane-mode"; + // + UICommands["SetZoneFixedSizeUI"] = "set-zone-fixed-size-ui"; + // + UICommands["SetsInOutUI"] = "show-in-out-sets"; + // + UICommands["ShapeLegendEditUI"] = "shape-legend-edit-ui"; + // + UICommands["ShowCloudFileOAuthPromptAndSelectionUI"] = "show-cloudfile-oauth-prompt-and-selection-ui"; + // + UICommands["ShowConnectionAuthUI"] = "show-connection-auth-ui"; + // + UICommands["ShowConnectionAuthAndEstablishConnectionUI"] = "show-connection-auth-and-establish-connection-ui"; + // + UICommands["ShowConnectTab"] = "show-connect-tab"; + // + UICommands["ShowCustomSplitDialogUI"] = "show-custom-split-dialog-ui"; + // + UICommands["ShowDocument"] = "document"; + // + UICommands["ShowFeatureFlagDialog"] = "show-feature-flag-dialog"; + // + UICommands["ShowFieldFormatUI"] = "show-field-format-ui"; + // + UICommands["ShowFieldInSchemaUI"] = "show-field-in-schema"; + // + UICommands["ShowFilmstripUI"] = "show-filmstrip-ui"; + // + UICommands["ShowGoogleSheetsSelectionUI"] = "show-google-sheets-selection-ui"; + // + UICommands["ShowHelp"] = "show-help"; + // + UICommands["ShowHideDashboardSheetUI"] = "show-hide-dashboard-sheet-ui"; + // + UICommands["ShowHideStoryboardSheetUI"] = "show-hide-storyboard-sheet-ui"; + // + UICommands["ShowGraphicsAPI"] = "show-graphics-api-command"; + // + UICommands["ShowMapOptionsDialog"] = "show-map-options-dialog"; + // + UICommands["ShowMeasuresUI"] = "show-measures-ui"; + // + UICommands["ShowMeCycleUI"] = "show-me-cycle-ui"; + // + UICommands["ShowMeHideUI"] = "show-me-hide-ui"; + // + UICommands["ShowMembersUI"] = "show-members-ui"; + // + UICommands["ShowMeToggleUI"] = "show-me-toggle-ui"; + // + UICommands["ShowOAuthPromptUI"] = "show-oauth-prompt-ui"; + // + UICommands["ShowParameterControl"] = "show-parameter-control"; + // + UICommands["ShowPublicStatusDialog"] = "show-public-status-dialog"; + // + UICommands["ShowPublicQuotaExceededDialog"] = "show-public-quota-exceeded-dialog"; + // + UICommands["ShowPublishDatasourceToWorkgroupDialog"] = "show-publish-datasource-to-workgroup-dialog"; + // + UICommands["ShowQueryBandingAndInitialSQLDialogUI"] = "show-query-banding-and-initial-sql-dialog-ui"; + // + UICommands["ShowQuickFilter"] = "show-quickfilter"; + // + UICommands["ShowQuickFilterUI"] = "show-quickfilter-ui"; + // + UICommands["ShowRuntimeIndicator"] = "show-runtime-indicator"; + // + UICommands["ShowSheetSorter"] = "sheet-sorter"; + // + UICommands["ShowTableOptionsDialog"] = "show-table-options-dialog"; + // + UICommands["ShowWebDataConnectorUI"] = "show-web-data-connector-ui"; + // + UICommands["ShowWidgetSandboxUI"] = "show-widget-sandbox-ui"; + // + UICommands["SizeLegendEditUI"] = "size-legend-edit-ui"; + // + UICommands["SleepUI"] = "sleep-ui"; + // + UICommands["SortAscendingFieldLabelUI"] = "sort-ascending-field-label-ui"; + // + UICommands["SortDescendingFieldLabelUI"] = "sort-descending-field-label-ui"; + // + UICommands["SortFieldLabelUI"] = "sort-field-label-ui"; + // + UICommands["SortUI"] = "sort-ui"; + // + UICommands["SplitFieldUI"] = "split-field-ui"; + // + UICommands["StackMarksUI"] = "stack-marks-ui"; + // + UICommands["StartFileConnectionUI"] = "start-file-connection-ui"; + // + UICommands["StartPillEditUI"] = "start-pill-edit-ui"; + // + UICommands["SwitchToConnectTab"] = "switch-to-connect-tab"; + // + UICommands["SwitchToDocument"] = "switch-to-document"; + // + UICommands["SwitchToSheetSorter"] = "switch-to-sheet-sorter"; + // + UICommands["TableCalcAddressUI"] = "table-calc-address-ui"; + // + UICommands["TableCalcIgnoreUI"] = "table-calc-ignore-ui"; + // + UICommands["TableCalcOrderingUI"] = "table-calc-ordering-ui"; + // + UICommands["TableCalcUI"] = "table-calc-ui"; + // + UICommands["ToggleConnectPaneUI"] = "toggle-connect-pane"; + // + UICommands["ToggleFilmstripUI"] = "toggle-filmstrip-ui"; + // + UICommands["ToggleINDJoinSemanticsUI"] = "toggle-ind-join-semantics-ui"; + // + UICommands["TogglePinMRUItem"] = "toggle-pin-mru"; + // + UICommands["ToggleReferentialIntegrityUI"] = "toggle-referential-integrity-ui"; + // + UICommands["ToggleStartPageUI"] = "toggle-start-page"; + // + UICommands["TrackMemory"] = "track-memory"; + // + UICommands["TrendLinesFlagUI"] = "trend-lines-ui"; + // + UICommands["UpdateDefaultsMapCard"] = "update-map-defaults"; + // + UICommands["UpgradeExtractsUI"] = "upgrade-extracts-ui"; + // + UICommands["UpgradeExtractUI"] = "upgrade-extract-ui"; + // + UICommands["UseExtractUI"] = "use-extract-ui"; + // + UICommands["UseMemory"] = "use-memory"; + // + UICommands["UtilityDimensionUI"] = "utility-dimension-ui"; + // + UICommands["ValidateExtractCredentialsUI"] = "validate-extract-credentials-ui"; + // + UICommands["ViewCard"] = "view-card"; + // + UICommands["ViewTitleCard"] = "view-title-card"; + // + UICommands["ViewSummaryCard"] = "view-summary-card"; + // + UICommands["ViewCaptionCard"] = "view-caption-card"; + // + UICommands["ViewColumnsShelf"] = "view-columns-shelf"; + // + UICommands["ViewRowsShelf"] = "view-rows-shelf"; + // + UICommands["ViewPagesShelf"] = "view-pages-shelf"; + // + UICommands["ViewFiltersShelf"] = "view-filters-shelf"; + // + UICommands["ViewMeasuresShelf"] = "view-measures-shelf"; + // + UICommands["ViewMarksShelf"] = "view-marks-shelf"; + // + UICommands["ViewCurrentPageCard"] = "view-current-page-card"; + // + UICommands["ViewData"] = "view-data"; + // + UICommands["ViewSQLDataUI"] = "view-sql-data-ui"; + // + UICommands["ViewDataSourceData"] = "view-datasource-data"; + // + UICommands["ViewLegend"] = "view-legend"; + // + UICommands["ViewSidePane"] = "view-side-pane"; + // + UICommands["ViewStatusBar"] = "view-statusbar"; + // + UICommands["ViewSummaryDetail"] = "view-summary-detail"; + // + UICommands["ViewTableData"] = "view-table-data"; + // + UICommands["ViewToolBar"] = "view-toolbar"; + // + UICommands["WebViewEnableJavascript"] = "webview-enable-javascript"; + // + UICommands["WebViewEnablePlugins"] = "webview-enable-plugins"; + // + UICommands["WebViewBlockPopups"] = "webview-block-popups"; + // + UICommands["WebViewEnableURLHoverActions"] = "webview-enable-url-hover-actions"; + // + UICommands["WorkgroupChangeDataserver"] = "workgroup-change-dataserver"; + // + UICommands["WorkgroupChangeServer"] = "workgroup-change-server"; + // + UICommands["WorkgroupChangeUser"] = "workgroup-change-user"; + // + UICommands["WorkgroupRemoveLastServer"] = "workgroup-remove-last-server"; + })(UICommands = exports.UICommands || (exports.UICommands = {})); + (function (DocCommands) { + // Gets the axis options . + DocCommands["GetAxisOptions"] = "get-axis-options"; + // Reset the axis options . + DocCommands["ResetAxisOptions"] = "reset-axis-options"; + // Show axis edit dialog + DocCommands["ShowEditAxisDialog"] = "show-edit-axis-dialog"; + // Sets the axis direction + DocCommands["SetAxisReversed"] = "set-axis-reversed"; + // Sets the axis scale type + DocCommands["SetAxisScaleType"] = "set-axis-scale-type"; + // Sets the main title of a quantitative axis + DocCommands["SetAxisTitle"] = "set-axis-title"; + // Sets the subtitle of a quantitative axis + DocCommands["SetAxisSubtitle"] = "set-axis-subtitle"; + // Sets whether we should use the automatic subtitle for a quantitative axis + DocCommands["SetAxisUseAutomaticSubtitle"] = "set-axis-use-automatic-subtitle"; + // Sets the axis range type of a quantitative axis + DocCommands["SetAxisExtentStartType"] = "set-axis-extent-start-type"; + // Sets the axis range type of a quantitative axis + DocCommands["SetAxisExtentEndType"] = "set-axis-extent-end-type"; + // Sets the axis range type of a quantitative axis + DocCommands["SetBothAxisExtentsType"] = "set-both-axis-extents-type"; + // Sets whether or not to force-include zero on a quantitative axis + DocCommands["SetAxisIncludeZero"] = "set-axis-include-zero"; + // Sets new min/max range endings for axis + DocCommands["SetAxisRangeEnd"] = "set-axis-range-end"; + // Sets new min/max range endings for axis + DocCommands["SetAxisRangeStart"] = "set-axis-range-start"; + // Synchronize dual axes on a folded quantitative axis + DocCommands["SetAxisFoldState"] = "set-axis-fold-state"; + // Set the major tick mark state + DocCommands["SetMajorTickMarkState"] = "set-major-tick-mark-state"; + // Set the minor tick mark state + DocCommands["SetMinorTickMarkState"] = "set-minor-tick-mark-state"; + // Set the major tick mark origin + DocCommands["SetMajorTickMarkOrigin"] = "set-major-tick-mark-origin"; + // Set the minor tick mark origin + DocCommands["SetMinorTickMarkOrigin"] = "set-minor-tick-mark-origin"; + // Set the major tick mark spacing + DocCommands["SetMajorTickMarkSpacing"] = "set-major-tick-mark-spacing"; + // Set the minor tick mark spacing + DocCommands["SetMinorTickMarkSpacing"] = "set-minor-tick-mark-spacing"; + // Set the major tick mark units + DocCommands["SetMajorTickMarkUnits"] = "set-major-tick-mark-units"; + // Set the minor tick mark units + DocCommands["SetMinorTickMarkUnits"] = "set-minor-tick-mark-units"; + // + DocCommands["BoundingBoxPan"] = "bounding-box-pan"; + // + DocCommands["OnToggleAxisRanges"] = "on-toggle-axis-ranges"; + // + DocCommands["PanePan"] = "pane-pan"; + // + DocCommands["PaneZoom"] = "pane-zoom"; + // + DocCommands["PaneZoomFactor"] = "pane-zoom-factor"; + // + DocCommands["PaneZoomPan"] = "pane-zoom-pan"; + // + DocCommands["ReorderFoldedAxes"] = "reorder-folded-axes"; + // + DocCommands["ResetAxisRange"] = "reset-axis-range"; + // + DocCommands["SelectAxisTuples"] = "select-axis-tuples"; + // + DocCommands["SwapReferenceLineFields"] = "swap-reference-line-fields"; + // + DocCommands["SynchronizeAxis"] = "synchronize-axis"; + // + DocCommands["ToggleDualAxis"] = "toggle-dual-axis"; + // + DocCommands["ZoomLevel"] = "zoom-level"; + })(DocCommands = exports.DocCommands || (exports.DocCommands = {})); + + +/***/ }, +/* 73 */ +/***/ function(module, exports) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + /** + * Registry which contains mappings from an Api VerbId to a pres-layer command. + * This includes the parameters and return values of the command as well + * + * @export + * @class CommandMappingRegistry + */ + var CommandMappingRegistry = (function () { + /** + * Creates an instance of CommandMappingRegistry. + * @memberof CommandMappingRegistry + */ + function CommandMappingRegistry() { + this._commands = {}; + } + /** + * Adds a new command to the registry + * + * @param {CommandRegistration} command + * @memberof CommandMappingRegistry + */ + CommandMappingRegistry.prototype.addCommand = function (command) { + this._commands[command.apiVerbId] = command; + }; + /** + * Whether or not this registry contains a definition for this ApiVerbId + * + * @param {ApiVerbId} apiVerbId + * @returns {boolean} + * @memberof CommandMappingRegistry + */ + CommandMappingRegistry.prototype.hasCommand = function (apiVerbId) { + if (!this._commands.hasOwnProperty(apiVerbId)) { + return false; + } + if (!this._commands[apiVerbId]) { + return false; + } + return true; + }; + /** + * Gets the command registration for this command id or throws if it doesn't exist + * + * @param {ApiVerbId} apiVerbId + * @returns {CommandRegistration} + * @memberof CommandMappingRegistry + */ + CommandMappingRegistry.prototype.getCommand = function (apiVerbId) { + if (!this.hasCommand(apiVerbId)) { + throw new Error('Unknown ApiVerb: ' + apiVerbId); + } + return this._commands[apiVerbId]; + }; + return CommandMappingRegistry; + }()); + exports.CommandMappingRegistry = CommandMappingRegistry; + + +/***/ }, +/* 74 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var api_internal_contract_1 = __webpack_require__(69); + /** + * This is an enum used only internally by the api-core project. + * This enum represents the difference namespaces available for commands. + */ + var CommandNamespace; + (function (CommandNamespace) { + CommandNamespace["TabDoc"] = "tabdoc"; + CommandNamespace["TabUI"] = "tabui"; + })(CommandNamespace = exports.CommandNamespace || (exports.CommandNamespace = {})); + /** + * Represents an input or output paramter for a command. + * + * @export + * @class CommandParameter + */ + var CommandParameter = (function () { + /** + * Creates an instance of CommandParameter. + * @param {ApiParameterId} apiId + * @param {PresLayerParameterId} presLayerId + * @param {boolean} [isOptional] + * @memberof CommandParameter + */ + function CommandParameter(_apiId, _presLayerId, _isOptional) { + this._apiId = _apiId; + this._presLayerId = _presLayerId; + this._isOptional = _isOptional; + } + Object.defineProperty(CommandParameter.prototype, "apiId", { + /** + * The Id of the Api Parameter + * + * @readonly + * @type {ApiParameterId} + * @memberof CommandParameter + */ + get: function () { + return this._apiId; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(CommandParameter.prototype, "presLayerId", { + /** + * The Id of the Pres Layer Parameter + * + * @readonly + * @type {PresLayerParameterId} + * @memberof CommandParameter + */ + get: function () { + return this._presLayerId; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(CommandParameter.prototype, "isOptional", { + /** + * Whether or not this is an optional parameter + * + * @readonly + * @type {boolean} + * @memberof CommandParameter + */ + get: function () { + return !!this._isOptional; + }, + enumerable: true, + configurable: true + }); + return CommandParameter; + }()); + exports.CommandParameter = CommandParameter; + /** + * Represents a the complete mapping of an ApiCommand to its corresponding pres-layer command + * and the conversion of the output value as well + * + * @export + * @class CommandRegistration + */ + var CommandRegistration = (function () { + function CommandRegistration(_apiVerbId, _commandId, _inputParameters, _outputParameter, _namespace) { + this._apiVerbId = _apiVerbId; + this._commandId = _commandId; + this._inputParameters = _inputParameters; + this._outputParameter = _outputParameter; + this._namespace = _namespace; + } + Object.defineProperty(CommandRegistration.prototype, "apiVerbId", { + get: function () { + return this._apiVerbId; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(CommandRegistration.prototype, "commandId", { + get: function () { + return this._commandId; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(CommandRegistration.prototype, "inputs", { + get: function () { + return this._inputParameters || new Array(); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(CommandRegistration.prototype, "output", { + get: function () { + return this._outputParameter; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(CommandRegistration.prototype, "namespace", { + get: function () { + return this._namespace || CommandNamespace.TabDoc; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(CommandRegistration.prototype, "needsAddInLocator", { + /** + * Whether or not this command requires an add-in locator to be injected into it + * + * @readonly + * @type {boolean} + * @memberof CommandRegistration + */ + get: function () { + for (var _i = 0, _a = this.inputs; _i < _a.length; _i++) { + var input = _a[_i]; + if (input.apiId === api_internal_contract_1.ParameterId.ExtensionLocator) { + return true; + } + } + return false; + }, + enumerable: true, + configurable: true + }); + /** + * Creates a dictionary of pres-layer parameters from the input dictionary + * of api parameters. + * + * @param {ExecuteParameters} parameters - The parameters to convert + * @param {ApiToPresLayerMappingRegistry} apiToPresLayer - mapping to determine the conversion + * @returns {{ [paramId: string]: object; }} - parameters to send to the pres-layer + * @memberof CommandRegistration + */ + CommandRegistration.prototype.createParams = function (parameters, apiToPresLayer) { + var result = {}; + for (var _i = 0, _a = this.inputs; _i < _a.length; _i++) { + var inputParam = _a[_i]; + // First make sure the parameter is there or that it's optional + if (!parameters.hasOwnProperty(inputParam.apiId)) { + if (inputParam.isOptional) { + continue; + } + else { + throw new Error('Missing parameter for command: ' + inputParam.apiId); + } + } + // Find the conversion function for this parameter + var conversionFn = apiToPresLayer.get(inputParam.apiId, inputParam.presLayerId); + // Convert the pres model and insert it into our results object + result[inputParam.presLayerId] = conversionFn(parameters[inputParam.apiId]); + } + return result; + }; + /** + * Processes the result received back after executing a pres-layer command + * + * @param {{ [docParamId: string]: object; }} resultParameters + * @param {PresLayerToApiMappingRegistry} presLayerToApi + * @returns {Model} + * @memberof CommandRegistration + */ + CommandRegistration.prototype.ProcessResult = function (resultParameters, presLayerToApi) { + // TODO: Add error handling + if (this.output === undefined) { + var noOutputModel = {}; + return noOutputModel; + } + if (!resultParameters || !resultParameters.hasOwnProperty(this.output.presLayerId)) { + // if the output result is marked as optional, we don't consider this an error situation and just return an empty model + if (this.output.isOptional) { + return {}; + } + throw new Error('Missing expected result parameter: ' + this.output.presLayerId); + } + var conversionFn = presLayerToApi.get(this.output.presLayerId, this.output.apiId); + return conversionFn(resultParameters[this.output.presLayerId]); + }; + return CommandRegistration; + }()); + exports.CommandRegistration = CommandRegistration; + + +/***/ }, +/* 75 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var api_internal_contract_1 = __webpack_require__(69); + var Events_1 = __webpack_require__(76); + var PresLayerToApiConverter_1 = __webpack_require__(77); + /** + * Simple wrapper which holds a mapping to go from a pres-layer event to an API event + */ + var EventMappingRegistration = (function () { + function EventMappingRegistration(_presLayerId, _apiId, _converter) { + this._presLayerId = _presLayerId; + this._apiId = _apiId; + this._converter = _converter; + } + Object.defineProperty(EventMappingRegistration.prototype, "presLayerId", { + get: function () { + return this._presLayerId; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(EventMappingRegistration.prototype, "apiId", { + get: function () { + return this._apiId; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(EventMappingRegistration.prototype, "converter", { + get: function () { + return this._converter; + }, + enumerable: true, + configurable: true + }); + return EventMappingRegistration; + }()); + exports.EventMappingRegistration = EventMappingRegistration; + var EventMappingRegistryFactory = (function () { + function EventMappingRegistryFactory() { + } + /** + * Creates and populates a new EventMappingRegistry for the specific version number requested + * + * @param {VersionNumber} versionNumber + * @returns {EventMappingRegistry} + */ + EventMappingRegistryFactory.createEventMappingRegistry = function (versionNumber) { + var registry = {}; + registry[Events_1.NotificationId.SelectionChanged] = new EventMappingRegistration(Events_1.NotificationId.SelectionChanged, api_internal_contract_1.NotificationId.SelectedMarksChanged, PresLayerToApiConverter_1.PresLayerToApiConverter.convertVisualId); + registry[Events_1.NotificationId.ParameterChanged] = new EventMappingRegistration(Events_1.NotificationId.ParameterChanged, api_internal_contract_1.NotificationId.ParameterChanged, PresLayerToApiConverter_1.PresLayerToApiConverter.convertFieldCaptionPair); + registry[Events_1.NotificationId.FilterChanged] = new EventMappingRegistration(Events_1.NotificationId.FilterChanged, api_internal_contract_1.NotificationId.FilterChanged, PresLayerToApiConverter_1.PresLayerToApiConverter.convertFilterEvent); + return registry; + }; + return EventMappingRegistryFactory; + }()); + exports.EventMappingRegistryFactory = EventMappingRegistryFactory; + + +/***/ }, +/* 76 */ +/***/ function(module, exports) { + + "use strict"; + /* tslint:disable */ + // ----------------------------------------------------------------------------- + // + // This file is the copyrighted property of Tableau Software and is protected + // by registered patents and other applicable U.S. and international laws and + // regulations. + // + // Unlicensed use of the contents of this file is prohibited. Please refer to + // the NOTICES.txt file for further details. + // + // ----------------------------------------------------------------------------- + // WARNING: Computer generated file. Do not hand modify. + // DEPENDS ON: ['../typescript/js-api/api-core/node_modules/@tableau/preslayer-codegen-typescript/templates/events-ts.template', u'../typescript/js-api/api-core/temp-pres-layer/all-events.data'] + Object.defineProperty(exports, "__esModule", { value: true }); + // Events you can register to receive presentation models + var NotificationId; + (function (NotificationId) { + // Triggered when aliases are to be edited. Used to launch a dialog. + NotificationId["EditAliasesDialogNotification"] = "edit-aliases-dialog-notification-event"; + // for the calculation dialog + NotificationId["CalculationDialog"] = "calculation-dialog-event"; + // update for an adhoc calc in a type in pill + NotificationId["TypeInPill"] = "type-in-pill-event"; + // results of a validation command + NotificationId["CommandValidation"] = "command-validation-event"; + // event for the groups dialog + NotificationId["UpdateCategoricalBinEditDialog"] = "update-categorical-bin-edit-dialog-event"; + // for the categorical color dialog + NotificationId["CategoricalColor"] = "categorical-color-event"; + // update the web categorical color dialog + NotificationId["WebCategoricalColorDialog"] = "web-categorical-color-dialog-event"; + // user invoked action which requires a Data Alert Dialog + NotificationId["DataAlertDialog"] = "data-alert-dialog-event"; + // event to select field(s) in the data schema + NotificationId["DataSchemaSelection"] = "data-schema-selection-event"; + // event for when the data source being edited is updated + NotificationId["UpdateDataPreparation"] = "update-data-preparation-event"; + // event for when the data source data is updated + NotificationId["UpdateDataSourceData"] = "update-data-source-data-event"; + // event for when a client should request new data source or data source data pres models + NotificationId["DataSourceUpdateNeeded"] = "data-source-update-needed-event"; + // event for getting the pres model to update file join table properties + NotificationId["TextFileProperties"] = "text-file-properties-event"; + // event for the detailed error dialog + NotificationId["UpdateDetailedErrorDialog"] = "update-detailed-error-dialog-event"; + // notify changes to the state of a filter's relational model + NotificationId["FilterRelationalStateChanged"] = "filter-relational-state-changed-event"; + // notify changes to the size/selection count of a relational domain + NotificationId["FilterRelationalDomainChanged"] = "filter-relational-domain-changed-event"; + // notify when filter cache was requested but not found + NotificationId["FilterCacheNotFound"] = "filter-cache-not-found-event"; + // Hierarchy Select model observable notification. + NotificationId["HierarchyNotification"] = "hierarchy-notification-event"; + // Hierarchy selection change notifications. + NotificationId["HierarchySelection"] = "hierarchy-selection-event"; + // event for the map options dialog + NotificationId["MapOptionsDialog"] = "map-options-dialog-event"; + // notify the Page UI(hide/show states, layout) needs to be updated + NotificationId["UpdatePageUINotification"] = "update-page-uinotification-event"; + // notify to the SceneView has been drawn. + NotificationId["SceneViewDrawnNotification"] = "scene-view-drawn-notification-event"; + // The AnimationControlChange event fires when the user clicks an animation playback button: forward, stop, slow, fast, etc. + NotificationId["AnimationControlChange"] = "animation-control-change-event"; + // notify the sheet has been renamed + NotificationId["RenameSheetNotification"] = "rename-sheet-notification-event"; + // update the web quantitative color dialog + NotificationId["WebQuantitativeColorDialog"] = "web-quantitative-color-dialog-event"; + // update the axis edit dialog + NotificationId["UpdateEditAxisDialog"] = "update-edit-axis-dialog-event"; + // event for the reference line dialog, which is only valid during web authoring + NotificationId["UpdateRefLineDialog"] = "update-ref-line-dialog-event"; + // event to trigger other reference line dialogs to close + NotificationId["RefLineDialogOpening"] = "ref-line-dialog-opening-event"; + // event for the close data source error dialog, which is only valid during web authoring + NotificationId["CloseDataSourceErrorDialog"] = "close-data-source-error-dialog-event"; + // update the web Save Datasource dialog + NotificationId["WebSaveDatasourceDialog"] = "web-save-datasource-dialog-event"; + // warning resulting from WarningMsg + NotificationId["WarningMessage"] = "warning-message-event"; + // event for the table calc dialog, on web, this is only valid during web authoring + NotificationId["TableCalcDialog"] = "table-calc-dialog-event"; + // user invoked action which requires Table Calc Dialog + NotificationId["TableCalcActivateDialog"] = "table-calc-activate-dialog-event"; + // event for the trend line dialog + NotificationId["UpdateTrendLineEditDialog"] = "update-trend-line-edit-dialog-event"; + // The table page cache has been refreshed; pages must be reloaded from the cache. + NotificationId["PageCacheRefresh"] = "page-cache-refresh-event"; + // The table page cache has expired and all resources have been released. + NotificationId["PageCacheExpired"] = "page-cache-expired-event"; + // All pages, identified by row/col, in the provided list have expired and should be reloaded. + NotificationId["PageCachePagesExpired"] = "page-cache-pages-expired-event"; + // All pages betweem the range (inclusive) in the provided list have expired and should be reloaded. + NotificationId["PageCachePageRangeExpired"] = "page-cache-page-range-expired-event"; + // Update for the rich text editor dialog + NotificationId["RichTextEditorDialog"] = "rich-text-editor-dialog-event"; + // Triggered when the user wants to reload an add-in instance. + NotificationId["ReloadAddIn"] = "reload-add-in-event"; + // Triggered when the selected marks have changed. + NotificationId["SelectionChanged"] = "selection-changed-event"; + // Triggered when the value of a parameter has changed. Emits the name and caption of the parameter + NotificationId["ParameterChanged"] = "parameter-changed-event"; + // Triggered when the filters have changed. + NotificationId["FilterChanged"] = "filter-changed-event"; + // notification to launch the hybrid UI showcase + NotificationId["LaunchHybridUIShowcase"] = "launch-hybrid-uishowcase-event"; + // notification of new echoed text for HybridUI showcase demo + NotificationId["HybridUIShowcaseEcho"] = "hybrid-uishowcase-echo-event"; + // event for the bin dialog + NotificationId["UpdateNumericBinEditDialog"] = "update-numeric-bin-edit-dialog-event"; + // a test event with a pres model + NotificationId["TestEventWithModel"] = "test-event-with-model-event"; + // a test event without a pres model + NotificationId["TestEventWithoutModel"] = "test-event-without-model-event"; + })(NotificationId = exports.NotificationId || (exports.NotificationId = {})); + + +/***/ }, +/* 77 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var Api = __webpack_require__(69); + var api_utils_1 = __webpack_require__(78); + var EnumMappings_1 = __webpack_require__(79); + /** + * Class containing helper methods for converting from PresLayerPresModels to their ApiPresModels equivalents + * + * @export + * @class PresLayerToApiConverter + */ + var PresLayerToApiConverter = (function () { + function PresLayerToApiConverter() { + } + PresLayerToApiConverter.convertSheetPath = function (plSheetPath) { + var result = { + sheetName: plSheetPath.sheetName, + isDashboard: plSheetPath.isDashboard, + storyboard: plSheetPath.storyboard, + flipboardZoneID: plSheetPath.flipboardZoneId, + storyPointID: plSheetPath.storyPointId, + }; + return result; + }; + PresLayerToApiConverter.convertVisualId = function (plVisualId) { + var result = { + worksheet: plVisualId.worksheet, + dashboard: plVisualId.dashboard, + storyboard: plVisualId.storyboard, + flipboardZoneID: plVisualId.flipboardZoneId, + storyPointID: plVisualId.storyPointId, + }; + return result; + }; + PresLayerToApiConverter.convertExtensionLocator = function (plAddInLocator) { + var dashboardPath = undefined; + if (plAddInLocator.sheetPath) { + dashboardPath = PresLayerToApiConverter.convertSheetPath(plAddInLocator.sheetPath); + } + var result = { + instanceId: plAddInLocator.addInInstanceId, + dashboardPath: dashboardPath + }; + return result; + }; + PresLayerToApiConverter.convertDashboardInZones = function (plDashboard) { + var result = new Array(); + for (var _i = 0, _a = Object.keys(plDashboard.zones); _i < _a.length; _i++) { + var zoneKey = _a[_i]; + var zone = plDashboard.zones[zoneKey]; + var apiZone = { + name: zone.zoneCommon.name, + zoneId: zone.zoneId, + zoneType: EnumMappings_1.PresLayerToApiEnumMappings.zoneType.convert(zone.zoneCommon.zoneType), + height: zone.zoneCommon.h, + width: zone.zoneCommon.w, + x: zone.zoneCommon.x, + y: zone.zoneCommon.y + }; + result.push(apiZone); + } + return result; + }; + PresLayerToApiConverter.convertDashboardInfo = function (plDashboardInfo) { + var result = { + zones: PresLayerToApiConverter.convertDashboardInZones(plDashboardInfo.dashboardPresModel), + name: plDashboardInfo.dashboardPresModel.sheetPath.sheetName, + extensionZoneId: plDashboardInfo.zoneId, + size: plDashboardInfo.dashboardPresModel.viewportSize + }; + return result; + }; + PresLayerToApiConverter.convertExtensionInstance = function (plAddInInstance) { + var result = { + url: plAddInInstance.addInRegistrationPresModel.url, + locator: PresLayerToApiConverter.convertExtensionLocator(plAddInInstance.addInLocatorPresModel) + }; + return result; + }; + PresLayerToApiConverter.convertExtensionEnivrionment = function (plAddInEnvironment) { + var result = { + extensionContext: EnumMappings_1.PresLayerToApiEnumMappings.extensionContext.convert(plAddInEnvironment.addInContext), + extensionMode: EnumMappings_1.PresLayerToApiEnumMappings.extensionMode.convert(plAddInEnvironment.addInMode), + extensionLocale: plAddInEnvironment.addInLocale, + extensionLanguage: plAddInEnvironment.addInLanguage, + tableauVersion: plAddInEnvironment.tableauVersion, + operatingSystem: plAddInEnvironment.operatingSystem, + apiVersion: plAddInEnvironment.apiVersion + }; + return result; + }; + PresLayerToApiConverter.convertExtensionSettingsInfo = function (plAddInSettings) { + var result = { + // addInSettings is undefined during bootstrap initialization + settingsValues: plAddInSettings.addInSettings || {} + }; + return result; + }; + PresLayerToApiConverter.convertExtensionBootstrapInfo = function (plBootstrapInfo) { + var result = { + extensionDashboardInfo: PresLayerToApiConverter.convertDashboardInfo(plBootstrapInfo.addInDashboardInfoPresModel), + extensionEnvironment: PresLayerToApiConverter.convertExtensionEnivrionment(plBootstrapInfo.addInEnvironmentPresModel), + extensionInstance: PresLayerToApiConverter.convertExtensionInstance(plBootstrapInfo.addInInstancePresModel), + extensionSettingsInfo: PresLayerToApiConverter.convertExtensionSettingsInfo(plBootstrapInfo.addInSettingsInfo) + }; + return result; + }; + PresLayerToApiConverter.convertFieldCaptionPair = function (plFieldCaptionPair) { + return plFieldCaptionPair.fn; + }; + PresLayerToApiConverter.convertFilterEvent = function (plFilterEvent) { + var result = { + visualId: PresLayerToApiConverter.convertVisualId(plFilterEvent.visualIdPresModel), + fieldName: plFilterEvent.fieldCaption + }; + return result; + }; + PresLayerToApiConverter.convertDataSchema = function (dataSchema) { + var apiDataSources = {}; + api_utils_1.Param.verifyValue(dataSchema, 'dataSchema'); + api_utils_1.Param.verifyValue(dataSchema.dataSources, 'dataSchema.dataSources'); + // Convert each pres layer datasource in the schema to an Api datasource + Object.keys(dataSchema.dataSources).forEach(function (key) { + // Skip the default Parameters datasource we receive from the platform. + if (dataSchema.dataSources[key].datasource !== PresLayerToApiConverter.PARAMETERS_DB_NAME) { + apiDataSources[key] = PresLayerToApiConverter.convertDataSource(dataSchema.dataSources[key]); + } + }); + var schemaMap = PresLayerToApiConverter.convertWorksheetDataSchemaMap(dataSchema.worksheetDataSchemaMap); + var result = { + dataSources: apiDataSources, + worksheetDataSchemaMap: schemaMap, + }; + return result; + }; + PresLayerToApiConverter.convertDataSource = function (dataSource) { + var extractUpdateTime = (dataSource.extractUpdateTime === '') ? undefined : dataSource.extractUpdateTime; + var dataSourceFields = new Array(); + api_utils_1.Param.verifyValue(dataSource, 'dataSource'); + api_utils_1.Param.verifyValue(dataSource.fieldList, 'dataSchema.fieldList'); + dataSource.fieldList.forEach(function (plField) { + // If the datasource contains hierarchies or folders, the base field will contain + // a list of the fields grouped beneath it, we are interested in those. + // Tableau does not support nested folders or hierarchies, so this does not need to be recursive. + var hierarchyModel = plField; + if (hierarchyModel.columnList) { + hierarchyModel.columnList.forEach(function (field) { return dataSourceFields.push(PresLayerToApiConverter.convertField(field)); }); + } + else { + // This is a bit brittle for now, but this value is not exposed via the platform FieldType Enum. + if (plField.type !== 'field-folder') { + dataSourceFields.push(PresLayerToApiConverter.convertField(plField)); + } + } + }); + var result = { + name: dataSource.datasourceCaption, + id: dataSource.datasource, + isExtract: (extractUpdateTime !== undefined), + extractUpdateTime: extractUpdateTime, + fields: dataSourceFields + }; + return result; + }; + PresLayerToApiConverter.convertWorksheetDataSchemaMap = function (schemaMap) { + var result = {}; + Object.keys(schemaMap).forEach(function (key) { + // We need to remove any references to the "Parameters" datasource. This is treated as a separate + // datasource by the platform, but the Extensions API accesses Parameters directly. + var cleanReferencedDataSourceList = schemaMap[key].referencedDataSourceList.filter(function (dsName) { + return dsName !== PresLayerToApiConverter.PARAMETERS_DB_NAME; + }); + var worksheetDataSourceInfo = { + primaryDataSource: schemaMap[key].primaryDatasource, + referencedDataSourceList: cleanReferencedDataSourceList + }; + result[key] = worksheetDataSourceInfo; + }); + return result; + }; + PresLayerToApiConverter.convertField = function (plField) { + var fieldColumn = plField; + var groupColumn = plField; + var aggregation = Api.FieldAggregationType.None; + var role = Api.FieldRoleType.Unknown; + var isCalculated = false; + // We expect that every FieldPresModel we get back from the command that returns FieldPresModels + // is actually an instance of the derived FieldColumnPresModel. + if (fieldColumn.aggregation && fieldColumn.fieldRole) { + aggregation = EnumMappings_1.PresLayerToApiEnumMappings.fieldAggregationType.convert(fieldColumn.aggregation); + role = EnumMappings_1.PresLayerToApiEnumMappings.fieldRoleType.convert(fieldColumn.fieldRole); + isCalculated = fieldColumn.isCalculated || false; + } + else { + throw new Error('Unexpected Internal Error: field pres model is missing expected properties.'); + } + var result = { + name: plField.description, + id: plField.name, + description: plField.userCaption, + aggregation: aggregation, + isHidden: !!(plField.isHidden), + isGenerated: plField.isGenerated, + isCalculatedField: isCalculated, + role: role, + isCombinedField: !!(groupColumn.isCombinedField) + }; + return result; + }; + PresLayerToApiConverter.PARAMETERS_DB_NAME = 'Parameters'; + return PresLayerToApiConverter; + }()); + exports.PresLayerToApiConverter = PresLayerToApiConverter; + + +/***/ }, +/* 78 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + /** + * This is your main. This is where you re-export everything you want to be publicly available. + * + * The build enforces that the file has the same name as the global variable that is exported. + */ + Object.defineProperty(exports, "__esModule", { value: true }); + var EnumConverter_1 = __webpack_require__(30); + exports.EnumConverter = EnumConverter_1.EnumConverter; + var Param_1 = __webpack_require__(31); + exports.Param = Param_1.Param; + + +/***/ }, +/* 79 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var api_internal_contract_1 = __webpack_require__(69); + var api_utils_1 = __webpack_require__(78); + var Enums = __webpack_require__(80); + /* tslint:disable:typedef - Disable this to make declaring these classes a bit easier */ + var PresLayerToApiEnumMappings = (function () { + function PresLayerToApiEnumMappings() { + } + PresLayerToApiEnumMappings.zoneType = new api_utils_1.EnumConverter((_a = {}, + _a[Enums.ZoneType.ZT_Invalid] = api_internal_contract_1.DashboardObjectType.Blank, + _a[Enums.ZoneType.ZT_Viz] = api_internal_contract_1.DashboardObjectType.Worksheet, + _a[Enums.ZoneType.ZT_ColorLegend] = api_internal_contract_1.DashboardObjectType.Legend, + _a[Enums.ZoneType.ZT_ShapeLegend] = api_internal_contract_1.DashboardObjectType.Legend, + _a[Enums.ZoneType.ZT_SizeLegend] = api_internal_contract_1.DashboardObjectType.Legend, + _a[Enums.ZoneType.ZT_MapLegend] = api_internal_contract_1.DashboardObjectType.Legend, + _a[Enums.ZoneType.ZT_QuickFilter] = api_internal_contract_1.DashboardObjectType.QuickFilter, + _a[Enums.ZoneType.ZT_Highlighter] = api_internal_contract_1.DashboardObjectType.Blank, + _a[Enums.ZoneType.ZT_CurrPage] = api_internal_contract_1.DashboardObjectType.PageFilter, + _a[Enums.ZoneType.ZT_Empty] = api_internal_contract_1.DashboardObjectType.Blank, + _a[Enums.ZoneType.ZT_Title] = api_internal_contract_1.DashboardObjectType.Title, + _a[Enums.ZoneType.ZT_Text] = api_internal_contract_1.DashboardObjectType.Text, + _a[Enums.ZoneType.ZT_Bitmap] = api_internal_contract_1.DashboardObjectType.Image, + _a[Enums.ZoneType.ZT_Web] = api_internal_contract_1.DashboardObjectType.WebPage, + _a[Enums.ZoneType.ZT_AddIn] = api_internal_contract_1.DashboardObjectType.Extension, + _a[Enums.ZoneType.ZT_ParamCtrl] = api_internal_contract_1.DashboardObjectType.ParameterControl, + _a[Enums.ZoneType.ZT_FlipboardNav] = api_internal_contract_1.DashboardObjectType.Blank, + _a[Enums.ZoneType.ZT_Flipboard] = api_internal_contract_1.DashboardObjectType.Blank, + _a[Enums.ZoneType.ZT_LayoutBasic] = api_internal_contract_1.DashboardObjectType.Blank, + _a[Enums.ZoneType.ZT_LayoutFlow] = api_internal_contract_1.DashboardObjectType.Blank, + _a[Enums.ZoneType.ZT_LayoutFreeForm] = api_internal_contract_1.DashboardObjectType.Blank, + _a[Enums.ZoneType.ZT_End] = api_internal_contract_1.DashboardObjectType.Blank, + _a[Enums.ZoneType.ZT_Button] = api_internal_contract_1.DashboardObjectType.Blank, + _a), api_internal_contract_1.DashboardObjectType.Blank); + PresLayerToApiEnumMappings.extensionContext = new api_utils_1.EnumConverter((_b = {}, + _b[Enums.AddInContext.Unknown] = api_internal_contract_1.ExtensionContext.Unknown, + _b[Enums.AddInContext.Desktop] = api_internal_contract_1.ExtensionContext.Desktop, + _b[Enums.AddInContext.Server] = api_internal_contract_1.ExtensionContext.Server, + _b)); + PresLayerToApiEnumMappings.extensionMode = new api_utils_1.EnumConverter((_c = {}, + _c[Enums.AddInMode.Unknown] = api_internal_contract_1.ExtensionMode.Unknown, + _c[Enums.AddInMode.Authoring] = api_internal_contract_1.ExtensionMode.Authoring, + _c[Enums.AddInMode.Viewing] = api_internal_contract_1.ExtensionMode.Viewing, + _c)); + PresLayerToApiEnumMappings.dataType = new api_utils_1.EnumConverter((_d = {}, + _d[Enums.DataType.DT_BOOLEAN] = api_internal_contract_1.DataType.Bool, + _d[Enums.DataType.DT_DATE] = api_internal_contract_1.DataType.Date, + _d[Enums.DataType.DT_DATETIME] = api_internal_contract_1.DataType.DateTime, + _d[Enums.DataType.DT_INTEGER] = api_internal_contract_1.DataType.Int, + _d[Enums.DataType.DT_REAL] = api_internal_contract_1.DataType.Float, + _d[Enums.DataType.DT_STRING] = api_internal_contract_1.DataType.String, + _d[Enums.DataType.DT_SPATIAL] = api_internal_contract_1.DataType.Spatial, + _d)); + PresLayerToApiEnumMappings.fieldAggregationType = new api_utils_1.EnumConverter((_e = {}, + _e[Enums.AggType.AGG_ATTR] = api_internal_contract_1.FieldAggregationType.Attr, + _e[Enums.AggType.AGG_AVG] = api_internal_contract_1.FieldAggregationType.Avg, + _e[Enums.AggType.AGG_COUNT] = api_internal_contract_1.FieldAggregationType.Count, + _e[Enums.AggType.AGG_COUNTD] = api_internal_contract_1.FieldAggregationType.Countd, + _e[Enums.AggType.AGG_DAY] = api_internal_contract_1.FieldAggregationType.Day, + _e[Enums.AggType.AGG_END] = api_internal_contract_1.FieldAggregationType.End, + _e[Enums.AggType.AGG_HOUR] = api_internal_contract_1.FieldAggregationType.Hour, + _e[Enums.AggType.AGG_INOUT] = api_internal_contract_1.FieldAggregationType.InOut, + _e[Enums.AggType.AGG_KURTOSIS] = api_internal_contract_1.FieldAggregationType.Kurtosis, + _e[Enums.AggType.AGG_MAX] = api_internal_contract_1.FieldAggregationType.Max, + _e[Enums.AggType.AGG_MDY] = api_internal_contract_1.FieldAggregationType.Mdy, + _e[Enums.AggType.AGG_MEDIAN] = api_internal_contract_1.FieldAggregationType.Median, + _e[Enums.AggType.AGG_MIN] = api_internal_contract_1.FieldAggregationType.Min, + _e[Enums.AggType.AGG_MINUTE] = api_internal_contract_1.FieldAggregationType.Minute, + _e[Enums.AggType.AGG_MONTHYEAR] = api_internal_contract_1.FieldAggregationType.MonthYear, + _e[Enums.AggType.AGG_NONE] = api_internal_contract_1.FieldAggregationType.None, + _e[Enums.AggType.AGG_QTR] = api_internal_contract_1.FieldAggregationType.Qtr, + _e[Enums.AggType.AGG_QUART1] = api_internal_contract_1.FieldAggregationType.Quart1, + _e[Enums.AggType.AGG_QUART3] = api_internal_contract_1.FieldAggregationType.Quart3, + _e[Enums.AggType.AGG_SECOND] = api_internal_contract_1.FieldAggregationType.Second, + _e[Enums.AggType.AGG_SKEWNESS] = api_internal_contract_1.FieldAggregationType.Skewness, + _e[Enums.AggType.AGG_STDEV] = api_internal_contract_1.FieldAggregationType.Stdev, + _e[Enums.AggType.AGG_STDEVP] = api_internal_contract_1.FieldAggregationType.Stdevp, + _e[Enums.AggType.AGG_SUM] = api_internal_contract_1.FieldAggregationType.Sum, + _e[Enums.AggType.TRUNC_DAY] = api_internal_contract_1.FieldAggregationType.TruncDay, + _e[Enums.AggType.TRUNC_HOUR] = api_internal_contract_1.FieldAggregationType.TruncHour, + _e[Enums.AggType.TRUNC_MINUTE] = api_internal_contract_1.FieldAggregationType.TruncMinute, + _e[Enums.AggType.TRUNC_MONTH] = api_internal_contract_1.FieldAggregationType.TruncMonth, + _e[Enums.AggType.TRUNC_QTR] = api_internal_contract_1.FieldAggregationType.TruncQtr, + _e[Enums.AggType.TRUNC_SECOND] = api_internal_contract_1.FieldAggregationType.TruncSecond, + _e[Enums.AggType.TRUNC_WEEK] = api_internal_contract_1.FieldAggregationType.TruncWeek, + _e[Enums.AggType.TRUNC_YEAR] = api_internal_contract_1.FieldAggregationType.TruncYear, + _e[Enums.AggType.AGG_USER] = api_internal_contract_1.FieldAggregationType.User, + _e[Enums.AggType.AGG_VAR] = api_internal_contract_1.FieldAggregationType.Var, + _e[Enums.AggType.AGG_VARP] = api_internal_contract_1.FieldAggregationType.Varp, + _e[Enums.AggType.AGG_WEEK] = api_internal_contract_1.FieldAggregationType.Week, + _e[Enums.AggType.AGG_WEEKDAY] = api_internal_contract_1.FieldAggregationType.Weekday, + _e[Enums.AggType.AGG_YEAR] = api_internal_contract_1.FieldAggregationType.Year, + _e)); + PresLayerToApiEnumMappings.fieldRoleType = new api_utils_1.EnumConverter((_f = {}, + _f[Enums.FieldRole.ROLE_DIMENSION] = api_internal_contract_1.FieldRoleType.Dimension, + _f[Enums.FieldRole.ROLE_MEASURE] = api_internal_contract_1.FieldRoleType.Measure, + _f)); + PresLayerToApiEnumMappings.parameterTypesDomainType = new api_utils_1.EnumConverter((_g = {}, + _g[Enums.ParameterTypesDomainType.Domain_Any] = api_internal_contract_1.DomainRestrictionType.All, + _g[Enums.ParameterTypesDomainType.Domain_List] = api_internal_contract_1.DomainRestrictionType.List, + _g[Enums.ParameterTypesDomainType.Domain_Range] = api_internal_contract_1.DomainRestrictionType.Range, + _g)); + PresLayerToApiEnumMappings.dateStepPeriod = new api_utils_1.EnumConverter((_h = {}, + _h[Enums.DatePeriodType.PeriodYear] = api_internal_contract_1.DateStepPeriod.Years, + _h[Enums.DatePeriodType.PeriodQuarter] = api_internal_contract_1.DateStepPeriod.Quarters, + _h[Enums.DatePeriodType.PeriodMonth] = api_internal_contract_1.DateStepPeriod.Months, + _h[Enums.DatePeriodType.PeriodWeek] = api_internal_contract_1.DateStepPeriod.Weeks, + _h[Enums.DatePeriodType.PeriodDay] = api_internal_contract_1.DateStepPeriod.Days, + _h[Enums.DatePeriodType.PeriodHour] = api_internal_contract_1.DateStepPeriod.Hours, + _h[Enums.DatePeriodType.PeriodMinute] = api_internal_contract_1.DateStepPeriod.Minutes, + _h[Enums.DatePeriodType.PeriodSecond] = api_internal_contract_1.DateStepPeriod.Seconds, + _h)); + PresLayerToApiEnumMappings.dateRangeType = new api_utils_1.EnumConverter((_j = {}, + _j[Enums.FiltersRelativeDateRangeType.RangeCurrent] = api_internal_contract_1.DateRangeType.Current, + _j[Enums.FiltersRelativeDateRangeType.RangeCurrentToDate] = api_internal_contract_1.DateRangeType.ToDate, + _j[Enums.FiltersRelativeDateRangeType.RangeLast1] = api_internal_contract_1.DateRangeType.Last, + _j[Enums.FiltersRelativeDateRangeType.RangeLastN] = api_internal_contract_1.DateRangeType.LastN, + _j[Enums.FiltersRelativeDateRangeType.RangeNext1] = api_internal_contract_1.DateRangeType.Next, + _j[Enums.FiltersRelativeDateRangeType.RangeNextN] = api_internal_contract_1.DateRangeType.NextN, + _j)); + PresLayerToApiEnumMappings.filterDomainType = new api_utils_1.EnumConverter((_k = {}, + _k[Enums.FiltersDomainType.Relevant] = api_internal_contract_1.FilterDomainType.Relevant, + _k[Enums.FiltersDomainType.Database] = api_internal_contract_1.FilterDomainType.Database, + _k)); + return PresLayerToApiEnumMappings; + }()); + exports.PresLayerToApiEnumMappings = PresLayerToApiEnumMappings; + var ApiToPresLayerEnumMappings = (function () { + function ApiToPresLayerEnumMappings() { + } + ApiToPresLayerEnumMappings.filterUpdateType = new api_utils_1.EnumConverter((_a = {}, + _a[api_internal_contract_1.FilterUpdateType.Add] = Enums.FilterUpdateType.ADD, + _a[api_internal_contract_1.FilterUpdateType.All] = Enums.FilterUpdateType.ALL, + _a[api_internal_contract_1.FilterUpdateType.Replace] = Enums.FilterUpdateType.REPLACE, + _a[api_internal_contract_1.FilterUpdateType.Remove] = Enums.FilterUpdateType.REMOVE, + _a)); + ApiToPresLayerEnumMappings.nullOption = new api_utils_1.EnumConverter((_b = {}, + _b[api_internal_contract_1.FilterNullOption.AllValues] = Enums.FiltersQuantitativeIncludedValues.All, + _b[api_internal_contract_1.FilterNullOption.NonNullValues] = Enums.FiltersQuantitativeIncludedValues.NonNull, + _b[api_internal_contract_1.FilterNullOption.NullValues] = Enums.FiltersQuantitativeIncludedValues.Null, + _b)); + ApiToPresLayerEnumMappings.filterDomainType = new api_utils_1.EnumConverter((_c = {}, + _c[api_internal_contract_1.FilterDomainType.Relevant] = Enums.FiltersDomainType.Relevant, + _c[api_internal_contract_1.FilterDomainType.Database] = Enums.FiltersDomainType.Database, + _c)); + return ApiToPresLayerEnumMappings; + }()); + exports.ApiToPresLayerEnumMappings = ApiToPresLayerEnumMappings; + var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _a, _b, _c; + /* tslint:enable:typedef */ + + +/***/ }, +/* 80 */ +/***/ function(module, exports) { + + "use strict"; + /* tslint:disable */ + // ----------------------------------------------------------------------------- + // + // This file is the copyrighted property of Tableau Software and is protected + // by registered patents and other applicable U.S. and international laws and + // regulations. + // + // Unlicensed use of the contents of this file is prohibited. Please refer to + // the NOTICES.txt file for further details. + // + // ----------------------------------------------------------------------------- + // WARNING: Computer generated file. Do not hand modify. + // DEPENDS ON: ['../typescript/js-api/api-core/node_modules/@tableau/preslayer-codegen-typescript/templates/enum-ts.template', u'../typescript/js-api/api-core/temp-pres-layer/all-enums.data'] + Object.defineProperty(exports, "__esModule", { value: true }); + // + var DataScaling; + (function (DataScaling) { + // + DataScaling["SCALING_NONE"] = "none"; + // + DataScaling["SCALING_STANDARDIZED"] = "standardized"; + // + DataScaling["SCALING_NORMALIZED"] = "normalized"; + })(DataScaling = exports.DataScaling || (exports.DataScaling = {})); + // + var ForecastModelType; + (function (ForecastModelType) { + // + ForecastModelType["ForecastModelTypeAutoSeason"] = "auto-season"; + // + ForecastModelType["ForecastModelTypeAuto"] = "auto"; + // + ForecastModelType["ForecastModelTypeCustom"] = "custom"; + })(ForecastModelType = exports.ForecastModelType || (exports.ForecastModelType = {})); + // + var ForecastRangeType; + (function (ForecastRangeType) { + // + ForecastRangeType["ForecastRangeTypeAuto"] = "auto"; + // + ForecastRangeType["ForecastRangeTypeNext"] = "next"; + // + ForecastRangeType["ForecastRangeTypeEndOf"] = "end-of"; + })(ForecastRangeType = exports.ForecastRangeType || (exports.ForecastRangeType = {})); + // + var ForecastStatus; + (function (ForecastStatus) { + // + ForecastStatus["FS_VALID"] = "fs-valid"; + // + ForecastStatus["FS_INVALID_DATETIME"] = "fs-invalid-datetime"; + // + ForecastStatus["FS_INVALID_RESPONSE"] = "fs-invalid-response"; + // + ForecastStatus["FS_NEED_MORE_DATA"] = "fs-need-more-data"; + // + ForecastStatus["FS_TIME_SERIES_TOO_SHORT"] = "fs-time-series-too-short"; + // + ForecastStatus["FS_TIME_SERIES_IRREGULAR"] = "fs-time-series-irregular"; + // + ForecastStatus["FS_NULL_DATETIME"] = "fs-null-datetime"; + // + ForecastStatus["FS_NULL_RESPONSE"] = "fs-null-response"; + // + ForecastStatus["FS_METADATA_INVALID"] = "fs-metadata-invalid"; + // + ForecastStatus["FS_NO_RESPONSE"] = "fs-no-response"; + // + ForecastStatus["FS_EXCESS_DATA"] = "fs-excess-data"; + // + ForecastStatus["FS_EXCESS_PARTITIONS"] = "fs-excess-partitions"; + // + ForecastStatus["FS_DIMENSION_INVALID"] = "fs-dimension-invalid"; + // + ForecastStatus["FS_TABLECALC_INVALID"] = "fs-tablecalc-invalid"; + // + ForecastStatus["FS_TIME_SERIES_TOO_IRREGULAR"] = "fs-time-series-too-irregular"; + // + ForecastStatus["FS_AGGREGATE_FILTER"] = "fs-aggregate-filter"; + // + ForecastStatus["FS_DISAGGREGATE_RESPONSE"] = "fs-disaggregate-response"; + // + ForecastStatus["FS_PERCENTAGE_INVALID"] = "fs-percentage-invalid"; + // + ForecastStatus["FS_TOTAL_INVALID"] = "fs-total-invalid"; + // + ForecastStatus["FS_EXCESS_DATETIME"] = "fs-excess-datetime"; + // + ForecastStatus["FS_DATE_AGG_INCOMPATIBLE"] = "fs-date-agg-incompatible"; + // + ForecastStatus["FS_TIME_SERIES_NOT_POSITIVE"] = "fs-time-series-not-positive"; + // + ForecastStatus["FS_REQUESTED_MODEL_INVALID"] = "fs-requested-model-invalid"; + // + ForecastStatus["FS_TOO_SHORT_FOR_SEASON"] = "fs-too-short-for-season"; + // + ForecastStatus["FS_REQUESTED_MODEL_UNSTABLE"] = "fs-requested-model-unstable"; + // + ForecastStatus["FS_UNDEFINED"] = "fs-undefined"; + })(ForecastStatus = exports.ForecastStatus || (exports.ForecastStatus = {})); + // + var StyleAttribute; + (function (StyleAttribute) { + // + StyleAttribute["saAlternateText"] = "saAlternateText"; + // + StyleAttribute["saAltMarkColor"] = "saAltMarkColor"; + // + StyleAttribute["saAspect"] = "saAspect"; + // + StyleAttribute["saAutoSubtitle"] = "saAutoSubtitle"; + // + StyleAttribute["saBackgroundColor"] = "saBackgroundColor"; + // + StyleAttribute["saBackgroundTransparency"] = "saBackgroundTransparency"; + // + StyleAttribute["saBandSize"] = "saBandSize"; + // + StyleAttribute["saBandColor"] = "saBandColor"; + // + StyleAttribute["saBandLevel"] = "saBandLevel"; + // + StyleAttribute["saBodyType"] = "saBodyType"; + // + StyleAttribute["saBorderColor"] = "saBorderColor"; + // + StyleAttribute["saBorderColorTop"] = "saBorderColorTop"; + // + StyleAttribute["saBorderColorRight"] = "saBorderColorRight"; + // + StyleAttribute["saBorderColorBottom"] = "saBorderColorBottom"; + // + StyleAttribute["saBorderColorLeft"] = "saBorderColorLeft"; + // + StyleAttribute["saBorderStyle"] = "saBorderStyle"; + // + StyleAttribute["saBorderStyleTop"] = "saBorderStyleTop"; + // + StyleAttribute["saBorderStyleRight"] = "saBorderStyleRight"; + // + StyleAttribute["saBorderStyleBottom"] = "saBorderStyleBottom"; + // + StyleAttribute["saBorderStyleLeft"] = "saBorderStyleLeft"; + // + StyleAttribute["saBorderWidth"] = "saBorderWidth"; + // + StyleAttribute["saBorderWidthTop"] = "saBorderWidthTop"; + // + StyleAttribute["saBorderWidthRight"] = "saBorderWidthRight"; + // + StyleAttribute["saBorderWidthBottom"] = "saBorderWidthBottom"; + // + StyleAttribute["saBorderWidthLeft"] = "saBorderWidthLeft"; + // + StyleAttribute["saBoxplotStyle"] = "saBoxplotStyle"; + // + StyleAttribute["saBreakOnSpecial"] = "saBreakOnSpecial"; + // + StyleAttribute["saCell"] = "saCell"; + // + StyleAttribute["saCellW"] = "saCellW"; + // + StyleAttribute["saCellH"] = "saCellH"; + // + StyleAttribute["saCellQ"] = "saCellQ"; + // + StyleAttribute["saCellQMark"] = "saCellQMark"; + // + StyleAttribute["saColor"] = "saColor"; + // + StyleAttribute["saColorMode"] = "saColorMode"; + // + StyleAttribute["saColLevels"] = "saColLevels"; + // + StyleAttribute["saColVertLevels"] = "saColVertLevels"; + // + StyleAttribute["saColHorizHeight"] = "saColHorizHeight"; + // + StyleAttribute["saColVertHeight"] = "saColVertHeight"; + // Deprecated + StyleAttribute["saColHeight"] = "saColHeight"; + // + StyleAttribute["saColWidth"] = "saColWidth"; + // + StyleAttribute["saContent"] = "saContent"; + // + StyleAttribute["saDisplayFieldLabels"] = "saDisplayFieldLabels"; + // + StyleAttribute["saDisplayHeader"] = "saDisplayHeader"; + // + StyleAttribute["saDisplayAlternateText"] = "saDisplayAlternateText"; + // + StyleAttribute["saDivLevel"] = "saDivLevel"; + // + StyleAttribute["saEnabled"] = "saEnabled"; + // + StyleAttribute["saFillAboveColor"] = "saFillAboveColor"; + // + StyleAttribute["saFillBelowColor"] = "saFillBelowColor"; + // + StyleAttribute["saFillColor"] = "saFillColor"; + // + StyleAttribute["saFogBGColor"] = "saFogBGColor"; + // + StyleAttribute["saFogDesaturationWithoutSelection"] = "saFogDesaturationWithoutSelection"; + // + StyleAttribute["saFogDesaturationWithSelection"] = "saFogDesaturationWithSelection"; + // + StyleAttribute["saFont"] = "saFont"; + // + StyleAttribute["saFontFamily"] = "saFontFamily"; + // + StyleAttribute["saFontSize"] = "saFontSize"; + // + StyleAttribute["saFontStyle"] = "saFontStyle"; + // + StyleAttribute["saFontWeight"] = "saFontWeight"; + // + StyleAttribute["saGeographicAreaType"] = "saGeographicAreaType"; + // + StyleAttribute["saHAlign"] = "saHAlign"; + // + StyleAttribute["saHaloColor"] = "saHaloColor"; + // + StyleAttribute["saHaloColorSelected"] = "saHaloColorSelected"; + // + StyleAttribute["saHasFill"] = "saHasFill"; + // + StyleAttribute["saHasHalo"] = "saHasHalo"; + // Deprecated + StyleAttribute["saHasLabel"] = "saHasLabel"; + // + StyleAttribute["saHasStroke"] = "saHasStroke"; + // + StyleAttribute["saHeight"] = "saHeight"; + // + StyleAttribute["saHeightHeader"] = "saHeightHeader"; + // + StyleAttribute["saHighlightLegend"] = "saHighlightLegend"; + // + StyleAttribute["saHnaxis"] = "saHnaxis"; + // + StyleAttribute["saHnlabel"] = "saHnlabel"; + // + StyleAttribute["saInTooltip"] = "saInTooltip"; + // + StyleAttribute["saLineEnd"] = "saLineEnd"; + // + StyleAttribute["saLineEndSize"] = "saLineEndSize"; + // + StyleAttribute["saLineInterpolation"] = "saLineInterpolation"; + // + StyleAttribute["saLineMarkerPosition"] = "saLineMarkerPosition"; + // + StyleAttribute["saLinePattern"] = "saLinePattern"; + // + StyleAttribute["saLinePatternOnly"] = "saLinePatternOnly"; + // + StyleAttribute["saLineVisibility"] = "saLineVisibility"; + // + StyleAttribute["saMap"] = "saMap"; + // + StyleAttribute["saMapStyle"] = "saMapStyle"; + // + StyleAttribute["saMargin"] = "saMargin"; + // + StyleAttribute["saMarginTop"] = "saMarginTop"; + // + StyleAttribute["saMarginRight"] = "saMarginRight"; + // + StyleAttribute["saMarginBottom"] = "saMarginBottom"; + // + StyleAttribute["saMarginLeft"] = "saMarginLeft"; + // + StyleAttribute["saMarkColor"] = "saMarkColor"; + // + StyleAttribute["saMarkTransparency"] = "saMarkTransparency"; + // + StyleAttribute["saMarkLabelsShow"] = "saMarkLabelsShow"; + // + StyleAttribute["saRunningOrderLabelsShow"] = "saRunningOrderLabelsShow"; + // + StyleAttribute["saMarkLabelsMode"] = "saMarkLabelsMode"; + // + StyleAttribute["saMarkLabelsCull"] = "saMarkLabelsCull"; + // + StyleAttribute["saMarkLabelsLineEndFirst"] = "saMarkLabelsLineEndFirst"; + // + StyleAttribute["saMarkLabelsLineEndLast"] = "saMarkLabelsLineEndLast"; + // + StyleAttribute["saMarkLabelsRangeMin"] = "saMarkLabelsRangeMin"; + // + StyleAttribute["saMarkLabelsRangeMax"] = "saMarkLabelsRangeMax"; + // + StyleAttribute["saMarkLabelsRangeScope"] = "saMarkLabelsRangeScope"; + // + StyleAttribute["saMarkLabelsRangeField"] = "saMarkLabelsRangeField"; + // + StyleAttribute["saMarkMarkersMode"] = "saMarkMarkersMode"; + // + StyleAttribute["saMaxHeight"] = "saMaxHeight"; + // + StyleAttribute["saMaxFontSize"] = "saMaxFontSize"; + // + StyleAttribute["saMaxStrokeWidth"] = "saMaxStrokeWidth"; + // + StyleAttribute["saMaxWidth"] = "saMaxWidth"; + // + StyleAttribute["saMidStrokeWidth"] = "saMidStrokeWidth"; + // + StyleAttribute["saMinHeight"] = "saMinHeight"; + // + StyleAttribute["saMinFontSize"] = "saMinFontSize"; + // + StyleAttribute["saMinLength"] = "saMinLength"; + // + StyleAttribute["saMinMapSize"] = "saMinMapSize"; + // + StyleAttribute["saMinSize"] = "saMinSize"; + // + StyleAttribute["saMinStrokeWidth"] = "saMinStrokeWidth"; + // + StyleAttribute["saMinWidth"] = "saMinWidth"; + // + StyleAttribute["saNonhighlightColor"] = "saNonhighlightColor"; + // + StyleAttribute["saOmitOnSpecial"] = "saOmitOnSpecial"; + // + StyleAttribute["saOpacity"] = "saOpacity"; + // + StyleAttribute["saOrientation"] = "saOrientation"; + // + StyleAttribute["saPadding"] = "saPadding"; + // + StyleAttribute["saPaddingTop"] = "saPaddingTop"; + // + StyleAttribute["saPaddingRight"] = "saPaddingRight"; + // + StyleAttribute["saPaddingBottom"] = "saPaddingBottom"; + // + StyleAttribute["saPaddingLeft"] = "saPaddingLeft"; + // + StyleAttribute["saPalette"] = "saPalette"; + // + StyleAttribute["saRenderFoldReversed"] = "saRenderFoldReversed"; + // + StyleAttribute["saReversePalette"] = "saReversePalette"; + // + StyleAttribute["saRounding"] = "saRounding"; + // + StyleAttribute["saRowHorizLevels"] = "saRowHorizLevels"; + // + StyleAttribute["saRowHorizWidth"] = "saRowHorizWidth"; + // + StyleAttribute["saRowLevels"] = "saRowLevels"; + // + StyleAttribute["saRowVertWidth"] = "saRowVertWidth"; + // + StyleAttribute["saSeparator"] = "saSeparator"; + // + StyleAttribute["saShape"] = "saShape"; + // Deprecated + StyleAttribute["saShowLabels"] = "saShowLabels"; + // + StyleAttribute["saSize"] = "saSize"; + // + StyleAttribute["saSizeBar"] = "saSizeBar"; + // + StyleAttribute["saSmartAutoAlignment"] = "saSmartAutoAlignment"; + // + StyleAttribute["saSpace"] = "saSpace"; + // + StyleAttribute["saStrokeColor"] = "saStrokeColor"; + // + StyleAttribute["saStrokeSize"] = "saStrokeSize"; + // + StyleAttribute["saSubtitle"] = "saSubtitle"; + // + StyleAttribute["saTextAlign"] = "saTextAlign"; + // + StyleAttribute["saTextAlignDefault"] = "saTextAlignDefault"; + // + StyleAttribute["saTextDecoration"] = "saTextDecoration"; + // + StyleAttribute["saTextIndent"] = "saTextIndent"; + // + StyleAttribute["saTextOrientation"] = "saTextOrientation"; + // + StyleAttribute["saTextFormat"] = "saTextFormat"; + // + StyleAttribute["saTickColor"] = "saTickColor"; + // + StyleAttribute["saTickLength"] = "saTickLength"; + // Deprecated + StyleAttribute["saTickSpacing"] = "saTickSpacing"; + // + StyleAttribute["saTitle"] = "saTitle"; + // + StyleAttribute["saTotalLabel"] = "saTotalLabel"; + // + StyleAttribute["saVAlign"] = "saVAlign"; + // + StyleAttribute["saVerticalAlign"] = "saVerticalAlign"; + // + StyleAttribute["saVerticalAlignDefault"] = "saVerticalAlignDefault"; + // + StyleAttribute["saVnaxis"] = "saVnaxis"; + // + StyleAttribute["saVnlabel"] = "saVnlabel"; + // + StyleAttribute["saWarnOnSpecial"] = "saWarnOnSpecial"; + // + StyleAttribute["saWashout"] = "saWashout"; + // + StyleAttribute["saWhiskerEnd"] = "saWhiskerEnd"; + // + StyleAttribute["saWhiskerStrokeColor"] = "saWhiskerStrokeColor"; + // + StyleAttribute["saWhiskerStrokeSize"] = "saWhiskerStrokeSize"; + // + StyleAttribute["saWidth"] = "saWidth"; + // + StyleAttribute["saWidthHeader"] = "saWidthHeader"; + // + StyleAttribute["saWrap"] = "saWrap"; + // + StyleAttribute["saZoom"] = "saZoom"; + // Special attributes used for matching + StyleAttribute["saNone"] = "saNone"; + // Special attributes used for matching + StyleAttribute["saAny"] = "saAny"; + })(StyleAttribute = exports.StyleAttribute || (exports.StyleAttribute = {})); + // lowest bit of enum value denotes two-tone styles; newly added styles should follow this pattern. + var BoxplotStyle; + (function (BoxplotStyle) { + // mask for checking if a style is two-tone + BoxplotStyle["BoxplotStyleTwoTone"] = "two-tone"; + // + BoxplotStyle["BoxplotStyleModern"] = "modern"; + // + BoxplotStyle["BoxplotStyleGlass"] = "glass"; + // + BoxplotStyle["BoxplotStyleClassic"] = "classic"; + // + BoxplotStyle["BoxplotStyleClassicTwoTone"] = "classic-two-tone"; + })(BoxplotStyle = exports.BoxplotStyle || (exports.BoxplotStyle = {})); + // used for boxplots and prediction band whiskers + var WhiskerEnd; + (function (WhiskerEnd) { + // + WhiskerEnd["WhiskerEndNone"] = "none"; + // + WhiskerEnd["WhiskerEndSmall"] = "small"; + // + WhiskerEnd["WhiskerEndLarge"] = "large"; + })(WhiskerEnd = exports.WhiskerEnd || (exports.WhiskerEnd = {})); + // + var StyleElement; + (function (StyleElement) { + // + StyleElement["elementAxis"] = "elementAxis"; + // + StyleElement["elementCell"] = "elementCell"; + // + StyleElement["elementDatalabel"] = "elementDatalabel"; + // + StyleElement["elementDropspot"] = "elementDropspot"; + // + StyleElement["elementHeader"] = "elementHeader"; + // + StyleElement["elementFieldLabel"] = "elementFieldLabel"; + // + StyleElement["elementFieldLabelDecoration"] = "elementFieldLabelDecoration"; + // + StyleElement["elementFieldLabelSpanner"] = "elementFieldLabelSpanner"; + // + StyleElement["elementLabel"] = "elementLabel"; + // + StyleElement["elementMark"] = "elementMark"; + // + StyleElement["elementPane"] = "elementPane"; + // + StyleElement["elementTable"] = "elementTable"; + // + StyleElement["elementWorksheet"] = "elementWorksheet"; + // + StyleElement["elementBasesheet"] = "elementBasesheet"; + // + StyleElement["elementDashboard"] = "elementDashboard"; + // + StyleElement["elementStoryboard"] = "elementStoryboard"; + // + StyleElement["elementCaption"] = "elementCaption"; + // + StyleElement["elementDropline"] = "elementDropline"; + // + StyleElement["elementRefline"] = "elementRefline"; + // + StyleElement["elementRefBand"] = "elementRefBand"; + // + StyleElement["elementRefBoxplot"] = "elementRefBoxplot"; + // + StyleElement["elementGridline"] = "elementGridline"; + // + StyleElement["elementZeroline"] = "elementZeroline"; + // + StyleElement["elementTrendline"] = "elementTrendline"; + // + StyleElement["elementTableDiv"] = "elementTableDiv"; + // + StyleElement["elementHeaderDiv"] = "elementHeaderDiv"; + // + StyleElement["elementMappedImage"] = "elementMappedImage"; + // + StyleElement["elementAction"] = "elementAction"; + // + StyleElement["elementTitle"] = "elementTitle"; + // + StyleElement["elementLegend"] = "elementLegend"; + // + StyleElement["elementLegendTitle"] = "elementLegendTitle"; + // + StyleElement["elementLegendTitleText"] = "elementLegendTitleText"; + // + StyleElement["elementAxisTitle"] = "elementAxisTitle"; + // + StyleElement["elementAnnotation"] = "elementAnnotation"; + // + StyleElement["elementDashTitle"] = "elementDashTitle"; + // + StyleElement["elementDashSubtitle"] = "elementDashSubtitle"; + // + StyleElement["elementDashText"] = "elementDashText"; + // + StyleElement["elementDashZone"] = "elementDashZone"; + // + StyleElement["elementDashContainer"] = "elementDashContainer"; + // + StyleElement["elementScrollbar"] = "elementScrollbar"; + // Static on/off map layers + StyleElement["elementMapLayer"] = "elementMapLayer"; + // Contains washout + StyleElement["elementMap"] = "elementMap"; + // Initially for UrbanMapping/Claritas data + StyleElement["elementMapDataLayer"] = "elementMapDataLayer"; + // + StyleElement["elementQuickFilter"] = "elementQuickFilter"; + // + StyleElement["elementQuickFilterTitle"] = "elementQuickFilterTitle"; + // + StyleElement["elementParameterCtrl"] = "elementParameterCtrl"; + // + StyleElement["elementParameterCtrlTitle"] = "elementParameterCtrlTitle"; + // + StyleElement["elementPageCardTitle"] = "elementPageCardTitle"; + // + StyleElement["elementStoryDescription"] = "elementStoryDescription"; + // + StyleElement["elementStoryPointCaption"] = "elementStoryPointCaption"; + // + StyleElement["elementStoryTitle"] = "elementStoryTitle"; + // + StyleElement["elementTooltip"] = "elementTooltip"; + // + StyleElement["elementAll"] = "elementAll"; + // + StyleElement["elementPageCardBody"] = "elementPageCardBody"; + // + StyleElement["elementDataHighlighter"] = "elementDataHighlighter"; + // + StyleElement["elementDataHighlighterTitle"] = "elementDataHighlighterTitle"; + // Special elements used for matching and organization + StyleElement["elementNone"] = "elementNone"; + // Special elements used for matching and organization + StyleElement["elementAny"] = "elementAny"; + // Special elements used for matching and organization + StyleElement["elementRoot"] = "elementRoot"; + })(StyleElement = exports.StyleElement || (exports.StyleElement = {})); + // Do not mess with these values. They are sometimes used as array indexes/bounds + var StyleDataClass; + (function (StyleDataClass) { + // + StyleDataClass["dcNormal"] = "dcNormal"; + // + StyleDataClass["dcTotal"] = "dcTotal"; + // + StyleDataClass["dcSubtotal"] = "dcSubtotal"; + // + StyleDataClass["dcCOUNT"] = "dcCOUNT"; + })(StyleDataClass = exports.StyleDataClass || (exports.StyleDataClass = {})); + // + var StyleFieldScope; + (function (StyleFieldScope) { + // + StyleFieldScope["fsNone"] = "fsNone"; + // + StyleFieldScope["fsRows"] = "fsRows"; + // + StyleFieldScope["fsCols"] = "fsCols"; + })(StyleFieldScope = exports.StyleFieldScope || (exports.StyleFieldScope = {})); + // + var StyleSwatch; + (function (StyleSwatch) { + // + StyleSwatch["ssUnspecified"] = "ssUnspecified"; + // + StyleSwatch["ssLight"] = "ssLight"; + // + StyleSwatch["ssDark"] = "ssDark"; + })(StyleSwatch = exports.StyleSwatch || (exports.StyleSwatch = {})); + // + var TableauFontStyle; + (function (TableauFontStyle) { + // + TableauFontStyle["NormalStyle"] = "font-style-normal"; + // + TableauFontStyle["Italic"] = "font-style-italic"; + })(TableauFontStyle = exports.TableauFontStyle || (exports.TableauFontStyle = {})); + // Unsupported for Betsy + var TextDecoration; + (function (TextDecoration) { + // + TextDecoration["NoDecoration"] = "text-decoration-none"; + // + TextDecoration["Underline"] = "text-decoration-underline"; + // not yet supported + TextDecoration["Overline"] = "text-decoration-overline"; + // + TextDecoration["Strikethrough"] = "text-decoration-strikethrough"; + })(TextDecoration = exports.TextDecoration || (exports.TextDecoration = {})); + // + var FontWeight; + (function (FontWeight) { + // + FontWeight["NormalWeight"] = "font-weight-normal"; + // + FontWeight["Bold"] = "font-weight-bold"; + })(FontWeight = exports.FontWeight || (exports.FontWeight = {})); + // + var TextOrient; + (function (TextOrient) { + // + TextOrient["TO_Auto"] = "text-orient-auto"; + // + TextOrient["TO_Horz"] = "text-orient-horizontal"; + // + TextOrient["TO_VertUp"] = "text-orient-vertical-up"; + // + TextOrient["TO_VertDown"] = "text-orient-vertical-down"; + })(TextOrient = exports.TextOrient || (exports.TextOrient = {})); + // + var TextAlign; + (function (TextAlign) { + // + TextAlign["TA_Start"] = "text-align-start"; + // + TextAlign["TA_Center"] = "text-align-center"; + // + TextAlign["TA_End"] = "text-align-end"; + })(TextAlign = exports.TextAlign || (exports.TextAlign = {})); + // + var TextWrapMode; + (function (TextWrapMode) { + // + TextWrapMode["TextWrapOff"] = "text-wrap-off"; + // + TextWrapMode["TextWrapTruncate"] = "text-wrap-truncate"; + // + TextWrapMode["TextWrapOn"] = "text-wrap-on"; + // + TextWrapMode["TextWrapAuto"] = "text-wrap-auto"; + })(TextWrapMode = exports.TextWrapMode || (exports.TextWrapMode = {})); + // + var TextWholeLineMode; + (function (TextWholeLineMode) { + // + TextWholeLineMode["TextWholeLineOff"] = "text-whole-line-off"; + // + TextWholeLineMode["TextWholeLineOn"] = "text-whole-line-on"; + // + TextWholeLineMode["TextWholeLineAuto"] = "text-whole-line-auto"; + })(TextWholeLineMode = exports.TextWholeLineMode || (exports.TextWholeLineMode = {})); + // + var TextBreakMode; + (function (TextBreakMode) { + // + TextBreakMode["TextBreakWhitespaceOnly"] = "text-break-ws-only"; + // + TextBreakMode["TextBreakAuto"] = "text-break-auto"; + })(TextBreakMode = exports.TextBreakMode || (exports.TextBreakMode = {})); + // type of aggregation + var AggType; + (function (AggType) { + // + AggType["AGG_SUM"] = "sum"; + // + AggType["AGG_AVG"] = "average"; + // + AggType["AGG_MIN"] = "min"; + // + AggType["AGG_MAX"] = "max"; + // + AggType["AGG_STDEV"] = "std-dev"; + // + AggType["AGG_STDEVP"] = "std-dev-p"; + // + AggType["AGG_VAR"] = "var"; + // + AggType["AGG_VARP"] = "var-p"; + // + AggType["AGG_COUNT"] = "count"; + // + AggType["AGG_COUNTD"] = "count-d"; + // + AggType["AGG_MEDIAN"] = "median"; + // + AggType["AGG_ATTR"] = "attr"; + // + AggType["AGG_NONE"] = "none"; + // + AggType["AGG_PERCENTILE"] = "percentile"; + // + AggType["AGG_YEAR"] = "year"; + // + AggType["AGG_QTR"] = "qtr"; + // + AggType["AGG_MONTH"] = "month"; + // + AggType["AGG_DAY"] = "day"; + // + AggType["AGG_HOUR"] = "hour"; + // + AggType["AGG_MINUTE"] = "minute"; + // + AggType["AGG_SECOND"] = "second"; + // + AggType["AGG_WEEK"] = "week"; + // + AggType["AGG_WEEKDAY"] = "weekday"; + // + AggType["AGG_MONTHYEAR"] = "month-year"; + // + AggType["AGG_MDY"] = "mdy"; + // + AggType["AGG_END"] = "end"; + // + AggType["TRUNC_YEAR"] = "trunc-year"; + // + AggType["TRUNC_QTR"] = "trunc-qtr"; + // + AggType["TRUNC_MONTH"] = "trunc-month"; + // + AggType["TRUNC_WEEK"] = "trunc-week"; + // + AggType["TRUNC_DAY"] = "trunc-day"; + // + AggType["TRUNC_HOUR"] = "trunc-hour"; + // + AggType["TRUNC_MINUTE"] = "trunc-minute"; + // + AggType["TRUNC_SECOND"] = "trunc-second"; + // + AggType["AGG_QUART1"] = "quart1"; + // + AggType["AGG_QUART3"] = "quart3"; + // + AggType["AGG_SKEWNESS"] = "skewness"; + // + AggType["AGG_KURTOSIS"] = "kurtosis"; + // + AggType["AGG_INOUT"] = "in-out"; + // + AggType["AGG_SUM_XSQR"] = "sum-xsqr"; + // + AggType["AGG_USER"] = "user"; + // + AggType["AGG_COLLECT"] = "collect"; + // + AggType["AGG_COVAR"] = "covar"; + // + AggType["AGG_COVARP"] = "covarp"; + // + AggType["AGG_CORR"] = "corr"; + })(AggType = exports.AggType || (exports.AggType = {})); + // DataValueFormatter::DataTypeEncodings has hardcoded values corresponding to following enum members. So any changes here should be done there too + var DataType; + (function (DataType) { + // + DataType["DT_INTEGER"] = "integer"; + // + DataType["DT_REAL"] = "real"; + // + DataType["DT_STRING"] = "cstring"; + // + DataType["DT_DATETIME"] = "datetime"; + // + DataType["DT_BOOLEAN"] = "boolean"; + // + DataType["DT_DATE"] = "date"; + // + DataType["DT_TUPLE"] = "tuple"; + // + DataType["DT_SPATIAL"] = "spatial"; + // + DataType["DT_UNKNOWN"] = "unknown"; + // + DataType["DT_BINARY"] = "binary"; + // + DataType["DT_TIME"] = "time"; + })(DataType = exports.DataType || (exports.DataType = {})); + // + var SortDirection; + (function (SortDirection) { + // ascending + SortDirection["ST_ASC"] = "asc"; + // descending + SortDirection["ST_DESC"] = "desc"; + })(SortDirection = exports.SortDirection || (exports.SortDirection = {})); + // + var SortType; + (function (SortType) { + // Use the defined ordering + SortType["ST_NATURAL"] = "data-source-order"; + // Alphabetic/numeric ordering of data + SortType["ST_ALPHABETIC"] = "alpha"; + // Specify a secondary field + SortType["ST_COMPUTED"] = "field"; + // Manually defined ordering + SortType["ST_MANUAL"] = "manual"; + })(SortType = exports.SortType || (exports.SortType = {})); + // + var SortEnd; + (function (SortEnd) { + // + SortEnd["ST_TOP"] = "top"; + // + SortEnd["ST_BOTTOM"] = "bottom"; + })(SortEnd = exports.SortEnd || (exports.SortEnd = {})); + // + var ForecastColumnType; + (function (ForecastColumnType) { + // + ForecastColumnType["FORECAST_NONE"] = "none"; + // + ForecastColumnType["FORECAST_VALUE"] = "value"; + // + ForecastColumnType["FORECAST_INDICATOR"] = "indicator"; + // + ForecastColumnType["FORECAST_PRECISION"] = "precision"; + // + ForecastColumnType["FORECAST_QUALITY"] = "quality"; + // + ForecastColumnType["FORECAST_FIT_TREND"] = "fit_trend"; + // + ForecastColumnType["FORECAST_PRECISION_PERCENT"] = "precision_percent"; + // + ForecastColumnType["FORECAST_PREDICTION_INTERVAL_UPPER"] = "prediction_upper"; + // + ForecastColumnType["FORECAST_PREDICTION_INTERVAL_LOWER"] = "prediction_lower"; + })(ForecastColumnType = exports.ForecastColumnType || (exports.ForecastColumnType = {})); + // + var MarkMarkersMode; + (function (MarkMarkersMode) { + // + MarkMarkersMode["MMM_Auto"] = "mmm-auto"; + // + MarkMarkersMode["MMM_All"] = "mmm_all"; + // + MarkMarkersMode["MMM_None"] = "mmm_none"; + // + MarkMarkersMode["MMM_Default"] = "mmm_default"; + })(MarkMarkersMode = exports.MarkMarkersMode || (exports.MarkMarkersMode = {})); + // + var PercentMode; + (function (PercentMode) { + // + PercentMode["PERCENT_CELL_IN_PANE"] = "cell-in-pane"; + // + PercentMode["PERCENT_ROW_IN_PANE"] = "row-in-pane"; + // + PercentMode["PERCENT_COLUMN_IN_PANE"] = "column-in-pane"; + // + PercentMode["PERCENT_PANE"] = "pane"; + // + PercentMode["PERCENT_ROW"] = "row"; + // + PercentMode["PERCENT_COLUMN"] = "column"; + // + PercentMode["PERCENT_TABLE"] = "table"; + })(PercentMode = exports.PercentMode || (exports.PercentMode = {})); + // + var SpecialValuesMode; + (function (SpecialValuesMode) { + // + SpecialValuesMode["SPECIAL_VALUES_HIDE_AND_WARN"] = "hide-and-warn"; + // + SpecialValuesMode["SPECIAL_VALUES_HIDE"] = "hide"; + // + SpecialValuesMode["SPECIAL_VALUES_HIDE_BREAK_LINES"] = "hide-break-lines"; + // + SpecialValuesMode["SPECIAL_VALUES_SHOW"] = "show"; + })(SpecialValuesMode = exports.SpecialValuesMode || (exports.SpecialValuesMode = {})); + // + var LayoutType; + (function (LayoutType) { + // + LayoutType["LAYOUT_CARTESIAN"] = "cartesian"; + // + LayoutType["LAYOUT_DEFAULT"] = "default"; + })(LayoutType = exports.LayoutType || (exports.LayoutType = {})); + // + var ShelfType; + (function (ShelfType) { + // + ShelfType["ST_NONE"] = "none-shelf"; + // + ShelfType["ST_COLUMNS_SHELF"] = "columns-shelf"; + // + ShelfType["ST_ROWS_SHELF"] = "rows-shelf"; + // + ShelfType["ST_PAGES_SHELF"] = "pages-shelf"; + // + ShelfType["ST_FILTER_SHELF"] = "filter-shelf"; + // + ShelfType["ST_IMAGE_SHELF"] = "image-shelf"; + // + ShelfType["ST_MEASURES_SHELF"] = "measures-shelf"; + // + ShelfType["ST_SHOWME_SHELF"] = "show-me-shelf"; + // + ShelfType["ST_ENCODING_SHELF"] = "encoding-shelf"; + // + ShelfType["ST_CLUSTER_SHELF"] = "cluster-shelf"; + // + ShelfType["ST_GEOMETRY_SHELF"] = "geometry-shelf"; + // + ShelfType["ST_END"] = "end-shelf"; + // + ShelfType["ST_FINAL"] = "final-shelf"; + })(ShelfType = exports.ShelfType || (exports.ShelfType = {})); + // + var RestrictType; + (function (RestrictType) { + // + RestrictType["RT_INTERSECT"] = "rt-intersection"; + // + RestrictType["RT_UNION"] = "rt-union"; + })(RestrictType = exports.RestrictType || (exports.RestrictType = {})); + // + var TooltipMode; + (function (TooltipMode) { + // + TooltipMode["TM_NONE"] = "none"; + // + TooltipMode["TM_STICKY"] = "sticky"; + // + TooltipMode["TM_SMOOTH"] = "smooth"; + })(TooltipMode = exports.TooltipMode || (exports.TooltipMode = {})); + // + var ColumnGroups; + (function (ColumnGroups) { + // 0x01 + ColumnGroups["COLS_IN_OUTPUT"] = "cols-in-output"; + // 0x02 + ColumnGroups["COLS_IN_FILTER_SHELF"] = "cols-in-filter-shelf"; + // 0x04 + ColumnGroups["COLS_REF_BY_FILTERS"] = "cols-ref-by-filters"; + // 0x08 + ColumnGroups["COLS_REF_BY_OMEASURES"] = "cols-ref-by-omeasures"; + // 0x10 + ColumnGroups["COLS_REF_BY_JOIN_LOD"] = "cols-ref-by-join-lod"; + // 0x20 + ColumnGroups["COLS_HIDDEN"] = "cols-hidden"; + // 0x40 + ColumnGroups["COLS_REF_BY_SORTS"] = "cols-ref-by-sorts"; + // + ColumnGroups["COLS_REF_BY_FILTERS_OR_SORTS"] = "cols-ref-by-filters-or-sorts"; + // + ColumnGroups["COLS_ON_SHELVES"] = "cols-on-shelves"; + // + ColumnGroups["COLS_ALL"] = "cols-all"; + })(ColumnGroups = exports.ColumnGroups || (exports.ColumnGroups = {})); + // + var ButtonsOption; + (function (ButtonsOption) { + // + ButtonsOption["BO_HIDE"] = "buttons-hide"; + })(ButtonsOption = exports.ButtonsOption || (exports.ButtonsOption = {})); + // + var SelectionRelaxationOption; + (function (SelectionRelaxationOption) { + // + SelectionRelaxationOption["SRO_ALLOW"] = "selection-relaxation-allow"; + // + SelectionRelaxationOption["SRO_DISALLOW"] = "selection-relaxation-disallow"; + })(SelectionRelaxationOption = exports.SelectionRelaxationOption || (exports.SelectionRelaxationOption = {})); + // + var EncodingType; + (function (EncodingType) { + // a text encoding + EncodingType["ET_TEXT"] = "text-encoding"; + // a color encoding + EncodingType["ET_COLOR"] = "color-encoding"; + // a size encoding + EncodingType["ET_SIZE"] = "size-encoding"; + // a shape encoding + EncodingType["ET_SHAPE"] = "shape-encoding"; + // an image encoding + EncodingType["ET_IMAGE"] = "image-encoding"; + // a sort (path) encoding (currently only for line or polygon charts) + EncodingType["ET_SORT"] = "sort-encoding"; + // a wedge size (angle) encoding (currently only for pie charts) + EncodingType["ET_WEDGESIZE"] = "wedge-size-encoding"; + // a geometry encoding + EncodingType["ET_GEOMETRY"] = "geometry-encoding"; + // a level of detail encoding + EncodingType["ET_LOD"] = "level-of-detail-encoding"; + // encoding used for the data highlighter/legend mechanism + EncodingType["ET_HIGHLIGHT"] = "highlight-encoding"; + // a tooltip encoding + EncodingType["ET_TOOLTIP"] = "tooltip-encoding"; + // a temporary label placed above marks for the table calc dialog + EncodingType["ET_RUNNINGORDER"] = "runningorder-encoding"; + // the number of encodings, this is invalid input for an encoding presentation model + EncodingType["NUM_ENCODINGS"] = "num-encodings"; + // an invalid encoding + EncodingType["ET_INVALID"] = "invalid-encoding"; + })(EncodingType = exports.EncodingType || (exports.EncodingType = {})); + // Enumeration of valid horizontal alignments. + var LabelHAlignment; + (function (LabelHAlignment) { + // + LabelHAlignment["LHA_Left"] = "h-align-left"; + // + LabelHAlignment["LHA_Center"] = "h-align-center"; + // + LabelHAlignment["LHA_Right"] = "h-align-right"; + // + LabelHAlignment["LHA_Automatic"] = "h-align-auto"; + })(LabelHAlignment = exports.LabelHAlignment || (exports.LabelHAlignment = {})); + // Enumeration of valid vertical alignments. + var LabelVAlignment; + (function (LabelVAlignment) { + // + LabelVAlignment["LVA_Bottom"] = "v-align-bottom"; + // + LabelVAlignment["LVA_Center"] = "v-align-center"; + // + LabelVAlignment["LVA_Top"] = "v-align-top"; + // + LabelVAlignment["LVA_Automatic"] = "v-align-auto"; + })(LabelVAlignment = exports.LabelVAlignment || (exports.LabelVAlignment = {})); + // Enumeration of valid label positions. + var LabelPosition; + (function (LabelPosition) { + // Position each text run relative to the center of the original bbox. Use the original bbox as the height and width of the text mark. Used for non-stacked OO text marks. + LabelPosition["CenterInOriginalBbox"] = "label-position-center-in-original-box"; + // Position each text run relative to the bottom left corner of the measured bbox. Use the measured bbox as the width and height of the label. Used for labels + LabelPosition["OriginAtLowerLeft"] = "label-position-origin-at-lower-left"; + // Position each text run relative to the center of the measured bbox. Use the measured bbox as the width and height of the text mark. Used for most text marks. + LabelPosition["OriginAtCenter"] = "label-position-origin-at-center"; + })(LabelPosition = exports.LabelPosition || (exports.LabelPosition = {})); + // Enumeration of ways to use color. Values can be or'ed together to make a mask for allowed options + var ColorMode; + (function (ColorMode) { + // Color user specified + ColorMode["CLRM_User"] = "clrm-user"; + // Color selected automatically + ColorMode["CLRM_Auto"] = "clrm-auto"; + // Color matches mark color + ColorMode["CLRM_Match"] = "clrm-match"; + // No color (transparent or not drawn) + ColorMode["CLRM_None"] = "clrm-none"; + })(ColorMode = exports.ColorMode || (exports.ColorMode = {})); + // + var MarkLabelsMode; + (function (MarkLabelsMode) { + // + MarkLabelsMode["MLM_All"] = "mlm-all"; + // + MarkLabelsMode["MLM_Selection"] = "mlm-selection"; + // + MarkLabelsMode["MLM_Highlight"] = "mlm-highlight"; + // + MarkLabelsMode["MLM_LineEnds"] = "mlm-line-ends"; + // min/max setting + MarkLabelsMode["MLM_Range"] = "mlm-range"; + // most recent (only relevant when date field is in play) + MarkLabelsMode["MLM_MostRecent"] = "mlm-most-recent"; + // ...this is " virtual " (runtime only, not saved, not shown as a user setting + MarkLabelsMode["MLM_MultipleValues"] = "mlm-multiple-values"; + // + MarkLabelsMode["MLM_Default"] = "mlm-default"; + })(MarkLabelsMode = exports.MarkLabelsMode || (exports.MarkLabelsMode = {})); + // + var MarkLabelsScope; + (function (MarkLabelsScope) { + // + MarkLabelsScope["MLS_Table"] = "mls-table"; + // + MarkLabelsScope["MLS_Pane"] = "mls-pane"; + // + MarkLabelsScope["MLS_Cell"] = "mls-cell"; + // + MarkLabelsScope["MLS_MultiMark"] = "mls-multimark"; + // ...this is " virtual " (runtime only, not saved, not shown as a user setting) + MarkLabelsScope["MLS_MultipleValues"] = "mls-multiple-values"; + // + MarkLabelsScope["MLS_Default"] = "mls-default"; + })(MarkLabelsScope = exports.MarkLabelsScope || (exports.MarkLabelsScope = {})); + // + var MarkLabelsVisibility; + (function (MarkLabelsVisibility) { + // + MarkLabelsVisibility["MLV_Hidden"] = "mlv-hidden"; + // + MarkLabelsVisibility["MLV_Visible"] = "mlv-visible"; + // + MarkLabelsVisibility["MLV_UseCurrent"] = "mlv-use-current"; + })(MarkLabelsVisibility = exports.MarkLabelsVisibility || (exports.MarkLabelsVisibility = {})); + // + var StackingMode; + (function (StackingMode) { + // + StackingMode["StackingOff"] = "off"; + // + StackingMode["StackingOn"] = "on"; + // + StackingMode["StackingAuto"] = "auto"; + })(StackingMode = exports.StackingMode || (exports.StackingMode = {})); + // + var MarkAlignment; + (function (MarkAlignment) { + // + MarkAlignment["MarkAlignmentLeft"] = "mark-alignment-left"; + // + MarkAlignment["MarkAlignmentRight"] = "mark-alignment-right"; + // + MarkAlignment["MarkAlignmentCenter"] = "mark-alignment-center"; + })(MarkAlignment = exports.MarkAlignment || (exports.MarkAlignment = {})); + // + var PaneLabelComposition; + (function (PaneLabelComposition) { + // + PaneLabelComposition["PLC_None"] = "pane-label-composition-none"; + // + PaneLabelComposition["PLC_Mixed"] = "pane-label-composition-mixed"; + // + PaneLabelComposition["PLC_All"] = "pane-label-composition-all"; + })(PaneLabelComposition = exports.PaneLabelComposition || (exports.PaneLabelComposition = {})); + // The user-specified mark type on the Marks Card + var PrimitiveType; + (function (PrimitiveType) { + // + PrimitiveType["PT_AUTOMATIC"] = "automatic"; + // + PrimitiveType["PT_TEXT"] = "text"; + // + PrimitiveType["PT_IMAGE"] = "image"; + // + PrimitiveType["PT_SHAPE"] = "shape"; + // + PrimitiveType["PT_RECTANGLE"] = "rectangle"; + // + PrimitiveType["PT_BAR"] = "bar"; + // + PrimitiveType["PT_GANTT"] = "gantt"; + // + PrimitiveType["PT_SQUARE"] = "square"; + // + PrimitiveType["PT_CIRCLE"] = "circle"; + // + PrimitiveType["PT_POLYLINE"] = "polyline"; + // line chart + PrimitiveType["PT_LINE"] = "line"; + // + PrimitiveType["PT_POLYGON"] = "polygon"; + // area chart + PrimitiveType["PT_AREA"] = "area"; + // + PrimitiveType["PT_PIE"] = "pie"; + // + PrimitiveType["PT_MULTIPOLYGON"] = "multipolygon"; + // Not an actual primitive type. This is just used to flag the UI that multiple types are in play. + PrimitiveType["PT_MULTIPLE"] = "multiple"; + // used for looping over all values + PrimitiveType["NUM_PRIMITIVES"] = "count"; + // used to flag an unset or invalid state + PrimitiveType["PT_INVALID"] = "invalid"; + })(PrimitiveType = exports.PrimitiveType || (exports.PrimitiveType = {})); + // Defines the way a given primitive behaves on a viz - for instance, a PT_CIRCLE is treated as a point, while a PT_POLYGON would be treated as an area. + var MarkType; + (function (MarkType) { + // + MarkType["MT_POINT"] = "point"; + // + MarkType["MT_LINE"] = "line"; + // + MarkType["MT_AREA"] = "area"; + // + MarkType["MT_INVALID"] = "invalid"; + })(MarkType = exports.MarkType || (exports.MarkType = {})); + // PaneAxis is used to describe which axis of a pane is the independent axis. + var PaneAxis; + (function (PaneAxis) { + // The independent axis is inferred from other properties of the pane. + PaneAxis["AXIS_AUTO"] = "auto"; + // + PaneAxis["AXIS_X"] = "x"; + // + PaneAxis["AXIS_Y"] = "y"; + })(PaneAxis = exports.PaneAxis || (exports.PaneAxis = {})); + // + var Rounding; + (function (Rounding) { + // + Rounding["Rounding_None"] = "none"; + // + Rounding["Rounding_Small"] = "small"; + // + Rounding["Rounding_Medium"] = "medium"; + // + Rounding["Rounding_Large"] = "large"; + })(Rounding = exports.Rounding || (exports.Rounding = {})); + // + var LineEnd; + (function (LineEnd) { + // + LineEnd["LineEnd_None"] = "none"; + // + LineEnd["LineEnd_Arrow"] = "arrow"; + // + LineEnd["LineEnd_OpenArrow"] = "open-arrow"; + // + LineEnd["LineEnd_Dot"] = "dot"; + })(LineEnd = exports.LineEnd || (exports.LineEnd = {})); + // + var LineEndSize; + (function (LineEndSize) { + // + LineEndSize["LineEndSize_Smallest"] = "smallest"; + // + LineEndSize["LineEndSize_Smaller"] = "smaller"; + // + LineEndSize["LineEndSize_Small"] = "small"; + // + LineEndSize["LineEndSize_Medium"] = "medium"; + // + LineEndSize["LineEndSize_Large"] = "large"; + // + LineEndSize["LineEndSize_Larger"] = "larger"; + // + LineEndSize["LineEndSize_Largest"] = "largest"; + })(LineEndSize = exports.LineEndSize || (exports.LineEndSize = {})); + // + var BodyType; + (function (BodyType) { + // + BodyType["BodyType_None"] = "none"; + // + BodyType["BodyType_Box"] = "box"; + // + BodyType["BodyType_Edge"] = "edge"; + })(BodyType = exports.BodyType || (exports.BodyType = {})); + // + var StyleTheme; + (function (StyleTheme) { + // + StyleTheme["themeClassic"] = "classic"; + // + StyleTheme["themeModern"] = "modern"; + // + StyleTheme["themeClean"] = "clean"; + // + StyleTheme["themeSmooth"] = "smooth"; + // + StyleTheme["themeCustom"] = "custom"; + })(StyleTheme = exports.StyleTheme || (exports.StyleTheme = {})); + // + var AxisFoldState; + (function (AxisFoldState) { + // + AxisFoldState["afNone"] = "none"; + // + AxisFoldState["afFolded"] = "folded"; + // + AxisFoldState["afSynchronized"] = "synchronized"; + })(AxisFoldState = exports.AxisFoldState || (exports.AxisFoldState = {})); + // + var LinePattern; + (function (LinePattern) { + // + LinePattern["LinePatternNone"] = "none"; + // + LinePattern["LinePatternSolid"] = "solid"; + // + LinePattern["LinePatternDashed"] = "dashed"; + // + LinePattern["LinePatternDotted"] = "dotted"; + })(LinePattern = exports.LinePattern || (exports.LinePattern = {})); + // + var LineVisibility; + (function (LineVisibility) { + // + LineVisibility["LineVisibilityAuto"] = "automatic"; + // + LineVisibility["LineVisibilityOn"] = "on"; + // + LineVisibility["LineVisibilityOff"] = "off"; + })(LineVisibility = exports.LineVisibility || (exports.LineVisibility = {})); + // + var StylesLinePattern; + (function (StylesLinePattern) { + // + StylesLinePattern["StylesLinePatternSolid"] = "solid"; + // + StylesLinePattern["StylesLinePatternDashed"] = "dashed"; + // + StylesLinePattern["StylesLinePatternDotted"] = "dotted"; + })(StylesLinePattern = exports.StylesLinePattern || (exports.StylesLinePattern = {})); + // + var LineCap; + (function (LineCap) { + // + LineCap["LineCapFlat"] = "flat"; + // + LineCap["LineCapSquare"] = "square"; + // + LineCap["LineCapRound"] = "round"; + // + LineCap["LineCapTriangle"] = "triangle"; + })(LineCap = exports.LineCap || (exports.LineCap = {})); + // + var LineJoin; + (function (LineJoin) { + // + LineJoin["BevelJoin"] = "bevel"; + // + LineJoin["MiterJoin"] = "miter"; + // + LineJoin["RoundJoin"] = "round"; + })(LineJoin = exports.LineJoin || (exports.LineJoin = {})); + // + var LineAlignment; + (function (LineAlignment) { + // + LineAlignment["AlignmentCenter"] = "center"; + // + LineAlignment["AlignmentInset"] = "inset"; + })(LineAlignment = exports.LineAlignment || (exports.LineAlignment = {})); + // + var FillMode; + (function (FillMode) { + // + FillMode["FillEvenOdd"] = "even-odd"; + // + FillMode["FillWinding"] = "winding"; + })(FillMode = exports.FillMode || (exports.FillMode = {})); + // + var BorderStyle; + (function (BorderStyle) { + // none + BorderStyle["BorderStyleNone"] = "bs-none"; + // hidden + BorderStyle["BorderStyleHidden"] = "bs-hidden"; + // dotted + BorderStyle["BorderStyleDotted"] = "bs-dotted"; + // dashed + BorderStyle["BorderStyleDashed"] = "bs-dashed"; + // solid + BorderStyle["BorderStyleSolid"] = "bs-solid"; + // double + BorderStyle["BorderStyleDouble"] = "bs-double"; + // groove + BorderStyle["BorderStyleGroove"] = "bs-groove"; + // ridge + BorderStyle["BorderStyleRidge"] = "bs-ridge"; + // inset + BorderStyle["BorderStyleInset"] = "bs-inset"; + // outset + BorderStyle["BorderStyleOutset"] = "bs-outset"; + // invalid + BorderStyle["BorderStyleInvalid"] = "bs-invalid"; + })(BorderStyle = exports.BorderStyle || (exports.BorderStyle = {})); + // + var ColorPaletteType; + (function (ColorPaletteType) { + // + ColorPaletteType["ColorPaletteRegular"] = "color-palette-regular"; + // + ColorPaletteType["ColorPaletteOrderedDiverging"] = "palette-ordered-diverging"; + // + ColorPaletteType["ColorPaletteOrderedLinear"] = "palette-ordered-linear"; + })(ColorPaletteType = exports.ColorPaletteType || (exports.ColorPaletteType = {})); + // + var PaletteFlags; + (function (PaletteFlags) { + // + PaletteFlags["PaletteFlagNone"] = "palette-flag-none"; + // + PaletteFlags["PaletteFlagCustom"] = "palette-flag-custom"; + // + PaletteFlags["PaletteFlagNotQuantitative"] = "palette-flag-not-quantitative"; + // + PaletteFlags["PaletteFlagNotCategorical"] = "palette-flag-not-categorical"; + // + PaletteFlags["PaletteFlagNotReferenceBand"] = "palette-flag-not-reference-band"; + // + PaletteFlags["PaletteFlagNotBoxplot"] = "palette-flag-not-boxplot"; + // + PaletteFlags["PaletteFlagNotFilledMapLight"] = "palette-flag-not-filled-map-light"; + // + PaletteFlags["PaletteFlagNotFilledMapDark"] = "palette-flag-not-filled-map-dark"; + // + PaletteFlags["PaletteFlagLegacy"] = "palette-flag-legacy"; + })(PaletteFlags = exports.PaletteFlags || (exports.PaletteFlags = {})); + // + var DefaultPaletteType; + (function (DefaultPaletteType) { + // + DefaultPaletteType["SmallNominal"] = "palette-default-small-nominal"; + // + DefaultPaletteType["LargeNominal"] = "palette-default-large-nominal"; + // + DefaultPaletteType["Ordinal"] = "palette-default-ordinal"; + // + DefaultPaletteType["QuantitativePositive"] = "palette-default-quant-pos"; + // + DefaultPaletteType["QuantitativeNegative"] = "palette-default-quant-neg"; + // + DefaultPaletteType["QuantitativeDiverging"] = "palette-default-quant-div"; + // + DefaultPaletteType["QuantitativePositiveLight"] = "palette-default-quant-pos-light"; + // + DefaultPaletteType["QuantitativeNegativeLight"] = "palette-default-quant-neg-light"; + // + DefaultPaletteType["QuantitativeDivergingLight"] = "palette-default-quant-div-light"; + // + DefaultPaletteType["QuantitativePositiveArea"] = "palette-default-quant-pos-area"; + // + DefaultPaletteType["QuantitativeNegativeArea"] = "palette-default-quant-neg-area"; + // + DefaultPaletteType["QuantitativeDivergingArea"] = "palette-default-quant-div-area"; + })(DefaultPaletteType = exports.DefaultPaletteType || (exports.DefaultPaletteType = {})); + // + var ShowBounds; + (function (ShowBounds) { + // + ShowBounds["Both"] = "show-both"; + // + ShowBounds["Upper"] = "show-upper"; + // + ShowBounds["Lower"] = "show-lower"; + })(ShowBounds = exports.ShowBounds || (exports.ShowBounds = {})); + // Sample vs. population standard deviation + var StDevType; + (function (StDevType) { + // + StDevType["Sample"] = "stdev-sample"; + // + StDevType["Population"] = "stdev-population"; + })(StDevType = exports.StDevType || (exports.StDevType = {})); + // + var ReferenceLineFormulaGroup; + (function (ReferenceLineFormulaGroup) { + // + ReferenceLineFormulaGroup["None"] = "none"; + // + ReferenceLineFormulaGroup["Line"] = "line"; + // + ReferenceLineFormulaGroup["Band"] = "band"; + // + ReferenceLineFormulaGroup["Distribution"] = "distribution"; + // + ReferenceLineFormulaGroup["Boxplot"] = "boxplot"; + })(ReferenceLineFormulaGroup = exports.ReferenceLineFormulaGroup || (exports.ReferenceLineFormulaGroup = {})); + // + var ReferenceLineScopeType; + (function (ReferenceLineScopeType) { + // + ReferenceLineScopeType["PerCell"] = "per-cell"; + // + ReferenceLineScopeType["PerPane"] = "per-pane"; + // + ReferenceLineScopeType["PerTable"] = "per-table"; + })(ReferenceLineScopeType = exports.ReferenceLineScopeType || (exports.ReferenceLineScopeType = {})); + // how should the line be labeled + var ReferenceLineLabelType; + (function (ReferenceLineLabelType) { + // no label + ReferenceLineLabelType["None"] = "none"; + // an automatically generated label + ReferenceLineLabelType["Automatic"] = "automatic"; + // + ReferenceLineLabelType["Value"] = "value"; + // + ReferenceLineLabelType["Computation"] = "computation"; + // a user defined label + ReferenceLineLabelType["Custom"] = "custom"; + })(ReferenceLineLabelType = exports.ReferenceLineLabelType || (exports.ReferenceLineLabelType = {})); + // how should the line be computed + var ReferenceLineFormulaType; + (function (ReferenceLineFormulaType) { + // a user specified constant value + ReferenceLineFormulaType["Constant"] = "constant"; + // + ReferenceLineFormulaType["Total"] = "total"; + // total of all values at the given scope <- is this correct? looks like comment from FormulaTotal + ReferenceLineFormulaType["Sum"] = "sum"; + // minimum value in the scope + ReferenceLineFormulaType["Min"] = "min"; + // maximum value in the scope + ReferenceLineFormulaType["Max"] = "max"; + // average value in the scope + ReferenceLineFormulaType["Average"] = "average"; + // median value in the scope + ReferenceLineFormulaType["Median"] = "median"; + // the n quantiles values in the scope + ReferenceLineFormulaType["Quantiles"] = "quantiles"; + // a given percentile in the scope + ReferenceLineFormulaType["Percentile"] = "percentile"; + // mean +- standard deviation + ReferenceLineFormulaType["StandardDeviation"] = "standard-deviation"; + // a given confidence interval around the mean + ReferenceLineFormulaType["ConfidenceInterval"] = "confidence-interval"; + // + ReferenceLineFormulaType["MedianConfidenceInterval"] = "median-confidence-interval"; + })(ReferenceLineFormulaType = exports.ReferenceLineFormulaType || (exports.ReferenceLineFormulaType = {})); + // Line or confidence interval or both + var ReferenceLineConfidenceIntervalState; + (function (ReferenceLineConfidenceIntervalState) { + // display line only + ReferenceLineConfidenceIntervalState["LineOnly"] = "line-only"; + // display the line and a confidence interval + ReferenceLineConfidenceIntervalState["LineAndConfidenceInterval"] = "line-and-interval"; + // display confidence interval only + ReferenceLineConfidenceIntervalState["ConfidenceIntervalOnly"] = "interval-only"; + })(ReferenceLineConfidenceIntervalState = exports.ReferenceLineConfidenceIntervalState || (exports.ReferenceLineConfidenceIntervalState = {})); + // type of distribution. i.e. Percentage, Percentile, Quantile, and Standard Deviation + var ReferenceLineDistributionType; + (function (ReferenceLineDistributionType) { + // distribution type percentage + ReferenceLineDistributionType["Percentages"] = "percentages"; + // distribution type percentile + ReferenceLineDistributionType["Percentiles"] = "percentiles"; + // distribution type quantile + ReferenceLineDistributionType["Quantiles"] = "quantiles"; + // distribution type standard deviation + ReferenceLineDistributionType["StandardDeviation"] = "standard-deviation"; + })(ReferenceLineDistributionType = exports.ReferenceLineDistributionType || (exports.ReferenceLineDistributionType = {})); + // the kind of LOD calc to use for a given reference line + var ReferenceLineLODCalcType; + (function (ReferenceLineLODCalcType) { + // Create a formula using a FIXED-like level-of-detail calculation, to which sheet filters apply, that will go onto a specific sheet + ReferenceLineLODCalcType["MeasureFormula"] = "measure-formula"; + // Create a boolean formula that can be used as a filter + ReferenceLineLODCalcType["BooleanFilter"] = "boolean-filter"; + })(ReferenceLineLODCalcType = exports.ReferenceLineLODCalcType || (exports.ReferenceLineLODCalcType = {})); + // + var BoxplotWhiskerType; + (function (BoxplotWhiskerType) { + // + BoxplotWhiskerType["Standard"] = "standard"; + // + BoxplotWhiskerType["Minmax"] = "minmax"; + })(BoxplotWhiskerType = exports.BoxplotWhiskerType || (exports.BoxplotWhiskerType = {})); + // categories of connection types displayed by the connection UI + var ConnectionTypeCategory; + (function (ConnectionTypeCategory) { + // standard database + ConnectionTypeCategory["CTC_Database"] = "database"; + // 'More Items ...' meta item + ConnectionTypeCategory["CTC_More"] = "more"; + // Other file types + ConnectionTypeCategory["CTC_Other"] = "other"; + // invalid connection category + ConnectionTypeCategory["CTC_Invalid"] = "invalid"; + })(ConnectionTypeCategory = exports.ConnectionTypeCategory || (exports.ConnectionTypeCategory = {})); + // a logical grouping of connection types displayed by the connection UI + var ConnectionTypeGroup; + (function (ConnectionTypeGroup) { + // in a file + ConnectionTypeGroup["CTG_File"] = "file"; + // on a server + ConnectionTypeGroup["CTG_Server"] = "server"; + // on a recent server + ConnectionTypeGroup["CTG_MruServer"] = "mru-server"; + // invalid group + ConnectionTypeGroup["CTG_Invalid"] = "invalid"; + })(ConnectionTypeGroup = exports.ConnectionTypeGroup || (exports.ConnectionTypeGroup = {})); + // The type of metadata a column contains + var CubeMetadataCategory; + (function (CubeMetadataCategory) { + // cube's name + CubeMetadataCategory["CMC_Name"] = "name"; + // cube's description + CubeMetadataCategory["CMC_Description"] = "description"; + // cube's last updated timestamp + CubeMetadataCategory["CMC_LastUpdated"] = "last-updated"; + // invalid + CubeMetadataCategory["CMC_Invalid"] = "invalid"; + })(CubeMetadataCategory = exports.CubeMetadataCategory || (exports.CubeMetadataCategory = {})); + // The type of widget to display to the user when they are specifying connection info + var ConnectionWidgetType; + (function (ConnectionWidgetType) { + // show the join area + ConnectionWidgetType["CWT_JoinArea"] = "join-area"; + // show the cube selection ui + ConnectionWidgetType["CWT_CubeSelection"] = "cube-selection"; + // show the google analytics ui + ConnectionWidgetType["CWT_GoogleAnalytics"] = "google-analytics"; + // show the tableau server ui + ConnectionWidgetType["CWT_TableauServer"] = "tableau-server"; + // do not show any connection widget + ConnectionWidgetType["CWT_NoWidget"] = "no-widget"; + // invalid + ConnectionWidgetType["CWT_Invalid"] = "invalid"; + })(ConnectionWidgetType = exports.ConnectionWidgetType || (exports.ConnectionWidgetType = {})); + // The type of google analytics basic info + var GoogleBasicInfoType; + (function (GoogleBasicInfoType) { + // google analytics account + GoogleBasicInfoType["GA_Account"] = "ga-account"; + // google analytics property + GoogleBasicInfoType["GA_Property"] = "ga-property"; + // google analytics view + GoogleBasicInfoType["GA_View"] = "ga-view"; + // invalid + GoogleBasicInfoType["GA_Invalid"] = "invalid"; + })(GoogleBasicInfoType = exports.GoogleBasicInfoType || (exports.GoogleBasicInfoType = {})); + // The way in which a piece of connection information is specified + var ConnectionSpecificationType; + (function (ConnectionSpecificationType) { + // Uses a combo box + ConnectionSpecificationType["CST_ComboBox"] = "combo-box"; + // Uses a line edit + ConnectionSpecificationType["CST_LineEdit"] = "line-edit"; + // Uses a line edit with a browse button next to it + ConnectionSpecificationType["CST_LineEditBrowse"] = "line-edit-browse"; + // invalid + ConnectionSpecificationType["CST_Invalid"] = "invalid"; + })(ConnectionSpecificationType = exports.ConnectionSpecificationType || (exports.ConnectionSpecificationType = {})); + // GA Date Range + var DateRange; + (function (DateRange) { + // + DateRange["DateRangeFirst"] = "date-range-first"; + // + DateRange["DateRangeLast30Days"] = "date-range-last30"; + // + DateRange["DateRangeToday"] = "date-range-today"; + // + DateRange["DateRangeYesterday"] = "date-range-yesterday"; + // + DateRange["DateRangeLastWeek"] = "date-range-last-week"; + // + DateRange["DateRangeLastMonth"] = "date-range-last-month"; + // + DateRange["DateRangeLastYear"] = "date-range-last-year"; + // + DateRange["DateRangeThisWeekToYesterday"] = "date-range-this-week-to-yesterday"; + // + DateRange["DateRangeThisMonthToYesterday"] = "date-range-this-month-to-yesterday"; + // + DateRange["DateRangeThisYearToYesterday"] = "date-range-this-year-to-yesterday"; + // + DateRange["DateRangeLastWeekToYesterday"] = "date-range-last-week-to-yesterday"; + // + DateRange["DateRangeLastMonthToYesterday"] = "date-range-last-month-to-yesterday"; + // + DateRange["DateRangeLastYearToYesterday"] = "date-range-last-year-to-yesterday"; + // + DateRange["DateRangeFixedRange"] = "date-range-fixed-range"; + // + DateRange["DateRangeFixedStart"] = "date-range-fixed-start"; + // + DateRange["DateRangeCount"] = "date-range-count"; + })(DateRange = exports.DateRange || (exports.DateRange = {})); + // Specifies the type of widget to show in ConnectServerWidget + var ConnectServerWidgetType; + (function (ConnectServerWidgetType) { + // invalid + ConnectServerWidgetType["CSWT_Invalid"] = "invalid"; + // microsoft access + ConnectServerWidgetType["CSWT_Access"] = "access"; + // generic odbc + ConnectServerWidgetType["CSWT_ODBC"] = "odbc"; + // cubes + ConnectServerWidgetType["CSWT_Cube"] = "cube"; + // relational data sources + ConnectServerWidgetType["CSWT_Relational"] = "relational"; + })(ConnectServerWidgetType = exports.ConnectServerWidgetType || (exports.ConnectServerWidgetType = {})); + // + var AuthenticationEnumsMode; + (function (AuthenticationEnumsMode) { + // no authentication widget + AuthenticationEnumsMode["AuthModeNone"] = "auth-mode-none"; + // username and password + AuthenticationEnumsMode["AuthModeBasic"] = "auth-mode-basic"; + // username and password can be blank + AuthenticationEnumsMode["AuthModeBasicNoValidateFields"] = "auth-mode-basic-no-validate-fields"; + // only username + AuthenticationEnumsMode["AuthModeBasicUserNameOnly"] = "auth-mode-basic-username-only"; + // aws access key and secret ID + AuthenticationEnumsMode["AuthModeBasicAWS"] = "auth-mode-basic-aws"; + // username, password, and a list of AuthOptions with radio buttons + AuthenticationEnumsMode["AuthModeRadio"] = "auth-mode-radio"; + // Like AuthModeRadio, but enable username/password even for integrated auth + AuthenticationEnumsMode["AuthModeRadioUnindented"] = "auth-mode-radio-unindented"; + // username, password, and a list of AuthOptions with a combobox + AuthenticationEnumsMode["AuthModeComboBox"] = "auth-mode-combobox"; + // Like AuthModeCombobox, but with option not requiring username/password + AuthenticationEnumsMode["AuthModeComboBoxIntegrated"] = "auth-mode-combobox-integrated"; + // driver, authentication, username, realm, etc + AuthenticationEnumsMode["AuthModeHive"] = "auth-mode-hive"; + // none, azure marketplace account, explicit + AuthenticationEnumsMode["AuthModeOData"] = "auth-mode-odata"; + // edition, authentication, sso domain, etc + AuthenticationEnumsMode["AuthModeSharePoint"] = "auth-mode-sharepoint"; + // username, password, client, & language + AuthenticationEnumsMode["AuthModeSAPBW"] = "auth-mode-sapbw"; + // Ability to switch between two different auth modes each in their own modal dialogs (basic and oauth) + AuthenticationEnumsMode["AuthModeSwitchModal"] = "auth-mode-switch-modal"; + })(AuthenticationEnumsMode = exports.AuthenticationEnumsMode || (exports.AuthenticationEnumsMode = {})); + // + var AuthenticationEnumsReconnectMode; + (function (AuthenticationEnumsReconnectMode) { + // Auth not needed for reconnect + AuthenticationEnumsReconnectMode["ReconnectModeNone"] = "reconnect-mode-none"; + // Username and password + AuthenticationEnumsReconnectMode["ReconnectModeBasic"] = "reconnect-mode-basic"; + // Access file + AuthenticationEnumsReconnectMode["ReconnectModeAccess"] = "reconnect-mode-access"; + // Microsoft Azure Data Market (OData) + AuthenticationEnumsReconnectMode["ReconnectModeDataMarket"] = "reconnect-mode-data-market"; + // Google OAuth + AuthenticationEnumsReconnectMode["ReconnectModeGoogleOAuth"] = "reconnect-mode-google-oauth"; + // SalesforceOAuth, with the option of username/password auth + AuthenticationEnumsReconnectMode["ReconnectModeSalesforceOAuth"] = "reconnect-mode-salesforce-oauth"; + // Web data connector + AuthenticationEnumsReconnectMode["ReconnectModeWebData"] = "reconnect-mode-web-data"; + })(AuthenticationEnumsReconnectMode = exports.AuthenticationEnumsReconnectMode || (exports.AuthenticationEnumsReconnectMode = {})); + // + var AuthenticationEnumsAuthOption; + (function (AuthenticationEnumsAuthOption) { + // FIRST + AuthenticationEnumsAuthOption["AuthExplicit"] = "auth-option-explicit"; + // + AuthenticationEnumsAuthOption["AuthExplicitUnindented"] = "auth-option-explicit-unindented"; + // + AuthenticationEnumsAuthOption["AuthUseWindows"] = "auth-option-use-windows"; + // + AuthenticationEnumsAuthOption["AuthUseWindowsPreferred"] = "auth-option-windows-preferred"; + // + AuthenticationEnumsAuthOption["AuthTeradata"] = "auth-option-teradata"; + // + AuthenticationEnumsAuthOption["AuthLDAP"] = "auth-option-ldap"; + // + AuthenticationEnumsAuthOption["AuthVirtualNode"] = "auth-option-virtual-node"; + // + AuthenticationEnumsAuthOption["AuthODataAccount"] = "auth-option-odata"; + // + AuthenticationEnumsAuthOption["AuthNone"] = "auth-option-none"; + // + AuthenticationEnumsAuthOption["AuthKerberos"] = "auth-option-kerberos"; + // Introduced for Kerberos with fallback, recognizing that the db may or may not be on Windows + AuthenticationEnumsAuthOption["AuthIntegrated"] = "auth-option-integrated"; + // + AuthenticationEnumsAuthOption["AuthUsername"] = "auth-option-username"; + // + AuthenticationEnumsAuthOption["AuthUsernameAndPassword"] = "auth-option-username-and-password"; + // + AuthenticationEnumsAuthOption["AuthSSL"] = "auth-option-ssl"; + // + AuthenticationEnumsAuthOption["AuthHDIEmulator"] = "auth-hdi-emulator"; + // + AuthenticationEnumsAuthOption["AuthHDIService"] = "auth-hdi-service"; + // + AuthenticationEnumsAuthOption["AuthHTTP"] = "auth-http"; + // + AuthenticationEnumsAuthOption["AuthHTTPS"] = "auth-https"; + // + AuthenticationEnumsAuthOption["AuthAccessNoSecurity"] = "auth-option-access-no"; + // + AuthenticationEnumsAuthOption["AuthAccessYesSecurity"] = "auth-option-access-yes"; + // + AuthenticationEnumsAuthOption["AuthOAuth"] = "auth-oauth"; + // + AuthenticationEnumsAuthOption["AuthForms"] = "auth-forms"; + // + AuthenticationEnumsAuthOption["AuthThirdPartySSO"] = "auth-third-party-SSO"; + // LAST + AuthenticationEnumsAuthOption["AuthInvalid"] = "auth-option-invalid"; + })(AuthenticationEnumsAuthOption = exports.AuthenticationEnumsAuthOption || (exports.AuthenticationEnumsAuthOption = {})); + // data source validation modes + var DataSourceParserValidationMode; + (function (DataSourceParserValidationMode) { + // + DataSourceParserValidationMode["WorkbookLoadValidation"] = "workbook-load-validation"; + // + DataSourceParserValidationMode["AutoValidation"] = "auto-validation"; + // + DataSourceParserValidationMode["ForceValidation"] = "force-validation"; + // + DataSourceParserValidationMode["PreventValidation"] = "prevent-validation"; + // + DataSourceParserValidationMode["PreventValidationAndThrow"] = "prevent-validation-and-throw"; + })(DataSourceParserValidationMode = exports.DataSourceParserValidationMode || (exports.DataSourceParserValidationMode = {})); + // Enum for DataGrid/MetadataGrid fields reordering + var FieldOrderType; + (function (FieldOrderType) { + // + FieldOrderType["DATASOURCE_ORDER"] = "datasource-order"; + // + FieldOrderType["ALPHA_PER_TABLE"] = "alpha-per-table"; + // + FieldOrderType["ALPHABETICAL_ORDER"] = "alphabetical-order"; + // + FieldOrderType["CUSTOM_ORDER"] = "custom-order"; + })(FieldOrderType = exports.FieldOrderType || (exports.FieldOrderType = {})); + // + var LineInterpolationMode; + (function (LineInterpolationMode) { + // + LineInterpolationMode["LIM_Linear"] = "lim-linear"; + // + LineInterpolationMode["LIM_Step"] = "lim-step"; + // + LineInterpolationMode["LIM_Jump"] = "lim-jump"; + })(LineInterpolationMode = exports.LineInterpolationMode || (exports.LineInterpolationMode = {})); + // + var LineMarkerPosition; + (function (LineMarkerPosition) { + // + LineMarkerPosition["LMP_Left"] = "lmp-left"; + // + LineMarkerPosition["LMP_Center"] = "lmp-center"; + // + LineMarkerPosition["LMP_Right"] = "lmp-right"; + })(LineMarkerPosition = exports.LineMarkerPosition || (exports.LineMarkerPosition = {})); + // Enumeration for the type of join connecting two tables + var SQLJoinType; + (function (SQLJoinType) { + // + SQLJoinType["SQL_InnerJoin"] = "sql-inner-join"; + // + SQLJoinType["SQL_LeftJoin"] = "sql-left-join"; + // + SQLJoinType["SQL_RightJoin"] = "sql-right-join"; + // + SQLJoinType["SQL_FullJoin"] = "sql-full-join"; + // + SQLJoinType["SQL_CrossJoin"] = "sql-cross-join"; + })(SQLJoinType = exports.SQLJoinType || (exports.SQLJoinType = {})); + // + var FolderRole; + (function (FolderRole) { + // + FolderRole["FOLDER_DIMENSIONS"] = "dimensions"; + // + FolderRole["FOLDER_MEASURES"] = "measure"; + // + FolderRole["FOLDER_GROUPS"] = "groups"; + // + FolderRole["FOLDER_PARAMETERS"] = "parameters"; + })(FolderRole = exports.FolderRole || (exports.FolderRole = {})); + // + var FieldTypeIconSet; + (function (FieldTypeIconSet) { + // + FieldTypeIconSet["FT_SET_ALL"] = "all"; + // + FieldTypeIconSet["FT_SET_CUBE_MEASURES"] = "cube-measures"; + // + FieldTypeIconSet["FT_SET_CUBE_DIMENSIONS"] = "cube-dimensions"; + })(FieldTypeIconSet = exports.FieldTypeIconSet || (exports.FieldTypeIconSet = {})); + // + var FieldPivotStrategy; + (function (FieldPivotStrategy) { + // + FieldPivotStrategy["PIVOT_ON_KEY"] = "pivot-on-key"; + // + FieldPivotStrategy["PIVOT_ON_ALIAS"] = "pivot-on-alias"; + })(FieldPivotStrategy = exports.FieldPivotStrategy || (exports.FieldPivotStrategy = {})); + // + var AliasType; + (function (AliasType) { + // + AliasType["ALIAS_NOTSET"] = "alias-not-set"; + // + AliasType["ALIAS_BEGIN"] = "alias-begin"; + // + AliasType["ALIAS_KEY"] = "alias-key"; + // + AliasType["ALIAS_KEY_NAME"] = "alias-key-name"; + // + AliasType["ALIAS_KEY_MEDNAME"] = "alias-key-medname"; + // + AliasType["ALIAS_KEY_LONGNAME"] = "alias-key-longname"; + // + AliasType["ALIAS_NAME"] = "alias-name"; + // + AliasType["ALIAS_NAME_KEY"] = "alias-name-key"; + // + AliasType["ALIAS_MEDNAME"] = "alias-medname"; + // + AliasType["ALIAS_MEDNAME_KEY"] = "alias-medname-key"; + // + AliasType["ALIAS_LONGNAME"] = "alias-longname"; + // + AliasType["ALIAS_LONGNAME_KEY"] = "alias-longname-key"; + // + AliasType["ALIAS_END"] = "alias-end"; + })(AliasType = exports.AliasType || (exports.AliasType = {})); + // + var AliasTypes; + (function (AliasTypes) { + // + AliasTypes["MASK_ALIAS_KEY"] = "mask-alias-key"; + // + AliasTypes["MASK_ALIAS_NAME"] = "mask-alias-name"; + // + AliasTypes["MASK_ALIAS_MEDNAME"] = "mask-alias-medname"; + // + AliasTypes["MASK_ALIAS_LONGNAME"] = "mask-alias-longname"; + })(AliasTypes = exports.AliasTypes || (exports.AliasTypes = {})); + // + var FieldRole; + (function (FieldRole) { + // + FieldRole["ROLE_DIMENSION"] = "dimension"; + // + FieldRole["ROLE_MEASURE"] = "measure"; + // + FieldRole["ROLE_UNKNOWN"] = "unknown"; + })(FieldRole = exports.FieldRole || (exports.FieldRole = {})); + // + var FieldType; + (function (FieldType) { + // + FieldType["TYPE_QUANTITATIVE"] = "quantitative"; + // + FieldType["TYPE_ORDINAL"] = "ordinal"; + // + FieldType["TYPE_NOMINAL"] = "nominal"; + // + FieldType["TYPE_UNKNOWN"] = "unknown"; + })(FieldType = exports.FieldType || (exports.FieldType = {})); + // + var DataSourceOrder; + (function (DataSourceOrder) { + // + DataSourceOrder["DSO_ALPHABETIC"] = "dso-alphabetic"; + // + DataSourceOrder["DSO_ORDINAL"] = "dso-ordinal"; + })(DataSourceOrder = exports.DataSourceOrder || (exports.DataSourceOrder = {})); + // Where the column comes from + var ColumnClass; + (function (ColumnClass) { + // A metadata column (O or Q Measures) + ColumnClass["COL_METADATA"] = "col-metadata"; + // A physical column on the database + ColumnClass["COL_DATABASE"] = "col-database"; + // A numberic bin (a special kind of calculated column) + ColumnClass["COL_NUMERICBIN"] = "col-numericbin"; + // A Categorical bin (group) + ColumnClass["COL_CATEGORICALBIN"] = "col-categoricalbin"; + // A column instance + ColumnClass["COL_INSTANCE"] = "col-instance"; + // A (raw) mdx calculated column + ColumnClass["COL_MDXCALC"] = "col-mdxcalc"; + // A user-defined calculated column, Tableau expression syntax + ColumnClass["COL_USERCALC"] = "col-usercalc"; + // A column that would have been COL_DATABASE, but the underlying database column does not exist + ColumnClass["COL_DANGLING"] = "col-dangling"; + // A column that contains local supplied data (e.g. Latitude) + ColumnClass["COL_LOCALDATA"] = "col-localdata"; + // A column that contains a visual model attribute (e.g. PaneIndex, Color, ...) + ColumnClass["COL_VISUALDATA"] = "col-visualdata"; + // A column that's a Group (a " Set " in UI terminology) + ColumnClass["COL_GROUP"] = "col-group"; + })(ColumnClass = exports.ColumnClass || (exports.ColumnClass = {})); + // + var VTAggType; + (function (VTAggType) { + // + VTAggType["VTAGG_SUM"] = "sum"; + // + VTAggType["VTAGG_AVG"] = "avg"; + // + VTAggType["VTAGG_MIN"] = "min"; + // + VTAggType["VTAGG_MAX"] = "max"; + // + VTAggType["VTAGG_SERVER"] = "server"; + // + VTAggType["VTAGG_NONE"] = "none"; + // + VTAggType["VTAGG_DEFAULT"] = "default"; + })(VTAggType = exports.VTAggType || (exports.VTAggType = {})); + // + var EntityType; + (function (EntityType) { + // + EntityType["NoEnumerationEntity"] = "no-enumeration-entity"; + // + EntityType["DatabaseEntity"] = "database-entity"; + // + EntityType["SchemaEntity"] = "schema-entity"; + // + EntityType["TableEntity"] = "table-entity"; + })(EntityType = exports.EntityType || (exports.EntityType = {})); + // + var PickEntitySearchType; + (function (PickEntitySearchType) { + // + PickEntitySearchType["PickEntitySearchType_StartsWith"] = "starts-with"; + // + PickEntitySearchType["PickEntitySearchType_Contains"] = "contains"; + // + PickEntitySearchType["PickEntitySearchType_ExactMatch"] = "exact-match"; + // + PickEntitySearchType["PickEntitySearchType_DEFAULT"] = "default"; + })(PickEntitySearchType = exports.PickEntitySearchType || (exports.PickEntitySearchType = {})); + // Parsing methods and structures. + var ExpressionOp; + (function (ExpressionOp) { + // + ExpressionOp["LogicalOr"] = "op-logical-or"; + // + ExpressionOp["LogicalAnd"] = "op-logical-and"; + // + ExpressionOp["LogicalNot"] = "op-logical-not"; + // + ExpressionOp["BitwiseXOr"] = "op-bitwise-xor"; + // + ExpressionOp["BitwiseOr"] = "op-bitwise-or"; + // + ExpressionOp["Equals"] = "op-equals"; + // + ExpressionOp["Greater"] = "op-greater"; + // + ExpressionOp["Less"] = "op-less"; + // + ExpressionOp["GEqual"] = "op-gequal"; + // + ExpressionOp["LEqual"] = "op-lequal"; + // + ExpressionOp["NEqual"] = "op-nequal"; + // + ExpressionOp["Plus"] = "op-plus"; + // + ExpressionOp["Minus"] = "op-minus"; + // + ExpressionOp["BitwiseAnd"] = "op-bitwise-and"; + // + ExpressionOp["Multiply"] = "op-multiply"; + // + ExpressionOp["Divide"] = "op-divide"; + // + ExpressionOp["Modulo"] = "op-modulo"; + // + ExpressionOp["Power"] = "op-power"; + // + ExpressionOp["Positive"] = "op-positive"; + // + ExpressionOp["Negative"] = "op-negative"; + // + ExpressionOp["BitwiseNot"] = "op-bitwise-not"; + // + ExpressionOp["Column"] = "op-column"; + // + ExpressionOp["String"] = "op-string"; + // + ExpressionOp["Number"] = "op-number"; + // + ExpressionOp["Date"] = "op-date"; + // + ExpressionOp["Boolean"] = "op-boolean"; + // + ExpressionOp["Funcall"] = "op-funcall"; + // + ExpressionOp["LParen"] = "op-lparen"; + // + ExpressionOp["RParen"] = "op-rparen"; + // + ExpressionOp["Comma"] = "op-comma"; + // + ExpressionOp["Ident"] = "op-ident"; + // + ExpressionOp["Null"] = "op-null"; + // + ExpressionOp["If"] = "op-if"; + // + ExpressionOp["Elseif"] = "op-elseif"; + // + ExpressionOp["Case"] = "op-case"; + // + ExpressionOp["When"] = "op-when"; + // + ExpressionOp["Then"] = "op-then"; + // + ExpressionOp["Else"] = "op-else"; + // + ExpressionOp["EndExpr"] = "op-endexpr"; + // + ExpressionOp["Whitespace"] = "op-whitespace"; + // + ExpressionOp["Comment"] = "op-comment"; + // + ExpressionOp["LBrace"] = "op-lbrace"; + // + ExpressionOp["RBrace"] = "op-rbrace"; + // + ExpressionOp["Colon"] = "op-colon"; + // + ExpressionOp["Bar"] = "op-bar"; + // + ExpressionOp["Txtype"] = "op-txtype"; + // + ExpressionOp["End"] = "op-end"; + // + ExpressionOp["RBrackets"] = "op-rbrackets"; + // used to represent invalid tokens + ExpressionOp["Invalid"] = "op-invalid"; + })(ExpressionOp = exports.ExpressionOp || (exports.ExpressionOp = {})); + // tri-state bool + var TriBool; + (function (TriBool) { + // + TriBool["TB_Invalid"] = "tribool-invalid"; + // + TriBool["TB_False"] = "tribool-false"; + // + TriBool["TB_True"] = "tribool-true"; + })(TriBool = exports.TriBool || (exports.TriBool = {})); + // table calc reference options set + var ReferenceOptionsSet; + (function (ReferenceOptionsSet) { + // + ReferenceOptionsSet["ROS_Relative"] = "reference-options-set-relative"; + // + ReferenceOptionsSet["ROS_Fixed"] = "reference-options-set-fixed"; + // + ReferenceOptionsSet["ROS_Parameter"] = "reference-options-set-parameter"; + // + ReferenceOptionsSet["ROS_None"] = "reference-options-set-none"; + })(ReferenceOptionsSet = exports.ReferenceOptionsSet || (exports.ReferenceOptionsSet = {})); + // widget state + var WidgetState; + (function (WidgetState) { + // + WidgetState["Hidden"] = "widget-state-hidden"; + // + WidgetState["Disabled"] = "widget-state-disabled"; + // + WidgetState["Enabled"] = "widget-state-enabled"; + })(WidgetState = exports.WidgetState || (exports.WidgetState = {})); + // rank type + var RankType; + (function (RankType) { + // + RankType["Competition"] = "rank-type-competition"; + // + RankType["ModifiedCompetition"] = "rank-type-modified-competition"; + // + RankType["Dense"] = "rank-type-dense"; + // + RankType["Unique"] = "rank-type-unique"; + })(RankType = exports.RankType || (exports.RankType = {})); + // + var TableCalcCommandType; + (function (TableCalcCommandType) { + // + TableCalcCommandType["TableCalcCommandClear"] = "clear"; + })(TableCalcCommandType = exports.TableCalcCommandType || (exports.TableCalcCommandType = {})); + // + var CalcNestingLevel; + (function (CalcNestingLevel) { + // + CalcNestingLevel["Primary"] = "primary"; + // used only for type != TC_CUSTOM + CalcNestingLevel["Secondary"] = "secondary"; + // used only for type == TC_CUSTOM + CalcNestingLevel["Nested"] = "nested"; + })(CalcNestingLevel = exports.CalcNestingLevel || (exports.CalcNestingLevel = {})); + // + var DecimalMode; + (function (DecimalMode) { + // + DecimalMode["DecimalModeAutomatic"] = "automatic"; + // + DecimalMode["DecimalModeManual"] = "manual"; + })(DecimalMode = exports.DecimalMode || (exports.DecimalMode = {})); + // + var TableCalcOrderingType; + (function (TableCalcOrderingType) { + // Advanced... + TableCalcOrderingType["OTField"] = "field"; + // Table (Across) + TableCalcOrderingType["OTRows"] = "rows"; + // Table (Down) + TableCalcOrderingType["OTColumns"] = "columns"; + // Table (Across then Down) + TableCalcOrderingType["OTTable"] = "table"; + // Table (Down then Across) + TableCalcOrderingType["OTTableColumnPrecedence"] = "table-column-precedence"; + // Pane Across + TableCalcOrderingType["OTRowInPane"] = "row-in-pane"; + // Pane (Down) + TableCalcOrderingType["OTColumnInPane"] = "column-in-pane"; + // Pane (Across then Down) + TableCalcOrderingType["OTPane"] = "pane"; + // Pane (Down then Across) + TableCalcOrderingType["OTPaneColumnPrecedence"] = "pane-column-precedence"; + // Cell + TableCalcOrderingType["OTCellInPane"] = "cell-in-pane"; + })(TableCalcOrderingType = exports.TableCalcOrderingType || (exports.TableCalcOrderingType = {})); + // + var TableCalcSortMode; + (function (TableCalcSortMode) { + // + TableCalcSortMode["SM_Automatic"] = "sort-mode-automatic"; + // + TableCalcSortMode["SM_Custom"] = "sort-mode-custom"; + })(TableCalcSortMode = exports.TableCalcSortMode || (exports.TableCalcSortMode = {})); + // + var TableCalcTableCalcType; + (function (TableCalcTableCalcType) { + // none (used to initialize variables) + TableCalcTableCalcType["TC_NONE"] = "none"; + // Running Total + TableCalcTableCalcType["TC_CUMULATIVE"] = "cumulative"; + // Moving Calculation + TableCalcTableCalcType["TC_WINDOW"] = "window"; + // Difference From + TableCalcTableCalcType["TC_DIFF"] = "diff"; + // Percent Difference From + TableCalcTableCalcType["TC_PCTDIFF"] = "pct-diff"; + // Percent From + TableCalcTableCalcType["TC_PCTVALUE"] = "pct-value"; + // Percent Of Total + TableCalcTableCalcType["TC_PCTTOTAL"] = "pct-total"; + // Rank + TableCalcTableCalcType["TC_RANK"] = "rank"; + // Percentile + TableCalcTableCalcType["TC_PCTRANK"] = "pct-rank"; + // Custom + TableCalcTableCalcType["TC_CUSTOM"] = "custom"; + })(TableCalcTableCalcType = exports.TableCalcTableCalcType || (exports.TableCalcTableCalcType = {})); + // + var QuickTableCalcCommandType; + (function (QuickTableCalcCommandType) { + // + QuickTableCalcCommandType["QuickTableCalcCommandRunTotal"] = "run-total"; + // + QuickTableCalcCommandType["QuickTableCalcCommandDifference"] = "difference"; + // + QuickTableCalcCommandType["QuickTableCalcCommandPctDiff"] = "pct-diff"; + // + QuickTableCalcCommandType["QuickTableCalcCommandPctTotal"] = "pct-total"; + // + QuickTableCalcCommandType["QuickTableCalcCommandRank"] = "rank"; + // + QuickTableCalcCommandType["QuickTableCalcCommandPctRank"] = "pct-rank"; + // + QuickTableCalcCommandType["QuickTableCalcCommandMovingAvg"] = "moving-avg"; + // + QuickTableCalcCommandType["QuickTableCalcCommandYtd"] = "ytd"; + // + QuickTableCalcCommandType["QuickTableCalcCommandCgr"] = "cgr"; + // + QuickTableCalcCommandType["QuickTableCalcCommandYOverY"] = "y-over-y"; + // + QuickTableCalcCommandType["QuickTableCalcCommandYtdGrowth"] = "ytd-growth"; + // + QuickTableCalcCommandType["QuickTableCalcCommandCustom"] = "custom"; + })(QuickTableCalcCommandType = exports.QuickTableCalcCommandType || (exports.QuickTableCalcCommandType = {})); + // + var TableCalcAddressCommandType; + (function (TableCalcAddressCommandType) { + // + TableCalcAddressCommandType["TableCalcAddressCommandRel"] = "rel"; + // + TableCalcAddressCommandType["TableCalcAddressCommandAbs"] = "abs"; + // + TableCalcAddressCommandType["TableCalcAddressCommandParam"] = "param"; + // + TableCalcAddressCommandType["TableCalcAddressCommandMore"] = "more"; + })(TableCalcAddressCommandType = exports.TableCalcAddressCommandType || (exports.TableCalcAddressCommandType = {})); + // relative addressing + var TableCalcRelativeAddress; + (function (TableCalcRelativeAddress) { + // + TableCalcRelativeAddress["RelAddrFirst"] = "relative-address-first"; + // + TableCalcRelativeAddress["RelAddrPrevious"] = "relative-address-previous"; + // + TableCalcRelativeAddress["RelAddrNext"] = "relative-address-next"; + // + TableCalcRelativeAddress["RelAddrLast"] = "relative-address-last"; + })(TableCalcRelativeAddress = exports.TableCalcRelativeAddress || (exports.TableCalcRelativeAddress = {})); + // + var CategoricalBinItemType; + (function (CategoricalBinItemType) { + // + CategoricalBinItemType["Unbinned"] = "unbinned"; + // + CategoricalBinItemType["BinMember"] = "categorical-bin-member"; + // + CategoricalBinItemType["Bin"] = "categorical-bin"; + })(CategoricalBinItemType = exports.CategoricalBinItemType || (exports.CategoricalBinItemType = {})); + // The class properties + var CredentialTypePropertiesFlag; + (function (CredentialTypePropertiesFlag) { + // + CredentialTypePropertiesFlag["None"] = "none"; + // + CredentialTypePropertiesFlag["GenericAuthClass"] = "generic-auth-class"; + // + CredentialTypePropertiesFlag["ProviderClass"] = "provider-class"; + // + CredentialTypePropertiesFlag["DataConnectionClass"] = "data-connection-class"; + })(CredentialTypePropertiesFlag = exports.CredentialTypePropertiesFlag || (exports.CredentialTypePropertiesFlag = {})); + // The connector type + var ConnectorType; + (function (ConnectorType) { + // + ConnectorType["Invalid"] = "invalid"; + // + ConnectorType["WebDataConnector"] = "web-data-connector"; + // + ConnectorType["CloudFileConnector"] = "cloud-file-connector"; + // + ConnectorType["LegacyConnector"] = "legacy-connector"; + })(ConnectorType = exports.ConnectorType || (exports.ConnectorType = {})); + // + var TablePillIcon; + (function (TablePillIcon) { + // + TablePillIcon["ListItem"] = "list-item"; + // + TablePillIcon["Sheet"] = "sheet"; + // + TablePillIcon["FoundTable"] = "found-table"; + // + TablePillIcon["NamedRange"] = "named-range"; + // + TablePillIcon["StoredProcedure"] = "stored-procedure"; + })(TablePillIcon = exports.TablePillIcon || (exports.TablePillIcon = {})); + // + var JoinValidationError; + (function (JoinValidationError) { + // + JoinValidationError["JVE_NoError"] = "no-error"; + // + JoinValidationError["JVE_EmptyClause"] = "empty-clause"; + // + JoinValidationError["JVE_TypeMismatch"] = "type-mismatch"; + // + JoinValidationError["JVE_InvalidField"] = "invalid-field"; + // + JoinValidationError["JVE_BadClause"] = "bad-clause"; + // + JoinValidationError["JVE_BadInputRelation"] = "bad-input-relation"; + // + JoinValidationError["JVE_RepeatedFieldReferences"] = "repeated-field-references"; + // + JoinValidationError["JVE_UnsupportedJoinType"] = "unsupported-join-type"; + // + JoinValidationError["JVE_InvalidCalculation"] = "invalid-calculation"; + // + JoinValidationError["JVE_NonSpatialType"] = "non-spatial-type"; + // + JoinValidationError["JVE_NonSpatialComparison"] = "non-spatial-comp"; + // + JoinValidationError["JVE_Unknown"] = "unknown"; + })(JoinValidationError = exports.JoinValidationError || (exports.JoinValidationError = {})); + // + var ConnectionTypeEnum; + (function (ConnectionTypeEnum) { + // -d-s is used to force the enum generator to generate DS with capital letters in .cs just like the .cpp + ConnectionTypeEnum["InvalidDS"] = "invalid-d-s"; + // + ConnectionTypeEnum["FileDS"] = "file-d-s"; + // + ConnectionTypeEnum["ServerDS"] = "server-d-s"; + // + ConnectionTypeEnum["InternetDS"] = "internet-d-s"; + // + ConnectionTypeEnum["TableauServerDS"] = "tableau-server-d-s"; + })(ConnectionTypeEnum = exports.ConnectionTypeEnum || (exports.ConnectionTypeEnum = {})); + // + var ConnectionErrorStage; + (function (ConnectionErrorStage) { + // + ConnectionErrorStage["Unknown"] = "unknown"; + // + ConnectionErrorStage["CreateProtocolFailed"] = "create-protocol-failed"; + // + ConnectionErrorStage["LoadMetadataFailed"] = "load-metadata-failed"; + })(ConnectionErrorStage = exports.ConnectionErrorStage || (exports.ConnectionErrorStage = {})); + // + var SetTickOriginResult; + (function (SetTickOriginResult) { + // + SetTickOriginResult["Success"] = "set-tick-origin-success-result"; + // + SetTickOriginResult["ParseFailure"] = "set-tick-origin-parse-failure-result"; + // + SetTickOriginResult["ValueFailure"] = "set-tick-origin-value-failure-result"; + })(SetTickOriginResult = exports.SetTickOriginResult || (exports.SetTickOriginResult = {})); + // + var SetTickSpacingResult; + (function (SetTickSpacingResult) { + // + SetTickSpacingResult["Success"] = "set-tick-spacing-success-result"; + // + SetTickSpacingResult["ParseFailure"] = "set-tick-spacing-parse-failure-result"; + // + SetTickSpacingResult["ValueFailure"] = "set-tick-spacing-value-failure-result"; + })(SetTickSpacingResult = exports.SetTickSpacingResult || (exports.SetTickSpacingResult = {})); + // The result of setting one end of an axis range + var SetAxisRangeResult; + (function (SetAxisRangeResult) { + // + SetAxisRangeResult["Success"] = "set-axis-range-success-result"; + // + SetAxisRangeResult["Failure"] = "set-axis-range-failure-result"; + })(SetAxisRangeResult = exports.SetAxisRangeResult || (exports.SetAxisRangeResult = {})); + // The type of an axis' extent + var AxisExtentType; + (function (AxisExtentType) { + // + AxisExtentType["Automatic"] = "axis-extent-automatic"; + // + AxisExtentType["Uniform"] = "axis-extent-uniform"; + // + AxisExtentType["Independent"] = "axis-extent-independent"; + // + AxisExtentType["Fixed"] = "axis-extent-fixed"; + })(AxisExtentType = exports.AxisExtentType || (exports.AxisExtentType = {})); + // Enumeration of units tick spacing can take + var TickSpacingUnits; + (function (TickSpacingUnits) { + // + TickSpacingUnits["NoUnits"] = "no-units"; + // + TickSpacingUnits["Years"] = "years"; + // + TickSpacingUnits["Quarters"] = "quarters"; + // + TickSpacingUnits["Months"] = "months"; + // + TickSpacingUnits["Weeks"] = "weeks"; + // + TickSpacingUnits["Days"] = "days"; + // + TickSpacingUnits["Hours"] = "hours"; + // + TickSpacingUnits["Minutes"] = "minutes"; + // + TickSpacingUnits["Seconds"] = "seconds"; + })(TickSpacingUnits = exports.TickSpacingUnits || (exports.TickSpacingUnits = {})); + // Enumeration of whether totals are included in or excluded from the color encoding + var TotalsInclusion; + (function (TotalsInclusion) { + // Totals included in color encoding + TotalsInclusion["IncludeTotals"] = "include-totals"; + // Totals excluded from color encoding + TotalsInclusion["ExcludeTotals"] = "exclude-totals"; + })(TotalsInclusion = exports.TotalsInclusion || (exports.TotalsInclusion = {})); + // How tick marks are being calculated + var TickMarkState; + (function (TickMarkState) { + // + TickMarkState["TicksAutomatic"] = "ticks-automatic"; + // + TickMarkState["TicksManual"] = "ticks-manual"; + // + TickMarkState["TicksNone"] = "ticks-None"; + })(TickMarkState = exports.TickMarkState || (exports.TickMarkState = {})); + // Setting for type of axis range + var AxisRangeType; + (function (AxisRangeType) { + // + AxisRangeType["AutomaticRange"] = "automatic-range"; + // + AxisRangeType["UniformRange"] = "uniform-range"; + // + AxisRangeType["IndependentRange"] = "independent-range"; + // + AxisRangeType["FixedRange"] = "fixed-range"; + // + AxisRangeType["FixedMin"] = "fixed-min"; + // + AxisRangeType["FixedMax"] = "fixed-max"; + // + AxisRangeType["FixedMinUniformMax"] = "fixed-min-uniform-max"; + // + AxisRangeType["FixedMinIndependentMax"] = "fixed-min-independent-max"; + // + AxisRangeType["FixedMaxUniformMin"] = "fixed-max-uniform-min"; + // + AxisRangeType["FixedMaxIndependentMin"] = "fixed-max-independent-min"; + // + AxisRangeType["FixedRangeOrdinal"] = "fixed-range-ordinal"; + })(AxisRangeType = exports.AxisRangeType || (exports.AxisRangeType = {})); + // represents type of widget on the toolbar of rich text editor + var RichTextEditorWidgetKey; + (function (RichTextEditorWidgetKey) { + // + RichTextEditorWidgetKey["None"] = "none"; + // + RichTextEditorWidgetKey["FontSize"] = "fontsize"; + // + RichTextEditorWidgetKey["FontName"] = "fontname"; + // + RichTextEditorWidgetKey["FontColor"] = "color"; + // + RichTextEditorWidgetKey["Bold"] = "bold"; + // + RichTextEditorWidgetKey["Italic"] = "italic"; + // + RichTextEditorWidgetKey["Underline"] = "underline"; + // + RichTextEditorWidgetKey["AlignLeft"] = "justifyleft"; + // + RichTextEditorWidgetKey["AlignCenter"] = "justifycenter"; + // + RichTextEditorWidgetKey["AlignRight"] = "justifyright"; + // + RichTextEditorWidgetKey["ClearFormatting"] = "clearformatting"; + // + RichTextEditorWidgetKey["TableauKeywords"] = "tableaukeywords"; + })(RichTextEditorWidgetKey = exports.RichTextEditorWidgetKey || (exports.RichTextEditorWidgetKey = {})); + // + var CellSizeChange; + (function (CellSizeChange) { + // + CellSizeChange["CSC_Taller"] = "taller"; + // + CellSizeChange["CSC_Shorter"] = "shorter"; + // + CellSizeChange["CSC_Wider"] = "wider"; + // + CellSizeChange["CSC_Narrower"] = "narrower"; + // + CellSizeChange["CSC_Bigger"] = "bigger"; + // + CellSizeChange["CSC_Smaller"] = "smaller"; + })(CellSizeChange = exports.CellSizeChange || (exports.CellSizeChange = {})); + // + var CellTypeEnum; + (function (CellTypeEnum) { + // + CellTypeEnum["CLT_Square"] = "square"; + // + CellTypeEnum["CLT_Text"] = "text"; + })(CellTypeEnum = exports.CellTypeEnum || (exports.CellTypeEnum = {})); + // represents type of formatting pres model + var TypeOfFormatItem; + (function (TypeOfFormatItem) { + // + TypeOfFormatItem["FT_FormatItem"] = "formatItem"; + // + TypeOfFormatItem["FT_FormatContainer"] = "formatContainer"; + // + TypeOfFormatItem["FT_FormatControl"] = "formatControl"; + })(TypeOfFormatItem = exports.TypeOfFormatItem || (exports.TypeOfFormatItem = {})); + // represents type of formatting container + var TypeOfFormatContainer; + (function (TypeOfFormatContainer) { + // + TypeOfFormatContainer["FT_FormatPane"] = "formatPane"; + // + TypeOfFormatContainer["FT_FormatSection"] = "formatSection"; + // + TypeOfFormatContainer["FT_CollapsibleSection"] = "collapsibleSection"; + // + TypeOfFormatContainer["FT_CompositeContainer"] = "compositeContainer"; + // + TypeOfFormatContainer["FT_UnitContainer"] = "unitContainer"; + // + TypeOfFormatContainer["FT_Tab"] = "tab"; + // + TypeOfFormatContainer["FT_TabGroup"] = "tabGroup"; + })(TypeOfFormatContainer = exports.TypeOfFormatContainer || (exports.TypeOfFormatContainer = {})); + // represents type of formatting control + var TypeOfFormatControl; + (function (TypeOfFormatControl) { + // + TypeOfFormatControl["FT_None"] = "none"; + // + TypeOfFormatControl["FT_NumericControl"] = "numeric-control"; + // + TypeOfFormatControl["FT_TextControl"] = "text-control"; + // + TypeOfFormatControl["FT_ColorControl"] = "color-control"; + // + TypeOfFormatControl["FT_SelectorControl"] = "selector-control"; + // + TypeOfFormatControl["FT_ToggleControl"] = "toggle-control"; + })(TypeOfFormatControl = exports.TypeOfFormatControl || (exports.TypeOfFormatControl = {})); + // represents type of formatting widget + var FormatWidgetKey; + (function (FormatWidgetKey) { + // + FormatWidgetKey["FWK_None"] = "none"; + // + FormatWidgetKey["FWK_FontFamily"] = "fontFamily"; + // + FormatWidgetKey["FWK_FontSize"] = "fontSize"; + // + FormatWidgetKey["FWK_ColorSwatch"] = "colorSwatch"; + // + FormatWidgetKey["FWK_Bold"] = "bold"; + // + FormatWidgetKey["FWK_Italics"] = "italics"; + // + FormatWidgetKey["FWK_Underline"] = "underline"; + // + FormatWidgetKey["FWK_LineVisibility"] = "lineVisibility"; + // + FormatWidgetKey["FWK_LinePattern"] = "linePattern"; + // + FormatWidgetKey["FWK_LineSize"] = "lineSize"; + // + FormatWidgetKey["FWK_NumberType"] = "numericType"; + // + FormatWidgetKey["FWK_DecimalPlaces"] = "decimalPlaces"; + // + FormatWidgetKey["FWK_ThousandsSeparator"] = "thousandsSeparator"; + // + FormatWidgetKey["FWK_NumericUnits"] = "numericUnits"; + })(FormatWidgetKey = exports.FormatWidgetKey || (exports.FormatWidgetKey = {})); + // represents identifier for each node in format pane + var FormatNodeIdentifier; + (function (FormatNodeIdentifier) { + // + FormatNodeIdentifier["Format_None_Key"] = "none"; + // + FormatNodeIdentifier["Format_Workbook_Key"] = "workbook"; + // + FormatNodeIdentifier["Format_Font_Key"] = "font"; + // + FormatNodeIdentifier["Format_Color_Key"] = "color"; + // + FormatNodeIdentifier["Format_Lines_Key"] = "lines"; + // + FormatNodeIdentifier["Format_FontAll_Key"] = "font-all"; + // + FormatNodeIdentifier["Format_FontAllControls_Key"] = "font-all-controls"; + // + FormatNodeIdentifier["Format_FontMore_Key"] = "font-more"; + // + FormatNodeIdentifier["Format_FontWorksheetTitles_Key"] = "worksheet-titles"; + // + FormatNodeIdentifier["Format_FontToolTip_Key"] = "font-tooltip"; + // + FormatNodeIdentifier["Format_FontWorksheet_Key"] = "font-worksheet"; + // + FormatNodeIdentifier["Format_FontDashTitles_Key"] = "dash-titles"; + // + FormatNodeIdentifier["Format_FontStoryTitles_Key"] = "story-titles"; + // + FormatNodeIdentifier["Format_FontTitlesControls_Key"] = "titles-controls"; + // + FormatNodeIdentifier["Format_FontTooltipControls_Key"] = "tooltip-controls"; + // + FormatNodeIdentifier["Format_FontWorksheetControls_Key"] = "worksheet-controls"; + // + FormatNodeIdentifier["Format_LineMore_Key"] = "line-more"; + // + FormatNodeIdentifier["Format_LineGrid_Key"] = "line-grid"; + // + FormatNodeIdentifier["Format_LineGridTabs_Key"] = "line-grid-tabs"; + // + FormatNodeIdentifier["Format_LineZero_Key"] = "line-zero"; + // + FormatNodeIdentifier["Format_LineZeroTabs_Key"] = "line-zero-tabs"; + // + FormatNodeIdentifier["Format_LineAxisTick_Key"] = "line-axis-tick"; + // + FormatNodeIdentifier["Format_LineAxisTickTabs_Key"] = "line-axis-tick-tabs"; + // + FormatNodeIdentifier["Format_LineAxisRuler_Key"] = "line-axis-ruler"; + // + FormatNodeIdentifier["Format_LineAxisRulerTabs_Key"] = "line-axis-ruler-tabs"; + // + FormatNodeIdentifier["Format_LineHeaderDivider_Key"] = "line-header-divider"; + // + FormatNodeIdentifier["Format_LineHeaderDividerTabs_Key"] = "line-header-divider-tabs"; + // + FormatNodeIdentifier["Format_LinePaneDivider_Key"] = "line-paneDivider"; + // + FormatNodeIdentifier["Format_LinePaneDividerTabs_Key"] = "line-paneDivider-tabs"; + // + FormatNodeIdentifier["Format_LineGridAll_Key"] = "line-grid-all"; + // + FormatNodeIdentifier["Format_LineGridRow_Key"] = "line-grid-row"; + // + FormatNodeIdentifier["Format_LineGridColumn_Key"] = "line-grid-column"; + // + FormatNodeIdentifier["Format_LineZeroAll_Key"] = "line-zero-all"; + // + FormatNodeIdentifier["Format_LineZeroRow_Key"] = "line-zero-row"; + // + FormatNodeIdentifier["Format_LineZeroColumn_Key"] = "line-zero-column"; + // + FormatNodeIdentifier["Format_LineAxisTickAll_Key"] = "line-axis-tick-all"; + // + FormatNodeIdentifier["Format_LineAxisTickRow_Key"] = "line-axis-tick-row"; + // + FormatNodeIdentifier["Format_LineAxisTickColumn_Key"] = "line-axis-tick-column"; + // + FormatNodeIdentifier["Format_LineAxisRulerAll_Key"] = "line-axis-ruler-all"; + // + FormatNodeIdentifier["Format_LineAxisRulerRow_Key"] = "line-axis-ruler-row"; + // + FormatNodeIdentifier["Format_LineAxisRulerColumn_Key"] = "line-axis-ruler-column"; + // + FormatNodeIdentifier["Format_LineReference_Key"] = "line-reference"; + // + FormatNodeIdentifier["Format_LineDrop_Key"] = "line-drop"; + // + FormatNodeIdentifier["Format_LineTrend_Key"] = "line-trend"; + // + FormatNodeIdentifier["Format_LineVisibility_Key"] = "line-visibility"; + // + FormatNodeIdentifier["Format_LinePattern_Key"] = "line-pattern"; + // + FormatNodeIdentifier["Format_LineWidth_Key"] = "line-width"; + // + FormatNodeIdentifier["Format_LineColor_Key"] = "line-color"; + // + FormatNodeIdentifier["Format_TickColor_Key"] = "tick-color"; + // + FormatNodeIdentifier["Format_BorderPattern_Key"] = "border-pattern"; + // + FormatNodeIdentifier["Format_BorderColor_Key"] = "border-color"; + // + FormatNodeIdentifier["Format_DividerColor_Key"] = "divider-color"; + // + FormatNodeIdentifier["Format_FontFamily_Key"] = "font-family-key"; + // + FormatNodeIdentifier["Format_FontSize_Key"] = "font-size-key"; + // + FormatNodeIdentifier["Format_Bold_Key"] = "bold-key"; + // + FormatNodeIdentifier["Format_Italics_Key"] = "italics-key"; + // + FormatNodeIdentifier["Format_Underline_Key"] = "underline-key"; + // + FormatNodeIdentifier["Format_FontColor_Key"] = "font-color-key"; + // + FormatNodeIdentifier["Format_Number_Container_Key"] = "number-container"; + // + FormatNodeIdentifier["Format_Number_Type_Key"] = "number-container-type"; + // + FormatNodeIdentifier["Format_Number_Units_Key"] = "number-container-units"; + // + FormatNodeIdentifier["Format_Number_Decimal_Key"] = "number-container-decimal"; + // + FormatNodeIdentifier["Format_Number_Thousands_Separator_Key"] = "number-container-thousands-separator"; + // + FormatNodeIdentifier["Format_FontPickerMinimal_Key"] = "font-picker-minimal"; + // + FormatNodeIdentifier["Format_FontPickerDefault_Key"] = "font-picker-default"; + // + FormatNodeIdentifier["Format_LinePickerDefault_Key"] = "line-picker-default"; + // + FormatNodeIdentifier["Format_LinePickerNoVis_Key"] = "line-picker-no-visibility"; + // + FormatNodeIdentifier["Format_LineAxisTickPicker_Key"] = "line-axis-tick-picker"; + })(FormatNodeIdentifier = exports.FormatNodeIdentifier || (exports.FormatNodeIdentifier = {})); + // Format prepended to format strings to specify type + var FormatCode; + (function (FormatCode) { + // + FormatCode["AutoFormat"] = "auto-format"; + // + FormatCode["SystemLongDate"] = "system-long-date"; + // + FormatCode["SystemShortDate"] = "system-short-date"; + // + FormatCode["SystemNumber"] = "system-number"; + // + FormatCode["SystemCurrency"] = "system-currency"; + // + FormatCode["SystemTime"] = "system-time"; + // + FormatCode["Custom"] = "custom"; + // + FormatCode["CustomICU"] = "custom-icu"; + // + FormatCode["CustomNumber"] = "custom-number"; + // + FormatCode["CustomCurrency"] = "custom-currency"; + // + FormatCode["CustomScientific"] = "custom-scientific"; + // + FormatCode["CustomPercentage"] = "custom-percentage"; + })(FormatCode = exports.FormatCode || (exports.FormatCode = {})); + // Units specified in a format string + var UnitsFormatEnum; + (function (UnitsFormatEnum) { + // + UnitsFormatEnum["UnitsFmtNone"] = "units-none"; + // + UnitsFormatEnum["UnitsFmtThousands"] = "units-thousands"; + // + UnitsFormatEnum["UnitsFmtMillions"] = "units-millions"; + // + UnitsFormatEnum["UnitsFmtBillionsEnglish"] = "units-billions-english"; + // + UnitsFormatEnum["UnitsFmtBillionsStandard"] = "units-billions-standard"; + })(UnitsFormatEnum = exports.UnitsFormatEnum || (exports.UnitsFormatEnum = {})); + // represents the color swatch that will be used in the ColorControlPresModel + var ColorSwatchType; + (function (ColorSwatchType) { + // + ColorSwatchType["CST_Dark"] = "dark-swatch"; + // + ColorSwatchType["CST_Light"] = "light-swatch"; + })(ColorSwatchType = exports.ColorSwatchType || (exports.ColorSwatchType = {})); + // represents the type of a style picker, affecting the preview rendering and, possibly, the layout + var PickerType; + (function (PickerType) { + // + PickerType["PT_None"] = "none"; + // + PickerType["PT_Font"] = "font"; + // + PickerType["PT_Line"] = "line"; + // + PickerType["PT_Number"] = "number"; + })(PickerType = exports.PickerType || (exports.PickerType = {})); + // + var UpdateScope; + (function (UpdateScope) { + // + UpdateScope["US_Worksheet"] = "worksheet"; + // + UpdateScope["US_Dashboard"] = "dashboard"; + // + UpdateScope["US_QuickFilters"] = "quick-filters"; + // + UpdateScope["US_Story"] = "story"; + })(UpdateScope = exports.UpdateScope || (exports.UpdateScope = {})); + // + var ParameterCtrlTypesDisplayMode; + (function (ParameterCtrlTypesDisplayMode) { + // + ParameterCtrlTypesDisplayMode["MODE_TYPE_IN"] = "type_in"; + // + ParameterCtrlTypesDisplayMode["MODE_COMPACT_LIST"] = "compact"; + // + ParameterCtrlTypesDisplayMode["MODE_LIST"] = "list"; + // + ParameterCtrlTypesDisplayMode["MODE_SLIDER"] = "slider"; + // + ParameterCtrlTypesDisplayMode["MODE_DATETIME"] = "datetime"; + })(ParameterCtrlTypesDisplayMode = exports.ParameterCtrlTypesDisplayMode || (exports.ParameterCtrlTypesDisplayMode = {})); + // flags for display options + var ParameterCtrlTypesDisplayFlag; + (function (ParameterCtrlTypesDisplayFlag) { + // + ParameterCtrlTypesDisplayFlag["DISPLAY_CUSTOM_TITLE"] = "custom_title"; + // + ParameterCtrlTypesDisplayFlag["DISPLAY_HIDE_SLIDER_SLIDER"] = "hide_slider_slider"; + // + ParameterCtrlTypesDisplayFlag["DISPLAY_HIDE_SLIDER_READOUT"] = "hide_slider_readout"; + // + ParameterCtrlTypesDisplayFlag["DISPLAY_HIDE_SLIDER_BUTTONS"] = "hide_slider_buttons"; + })(ParameterCtrlTypesDisplayFlag = exports.ParameterCtrlTypesDisplayFlag || (exports.ParameterCtrlTypesDisplayFlag = {})); + // The follow supports 1024 custom palettes, each with 4m shapes. Encoding is palette << PaletteShift | shape. + var ShapeEncodeConstants; + (function (ShapeEncodeConstants) { + // Shift value for palette + ShapeEncodeConstants["EncodePaletteShift"] = "paletteShift"; + // Mask for getting palette from encoded value. (Then shift down) + ShapeEncodeConstants["EncodePaletteMask"] = "paletteMask"; + // Mask for getting shape from encoded value + ShapeEncodeConstants["EncodeShapeMask"] = "shapeMask"; + })(ShapeEncodeConstants = exports.ShapeEncodeConstants || (exports.ShapeEncodeConstants = {})); + // + var ShapeType; + (function (ShapeType) { + // + ShapeType["ShapeCircle"] = "circle"; + // + ShapeType["ShapeSquare"] = "square"; + // + ShapeType["ShapePlus"] = "plus"; + // + ShapeType["ShapeTimes"] = "times"; + // + ShapeType["ShapeAsterisk"] = "asterisk"; + // + ShapeType["ShapeDiamond"] = "diamond"; + // + ShapeType["ShapeTriangle"] = "triangle"; + // + ShapeType["ShapeDownTriangle"] = "down-triangle"; + // + ShapeType["ShapeLeftTriangle"] = "left-triangle"; + // + ShapeType["ShapeRightTriangle"] = "right-triangle"; + // + ShapeType["MaxAllShapes"] = "invalid"; + })(ShapeType = exports.ShapeType || (exports.ShapeType = {})); + // + var ShapePalette; + (function (ShapePalette) { + // built-in palette + ShapePalette["ShapePaletteFilled"] = "filled"; + // custom palettes + ShapePalette["ShapePaletteCustom1"] = "custom1"; + // + ShapePalette["ShapePaletteCustom2"] = "custom2"; + // + ShapePalette["ShapePaletteCustom3"] = "custom3"; + // + ShapePalette["ShapePaletteCustom4"] = "custom4"; + // + ShapePalette["ShapePaletteCustom5"] = "custom5"; + // + ShapePalette["ShapePaletteCustom6"] = "custom6"; + // + ShapePalette["ShapePaletteCustom7"] = "custom7"; + // + ShapePalette["ShapePaletteCustom8"] = "custom8"; + // + ShapePalette["ShapePaletteCustom9"] = "custom9"; + // + ShapePalette["ShapePaletteCustom10"] = "custom10"; + // + ShapePalette["ShapePaletteCustom11"] = "custom11"; + // and so on... + ShapePalette["ShapePaletteCustom12"] = "custom12"; + // + ShapePalette["ShapePaletteHidden"] = "hidden"; + })(ShapePalette = exports.ShapePalette || (exports.ShapePalette = {})); + // ShapeType and palette mapped into a single value. This enum depends on ShapeType and the implementation of ShapeManager::IntEncode. + var ShapeID; + (function (ShapeID) { + // + ShapeID["ShapeIDCircle"] = "shapeIDCircle"; + // + ShapeID["ShapeIDSquare"] = "shapeIDSquare"; + // + ShapeID["ShapeIDPlus"] = "shapeIDPlus"; + // + ShapeID["ShapeIDTimes"] = "shapeIDTimes"; + // + ShapeID["ShapeIDAsterisk"] = "shapeIDAsterisk"; + // + ShapeID["ShapeIDDiamond"] = "shapeIDDiamond"; + // + ShapeID["ShapeIDTriangle"] = "shapeIDTriangle"; + // + ShapeID["ShapeIDDownTriangle"] = "shapeIDDownTriangle"; + // + ShapeID["ShapeIDLeftTriangle"] = "shapeIDLeftTriangle"; + // + ShapeID["ShapeIDRightTriangle"] = "shapeIDRightTriangle"; + // + ShapeID["ShapeIDFilledCircle"] = "shapeIDFilledCircle"; + // + ShapeID["ShapeIDFilledSquare"] = "shapeIDFilledSquare"; + // + ShapeID["ShapeIDFilledPlus"] = "shapeIDFilledPlus"; + // + ShapeID["ShapeIDFilledTimes"] = "shapeIDFilledTimes"; + // + ShapeID["ShapeIDFilledStar"] = "shapeIDFilledStar"; + // + ShapeID["ShapeIDFilledDiamond"] = "shapeIDFilledDiamond"; + // + ShapeID["ShapeIDFilledTriangle"] = "shapeIDFilledTriangle"; + // + ShapeID["ShapeIDFilledDownTriangle"] = "shapeIDFilledDownTriangle"; + // + ShapeID["ShapeIDFilledLeftTriangle"] = "shapeIDFilledLeftTriangle"; + // + ShapeID["ShapeIDFilledRightTriangle"] = "shapeIDFilledRightTriangle"; + // 0+(ShapePaletteHidden< -1; + }); + // Create a mapping of which index in the data dictionary our columns are in + var columnIndices = columns.map(function (vizDataColumn) { + // The columnIndex is in the same position as the paneIndex + var paneIndex = vizDataColumn.paneIndices.indexOf(i); + var columnIndex = vizDataColumn.columnIndices[paneIndex]; + return columnIndex; + }); + // Get the data for the pane we are processing + var vizPane = vizData.paneColumnsData.paneColumnsList[i]; + if (vizPane.vizPaneColumns.length !== columns.length) { + throw new Error('Malformed data table'); + } + var headers = new Array(); + var rows = new Array(); + // Column 0 will be the tuple id column. We can use this as a counter for how many rows we have + var tupleIds = vizPane.vizPaneColumns[0].tupleIds; + var marks = new Array(); + for (var tupleIndex = 0; tupleIndex < tupleIds.length; tupleIndex++) { + // TODO Need to revaluate the place of this logic. If it turns out that we need a separate command + // call to get the marks info, then this logic should not be here but instead in a layer above somewhere + var mark = { + type: api_internal_contract_1.MarkType.Bar, + color: 'red', + tupleId: tupleIds[tupleIndex], + }; + marks.push(mark); + // We will have 1 less value in this row since there's the tupleId column + var cells = new Array(vizPane.vizPaneColumns.length - 1); + for (var j = 1 /* skip the first which is tuple ids */; j < vizPane.vizPaneColumns.length; j++) { + // Next, we need to figure out which column we are reading data for + var column = columns[columnIndices[j]]; + var vizPaneColumnData = vizPane.vizPaneColumns[j]; + // Define the header when we are processing the first row + if (tupleIndex === 0) { + var header = { + dataType: EnumMappings_1.PresLayerToApiEnumMappings.dataType.convert(column.dataType), + fieldName: column.fn, + isReferenced: true, + index: j - 1, + fieldCaption: column.fieldCaption + }; + headers.push(header); + } + var value = UnderlyingDataConverter_1.UnderlyingDataConverter.lookupValueFromDictionary(dataDictionary, column.dataType, vizPaneColumnData.valueIndices[tupleIndex]); + var aliasValue = UnderlyingDataConverter_1.UnderlyingDataConverter.lookupValueFromDictionary(dataDictionary, column.dataType, vizPaneColumnData.aliasIndices[tupleIndex]) || ''; + var formattedValue = aliasValue; // TODO - Figure out how to use the formatStrings + var dataCell = { + value: value, + formattedValue: formattedValue, + aliasedValue: aliasValue + }; + // Add our cell to this row + cells[j - 1] = dataCell; + } + rows.push(cells); + } + var dataTable = { + dataTable: rows, + headers: headers, + marks: marks + }; + result.push(dataTable); + }; + // The data model for the VizDataPresModel is a little strange, so this parsing takes some time to figure out. + // There can be multiple panes of data, so we must go through them one at a time to create data tables + for (var i = 0; i < vizData.paneColumnsData.paneColumnsList.length; i++) { + _loop_1(i); + } + return result; + }; + return ActiveMarksDataConverter; + }()); + exports.ActiveMarksDataConverter = ActiveMarksDataConverter; + + +/***/ }, +/* 83 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var Enums = __webpack_require__(80); + var EnumMappings_1 = __webpack_require__(79); + /** + * Contains static helper methods for converting from an underlying data pres model into the api representation. + * Most of the code is a direct port from ApiUnderlyingDataHandler.cs + * https://opengrok/source/xref/teams_near/workgroup/vqlweb/scriptsharp/src/UI/Api/ApiUnderlyingDataHandler.cs + */ + var UnderlyingDataConverter = (function () { + function UnderlyingDataConverter() { + } + UnderlyingDataConverter.lookupValueFromDictionary = function (dataDictionary, dt, index) { + if (index < 0) { + // per cl 280396 / bugzid 81197 negative data value index means that it is special + dt = Enums.DataType.DT_STRING; + index = -index - 1; + } + var result = null; + var rawValue = UnderlyingDataConverter.getRawValue(dataDictionary, dt, index); + if (rawValue !== null) { + result = rawValue.toString(); + } + return result; + }; + /* tslint:disable-next-line:no-any */ + UnderlyingDataConverter.getRawValue = function (dataDictionary, dt, index) { + if (!dataDictionary.dataSegments) { + return null; + } + for (var _i = 0, _a = Object.keys(dataDictionary.dataSegments); _i < _a.length; _i++) { + var key = _a[_i]; + var dataSegment = dataDictionary.dataSegments[key]; + for (var _b = 0, _c = dataSegment.dataColumns; _b < _c.length; _b++) { + var dataColumn = _c[_b]; + if (!dataColumn || dataColumn.dataType !== dt) { + continue; + } + if (index < dataColumn.dataValues.length) { + return dataColumn.dataValues[index]; + } + index -= dataColumn.dataValues.length; + break; + } + } + return null; + }; + UnderlyingDataConverter.buildDataTable = function (dataDictionary, columns) { + var result = { + dataTable: UnderlyingDataConverter.buildTable(dataDictionary, columns), + headers: columns.map(function (c, i) { return UnderlyingDataConverter.buildColumnModel(c, i); }) + }; + return result; + }; + UnderlyingDataConverter.buildUnderlyingDataTable = function (isSummary, underlyingDataTable) { + var result = { + data: UnderlyingDataConverter.buildDataTable(underlyingDataTable.dataDictionary, underlyingDataTable.underlyingDataTableColumns), + isSummary: isSummary + }; + return result; + }; + UnderlyingDataConverter.buildActiveMarksTable = function (dataDictionary, vizData) { + throw new Error(); + }; + UnderlyingDataConverter.buildColumnModel = function (column, index) { + return { + dataType: EnumMappings_1.PresLayerToApiEnumMappings.dataType.convert(column.dataType), + fieldName: column.fn, + fieldCaption: column.fieldCaption, + isReferenced: !!column.isReferenced, + index: index + }; + }; + UnderlyingDataConverter.buildTable = function (dataDictionary, columns) { + if (columns.length === 0) { + return new Array(); + } + var rowCount = columns[0].formatValIdxs.length; + var columnCount = columns.length; + var result = new Array(rowCount); + // Initialize all of our rows + for (var rowIndex = 0; rowIndex < rowCount; rowIndex++) { + result[rowIndex] = new Array(columnCount); + } + // Go through column-by-column and convert the values + for (var columnIndex = 0; columnIndex < columnCount; columnIndex++) { + var column = columns[columnIndex]; + for (var rowIndex = 0; rowIndex < rowCount; rowIndex++) { + var formattedValue = UnderlyingDataConverter.lookupValueFromDictionary(dataDictionary, Enums.DataType.DT_STRING, column.formatValIdxs[rowIndex]); + if (formattedValue === null) { + throw new Error('formattedValue was null'); + } + var value = { + value: UnderlyingDataConverter.lookupValueFromDictionary(dataDictionary, column.dataType, column.valueIndices[rowIndex]), + formattedValue: formattedValue, + aliasedValue: formattedValue + }; + result[rowIndex][columnIndex] = value; + } + } + return result; + }; + return UnderlyingDataConverter; + }()); + exports.UnderlyingDataConverter = UnderlyingDataConverter; + + +/***/ }, +/* 84 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var EnumMappings_1 = __webpack_require__(79); + /** + * Class containing helper methods for converting from ApiPresModels to their PresLayer equivalents + * + * @export + * @class ApiToPresLayerConverter + */ + var ApiToPresLayerConverter = (function () { + function ApiToPresLayerConverter() { + } + ApiToPresLayerConverter.convertSheetPath = function (apiSheetPath) { + if (!apiSheetPath) { + throw new Error('sheetPath not defined'); + } + var result = { + sheetName: apiSheetPath.sheetName, + isDashboard: apiSheetPath.isDashboard, + storyboard: apiSheetPath.storyboard || '', + flipboardZoneId: apiSheetPath.flipboardZoneID || 0, + storyPointId: apiSheetPath.storyPointID || 0, + }; + return result; + }; + ApiToPresLayerConverter.convertExtensionLocator = function (apiExtensionLocator) { + var result = { + addInInstanceId: apiExtensionLocator.instanceId, + sheetPath: ApiToPresLayerConverter.convertSheetPath(apiExtensionLocator.dashboardPath) + }; + return result; + }; + ApiToPresLayerConverter.convertVisualId = function (apiVisualid) { + var result = { + worksheet: apiVisualid.worksheet, + dashboard: apiVisualid.dashboard, + storyboard: apiVisualid.storyboard, + storyPointId: apiVisualid.storyPointID, + flipboardZoneId: apiVisualid.flipboardZoneID + }; + return result; + }; + ApiToPresLayerConverter.convertVisualIdToWorksheet = function (apiVisualId) { + return apiVisualId.worksheet; + }; + ApiToPresLayerConverter.convertVisualIdToDashboard = function (apiVisualId) { + return apiVisualId.dashboard || ''; + }; + ApiToPresLayerConverter.convertFilterValues = function (filterValues) { + if (filterValues.length === 0) { + // platform code expects an empty string for clearing filter values + return ['']; + } + return filterValues; + }; + ApiToPresLayerConverter.convertFilterType = function (filterUpdateType) { + return EnumMappings_1.ApiToPresLayerEnumMappings.filterUpdateType.convert(filterUpdateType); + }; + ApiToPresLayerConverter.ConvertNullOption = function (nullOption) { + return EnumMappings_1.ApiToPresLayerEnumMappings.nullOption.convert(nullOption); + }; + ApiToPresLayerConverter.ConvertFilterDomainType = function (filterDomainType) { + return EnumMappings_1.ApiToPresLayerEnumMappings.filterDomainType.convert(filterDomainType); + }; + return ApiToPresLayerConverter; + }()); + exports.ApiToPresLayerConverter = ApiToPresLayerConverter; + + +/***/ }, +/* 85 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var api_internal_contract_1 = __webpack_require__(69); + var Enums_1 = __webpack_require__(80); + var EnumMappings_1 = __webpack_require__(79); + var PresLayerToApiConverter_1 = __webpack_require__(77); + var FiltersConverter = (function () { + function FiltersConverter() { + } + FiltersConverter.convertFiltersPresModel = function (filterPms) { + var filters = []; + filterPms.forEach(function (filterPm) { + switch (filterPm.filterType) { + case Enums_1.FilterType.FLTR_Categorical: { + filters.push(FiltersConverter.convertCategoricalFilterPresModel(filterPm)); + break; + } + case Enums_1.FilterType.FLTR_Quantitative: { + filters.push(FiltersConverter.convertQuantitativeFilterPresModel(filterPm)); + break; + } + case Enums_1.FilterType.FLTR_RelativeDate: { + filters.push(FiltersConverter.convertRelativeDateFilterPresModel(filterPm)); + break; + } + default: + return; + } + }); + return filters; + }; + FiltersConverter.convertCategoricalFilterPresModel = function (filterPm) { + var selectedValues = filterPm.categoricalFilterInfo.captionedFilterValueList.map(function (filterValue) { + return FiltersConverter.convertFilterValuePresModel(filterValue); + }); + var filter = { + values: selectedValues, + isExclude: filterPm.categoricalFilterInfo.exclude, + filterType: api_internal_contract_1.FilterType.Categorical, + fieldCaption: filterPm.fieldCaption, + fieldName: filterPm.fn, + visualId: PresLayerToApiConverter_1.PresLayerToApiConverter.convertVisualId(filterPm.visualIdPresModel) + }; + return filter; + }; + FiltersConverter.convertQuantitativeFilterPresModel = function (filterPm) { + var minValue = FiltersConverter.convertFilterValuePresModel(filterPm.quantitativeFilterInfo.captionedRangeMin); + var maxValue = FiltersConverter.convertFilterValuePresModel(filterPm.quantitativeFilterInfo.captionedRangeMax); + var filter = { + filterType: api_internal_contract_1.FilterType.Range, + fieldCaption: filterPm.fieldCaption, + fieldName: filterPm.fn, + visualId: PresLayerToApiConverter_1.PresLayerToApiConverter.convertVisualId(filterPm.visualIdPresModel), + min: minValue, + max: maxValue, + includeNullValues: FiltersConverter.convertIncludedNullValues(filterPm.quantitativeFilterInfo.included) + }; + return filter; + }; + FiltersConverter.convertRelativeDateFilterPresModel = function (filterPm) { + var anchorDateValue = FiltersConverter.convertFilterValuePresModel(filterPm.relativeDateFilterInfo.captionedAnchorDate); + var filter = { + filterType: api_internal_contract_1.FilterType.RelativeDate, + fieldCaption: filterPm.fieldCaption, + fieldName: filterPm.fn, + visualId: PresLayerToApiConverter_1.PresLayerToApiConverter.convertVisualId(filterPm.visualIdPresModel), + anchorDate: anchorDateValue, + periodType: EnumMappings_1.PresLayerToApiEnumMappings.dateStepPeriod.convert(filterPm.relativeDateFilterInfo.datePeriodType), + rangeType: EnumMappings_1.PresLayerToApiEnumMappings.dateRangeType.convert(filterPm.relativeDateFilterInfo.dateRangeType), + rangeN: filterPm.relativeDateFilterInfo.rangeN + }; + return filter; + }; + FiltersConverter.convertCategoricalDomain = function (domainPm) { + var domainValues = domainPm.captionedFilterValueList.map(function (filterValue) { + return FiltersConverter.convertFilterValuePresModel(filterValue); + }); + return { values: domainValues }; + }; + FiltersConverter.convertQuantitativeDomain = function (domainPm) { + var minValue = FiltersConverter.convertFilterValuePresModel(domainPm.captionedRangeMin); + var maxValue = FiltersConverter.convertFilterValuePresModel(domainPm.captionedRangeMax); + return { + max: maxValue, + min: minValue + }; + }; + FiltersConverter.convertFilterValuePresModel = function (dvPM) { + /*tslint:disable-next-line:no-any */ + var value; + switch (dvPM.dataType) { + case Enums_1.DataType.DT_BOOLEAN: { + value = Boolean(dvPM.dataValueStr); + break; + } + case Enums_1.DataType.DT_DATE: { + value = new Date(dvPM.dataValueStr); + break; + } + case Enums_1.DataType.DT_DATETIME: { + value = new Date(dvPM.dataValueStr); + break; + } + case Enums_1.DataType.DT_INTEGER: { + value = Number.parseInt(dvPM.dataValueStr); + break; + } + case Enums_1.DataType.DT_REAL: { + value = Number.parseFloat(dvPM.dataValueStr); + break; + } + // default to string + default: { + value = dvPM.dataValueStr; + break; + } + } + return { + value: value, + // TODO: no easy way of getting back aliased value from platform, will need to investigate further + aliasedValue: '', + formattedValue: dvPM.dataValueDisplayString + }; + }; + FiltersConverter.convertIncludedNullValues = function (includeNull) { + return (includeNull === Enums_1.FiltersQuantitativeIncludedValues.InRangeOrNull || + includeNull === Enums_1.FiltersQuantitativeIncludedValues.All || + includeNull === Enums_1.FiltersQuantitativeIncludedValues.Null); + }; + return FiltersConverter; + }()); + exports.FiltersConverter = FiltersConverter; + + +/***/ }, +/* 86 */ +/***/ function(module, exports) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + /** + * Simple registry class which creates a mapping based on two keys. + * + * @export + * @class MappingRegistry + * @template TInputEnumType + * @template TOutputEnumType + * @template TMappingStorageType + */ + var MappingRegistry = (function () { + function MappingRegistry() { + this._registry = {}; + } + MappingRegistry.prototype.has = function (inputType, outputType) { + var key = this.makeKey(inputType, outputType); + if (!this._registry.hasOwnProperty(key)) { + return false; + } + if (!this._registry[key]) { + return false; + } + return true; + }; + MappingRegistry.prototype.get = function (inputType, outputType) { + if (!this.has(inputType, outputType)) { + throw new Error('Missing requested mapping: ' + inputType + ' to ' + outputType); + } + var key = this.makeKey(inputType, outputType); + return this._registry[key]; + }; + MappingRegistry.prototype.addRegistration = function (inputType, outputType, storageItem) { + var key = this.makeKey(inputType, outputType); + // Add this item + this._registry[key] = storageItem; + }; + /** + * Combines the two keys into a unique string + * + * @private + * @param {TInputEnumType} inputType + * @param {TOutputEnumType} outputType + * @returns {string} + * @memberof MappingRegistry + */ + MappingRegistry.prototype.makeKey = function (inputType, outputType) { + var keyObj = { input: inputType, output: outputType }; + return JSON.stringify(keyObj); + }; + return MappingRegistry; + }()); + exports.MappingRegistry = MappingRegistry; + + +/***/ }, +/* 87 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var api_internal_contract_1 = __webpack_require__(69); + var EnumMappings_1 = __webpack_require__(79); + /** + * Contains logic for converting Parameter models into their equivalent Api versions + */ + var ParametersDataConverter = (function () { + function ParametersDataConverter() { + } + ParametersDataConverter.convertParameterList = function (parameters) { + return parameters.map(ParametersDataConverter.convertParameter); + }; + // Converts a single parameter. + // Rough port of https://opengrok/source/xref/dev_nessie/workgroup/vqlweb/scriptsharp/src/UI/Api/ApiParameterHandler.cs#95 + ParametersDataConverter.convertParameter = function (param) { + var currentValue = ParametersDataConverter.convertAliasedDataValue(param.valueAlias, param.formattedValue); + var allowableValuesType = EnumMappings_1.PresLayerToApiEnumMappings.parameterTypesDomainType.convert(param.parameterDomainType); + var result = { + name: param.fieldCaption, + fieldName: param.parameterName, + dataType: EnumMappings_1.PresLayerToApiEnumMappings.dataType.convert(param.dataType), + currentValue: currentValue, + allowableValuesType: allowableValuesType + }; + if (allowableValuesType === api_internal_contract_1.DomainRestrictionType.List) { + var allowableValues = new Array(); + for (var i = 0; i < param.valuesAliases.length; i++) { + var adv = param.valuesAliases[i]; + var formattedValue = param.formattedValues[i]; + allowableValues.push(ParametersDataConverter.convertAliasedDataValue(adv, formattedValue)); + } + result.allowableValues = allowableValues; + } + else if (allowableValuesType === api_internal_contract_1.DomainRestrictionType.Range) { + result.minValue = ParametersDataConverter.makeDataValue(param.valueMin, param.formattedMin); + result.maxValue = ParametersDataConverter.makeDataValue(param.valueMax, param.formattedMax); + result.stepSize = ParametersDataConverter.convertNumber(result.dataType, param.valueInc); + result.dateStepPeriod = EnumMappings_1.PresLayerToApiEnumMappings.dateStepPeriod.convert(param.datePeriodType, false); + } + else { + // Nothing to do in the case that all values are allowed + } + return result; + }; + ParametersDataConverter.convertNumber = function (dataType, value) { + if (value) { + if (dataType === api_internal_contract_1.DataType.Int || dataType === api_internal_contract_1.DataType.Date || dataType === api_internal_contract_1.DataType.DateTime) { + return parseInt(value, 10); + } + else if (dataType === api_internal_contract_1.DataType.Float) { + return parseFloat(value); + } + } + return undefined; + }; + /*tslint:disable-next-line:no-any */ + ParametersDataConverter.makeDataValue = function (value, formattedValue, alias) { + var result = { + value: value, + formattedValue: formattedValue, + aliasedValue: alias || formattedValue + }; + return result; + }; + /*tslint:disable-next-line:no-any */ + ParametersDataConverter.convertAliasedDataValue = function (adv, formattedValue) { + // AliasedDataValues are serialized in kind of a strange way from the platform code. They are output + // as an array of 2 values. The first is the actual value, the second is the alias. See AliasedDataValueSerializer::ToSerializer + if (!adv || !(adv instanceof Array)) { + throw new Error('Invalid aliased data value'); + } + var value = adv[0]; + var alias = adv.length < 2 ? undefined : adv[1]; + return ParametersDataConverter.makeDataValue(value, formattedValue, alias); + }; + return ParametersDataConverter; + }()); + exports.ParametersDataConverter = ParametersDataConverter; + + +/***/ }, +/* 88 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + /** + * This is your main. This is where you re-export everything you want to be publicly available. + * + * The build enforces that the file has the same name as the global variable that is exported. + */ + function __export(m) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; + } + Object.defineProperty(exports, "__esModule", { value: true }); + __export(__webpack_require__(4)); + __export(__webpack_require__(5)); + __export(__webpack_require__(6)); + __export(__webpack_require__(7)); + __export(__webpack_require__(8)); + + +/***/ }, +/* 89 */ +/***/ function(module, exports) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + /** + * Implemenation of the PresentationLayer contract with a bit of extra information + * added to work with add-ins. Most work is delegated down to the interopObject which + * communicates directly with the c++ layer via QWebChannel + * + * @class AddInApiPresLayerImpl + * @implements {contract.PresentationLayer} + */ + var AddInApiPresLayerImpl = (function () { + function AddInApiPresLayerImpl(_interopObject) { + var _this = this; + this._interopObject = _interopObject; + this._notificationHandlers = {}; + if (_interopObject && _interopObject.OnNotification) { + _interopObject.OnNotification.connect(function (notification) { + _this.dispatchNotification(notification); + }); + } + } + Object.defineProperty(AddInApiPresLayerImpl.prototype, "AddInInstanceInfo", { + /** + * Gets the instance info for this particular add-in from the c++ code + * + * @readonly + * @type {AddInInstancePresModel} + * @memberof AddInApiPresLayerImpl + */ + get: function () { + return this._interopObject.addInInstanceInfo; + }, + enumerable: true, + configurable: true + }); + /** + * Invokes a command using the pres-layer interop + * + * @template T - The expected return type + * @param {string} commandNamespace + * @param {string} commandName + * @param {object} params + * @returns {Promise} + * @memberof AddInApiPresLayerImpl + */ + AddInApiPresLayerImpl.prototype.invokeCommand = function (commandNamespace, commandName, params) { + var _this = this; + return new Promise(function (resolve, reject) { + try { + commandNamespace = commandNamespace || 'tabdoc'; + _this._interopObject.ExecuteCommand(commandNamespace, commandName, params, function (response) { + if (!response.Success) { + var msg = 'ExecuteCommand failed, with result:' + JSON.stringify(response.Result); + reject(new Error(msg)); + } + else { + resolve(response.Result); + } + }); + } + catch (err) { + reject(err); + } + }); + }; + // This implementation will registration a single instance of a notification handler with the Native C++ object, + // and implement multi-dispatch to the web objects from h.ere + AddInApiPresLayerImpl.prototype.registerNotificationHandler = function (eventId, handler) { + var _this = this; + if (eventId in this._notificationHandlers) { + this._notificationHandlers[eventId].push(handler); + } + else { + this._notificationHandlers[eventId] = [handler]; + try { + this._interopObject.RegisterNotificationHandler(eventId); + } + catch (err) { + // console.log('RegisterNotificationHandler failed: ' + err); + } + } + return function () { return _this.removeNotificationHandler(eventId, handler); }; + }; + AddInApiPresLayerImpl.prototype.removeNotificationHandler = function (eventId, handler) { + var handlerList = this._notificationHandlers[eventId]; + if (!handlerList) { + return; + } + var foundIndex = handlerList.indexOf(handler); + if (foundIndex >= 0) { + handlerList.splice(foundIndex, 1); + } + if (handlerList.length === 0) { + delete this._notificationHandlers[eventId]; + } + }; + AddInApiPresLayerImpl.prototype.dispatchNotification = function (notification) { + // console.log('received notification: ' + JSON.stringify(notification)); + var eventId = notification.eventId; + var presModel = notification.presModel; + if (eventId in this._notificationHandlers) { + var handlers = this._notificationHandlers[eventId]; + for (var i = handlers.length - 1; i >= 0; i--) { + handlers[i](presModel); + } + } + }; + return AddInApiPresLayerImpl; + }()); + exports.AddInApiPresLayerImpl = AddInApiPresLayerImpl; + + +/***/ }, +/* 90 */ +/***/ function(module, exports) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + /** + * Implementation of the InternalApiDispatcher for desktop. Since this will run in the same + * frame as the ApiEventHandler, this class mostly just marshalls down to that implementation + * + * @export + * @class DesktopApiDispatcher + * @implements {InternalApiDispatcher} + */ + var DesktopApiDispatcher = (function () { + function DesktopApiDispatcher(_apiEventHandler) { + var _this = this; + this._apiEventHandler = _apiEventHandler; + this._notificationHandlers = []; + this._apiEventHandler.setEventHandler(function (notificationId, model) { + _this._notificationHandlers.forEach(function (handler) { return handler({ + notificationId: notificationId, + data: model + }); }); + }); + } + DesktopApiDispatcher.prototype.setVersionNumber = function (versionNumber) { + this._apiEventHandler.setVersionNumber(versionNumber); + }; + DesktopApiDispatcher.prototype.execute = function (verb, parameters) { + // Just pass this right through to the ApiEventHandler + return this._apiEventHandler.execute(verb, parameters); + }; + DesktopApiDispatcher.prototype.registerNotificationHandler = function (handler) { + this._notificationHandlers.push(handler); + }; + DesktopApiDispatcher.prototype.unregisterNotificationHandler = function (handler) { + this._notificationHandlers = this._notificationHandlers.filter(function (h) { return h !== handler; }); + }; + return DesktopApiDispatcher; + }()); + exports.DesktopApiDispatcher = DesktopApiDispatcher; + + +/***/ }, +/* 91 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + __webpack_require__(92); + var qwebchannel_1 = __webpack_require__(93); + /** + * Initializes the QWebChannel contract and returns the pres layer interop object + * + * @returns {Promise} + */ + function initializeWebChannelPresLayer() { + return new Promise(function (resolve, reject) { + try { + // tslint:disable-next-line + new qwebchannel_1.QWebChannel(qt.webChannelTransport, function (channel) { + // tslint:disable-next-line + var addInPresLayer = channel.objects['addInPresLayer']; + resolve(addInPresLayer); + }); + } + catch (e) { + reject(e); + } + }); + } + exports.initializeWebChannelPresLayer = initializeWebChannelPresLayer; + + +/***/ }, +/* 92 */ +/***/ function(module, exports) { + + + +/***/ }, +/* 93 */ +/***/ function(module, exports, __webpack_require__) { + + /**************************************************************************** + ** + ** Copyright (C) 2015 The Qt Company Ltd. + ** Copyright (C) 2014 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Milian Wolff + ** Contact: http://www.qt.io/licensing/ + ** + ** This file is part of the QtWebChannel module of the Qt Toolkit. + ** + ** $QT_BEGIN_LICENSE:LGPL21$ + ** Commercial License Usage + ** Licensees holding valid commercial Qt licenses may use this file in + ** accordance with the commercial license agreement provided with the + ** Software or, alternatively, in accordance with the terms contained in + ** a written agreement between you and The Qt Company. For licensing terms + ** and conditions see http://www.qt.io/terms-conditions. For further + ** information use the contact form at http://www.qt.io/contact-us. + ** + ** GNU Lesser General Public License Usage + ** Alternatively, this file may be used under the terms of the GNU Lesser + ** General Public License version 2.1 or version 3 as published by the Free + ** Software Foundation and appearing in the file LICENSE.LGPLv21 and + ** LICENSE.LGPLv3 included in the packaging of this file. Please review the + ** following information to ensure the GNU Lesser General Public License + ** requirements will be met: https://www.gnu.org/licenses/lgpl.html and + ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. + ** + ** As a special exception, The Qt Company gives you certain additional + ** rights. These rights are described in The Qt Company LGPL Exception + ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. + ** + ** $QT_END_LICENSE$ + ** + ****************************************************************************/ + + "use strict"; + + var QWebChannelMessageTypes = { + signal: 1, + propertyUpdate: 2, + init: 3, + idle: 4, + debug: 5, + invokeMethod: 6, + connectToSignal: 7, + disconnectFromSignal: 8, + setProperty: 9, + response: 10, + }; + + var QWebChannel = function(transport, initCallback) + { + if (typeof transport !== "object" || typeof transport.send !== "function") { + console.error("The QWebChannel expects a transport object with a send function and onmessage callback property." + + " Given is: transport: " + typeof(transport) + ", transport.send: " + typeof(transport.send)); + return; + } + + var channel = this; + this.transport = transport; + + this.send = function(data) + { + if (typeof(data) !== "string") { + data = JSON.stringify(data); + } + channel.transport.send(data); + } + + this.transport.onmessage = function(message) + { + var data = message.data; + if (typeof data === "string") { + data = JSON.parse(data); + } + switch (data.type) { + case QWebChannelMessageTypes.signal: + channel.handleSignal(data); + break; + case QWebChannelMessageTypes.response: + channel.handleResponse(data); + break; + case QWebChannelMessageTypes.propertyUpdate: + channel.handlePropertyUpdate(data); + break; + default: + console.error("invalid message received:", message.data); + break; + } + } + + this.execCallbacks = {}; + this.execId = 0; + this.exec = function(data, callback) + { + if (!callback) { + // if no callback is given, send directly + channel.send(data); + return; + } + if (channel.execId === Number.MAX_VALUE) { + // wrap + channel.execId = Number.MIN_VALUE; + } + if (data.hasOwnProperty("id")) { + console.error("Cannot exec message with property id: " + JSON.stringify(data)); + return; + } + data.id = channel.execId++; + channel.execCallbacks[data.id] = callback; + channel.send(data); + }; + + this.objects = {}; + + this.handleSignal = function(message) + { + var object = channel.objects[message.object]; + if (object) { + object.signalEmitted(message.signal, message.args); + } else { + console.warn("Unhandled signal: " + message.object + "::" + message.signal); + } + } + + this.handleResponse = function(message) + { + if (!message.hasOwnProperty("id")) { + console.error("Invalid response message received: ", JSON.stringify(message)); + return; + } + channel.execCallbacks[message.id](message.data); + delete channel.execCallbacks[message.id]; + } + + this.handlePropertyUpdate = function(message) + { + for (var i in message.data) { + var data = message.data[i]; + var object = channel.objects[data.object]; + if (object) { + object.propertyUpdate(data.signals, data.properties); + } else { + console.warn("Unhandled property update: " + data.object + "::" + data.signal); + } + } + channel.exec({type: QWebChannelMessageTypes.idle}); + } + + this.debug = function(message) + { + channel.send({type: QWebChannelMessageTypes.debug, data: message}); + }; + + channel.exec({type: QWebChannelMessageTypes.init}, function(data) { + for (var objectName in data) { + var object = new QObject(objectName, data[objectName], channel); + } + // now unwrap properties, which might reference other registered objects + for (var objectName in channel.objects) { + channel.objects[objectName].unwrapProperties(); + } + if (initCallback) { + initCallback(channel); + } + channel.exec({type: QWebChannelMessageTypes.idle}); + }); + }; + + function QObject(name, data, webChannel) + { + this.__id__ = name; + webChannel.objects[name] = this; + + // List of callbacks that get invoked upon signal emission + this.__objectSignals__ = {}; + + // Cache of all properties, updated when a notify signal is emitted + this.__propertyCache__ = {}; + + var object = this; + + // ---------------------------------------------------------------------- + + this.unwrapQObject = function(response) + { + if (response instanceof Array) { + // support list of objects + var ret = new Array(response.length); + for (var i = 0; i < response.length; ++i) { + ret[i] = object.unwrapQObject(response[i]); + } + return ret; + } + if (!response + || !response["__QObject*__"] + || response["id"] === undefined) { + return response; + } + + var objectId = response.id; + if (webChannel.objects[objectId]) + return webChannel.objects[objectId]; + + if (!response.data) { + console.error("Cannot unwrap unknown QObject " + objectId + " without data."); + return; + } + + var qObject = new QObject( objectId, response.data, webChannel ); + qObject.destroyed.connect(function() { + if (webChannel.objects[objectId] === qObject) { + delete webChannel.objects[objectId]; + // reset the now deleted QObject to an empty {} object + // just assigning {} though would not have the desired effect, but the + // below also ensures all external references will see the empty map + // NOTE: this detour is necessary to workaround QTBUG-40021 + var propertyNames = []; + for (var propertyName in qObject) { + propertyNames.push(propertyName); + } + for (var idx in propertyNames) { + delete qObject[propertyNames[idx]]; + } + } + }); + // here we are already initialized, and thus must directly unwrap the properties + qObject.unwrapProperties(); + return qObject; + } + + this.unwrapProperties = function() + { + for (var propertyIdx in object.__propertyCache__) { + object.__propertyCache__[propertyIdx] = object.unwrapQObject(object.__propertyCache__[propertyIdx]); + } + } + + function addSignal(signalData, isPropertyNotifySignal) + { + var signalName = signalData[0]; + var signalIndex = signalData[1]; + object[signalName] = { + connect: function(callback) { + if (typeof(callback) !== "function") { + console.error("Bad callback given to connect to signal " + signalName); + return; + } + + object.__objectSignals__[signalIndex] = object.__objectSignals__[signalIndex] || []; + object.__objectSignals__[signalIndex].push(callback); + + if (!isPropertyNotifySignal && signalName !== "destroyed") { + // only required for "pure" signals, handled separately for properties in propertyUpdate + // also note that we always get notified about the destroyed signal + webChannel.exec({ + type: QWebChannelMessageTypes.connectToSignal, + object: object.__id__, + signal: signalIndex + }); + } + }, + disconnect: function(callback) { + if (typeof(callback) !== "function") { + console.error("Bad callback given to disconnect from signal " + signalName); + return; + } + object.__objectSignals__[signalIndex] = object.__objectSignals__[signalIndex] || []; + var idx = object.__objectSignals__[signalIndex].indexOf(callback); + if (idx === -1) { + console.error("Cannot find connection of signal " + signalName + " to " + callback.name); + return; + } + object.__objectSignals__[signalIndex].splice(idx, 1); + if (!isPropertyNotifySignal && object.__objectSignals__[signalIndex].length === 0) { + // only required for "pure" signals, handled separately for properties in propertyUpdate + webChannel.exec({ + type: QWebChannelMessageTypes.disconnectFromSignal, + object: object.__id__, + signal: signalIndex + }); + } + } + }; + } + + /** + * Invokes all callbacks for the given signalname. Also works for property notify callbacks. + */ + function invokeSignalCallbacks(signalName, signalArgs) + { + var connections = object.__objectSignals__[signalName]; + if (connections) { + connections.forEach(function(callback) { + callback.apply(callback, signalArgs); + }); + } + } + + this.propertyUpdate = function(signals, propertyMap) + { + // update property cache + for (var propertyIndex in propertyMap) { + var propertyValue = propertyMap[propertyIndex]; + object.__propertyCache__[propertyIndex] = propertyValue; + } + + for (var signalName in signals) { + // Invoke all callbacks, as signalEmitted() does not. This ensures the + // property cache is updated before the callbacks are invoked. + invokeSignalCallbacks(signalName, signals[signalName]); + } + } + + this.signalEmitted = function(signalName, signalArgs) + { + invokeSignalCallbacks(signalName, signalArgs); + } + + function addMethod(methodData) + { + var methodName = methodData[0]; + var methodIdx = methodData[1]; + object[methodName] = function() { + var args = []; + var callback; + for (var i = 0; i < arguments.length; ++i) { + if (typeof arguments[i] === "function") + callback = arguments[i]; + else + args.push(arguments[i]); + } + + webChannel.exec({ + "type": QWebChannelMessageTypes.invokeMethod, + "object": object.__id__, + "method": methodIdx, + "args": args + }, function(response) { + if (response !== undefined) { + var result = object.unwrapQObject(response); + if (callback) { + (callback)(result); + } + } + }); + }; + } + + function bindGetterSetter(propertyInfo) + { + var propertyIndex = propertyInfo[0]; + var propertyName = propertyInfo[1]; + var notifySignalData = propertyInfo[2]; + // initialize property cache with current value + // NOTE: if this is an object, it is not directly unwrapped as it might + // reference other QObject that we do not know yet + object.__propertyCache__[propertyIndex] = propertyInfo[3]; + + if (notifySignalData) { + if (notifySignalData[0] === 1) { + // signal name is optimized away, reconstruct the actual name + notifySignalData[0] = propertyName + "Changed"; + } + addSignal(notifySignalData, true); + } + + Object.defineProperty(object, propertyName, { + get: function () { + var propertyValue = object.__propertyCache__[propertyIndex]; + if (propertyValue === undefined) { + // This shouldn't happen + console.warn("Undefined value in property cache for property \"" + propertyName + "\" in object " + object.__id__); + } + + return propertyValue; + }, + set: function(value) { + if (value === undefined) { + console.warn("Property setter for " + propertyName + " called with undefined value!"); + return; + } + object.__propertyCache__[propertyIndex] = value; + webChannel.exec({ + "type": QWebChannelMessageTypes.setProperty, + "object": object.__id__, + "property": propertyIndex, + "value": value + }); + } + }); + + } + + // ---------------------------------------------------------------------- + + data.methods.forEach(addMethod); + + data.properties.forEach(bindGetterSetter); + + data.signals.forEach(function(signal) { addSignal(signal, false); }); + + for (var name in data.enums) { + object[name] = data.enums[name]; + } + } + + //required for use with nodejs + if (true) { + module.exports = { + QWebChannel: QWebChannel + }; + } + + +/***/ } +/******/ ]) +}); +; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovLy93ZWJwYWNrL2Jvb3RzdHJhcCAzYjA5NTk3MDU1ZDNiYjYxZjE0YSIsIndlYnBhY2s6Ly8vLi4vc3JjL01haW4udHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2V4dGVuc2lvbnMtYXBpL3NyYy9FeHRlbnNpb25zQXBpLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9leHRlbnNpb25zLWFwaS9zcmMvSW50ZXJuYWwvRXh0ZW5zaW9uc0ltcGwudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1pbnRlcm5hbC1jb250cmFjdC9zcmMvQXBpSW50ZXJuYWxDb250cmFjdC50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLWludGVybmFsLWNvbnRyYWN0L3NyYy9pbnRlcmZhY2UvRW51bXMudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1pbnRlcm5hbC1jb250cmFjdC9zcmMvaW50ZXJmYWNlL0ludGVybmFsQXBpRGlzcGF0Y2hlci50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLWludGVybmFsLWNvbnRyYWN0L3NyYy9pbnRlcmZhY2UvTm90aWZpY2F0aW9ucy50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLWludGVybmFsLWNvbnRyYWN0L3NyYy9pbnRlcmZhY2UvUGFyYW1ldGVycy50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLWludGVybmFsLWNvbnRyYWN0L3NyYy9pbnRlcmZhY2UvVmVyYnMudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL0FwaVNoYXJlZC50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLXNoYXJlZC9zcmMvRXZlbnRMaXN0ZW5lck1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL1BhcmFtZXRlci50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLXNoYXJlZC9zcmMvUG9pbnQudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL1NpemUudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL01vZGVscy9HZXREYXRhTW9kZWxzLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9FeGNlcHRpb25zL1RhYmxlYXVFeGNlcHRpb25zLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9FdmVudHMvRmlsdGVyQ2hhbmdlZEV2ZW50LnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktZXh0ZXJuYWwtY29udHJhY3Qvc3JjL0FwaUV4dGVybmFsQ29udHJhY3QudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1leHRlcm5hbC1jb250cmFjdC9zcmMvRW51bXMudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL0V2ZW50cy9UYWJsZWF1V29ya3NoZWV0RXZlbnQudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL0V2ZW50cy9UYWJsZWF1U2hlZXRFdmVudC50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLXNoYXJlZC9zcmMvRXZlbnRzL1RhYmxlYXVFdmVudC50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLXNoYXJlZC9zcmMvRXZlbnRzL01hcmtzU2VsZWN0ZWRFdmVudC50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLXNoYXJlZC9zcmMvSW50ZXJuYWwvU2luZ2xlRXZlbnRNYW5hZ2VySW1wbC50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLXNoYXJlZC9zcmMvU2VydmljZXMvR2V0RGF0YVNlcnZpY2UudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL1NlcnZpY2VzL1JlZ2lzdGVyQWxsU2hhcmVkU2VydmljZXMudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL1NlcnZpY2VzL2ltcGwvRGF0YVNvdXJjZVNlcnZpY2VJbXBsLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9TZXJ2aWNlcy9pbXBsL0ZpbHRlclNlcnZpY2VJbXBsLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktdXRpbHMvc3JjL0FwaVV0aWxzLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktdXRpbHMvc3JjL0VudW1Db252ZXJ0ZXIudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS11dGlscy9zcmMvUGFyYW0udHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL0VudW1NYXBwaW5ncy9FeHRlcm5hbFRvSW50ZXJuYWxFbnVtTWFwcGluZ3MudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL0VudW1NYXBwaW5ncy9JbnRlcm5hbFRvRXh0ZXJuYWxFbnVtTWFwcGluZ3MudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL01vZGVscy9GaWx0ZXJNb2RlbHMudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL1NlcnZpY2VzL1NlcnZpY2VSZWdpc3RyeS50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLXNoYXJlZC9zcmMvU2VydmljZXMvaW1wbC9HZXREYXRhU2VydmljZUltcGwudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL1NlcnZpY2VzL2ltcGwvTm90aWZpY2F0aW9uU2VydmljZUltcGwudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL1NlcnZpY2VzL2ltcGwvUGFyYW1ldGVyc1NlcnZpY2VJbXBsLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9JbnRlcm5hbC9QYXJhbWV0ZXJJbXBsLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9FdmVudHMvUGFyYW1ldGVyQ2hhbmdlZEV2ZW50LnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9TZXJ2aWNlcy9pbXBsL1NlbGVjdGlvblNlcnZpY2VJbXBsLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9Nb2RlbHMvU2VsZWN0aW9uTW9kZWxzLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9leHRlbnNpb25zLWFwaS9zcmMvRGFzaGJvYXJkLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9leHRlbnNpb25zLWFwaS9zcmMvU2hlZXQudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2V4dGVuc2lvbnMtYXBpL3NyYy9OYW1lc3BhY2VzL0Rhc2hib2FyZENvbnRlbnQudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2V4dGVuc2lvbnMtYXBpL3NyYy9OYW1lc3BhY2VzL0Vudmlyb25tZW50LnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9leHRlbnNpb25zLWFwaS9zcmMvTmFtZXNwYWNlcy9TZXR0aW5ncy50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvZXh0ZW5zaW9ucy1hcGkvc3JjL1NlcnZpY2VzL1JlZ2lzdGVyQWxsRXh0ZW5zaW9uc1NlcnZpY2VzLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9leHRlbnNpb25zLWFwaS9zcmMvU2VydmljZXMvSW1wbC9Jbml0aWFsaXphdGlvblNlcnZpY2VJbXBsLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9leHRlbnNpb25zLWFwaS9zcmMvU2VydmljZXMvSW1wbC9TZXR0aW5nc1NlcnZpY2VJbXBsLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9leHRlbnNpb25zLWFwaS9zcmMvVmVyc2lvbk51bWJlci50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvZXh0ZW5zaW9ucy1hcGkvc3JjL0ludGVybmFsL0Rhc2hib2FyZEltcGwudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2V4dGVuc2lvbnMtYXBpL3NyYy9EYXNoYm9hcmRPYmplY3QudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2V4dGVuc2lvbnMtYXBpL3NyYy9Xb3Jrc2hlZXQudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2V4dGVuc2lvbnMtYXBpL3NyYy9JbnRlcm5hbC9TaGVldEltcGwudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2V4dGVuc2lvbnMtYXBpL3NyYy9JbnRlcm5hbC9TaGVldEluZm9JbXBsLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9leHRlbnNpb25zLWFwaS9zcmMvSW50ZXJuYWwvV29ya3NoZWV0SW1wbC50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvZXh0ZW5zaW9ucy1hcGkvc3JjL0RhdGFTb3VyY2UudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2V4dGVuc2lvbnMtYXBpL3NyYy9JbnRlcm5hbC9EYXRhU291cmNlSW1wbC50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvZXh0ZW5zaW9ucy1hcGkvc3JjL0ludGVybmFsL0ZpZWxkSW1wbC50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvZXh0ZW5zaW9ucy1hcGkvc3JjL0ZpZWxkLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9leHRlbnNpb25zLWFwaS9zcmMvSW50ZXJuYWwvU2V0dGluZ3NJbXBsLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9leHRlbnNpb25zLWFwaS9zcmMvTmFtZXNwYWNlcy9FeHRlbnNpb25zLnRzIiwid2VicGFjazovLy8uLi9zcmMvRnJlbGFyZERlc2t0b3BCb290c3RyYXAudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1jb3JlL3NyYy9BcGlDb3JlLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktY29yZS9zcmMvQXBpRXZlbnRIYW5kbGVyLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktY29yZS9nZW4tc3JjL3ByZXNsYXllci9QYXJhbXMudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1jb3JlL3NyYy9tYXBwaW5ncy9Db21tYW5kTWFwcGluZ1JlZ2lzdHJ5RmFjdG9yeS50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLWNvcmUvZ2VuLXNyYy9wcmVzbGF5ZXIvQ29tbWFuZElkcy50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLWNvcmUvc3JjL21hcHBpbmdzL0NvbW1hbmRNYXBwaW5nUmVnaXN0cnkudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1jb3JlL3NyYy9tYXBwaW5ncy9Db21tYW5kUmVnaXN0cmF0aW9uLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktY29yZS9zcmMvbWFwcGluZ3MvRXZlbnRNYXBwaW5nUmVnaXN0cnlGYWN0b3J5LnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktY29yZS9nZW4tc3JjL3ByZXNsYXllci9FdmVudHMudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1jb3JlL3NyYy9tYXBwaW5ncy9QcmVzTGF5ZXJUb0FwaUNvbnZlcnRlci50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLWNvcmUvc3JjL21hcHBpbmdzL0VudW1NYXBwaW5ncy50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLWNvcmUvZ2VuLXNyYy9wcmVzbGF5ZXIvRW51bXMudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1jb3JlL3NyYy9tYXBwaW5ncy9QYXJhbWV0ZXJNYXBwaW5nUmVnaXN0cnlGYWN0b3J5LnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktY29yZS9zcmMvbWFwcGluZ3MvQWN0aXZlTWFya3NEYXRhQ29udmVydGVyLnRzIiwid2VicGFjazovLy9DOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktY29yZS9zcmMvbWFwcGluZ3MvVW5kZXJseWluZ0RhdGFDb252ZXJ0ZXIudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1jb3JlL3NyYy9tYXBwaW5ncy9BcGlUb1ByZXNMYXllckNvbnZlcnRlci50cyIsIndlYnBhY2s6Ly8vQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLWNvcmUvc3JjL21hcHBpbmdzL0ZpbHRlcnNDb252ZXJ0ZXIudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1jb3JlL3NyYy9tYXBwaW5ncy9NYXBwaW5nUmVnaXN0cnkudHMiLCJ3ZWJwYWNrOi8vL0M6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1jb3JlL3NyYy9tYXBwaW5ncy9QYXJhbWV0ZXJzRGF0YUNvbnZlcnRlci50cyIsIndlYnBhY2s6Ly8vLi4vc3JjL0FkZEluQXBpUHJlc0xheWVySW1wbC50cyIsIndlYnBhY2s6Ly8vLi4vc3JjL0Rlc2t0b3BBcGlEaXNwYXRjaGVyLnRzIiwid2VicGFjazovLy8uLi9zcmMvUXRXZWJDaGFubmVsSW1wbC50cyIsIndlYnBhY2s6Ly8vLi4vfi9xd2ViY2hhbm5lbC9xd2ViY2hhbm5lbC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsTztBQ1ZBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHVCQUFlO0FBQ2Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7Ozs7Ozs7OztBQ3RDQSxzQ0FBbUQ7QUFFbkQseURBQXdEO0FBRXhELHFGQUFvRjtBQUNwRix5REFBd0Q7QUFDeEQsc0NBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFDO0tBQ25CLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDdEQsRUFBQyxDQUFDLENBQUM7QUFXSCxPQUFNLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQzs7Ozs7Ozs7QUNuQnpCOzs7O0lBSUc7O0FBRUgsMkZBQTBGO0FBQzFGLDZGQUE0RjtBQUM1RixtQkFBa0I7QUFFbEIsK0NBQTJEO0FBQzNELDRDQUFxRDtBQUVyRCxLQUFNLGFBQWEsR0FBRyxJQUFJLCtCQUFj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QyxDQUFDO1NBQ0wsQ0FBQztTQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDWCxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDWixDQUFDO0tBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxFQUFDO0FBZkQsdUVBZUM7Ozs7Ozs7Ozs7Ozs7QUMxQkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLHVCQUFzQixtQ0FBbUM7QUFDekQ7O0FBRUE7QUFDQTtBQUNBLHVCQUFzQixtREFBbUQ7QUFDekU7O0FBRUEsbUJBQWtCLG1DQUFtQztBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUFzQixtQ0FBbUM7QUFDekQsTUFBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTJCLHFCQUFxQjtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0VBQStEO0FBQy9ELHFDQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFxQjtBQUNyQjtBQUNBLGNBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYTtBQUNiO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTJCLHNCQUFzQjtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYTtBQUNiO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsY0FBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBaUI7QUFDakI7QUFDQSxVQUFTOztBQUVUOztBQUVBOztBQUVBOztBQUVBOztBQUVBLDRDQUEyQywwQkFBMEIsRUFBRTs7QUFFdkU7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6ImZyZWxhcmQtZGVza3RvcC1ib290c3RyYXAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJNYWluXCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIk1haW5cIl0gPSBmYWN0b3J5KCk7XG59KSh0aGlzLCBmdW5jdGlvbigpIHtcbnJldHVybiBcblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiB3ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb25cbiAqKi8iLCIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSlcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcblxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0ZXhwb3J0czoge30sXG4gXHRcdFx0aWQ6IG1vZHVsZUlkLFxuIFx0XHRcdGxvYWRlZDogZmFsc2VcbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubG9hZGVkID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCIvZGlzdC9cIjtcblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIHdlYnBhY2svYm9vdHN0cmFwIDNiMDk1OTcwNTVkM2JiNjFmMTRhXG4gKiovIiwiaW1wb3J0ICogYXMgdGFibGVhdSBmcm9tICdAdGFibGVhdS9leHRlbnNpb25zLWFwaSc7XHJcblxyXG5pbXBvcnQgeyBkb0Jvb3RzdHJhcCB9IGZyb20gJy4vRnJlbGFyZERlc2t0b3BCb290c3RyYXAnO1xyXG5cclxuLy8gVGhpcyBNYWluIGZ1bmN0aW9uIHdpbGwgYmUgZXhlY3V0ZWQgd2hlbiB0aGlzIG1vZHVsZSBpcyBsb2FkZWQuIEF0dGVtcHQgdG8gZG8gb3VyXHJcbi8vIGJvb3RzdHJhcHBpbmcgd2l0aCBxdCBhbmQgbG9nIGFueSBlcnJvcnMgd2UgZW5jb3VudGVyXHJcbmRvQm9vdHN0cmFwKCkuY2F0Y2goZSA9PiB7XHJcbiAgY29uc29sZS5lcnJvcignRGVza3RvcCBib290c3RyYXBwaW5nIGZhaWxlZDogJyArIGUpO1xyXG59KTtcclxuXHJcbi8vIERlY2xhcmUgdGhlIGltcG9ydGVkIHRhYmxlYXUgb2JqZWN0IG9uIHRoZSBnbG9iYWwgbmFtZXNwYWNlXHJcbi8vIChUaGlzIG11c3QgZ28gYXdheSBvbmNlIHdlIGRvbid0IGltcG9ydCBhdCB0aGUgQVBJIG91cnNlbHZlcylcclxuZGVjbGFyZSBnbG9iYWwgIHtcclxuICBpbnRlcmZhY2UgV2luZG93IHtcclxuICAgIC8qdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueSAqL1xyXG4gICAgdGFibGVhdTogYW55O1xyXG4gIH1cclxufVxyXG5cclxud2luZG93LnRhYmxlYXUgPSB0YWJsZWF1O1xyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuLi9zcmMvTWFpbi50c1xuICoqLyIsIi8qKlxuICogVGhpcyBpcyB5b3VyIG1haW4uIFRoaXMgaXMgd2hlcmUgeW91IHJlLWV4cG9ydCBldmVyeXRoaW5nIHlvdSB3YW50IHRvIGJlIHB1YmxpY2x5IGF2YWlsYWJsZS5cbiAqXG4gKiBUaGUgYnVpbGQgZW5mb3JjZXMgdGhhdCB0aGUgZmlsZSBoYXMgdGhlIHNhbWUgbmFtZSBhcyB0aGUgZ2xvYmFsIHZhcmlhYmxlIHRoYXQgaXMgZXhwb3J0ZWQuXG4gKi9cblxuLy8gRHVlIHRvIHRoZSB3YXkgd2UgY29uZmlndXJlZCB3ZWJwYWNrLCB3ZSBzaG91bGQgYmUgZXhwb3J0aW5nIHRoaW5ncyB3aGljaCB3aWxsIGJlIHVuZGVyXG4vLyBhIGdsb2JhbCB2YXJpYWJsZSBjYWxsZWQgXCJ0YWJsZWF1XCIuIEV4cG9ydCBldmVyeXRoaW5nIHdlIHdhbnQgdG8gYmUgdmlzaWJsZSB1bmRlciB0YWJsZWF1XG4vLyBmcm9tIHRoaXMgZmlsZS5cblxuaW1wb3J0IHsgRXh0ZW5zaW9uc0ltcGwgfSBmcm9tICcuL0ludGVybmFsL0V4dGVuc2lvbnNJbXBsJztcbmltcG9ydCB7IEV4dGVuc2lvbnMgfSBmcm9tICcuL05hbWVzcGFjZXMvRXh0ZW5zaW9ucyc7XG5cbmNvbnN0IGV4dGVuc2lvbkltcGwgPSBuZXcgRXh0ZW5zaW9uc0ltcGwoKTtcbmV4cG9ydCBjb25zdCBleHRlbnNpb25zID0gbmV3IEV4dGVuc2lvbnMoZXh0ZW5zaW9uSW1wbCk7XG5cbi8vIEV4cG9ydCBFbnVtc1xuLy8gVGhlc2Ugc2hvdyB1cCB1bmRlciB0aGUgdGFibGVhdSBvYmplY3QuIEkuZS4gdGFibGVhdS5FeHRlbnNpb25Db250ZXh0LlNlcnZlclxuZXhwb3J0IHtcbiAgRXh0ZW5zaW9uQ29udGV4dCxcbiAgRXh0ZW5zaW9uTW9kZSxcbiAgQW5hbHl0aWNzT2JqZWN0VHlwZSxcbiAgQ29sdW1uVHlwZSxcbiAgRGFzaGJvYXJkT2JqZWN0VHlwZSxcbiAgRGF0YVR5cGUsXG4gIERhdGVSYW5nZVR5cGUsXG4gIERpYWxvZ0V2ZW50VHlwZSxcbiAgRW5jb2RpbmdUeXBlLFxuICBFcnJvckNvZGVzLFxuICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZSxcbiAgRmllbGRSb2xlVHlwZSxcbiAgRmlsdGVyRG9tYWluVHlwZSxcbiAgRmlsdGVyVHlwZSxcbiAgRmlsdGVyVXBkYXRlVHlwZSxcbiAgRmlsdGVyTnVsbE9wdGlvbixcbiAgTWFya1R5cGUsXG4gIFBhcmFtZXRlclZhbHVlVHlwZSxcbiAgUGVyaW9kVHlwZSxcbiAgUXVpY2tUYWJsZUNhbGNUeXBlLFxuICBTZWxlY3Rpb25VcGRhdGVUeXBlLFxuICBTaGVldFR5cGUsXG4gIFNvcnREaXJlY3Rpb24sXG4gIFRhYmxlYXVFdmVudFR5cGUsXG4gIFRyZW5kTGluZU1vZGVsVHlwZVxufSBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvZXh0ZW5zaW9ucy1hcGkvc3JjL0V4dGVuc2lvbnNBcGkudHNcbiAqKi8iLCJpbXBvcnQge1xuICBFeHRlbnNpb25EYXNoYm9hcmRJbmZvLFxuICBFeHRlbnNpb25TZXR0aW5nc0luZm8sXG4gIEludGVybmFsQXBpRGlzcGF0Y2hlcixcbiAgSW50ZXJuYWxBcGlEaXNwYXRjaGVySG9sZGVyLFxuICBTaGVldFBhdGgsXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XG5pbXBvcnQgeyBBcGlTZXJ2aWNlUmVnaXN0cnksIHJlZ2lzdGVyQWxsU2hhcmVkU2VydmljZXMgfSBmcm9tICdAdGFibGVhdS9hcGktc2hhcmVkJztcblxuaW1wb3J0IHsgRGFzaGJvYXJkIH0gZnJvbSAnLi4vRGFzaGJvYXJkJztcbmltcG9ydCB7IERhc2hib2FyZENvbnRlbnQgfSBmcm9tICcuLi9OYW1lc3BhY2VzL0Rhc2hib2FyZENvbnRlbnQnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuLi9OYW1lc3BhY2VzL0Vudmlyb25tZW50JztcbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSAnLi4vTmFtZXNwYWNlcy9TZXR0aW5ncyc7XG5pbXBvcnQgeyBFeHRlbnNpb25zU2VydmljZU5hbWVzIH0gZnJvbSAnLi4vU2VydmljZXMvRXh0ZW5zaW9uc1NlcnZpY2VOYW1lcyc7XG5pbXBvcnQgeyBJbml0aWFsaXphdGlvblNlcnZpY2UgfSBmcm9tICcuLi9TZXJ2aWNlcy9Jbml0aWFsaXphdGlvblNlcnZpY2UnO1xuaW1wb3J0IHsgcmVnaXN0ZXJBbGxFeHRlbnNpb25zU2VydmljZXMgfSBmcm9tICcuLi9TZXJ2aWNlcy9SZWdpc3RlckFsbEV4dGVuc2lvbnNTZXJ2aWNlcyc7XG5pbXBvcnQgeyBWZXJzaW9uTnVtYmVyIH0gZnJvbSAnLi4vVmVyc2lvbk51bWJlcic7XG5pbXBvcnQgeyBEYXNoYm9hcmRJbXBsIH0gZnJvbSAnLi9EYXNoYm9hcmRJbXBsJztcbmltcG9ydCB7IFNldHRpbmdzSW1wbCB9IGZyb20gJy4vU2V0dGluZ3NJbXBsJztcblxuZXhwb3J0IGNsYXNzIEV4dGVuc2lvbnNJbXBsIHtcbiAgcHJpdmF0ZSBfaW5pdGlhbGl6YXRpb25Qcm9taXNlOiBQcm9taXNlPHZvaWQ+O1xuXG4gIHB1YmxpYyBkYXNoYm9hcmRDb250ZW50OiBEYXNoYm9hcmRDb250ZW50O1xuICBwdWJsaWMgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50O1xuICBwdWJsaWMgc2V0dGluZ3M6IFNldHRpbmdzO1xuXG4gIHB1YmxpYyBpbml0aWFsaXplQXN5bmMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLl9pbml0aWFsaXphdGlvblByb21pc2UpIHtcbiAgICAgIHRoaXMuX2luaXRpYWxpemF0aW9uUHJvbWlzZSA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgLy8gRmlyc3QgdGhpbmcgd2Ugd2FudCB0byBkbyBpcyBjaGVjayB0byBzZWUgaWYgdGhlcmUgaXMgYSBkZXNrdG9wIGRpc3BhdGNoZXIgYWxyZWFkeSByZWdpc3RlcmVkIGZvciB1c1xuICAgICAgICBpZiAoSW50ZXJuYWxBcGlEaXNwYXRjaGVySG9sZGVyLmhhc0Rlc2t0b3BBcGlEaXNwYXRjaGVyUHJvbWlzZSgpKSB7XG4gICAgICAgICAgLy8gUnVubmluZyBpbiBkZXNrdG9wLCB1c2UgdGhpcyBwcm9taXNlXG4gICAgICAgICAgY29uc3QgZGVza3RvcERpc3BhdGNoZXJQcm9taXNlID0gSW50ZXJuYWxBcGlEaXNwYXRjaGVySG9sZGVyLmdldERlc2t0b3BEaXNwYXRjaGVyUHJvbWlzZSgpO1xuICAgICAgICAgIGRlc2t0b3BEaXNwYXRjaGVyUHJvbWlzZS50aGVuKHRoaXMub25EaXNwYXRjaGVyUmVjZWl2ZWQuYmluZCh0aGlzKSkudGhlbigoKSA9PiB7IHJlc29sdmUoKTsgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVqZWN0KCdOb3QgcnVubmluZyBpbiBkZXNrdG9wLiBTZXJ2ZXIgc3VwcG9ydCBjb21pbmcgc29vbiEnKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2luaXRpYWxpemF0aW9uUHJvbWlzZTtcbiAgfVxuXG4gIHByaXZhdGUgb25EaXNwYXRjaGVyUmVjZWl2ZWQoZGlzcGF0Y2hlcjogSW50ZXJuYWxBcGlEaXNwYXRjaGVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgZGlzcGF0Y2hlci5zZXRWZXJzaW9uTnVtYmVyKFZlcnNpb25OdW1iZXIuSW5zdGFuY2UpO1xuXG4gICAgLy8gQ2FsbCB0byByZWdpc3RlciBhbGwgdGhlIHNlcnZpY2VzIHdoaWNoIHdpbGwgdXNlIHRoZSBuZXdseSBpbml0aWFsaXplZCBkaXNwYXRjaGVyXG4gICAgcmVnaXN0ZXJBbGxTaGFyZWRTZXJ2aWNlcyhkaXNwYXRjaGVyKTtcbiAgICByZWdpc3RlckFsbEV4dGVuc2lvbnNTZXJ2aWNlcyhkaXNwYXRjaGVyKTtcblxuICAgIC8vIEdldCB0aGUgaW5pdGlhbGl6YXRpb24gc2VydmljZSBhbmQgaW5pdGlhbGl6ZSB0aGlzIGV4dGVuc2lvblxuICAgIGNvbnN0IGluaXRpYWxpemF0aW9uU2VydmljZSA9IEFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5nZXRTZXJ2aWNlPEluaXRpYWxpemF0aW9uU2VydmljZT4oXG4gICAgICBFeHRlbnNpb25zU2VydmljZU5hbWVzLkluaXRpYWxpemF0aW9uU2VydmljZSk7XG5cbiAgICByZXR1cm4gaW5pdGlhbGl6YXRpb25TZXJ2aWNlLmluaXRpYWxpemVEYXNoYm9hcmRFeHRlbnNpb25zQXN5bmMoKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICBpZiAoIXJlc3VsdC5leHRlbnNpb25JbnN0YW5jZS5sb2NhdG9yLmRhc2hib2FyZFBhdGgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEYXNoYm9hcmRQYXRoIGlzIHVuZGVmaW5lZCcpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmRhc2hib2FyZENvbnRlbnQgPSB0aGlzLmluaXRpYWxpemVEYXNoYm9hcmRDb250ZW50KHJlc3VsdC5leHRlbnNpb25EYXNoYm9hcmRJbmZvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuZXh0ZW5zaW9uSW5zdGFuY2UubG9jYXRvci5kYXNoYm9hcmRQYXRoKTtcbiAgICAgIHRoaXMuZW52aXJvbm1lbnQgPSBuZXcgRW52aXJvbm1lbnQocmVzdWx0LmV4dGVuc2lvbkVudmlyb25tZW50KTtcbiAgICAgIHRoaXMuc2V0dGluZ3MgPSB0aGlzLmluaXRpYWxpemVTZXR0aW5ncyhyZXN1bHQuZXh0ZW5zaW9uU2V0dGluZ3NJbmZvKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZURhc2hib2FyZENvbnRlbnQoaW5mbzogRXh0ZW5zaW9uRGFzaGJvYXJkSW5mbywgc2hlZXRQYXRoOiBTaGVldFBhdGgpOiBEYXNoYm9hcmRDb250ZW50IHtcbiAgICBjb25zdCBkYXNoYm9hcmRJbXBsID0gbmV3IERhc2hib2FyZEltcGwoaW5mbywgc2hlZXRQYXRoKTtcbiAgICBjb25zdCBkYXNoYm9hcmQgPSBuZXcgRGFzaGJvYXJkKGRhc2hib2FyZEltcGwpO1xuICAgIHJldHVybiBuZXcgRGFzaGJvYXJkQ29udGVudChkYXNoYm9hcmQpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplU2V0dGluZ3Moc2V0dGluZ3NJbmZvOiBFeHRlbnNpb25TZXR0aW5nc0luZm8pOiBTZXR0aW5ncyB7XG4gICAgY29uc3Qgc2V0dGluZ3NJbXBsID0gbmV3IFNldHRpbmdzSW1wbChzZXR0aW5nc0luZm8pO1xuICAgIHJldHVybiBuZXcgU2V0dGluZ3Moc2V0dGluZ3NJbXBsKTtcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvZXh0ZW5zaW9ucy1hcGkvc3JjL0ludGVybmFsL0V4dGVuc2lvbnNJbXBsLnRzXG4gKiovIiwiLyoqXG4gKiBUaGlzIGlzIHlvdXIgbWFpbi4gVGhpcyBpcyB3aGVyZSB5b3UgcmUtZXhwb3J0IGV2ZXJ5dGhpbmcgeW91IHdhbnQgdG8gYmUgcHVibGljbHkgYXZhaWxhYmxlLlxuICpcbiAqIFRoZSBidWlsZCBlbmZvcmNlcyB0aGF0IHRoZSBmaWxlIGhhcyB0aGUgc2FtZSBuYW1lIGFzIHRoZSBnbG9iYWwgdmFyaWFibGUgdGhhdCBpcyBleHBvcnRlZC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZS9FbnVtcyc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZS9JbnRlcm5hbEFwaURpc3BhdGNoZXInO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2UvTW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlL05vdGlmaWNhdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2UvUGFyYW1ldGVycyc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZS9WZXJicyc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZS9WZXJzaW9uTnVtYmVyJztcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1pbnRlcm5hbC1jb250cmFjdC9zcmMvQXBpSW50ZXJuYWxDb250cmFjdC50c1xuICoqLyIsImV4cG9ydCBlbnVtIEV4dGVuc2lvbkNvbnRleHQge1xuICBEZXNrdG9wID0gJ2Rlc2t0b3AnLFxuICBTZXJ2ZXIgPSAnc2VydmVyJyxcbiAgVW5rbm93biA9ICd1bmtub3duJ1xufVxuXG5leHBvcnQgZW51bSBFeHRlbnNpb25Nb2RlIHtcbiAgQXV0aG9yaW5nID0gJ2F1dGhvcmluZycsXG4gIFZpZXdpbmcgPSAndmlld2luZycsXG4gIFVua25vd24gPSAndW5rbm93bidcbn1cblxuZXhwb3J0IGVudW0gQ29sdW1uVHlwZSB7XG4gIERpc2NyZXRlID0gJ2Rpc2NyZXRlJyxcbiAgQ29udGludW91cyA9ICdjb250aW51b3VzJ1xufVxuXG5leHBvcnQgZW51bSBEYXNoYm9hcmRPYmplY3RUeXBlIHtcbiAgQmxhbmsgPSAnYmxhbmsnLFxuICBXb3Jrc2hlZXQgPSAnd29ya3NoZWV0JyxcbiAgUXVpY2tGaWx0ZXIgPSAncXVpY2stZmlsdGVyJyxcbiAgUGFyYW1ldGVyQ29udHJvbCA9ICdwYXJhbWV0ZXItY29udHJvbCcsXG4gIFBhZ2VGaWx0ZXIgPSAncGFnZS1maWx0ZXInLFxuICBMZWdlbmQgPSAnbGVnZW5kJyxcbiAgVGl0bGUgPSAndGl0bGUnLFxuICBUZXh0ID0gJ3RleHQnLFxuICBJbWFnZSA9ICdpbWFnZScsXG4gIFdlYlBhZ2UgPSAnd2ViLXBhZ2UnLFxuICBFeHRlbnNpb24gPSAnZXh0ZW5zaW9uJ1xufVxuXG5leHBvcnQgZW51bSBEYXRhVHlwZSB7XG4gIFN0cmluZyA9ICdzdHJpbmcnLFxuICBJbnQgPSAnaW50JyxcbiAgRmxvYXQgPSAnZmxvYXQnLFxuICBCb29sID0gJ2Jvb2wnLFxuICBEYXRlID0gJ2RhdGUnLFxuICBEYXRlVGltZSA9ICdkYXRlLXRpbWUnLFxuICBTcGF0aWFsID0gJ3NwYXRpYWwnXG59XG5cbmV4cG9ydCBlbnVtIEVuY29kZWREYXRhVHlwZSB7XG4gIE51bWJlciA9ICdudW1iZXInLFxuICBTdHJpbmcgPSAnc3RyaW5nJyxcbiAgRGF0ZSA9ICdkYXRlJyxcbiAgQm9vbGVhbiA9ICdib29sZWFuJ1xufVxuXG5leHBvcnQgZW51bSBFcnJvckNvZGUge1xuICBTZXJ2ZXJFcnJvciA9ICdzZXJ2ZXItZXJyb3InLFxuICBJbnZhbGlkQWdncmVnYXRpb25GaWVsZE5hbWUgPSAnaW52YWxpZC1hZ2dyZWdhdGlvbi1maWVsZC1uYW1lJyxcbiAgSW52YWxpZEZpbHRlckZpZWxkTmFtZSA9ICdpbnZhbGlkLWZpbHRlci1maWVsZG5hbWUnLFxuICBJbnZhbGlkRmlsdGVyRmllbGRWYWx1ZSA9ICdpbnZhbGlkLWZpbHRlci1maWVsZC12YWx1ZSdcbn1cblxuZXhwb3J0IGVudW0gRmllbGRBZ2dyZWdhdGlvblR5cGUge1xuICBTdW0gPSAnc3VtJyxcbiAgQXZnID0gJ2F2ZycsXG4gIE1pbiA9ICdtaW4nLFxuICBNYXggPSAnbWF4JyxcbiAgU3RkZXYgPSAnc3RkZXYnLFxuICBTdGRldnAgPSAnc3RkZXZwJyxcbiAgVmFyID0gJ3ZhcicsXG4gIFZhcnAgPSAndmFycCcsXG4gIENvdW50ID0gJ2NvdW50JyxcbiAgQ291bnRkID0gJ2NvdW50ZCcsXG4gIE1lZGlhbiA9ICdtZWRpYW4nLFxuICBBdHRyID0gJ2F0dHInLFxuICBOb25lID0gJ25vbmUnLFxuICBZZWFyID0gJ3llYXInLFxuICBRdHIgPSAncXRyJyxcbiAgTW9udGggPSAnbW9udGgnLFxuICBEYXkgPSAnZGF5JyxcbiAgSG91ciA9ICdob3VyJyxcbiAgTWludXRlID0gJ21pbnV0ZScsXG4gIFNlY29uZCA9ICdzZWNvbmQnLFxuICBXZWVrID0gJ3dlZWsnLFxuICBXZWVrZGF5ID0gJ3dlZWtkYXknLFxuICBNb250aFllYXIgPSAnbW9udGgteWVhcicsXG4gIE1keSA9ICdtZHknLFxuICBFbmQgPSAnZW5kJyxcbiAgVHJ1bmNZZWFyID0gJ3RydW5jLXllYXInLFxuICBUcnVuY1F0ciA9ICd0cnVuYy1xdHInLFxuICBUcnVuY01vbnRoID0gJ3RydW5jLW1vbnRoJyxcbiAgVHJ1bmNXZWVrID0gJ3RydW5jLXdlZWsnLFxuICBUcnVuY0RheSA9ICd0cnVuYy1kYXknLFxuICBUcnVuY0hvdXIgPSAndHJ1bmMtaG91cicsXG4gIFRydW5jTWludXRlID0gJ3RydW5jLW1pbnV0ZScsXG4gIFRydW5jU2Vjb25kID0gJ3RydW5jLXNlY29uZCcsXG4gIFF1YXJ0MSA9ICdxdWFydDEnLFxuICBRdWFydDMgPSAncXVhcnQzJyxcbiAgU2tld25lc3MgPSAnc2tld25lc3MnLFxuICBLdXJ0b3NpcyA9ICdrdXJ0b3NpcycsXG4gIEluT3V0ID0gJ2luLW91dCcsXG4gIFVzZXIgPSAndXNlcidcbn1cblxuZXhwb3J0IGVudW0gRmllbGRSb2xlVHlwZSB7XG4gIERpbWVuc2lvbiA9ICdkaW1lbnNpb24nLFxuICBNZWFzdXJlID0gJ21lYXN1cmUnLFxuICBVbmtub3duID0gJ3Vua25vd24nXG59XG5cbi8qKlxuICogIFRoZSBkaWZmZXJlbnQgdXBkYXRlIHR5cGVzIGZvciBhcHBseWluZyBmaWx0ZXIuXG4gKi9cbmV4cG9ydCBlbnVtIEZpbHRlclVwZGF0ZVR5cGUge1xuICBBZGQgPSAnYWRkJyxcbiAgQWxsID0gJ2FsbCcsXG4gIFJlcGxhY2UgPSAncmVwbGFjZScsXG4gIFJlbW92ZSA9ICdyZW1vdmUnXG59XG5cbmV4cG9ydCBlbnVtIFNoZWV0VHlwZSB7XG4gIERhc2hib2FyZCA9ICdkYXNoYm9hcmQnLFxuICBTdG9yeSA9ICdzdG9yeScsXG4gIFdvcmtzaGVldCA9ICd3b3Jrc2hlZXQnXG59XG5cbmV4cG9ydCBlbnVtIERvbWFpblJlc3RyaWN0aW9uVHlwZSB7XG4gIEFsbCA9ICdhbGwnLFxuICBMaXN0ID0gJ2xpc3QnLFxuICBSYW5nZSA9ICdyYW5nZSdcbn1cblxuZXhwb3J0IGVudW0gRGF0ZVN0ZXBQZXJpb2Qge1xuICBZZWFycyA9ICd5ZWFycycsXG4gIFF1YXJ0ZXJzID0gJ3F1YXJ0ZXJzJyxcbiAgTW9udGhzID0gJ21vbnRocycsXG4gIFdlZWtzID0gJ3dlZWtzJyxcbiAgRGF5cyA9ICdkYXlzJyxcbiAgSG91cnMgPSAnaG91cnMnLFxuICBNaW51dGVzID0gJ21pbnV0ZXMnLFxuICBTZWNvbmRzID0gJ3NlY29uZHMnXG59XG5cbi8qKlxuICogVGhlIG9wdGlvbiBmb3Igc3BlY2lmeWluZyB3aGljaCB2YWx1ZXMgdG8gaW5jbHVkZSBmb3IgZmlsdGVyaW5nLlxuICovXG5leHBvcnQgZW51bSBGaWx0ZXJOdWxsT3B0aW9uIHtcbiAgTnVsbFZhbHVlcyA9ICdudWxsdmFsdWVzJyxcbiAgTm9uTnVsbFZhbHVlcyA9ICdub25udWxsdmFsdWVzJyxcbiAgQWxsVmFsdWVzID0gJ2FsbHZhbHVlcydcbn1cblxuLyoqXG4gKiBUaGUgdHlwZSBvZiBmaWx0ZXIgZG9tYWluXG4gKi9cbmV4cG9ydCBlbnVtIEZpbHRlckRvbWFpblR5cGUge1xuICBSZWxldmFudCA9ICdyZWxldmFudCcsXG4gIERhdGFiYXNlID0gJ2RhdGFiYXNlJ1xufVxuXG4vKipcbiAqIEludGVybmFsIGVudW0gZm9yIHNwZWNpZnlpbmcgdGhlIHNlbGVjdGlvbiB0eXBlIGZvciBzZWxlY3QgbWFya3MgYXBpLlxuICovXG5leHBvcnQgZW51bSBTZWxlY3Rpb25VcGRhdGVUeXBlIHtcbiAgUmVwbGFjZSA9ICdzZWxlY3QtcmVwbGFjZScsXG4gIEFkZCA9ICdzZWxlY3QtYWRkJyxcbiAgUmVtb3ZlID0gJ3NlbGVjdC1yZW1vdmUnXG59XG5cbi8qKlxuICogSW50ZXJuYWwgZW51bSBmb3Igc3BlY2lmeWluZyB0aGUgaW5jbHVkZWQgdmFsdWVzIHR5cGUgZm9yIHJhbmdlIHNlbGVjdGlvbi5cbiAqL1xuZXhwb3J0IGVudW0gUXVhbnRpdGF0aXZlSW5jbHVkZWRWYWx1ZXMge1xuICBJbmNsdWRlTnVsbCA9ICdpbmNsdWRlLW51bGwnLFxuICBJbmNsdWRlTm9uTnVsbCA9ICdpbmNsdWRlLW5vbi1udWxsJyxcbiAgSW5jbHVkZUFsbCA9ICdpbmNsdWRlLWFsbCdcbn1cblxuLyoqXG4gKiBUeXBlIG9mIG1hcmsgZm9yIGEgZ2l2ZW4gbWFya3MgY2FyZCBpbiBhIHZpei5cbiAqL1xuZXhwb3J0IGVudW0gTWFya1R5cGUge1xuICAgIEJhciA9ICdiYXInLFxuICAgIExpbmUgPSAnbGluZScsXG4gICAgQXJlYSA9ICdhcmVhJyxcbiAgICBTcXVhcmUgPSAnc3F1YXJlJyxcbiAgICBDaXJjbGUgPSAnY2lyY2xlJyxcbiAgICBTaGFwZSA9ICdzaGFwZScsXG4gICAgVGV4dCA9ICd0ZXh0JyxcbiAgICBNYXAgPSAnbWFwJyxcbiAgICBQaWUgPSAncGllJyxcbiAgICBHYW50dEJhciA9ICdnYW50dC1iYXInLFxuICAgIFBvbHlnb24gPSAncG9seWdvbicsXG59XG5cbi8qKlxuICogSW50ZXJuYWwgZW51bSBmb3Igc3BlY2lmeWluZyB0aGUgdHlwZSBvZiBmaWx0ZXJcbiAqL1xuZXhwb3J0IGVudW0gRmlsdGVyVHlwZSB7XG4gIENhdGVnb3JpY2FsID0gJ2NhdGVnb3JpY2FsJyxcbiAgUmFuZ2UgPSAncmFuZ2UnLFxuICBSZWxhdGl2ZURhdGUgPSAncmVsYXRpdmVEYXRlJyxcbiAgSGllcmFyY2hpY2FsID0gJ2hpZXJhcmNoaWNhbCdcbn1cblxuLyoqXG4gKiBJbnRlcm5hbCBlbnVtIGZvciBzcGVjaWZ5aW5nIHRoZSBEYXRlUmFuZ2VUeXBlIG9mIGEgcmVsYXRpdmUgZGF0ZSBmaWx0ZXJcbiAqL1xuZXhwb3J0IGVudW0gRGF0ZVJhbmdlVHlwZSB7XG4gIC8qKlxuICAgKiBSZWZlcnMgdG8gdGhlIGxhc3QgZGF5LCB3ZWVrLCBtb250aCwgZXRjLiBvZiB0aGUgZGF0ZSBwZXJpb2QuXG4gICAqL1xuICBMYXN0ID0gJ2xhc3QnLFxuICAvKipcbiAgICogUmVmZXJzIHRvIHRoZSBsYXN0IE4gZGF5cywgd2Vla3MsIG1vbnRocywgZXRjLiBvZiB0aGUgZGF0ZSBwZXJpb2QuXG4gICAqL1xuICBMYXN0TiA9ICdsYXN0TicsXG4gIC8qKlxuICAgKiBSZWZlcnMgdG8gdGhlIG5leHQgZGF5LCB3ZWVrLCBtb250aCwgZXRjLiBvZiB0aGUgZGF0ZSBwZXJpb2QuXG4gICAqL1xuICBOZXh0ID0gJ25leHQnLFxuICAvKipcbiAgICogUmVmZXJzIHRvIHRoZSBuZXh0IE4gZGF5cywgd2Vla3MsIG1vbnRocywgZXRjLiBvZiB0aGUgZGF0ZSBwZXJpb2QuXG4gICAqL1xuICBOZXh0TiA9ICduZXh0TicsXG4gIC8qKlxuICAgKiBSZWZlcnMgdG8gdGhlIGN1cnJlbnQgZGF5LCB3ZWVrLCBtb250aCwgZXRjLiBvZiB0aGUgZGF0ZSBwZXJpb2QuXG4gICAqL1xuICBDdXJyZW50ID0gJ2N1cnJlbnQnLFxuICAvKipcbiAgICogUmVmZXJzIHRvIGV2ZXJ5dGhpbmcgdXAgdG8gYW5kIGluY2x1ZGluZyB0aGUgY3VycmVudCBkYXksIHdlZWssIG1vbnRoLCBldGMuIG9mIHRoZSBkYXRlIHBlcmlvZC5cbiAgICovXG4gIFRvRGF0ZSA9ICd0b0RhdGUnXG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktaW50ZXJuYWwtY29udHJhY3Qvc3JjL2ludGVyZmFjZS9FbnVtcy50c1xuICoqLyIsImltcG9ydCB7IE1vZGVsIH0gZnJvbSAnLi9Nb2RlbHMnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uSWQgfSBmcm9tICcuL05vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHsgVmVyYklkIH0gZnJvbSAnLi9WZXJicyc7XG5pbXBvcnQgeyBWZXJzaW9uTnVtYmVyIH0gZnJvbSAnLi9WZXJzaW9uTnVtYmVyJztcblxuZXhwb3J0IHR5cGUgTm90aWZpY2F0aW9uSGFuZGxlciA9IChub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbikgPT4gdm9pZDtcblxuZXhwb3J0IGludGVyZmFjZSBFeGVjdXRlUGFyYW1ldGVycyB7XG4gIFtrZXk6IHN0cmluZ106IE1vZGVsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWN1dGVSZXNwb25zZSB7XG4gIHJlc3VsdDogTW9kZWw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm90aWZpY2F0aW9uIHtcbiAgbm90aWZpY2F0aW9uSWQ6IE5vdGlmaWNhdGlvbklkO1xuICBkYXRhOiBNb2RlbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnRlcm5hbEFwaURpc3BhdGNoZXIge1xuICBzZXRWZXJzaW9uTnVtYmVyKHZlcnNpb25OdW1iZXI6IFZlcnNpb25OdW1iZXIpOiB2b2lkO1xuICBleGVjdXRlKHZlcmI6IFZlcmJJZCwgcGFyYW1ldGVyczogRXhlY3V0ZVBhcmFtZXRlcnMpOiBQcm9taXNlPEV4ZWN1dGVSZXNwb25zZT47XG4gIHJlZ2lzdGVyTm90aWZpY2F0aW9uSGFuZGxlcihoYW5kbGVyOiBOb3RpZmljYXRpb25IYW5kbGVyKTogdm9pZDtcbiAgdW5yZWdpc3Rlck5vdGlmaWNhdGlvbkhhbmRsZXIoaGFuZGxlcjogTm90aWZpY2F0aW9uSGFuZGxlcik6IHZvaWQ7XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFdpbmRvdyB7IF9fdGFibGVhdURlc2t0b3BEaXNwYXRjaGVyOiBQcm9taXNlPEludGVybmFsQXBpRGlzcGF0Y2hlcj47IH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBJbnRlcm5hbEFwaURpc3BhdGNoZXJIb2xkZXIge1xuICBleHBvcnQgZnVuY3Rpb24gZ2V0RGVza3RvcERpc3BhdGNoZXJQcm9taXNlKCk6IFByb21pc2U8SW50ZXJuYWxBcGlEaXNwYXRjaGVyPiB7XG4gICAgcmV0dXJuIHdpbmRvdy5fX3RhYmxlYXVEZXNrdG9wRGlzcGF0Y2hlcjtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBoYXNEZXNrdG9wQXBpRGlzcGF0Y2hlclByb21pc2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhSW50ZXJuYWxBcGlEaXNwYXRjaGVySG9sZGVyLmdldERlc2t0b3BEaXNwYXRjaGVyUHJvbWlzZSgpO1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIHNldERlc2t0b3BEaXNwYXRjaGVyUHJvbWlzZShkaXNwYXRjaGVyOiBQcm9taXNlPEludGVybmFsQXBpRGlzcGF0Y2hlcj4pOiB2b2lkIHtcbiAgICB3aW5kb3cuX190YWJsZWF1RGVza3RvcERpc3BhdGNoZXIgPSBkaXNwYXRjaGVyO1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktaW50ZXJuYWwtY29udHJhY3Qvc3JjL2ludGVyZmFjZS9JbnRlcm5hbEFwaURpc3BhdGNoZXIudHNcbiAqKi8iLCJleHBvcnQgZW51bSBOb3RpZmljYXRpb25JZCB7XG4gIFNlbGVjdGVkTWFya3NDaGFuZ2VkID0gJ3NlbGVjdGVkLW1hcmtzLWNoYW5nZWQnLFxuICBQYXJhbWV0ZXJDaGFuZ2VkID0gJ3BhcmFtZXRlci1jaGFuZ2VkJyxcbiAgRmlsdGVyQ2hhbmdlZCA9ICdmaWx0ZXItY2hhbmdlZCdcbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1pbnRlcm5hbC1jb250cmFjdC9zcmMvaW50ZXJmYWNlL05vdGlmaWNhdGlvbnMudHNcbiAqKi8iLCJleHBvcnQgZW51bSBQYXJhbWV0ZXJJZCB7XG4gIEV4dGVuc2lvbkxvY2F0b3IgPSAnZXh0ZW5zaW9uLWxvY2F0b3InLFxuICBFeHRlbnNpb25Cb290c3RyYXBJbmZvID0gJ2V4dGVuc2lvbi1ib290c3RyYXAtaW5mbycsXG4gIEV4dGVuc2lvblNldHRpbmdzSW5mbyA9ICdleHRlbnNpb24tc2V0dGluZ3MtaW5mbycsXG4gIFZpc3VhbElkID0gJ3Zpc3VhbC1pZCcsXG4gIFNoZWV0UGF0aCA9ICdzaGVldC1wYXRoJyxcbiAgSWdub3JlQWxpYXNlcyA9ICdpZ25vcmUtYWxpYXNlcycsXG4gIElnbm9yZVNlbGVjdGlvbiA9ICdpZ25vcmUtc2VsZWN0aW9uJyxcbiAgSW5jbHVkZUFsbENvbHVtbnMgPSAnaW5jbHVkZS1hbGwtY29sdW1ucycsXG4gIE1heFJvd3MgPSAnbWF4LXJvd3MnLFxuICBVbmRlcmx5aW5nRGF0YVRhYmxlID0gJ3VuZGVybHlpbmctZGF0YS10YWJsZScsXG4gIFVuZGVybHlpbmdTdW1tYXJ5RGF0YVRhYmxlID0gJ3VuZGVybHlpbmctc3VtbWFyeS1kYXRhLXRhYmxlJyxcbiAgRGF0YVNvdXJjZURhdGFUYWJsZSA9ICdkYXRhLXNvdXJjZS1kYXRhLXRhYmxlJyxcbiAgU2V0dGluZ3NWYWx1ZXMgPSAnc2V0dGluZ3MtdmFsdWVzJyxcbiAgU2VsZWN0ZWREYXRhID0gJ3NlbGVjdGVkLWRhdGEnLFxuICBIaWdobGlnaHRlZERhdGEgPSAnaGlnaGxpZ2h0ZWQtZGF0YScsXG5cbiAgIC8vIEZpbHRlciBQYXJhbXNcbiAgRmllbGROYW1lID0gJ2ZpZWxkLW5hbWUnLFxuICBGaWx0ZXJWYWx1ZXMgPSAnZmlsdGVyLXZhbHVlcycsXG4gIEZpbHRlclVwZGF0ZVR5cGUgPSAnZmlsdGVyLXVwZGF0ZS10eXBlJyxcbiAgSXNFeGNsdWRlTW9kZSA9ICdpcy1leGNsdWRlJyxcbiAgRmlsdGVyUmFuZ2VNaW4gPSAnZmlsdGVyLXJhbmdlLW1pbicsXG4gIEZpbHRlclJhbmdlTWF4ID0gJ2ZpbHRlci1yYW5nZS1tYXgnLFxuICBGaWx0ZXJSYW5nZU51bGxPcHRpb24gPSAnZmlsdGVyLXJhbmdlLW51bGwtb3B0aW9uJyxcbiAgV29ya3NoZWV0RmlsdGVycyA9ICd3b3Jrc2hlZXQtZmlsdGVycycsXG4gIEZpZWxkSWQgPSAnZmllbGQtaWQnLFxuICBEb21haW5UeXBlID0gJ2RvbWFpbi10eXBlJyxcbiAgQ2F0ZWdvcmljYWxEb21haW4gPSAnY2F0ZWdvcmljYWwtZG9tYWluJyxcbiAgUXVhbnRpdGF0aXZlRG9tYWluID0gJ3F1YW50aXRhdGl2ZS1kbWFpbicsXG5cbiAgV29ya3NoZWV0TmFtZSA9ICd3b3Jrc2hlZXQtbmFtZScsXG4gIERhc2hib2FyZE5hbWUgPSAnZGFzaGJvYXJkJyxcblxuICBQYXJhbWV0ZXJJbmZvID0gJ3BhcmFtZXRlci1pbmZvJyxcbiAgUGFyYW1ldGVySW5mb3MgPSAncGFyYW1ldGVyLWluZm9zJyxcbiAgUGFyYW1ldGVyQ2FwdGlvbiA9ICdwYXJlbWV0ZXItY2FwdGlvbicsXG4gIFBhcmFtZXRlckZpZWxkTmFtZSA9ICdwYXJhbWV0ZXItZmllbGQtbmFtZScsXG4gIFBhcmFtZXRlclZhbHVlID0gJ3BhcmFtZXRlci12YWx1ZScsXG4gIFNlbGVjdGlvbiA9ICdzZWxlY3Rpb24nLFxuICBTZWxlY3Rpb25VcGRhdGVUeXBlID0gJ3NlbGVjdGlvblVwZGF0ZVR5cGUnLFxuICBIaWVyVmFsU2VsZWN0aW9uTW9kZWxzID0gJ2hpZXJhcmNoaWNhbFZhbHVlU2VsZWN0aW9uTW9kZWxzJyxcbiAgUXVhbnRSYW5nZVNlbGVjdGlvbk1vZGVscyA9ICdxdWFudGF0aXZlUmFuZ2VTZWxlY3Rpb25Nb2RlbHMnLFxuICBEaW1WYWxTZWxlY3Rpb25Nb2RlbHMgPSAnZGltZW5zaW9uVmFsdWVTZWxlY3Rpb25Nb2RlbHMnLFxuXG4gIERhdGFTb3VyY2VJZCA9ICdkYXRhLXNvdXJjZS1pZCcsXG4gIERhdGFTY2hlbWEgPSAnZGF0YS1zY2hlbWEnLFxuICBEYXRhU291cmNlTmFtZSA9ICdkYXRhLXNvdXJjZS1uYW1lJyxcbiAgQ29sdW1uc1RvSW5jbHVkZSA9ICdjb2x1bW5zLXRvLWluY2x1ZGUnXG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktaW50ZXJuYWwtY29udHJhY3Qvc3JjL2ludGVyZmFjZS9QYXJhbWV0ZXJzLnRzXG4gKiovIiwiLy8gRGVjbGFyZSB0aGlzIGtleSB0eXBlIGFuZCBleHBvcnQgdGhlIE5vdGlmaWNhdGlvbklkIHRvIG1ha2UgdGhpcyBiZWhhdmUgbGlrZSBhIHN0cmluZyBlbnVtXG5leHBvcnQgZW51bSBWZXJiSWQge1xuICBBcHBseUNhdGVnb3JpY2FsRmlsdGVyID0gJ2NhdGVnb3JpY2FsLWZpbHRlcicsXG4gIEFwcGx5UmFuZ2VGaWx0ZXIgPSAncmFuZ2UtZmlsdGVyJyxcbiAgQ2xlYXJGaWx0ZXIgPSAnY2xlYXItZmlsdGVyJyxcbiAgSW5pdGlhbGl6ZUV4dGVuc2lvbiA9ICdpbml0aWFsaXplLWV4dGVuc2lvbicsXG4gIEdldERhdGFTdW1tYXJ5RGF0YSA9ICdnZXQtc3VtbWFyeS1kYXRhJyxcbiAgR2V0VW5kZXJseWluZ0RhdGEgPSAnZ2V0LXVuZGVybHlpbmctZGF0YScsXG4gIEdldERhdGFTb3VyY2VEYXRhID0gJ2dldC1kYXRhc291cmNlLWRhdGEnLFxuICBTYXZlRXh0ZW5zaW9uU2V0dGluZ3MgPSAnc2F2ZS1leHRlbnNpb24tc2V0dGluZ3MnLFxuICBHZXRTZWxlY3RlZE1hcmtzID0gJ2dldC1zZWxlY3RlZC1tYXJrcycsXG4gIEdldEhpZ2hsaWdodGVkTWFya3MgPSAnZ2V0LWhpZ2hsaWdodGVkLW1hcmtzJyxcbiAgR2V0UGFyYW1ldGVyc0ZvclNoZWV0ID0gJ2dldC1wYXJhbWV0ZXJzLWZvci1zaGVldCcsXG4gIEZpbmRQYXJhbWV0ZXIgPSAnZmluZC1wYXJhbWV0ZXInLFxuICBDaGFuZ2VQYXJhbWV0ZXJWYWx1ZSA9ICdjaGFuZ2UtcGFyYW1ldGVyLXZhbHVlJyxcbiAgQ2xlYXJTZWxlY3RlZE1hcmtzID0gJ2NsZWFyLXNlbGVjdGVkLW1hcmtzJyxcbiAgU2VsZWN0QnlWYWx1ZSA9ICdzZWxlY3QtYnktdmFsdWUnLFxuICBHZXREYXRhU291cmNlcyA9ICdnZXQtZGF0YS1zb3VyY2VzJyxcbiAgUmVmcmVzaERhdGFTb3VyY2UgPSAncmVmcmVzaC1kYXRhLXNvdXJjZScsXG4gIEdldEZpbHRlcnMgPSAnZ2V0LWZpbHRlcnMnLFxuICBHZXRDYXRlZ29yaWNhbERvbWFpbiA9ICdnZXQtY2F0ZWdvcmljYWwtZG9tYWluJyxcbiAgR2V0UmFuZ2VEb21haW4gPSAnZ2V0LXJhbmdlLWRvbWFpbidcbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1pbnRlcm5hbC1jb250cmFjdC9zcmMvaW50ZXJmYWNlL1ZlcmJzLnRzXG4gKiovIiwiLyoqXG4gKiBUaGlzIGlzIHlvdXIgbWFpbi4gVGhpcyBpcyB3aGVyZSB5b3UgcmUtZXhwb3J0IGV2ZXJ5dGhpbmcgeW91IHdhbnQgdG8gYmUgcHVibGljbHkgYXZhaWxhYmxlLlxuICpcbiAqIFRoZSBidWlsZCBlbmZvcmNlcyB0aGF0IHRoZSBmaWxlIGhhcyB0aGUgc2FtZSBuYW1lIGFzIHRoZSBnbG9iYWwgdmFyaWFibGUgdGhhdCBpcyBleHBvcnRlZC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL0V2ZW50TGlzdGVuZXJNYW5hZ2VyJztcbmV4cG9ydCAqIGZyb20gJy4vUGFyYW1ldGVyJztcbmV4cG9ydCB7IFBvaW50IH0gZnJvbSAnLi9Qb2ludCc7XG5leHBvcnQgKiBmcm9tICcuL1NpbmdsZUV2ZW50TWFuYWdlcic7XG5leHBvcnQgeyBTaXplIH0gZnJvbSAnLi9TaXplJztcbmV4cG9ydCAqIGZyb20gJy4vTW9kZWxzL0dldERhdGFNb2RlbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9FeGNlcHRpb25zL1RhYmxlYXVFeGNlcHRpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vRXZlbnRzL0ZpbHRlckNoYW5nZWRFdmVudCc7XG5leHBvcnQgKiBmcm9tICcuL0V2ZW50cy9NYXJrc1NlbGVjdGVkRXZlbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9FdmVudHMvVGFibGVhdUV2ZW50JztcbmV4cG9ydCAqIGZyb20gJy4vRXZlbnRzL1RhYmxlYXVTaGVldEV2ZW50JztcbmV4cG9ydCAqIGZyb20gJy4vRXZlbnRzL1RhYmxlYXVXb3Jrc2hlZXRFdmVudCc7XG5leHBvcnQgKiBmcm9tICcuL0ludGVybmFsL1NpbmdsZUV2ZW50TWFuYWdlckltcGwnO1xuZXhwb3J0ICogZnJvbSAnLi9TZXJ2aWNlcy9EYXRhU291cmNlU2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL1NlcnZpY2VzL0dldERhdGFTZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vU2VydmljZXMvRmlsdGVyU2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL1NlcnZpY2VzL05vdGlmaWNhdGlvblNlcnZpY2UnO1xuZXhwb3J0IHsgUGFyYW1ldGVyc1NlcnZpY2UgfSBmcm9tICcuL1NlcnZpY2VzL1BhcmFtZXRlcnNTZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vU2VydmljZXMvUmVnaXN0ZXJBbGxTaGFyZWRTZXJ2aWNlcyc7XG5leHBvcnQgKiBmcm9tICcuL1NlcnZpY2VzL1NlbGVjdGlvblNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9TZXJ2aWNlcy9TZXJ2aWNlUmVnaXN0cnknO1xuZXhwb3J0ICogZnJvbSAnLi9FbnVtTWFwcGluZ3MvSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzJztcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL0FwaVNoYXJlZC50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XG5cbmltcG9ydCB7IFNpbmdsZUV2ZW50TWFuYWdlciB9IGZyb20gJy4vU2luZ2xlRXZlbnRNYW5hZ2VyJztcblxuLyoqXG4gKiBDbGFzcyBkZXNpZ25lZCB0byByZWdpc3RlciBhbmQgdW5yZWdpc3RlciBoYW5kbGVycyBmcm9tIGEgdXNlci4gT25seSB0aG9zZSBldmVudHNcbiAqIHdoaWNoIGFyZSBhZGRlZCB2aWEgQWRkTmV3RXZlbnRUeXBlIHdpbGwgYmUgc3VwcG9ydGVkIGJ5IHRoaXMgaW5zdGFuY2VcbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50TGlzdGVuZXJNYW5hZ2VyIGltcGxlbWVudHMgIENvbnRyYWN0LkV2ZW50TGlzdGVuZXJNYW5hZ2VyIHtcbiAgcHJpdmF0ZSBfZXZlbnRMaXN0ZW5lck1hbmFnZXJzOiB7IFt0YWJsZWF1RXZlbnRUeXBlOiBzdHJpbmddOiBTaW5nbGVFdmVudE1hbmFnZXI7IH07XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX2V2ZW50TGlzdGVuZXJNYW5hZ2VycyA9IHt9O1xuICB9XG5cbiAgcHVibGljIGFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlOiBDb250cmFjdC5UYWJsZWF1RXZlbnRUeXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyOiBDb250cmFjdC5UYWJsZWF1RXZlbnRIYW5kbGVyRm4pOiBDb250cmFjdC5UYWJsZWF1RXZlbnRVbnJlZ2lzdGVyRm4ge1xuICAgIGlmICghdGhpcy5fZXZlbnRMaXN0ZW5lck1hbmFnZXJzLmhhc093blByb3BlcnR5KGV2ZW50VHlwZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgZXZlbnQgdHlwZSA6ICR7ZXZlbnRUeXBlfWApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9ldmVudExpc3RlbmVyTWFuYWdlcnNbZXZlbnRUeXBlXS5hZGRFdmVudExpc3RlbmVyKGhhbmRsZXIpO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlOiBDb250cmFjdC5UYWJsZWF1RXZlbnRUeXBlLCBoYW5kbGVyOiBDb250cmFjdC5UYWJsZWF1RXZlbnRIYW5kbGVyRm4pOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuX2V2ZW50TGlzdGVuZXJNYW5hZ2Vycy5oYXNPd25Qcm9wZXJ0eShldmVudFR5cGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGV2ZW50IHR5cGUgOiAke2V2ZW50VHlwZX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fZXZlbnRMaXN0ZW5lck1hbmFnZXJzW2V2ZW50VHlwZV0ucmVtb3ZlRXZlbnRMaXN0ZW5lcihoYW5kbGVyKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhZGROZXdFdmVudFR5cGUoZXZlbnRNYW5hZ2VyOiBTaW5nbGVFdmVudE1hbmFnZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9ldmVudExpc3RlbmVyTWFuYWdlcnNbZXZlbnRNYW5hZ2VyLmV2ZW50VHlwZV0gPSBldmVudE1hbmFnZXI7XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL0V2ZW50TGlzdGVuZXJNYW5hZ2VyLnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcblxuaW1wb3J0IHsgRXZlbnRMaXN0ZW5lck1hbmFnZXIgfSBmcm9tICcuL0V2ZW50TGlzdGVuZXJNYW5hZ2VyJztcbmltcG9ydCB7IFBhcmFtZXRlckltcGwgfSBmcm9tICcuL0ludGVybmFsL1BhcmFtZXRlckltcGwnO1xuXG4vKipcbiAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBQYXJhbWV0ZXIgY29udHJhY3QuIENhbGxzIGRvd24gdG8gdGhlIGltcGxcbiAqIGNsYXNzIGZvciBhbG1vc3QgYWxsIG9mIHRoZSB3b3JrIGl0IGRvZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBQYXJhbWV0ZXIgZXh0ZW5kcyBFdmVudExpc3RlbmVyTWFuYWdlciBpbXBsZW1lbnRzIENvbnRyYWN0LlBhcmFtZXRlciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHBhcmFtZXRlckltcGw6IFBhcmFtZXRlckltcGwsIHNoZWV0OiBDb250cmFjdC5TaGVldCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBJbml0aWFsaXplIG91ciBldmVudCBoYW5kbGluZyBmb3IgdGhpcyBjbGFzc1xuICAgIHRoaXMucGFyYW1ldGVySW1wbC5pbml0aWFsaXplRXZlbnRzKHNoZWV0KS5mb3JFYWNoKGUgPT4gdGhpcy5hZGROZXdFdmVudFR5cGUoZSkpO1xuICB9XG5cbiAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucGFyYW1ldGVySW1wbC5uYW1lO1xuICB9XG5cbiAgcHVibGljIGdldCBjdXJyZW50VmFsdWUoKTogQ29udHJhY3QuRGF0YVZhbHVlIHtcbiAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJJbXBsLmN1cnJlbnRWYWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGF0YVR5cGUoKTogQ29udHJhY3QuRGF0YVR5cGUge1xuICAgIHJldHVybiB0aGlzLnBhcmFtZXRlckltcGwuZGF0YVR5cGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFsbG93YWJsZVZhbHVlcygpOiBDb250cmFjdC5QYXJhbWV0ZXJEb21haW5SZXN0cmljdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMucGFyYW1ldGVySW1wbC5hbGxvd2FibGVWYWx1ZXM7XG4gIH1cblxuICBwdWJsaWMgY2hhbmdlVmFsdWVBc3luYyhuZXdWYWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IERhdGUpOiBQcm9taXNlPENvbnRyYWN0LkRhdGFWYWx1ZT4ge1xuICAgIHJldHVybiB0aGlzLnBhcmFtZXRlckltcGwuY2hhbmdlVmFsdWVBc3luYyhuZXdWYWx1ZSk7XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL1BhcmFtZXRlci50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XG5cbmV4cG9ydCBjbGFzcyBQb2ludCBpbXBsZW1lbnRzIENvbnRyYWN0LlBvaW50IHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgX3g6IG51bWJlciwgcHJpdmF0ZSBfeTogbnVtYmVyKSB7IH1cblxuICBwdWJsaWMgZ2V0IHgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5feDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgeSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl95O1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9Qb2ludC50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XG5cbmV4cG9ydCBjbGFzcyBTaXplIGltcGxlbWVudHMgQ29udHJhY3QuU2l6ZSB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIF9oZWlnaHQ6IG51bWJlciwgcHJpdmF0ZSBfd2lkdGg6IG51bWJlcikgeyB9XG5cbiAgcHVibGljIGdldCBoZWlnaHQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5faGVpZ2h0O1xuICB9XG5cbiAgcHVibGljIGdldCB3aWR0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl93aWR0aDtcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLXNoYXJlZC9zcmMvU2l6ZS50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XG5cbmV4cG9ydCBjbGFzcyBEYXRhVGFibGUgaW1wbGVtZW50cyBDb250cmFjdC5EYXRhVGFibGUge1xuICBwcml2YXRlIF9uYW1lOiBzdHJpbmc7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2RhdGE6IEFycmF5PEFycmF5PENvbnRyYWN0LkRhdGFWYWx1ZT4+LFxuICAgIHByaXZhdGUgX2NvbHVtbnM6IEFycmF5PENvbnRyYWN0LkNvbHVtbj4sXG4gICAgcHJpdmF0ZSBfdG90YWxSb3dDb3VudDogbnVtYmVyLFxuICAgIHByaXZhdGUgX2lzU3VtbWFyeURhdGE6IGJvb2xlYW4sXG4gICAgcHJpdmF0ZSBfbWFya3NJbmZvPzogQXJyYXk8TWFya0luZm8+KSB7XG4gICAgICAgIC8vIFRPRE86IGdldCByaWQgb2YgdGhpcyBpbiByZWRlc2lnbi5cbiAgICAgICAgdGhpcy5fbmFtZSA9IF9pc1N1bW1hcnlEYXRhID8gJ1N1bW1hcnkgRGF0YSBUYWJsZScgOiAnVW5kZXJseWluZyBEYXRhIFRhYmxlJztcbiAgICB9XG5cbiAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX25hbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRhdGEoKTogQXJyYXk8QXJyYXk8Q29udHJhY3QuRGF0YVZhbHVlPj4ge1xuICAgIHJldHVybiB0aGlzLl9kYXRhO1xuICB9XG5cbiAgcHVibGljIGdldCBjb2x1bW5zKCk6IEFycmF5PENvbnRyYWN0LkNvbHVtbj4ge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5zO1xuICB9XG5cbiAgcHVibGljIGdldCBtYXJrc0luZm8oKTogQXJyYXk8Q29udHJhY3QuTWFya0luZm8+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fbWFya3NJbmZvO1xuICB9XG5cbiAgcHVibGljIGdldCB0b3RhbFJvd0NvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3RvdGFsUm93Q291bnQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzU3VtbWFyeURhdGEoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzU3VtbWFyeURhdGE7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1hcmtJbmZvIGltcGxlbWVudHMgQ29udHJhY3QuTWFya0luZm8ge1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfdHlwZTogQ29udHJhY3QuTWFya1R5cGUsXG4gICAgcHJpdmF0ZSBfY29sb3I6IHN0cmluZyxcbiAgICBwcml2YXRlIF90dXBsZUlkPzogTnVtYmVyXG4gICkge31cblxuICBwdWJsaWMgZ2V0IHR5cGUoKTogQ29udHJhY3QuTWFya1R5cGUge1xuICAgIHJldHVybiB0aGlzLl90eXBlO1xuICB9XG5cbiAgcHVibGljIGdldCBjb2xvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9jb2xvcjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdHVwbGVJZCgpOiBOdW1iZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl90dXBsZUlkO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb2x1bW4gaW1wbGVtZW50cyBDb250cmFjdC5Db2x1bW4ge1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfZmllbGROYW1lOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBfZGF0YVR5cGU6IENvbnRyYWN0LkRhdGFUeXBlLCAvLyBUT0RPOiB0aGlzIHNob3VkbCBiZSBhbiBlbnVtIHR5cGVcbiAgICBwcml2YXRlIF9pc1JlZmVyZW5jZWQ6IGJvb2xlYW4sXG4gICAgcHJpdmF0ZSBfaW5kZXg6IG51bWJlcikge31cblxuICBwdWJsaWMgZ2V0IGZpZWxkTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9maWVsZE5hbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRhdGFUeXBlKCk6IENvbnRyYWN0LkRhdGFUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YVR5cGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzUmVmZXJlbmNlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNSZWZlcmVuY2VkO1xuICB9XG5cbiAgcHVibGljIGdldCBpbmRleCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9pbmRleDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGF0YVZhbHVlIGltcGxlbWVudHMgQ29udHJhY3QuRGF0YVZhbHVlIHtcbiAgLyogdHNsaW50OmRpc2FibGU6bm8tYW55ICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF92YWx1ZTogYW55LFxuICAgIHByaXZhdGUgX2Zvcm1hdHRlZFZhbHVlOiBzdHJpbmcpIHt9XG5cbiAgcHVibGljIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZm9ybWF0dGVkVmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZm9ybWF0dGVkVmFsdWU7XG4gIH1cbiAgLyogdHNsaW50OmVuYWJsZTpuby1hbnkgKi9cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL01vZGVscy9HZXREYXRhTW9kZWxzLnRzXG4gKiovIiwiZXhwb3J0IGNsYXNzIFRhYmxlYXVFeGNlcHRpb25zIHtcbiAgLy8gVE9ETywgQXBpRXJyb3JDb2RlcyBuZWVkIHRvIGJlIGFkZGVkIHRvIGV4dGVybmFsIGludGVyZmFjZXMuXG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9FeGNlcHRpb25zL1RhYmxlYXVFeGNlcHRpb25zLnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcblxuaW1wb3J0IHsgVGFibGVhdVdvcmtzaGVldEV2ZW50IH0gZnJvbSAnLi9UYWJsZWF1V29ya3NoZWV0RXZlbnQnO1xuXG5leHBvcnQgY2xhc3MgRmlsdGVyQ2hhbmdlZEV2ZW50IGV4dGVuZHMgVGFibGVhdVdvcmtzaGVldEV2ZW50IGltcGxlbWVudHMgQ29udHJhY3QuRmlsdGVyQ2hhbmdlZEV2ZW50IHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHdvcmtzaGVldDogQ29udHJhY3QuV29ya3NoZWV0LCBwcml2YXRlIF9maWVsZE5hbWU6IHN0cmluZykge1xuICAgIHN1cGVyKENvbnRyYWN0LlRhYmxlYXVFdmVudFR5cGUuRmlsdGVyQ2hhbmdlZCwgd29ya3NoZWV0KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZmllbGROYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkTmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGaWx0ZXJBc3luYygpOiBQcm9taXNlPENvbnRyYWN0LkZpbHRlcj4ge1xuICAgIHJldHVybiB0aGlzLl93b3Jrc2hlZXQuZ2V0RmlsdGVyc0FzeW5jKCkudGhlbjxDb250cmFjdC5GaWx0ZXI+KGZpbHRlcnMgPT4ge1xuICAgICAgLy8gVE9ETzogRmlsdGVyaW5nIG9mIHRoZSBmaWx0ZXJzIHNob3VsZCBldmVudHVhbGx5IGJlIGRvbmUgcGxhdGZvcm0gc2lkZS5cbiAgICAgIGNvbnN0IGV2ZW50ZWRGaWx0ZXIgPSBmaWx0ZXJzLmZpbmQoKGZpbHRlcikgPT4gKGZpbHRlci5maWVsZE5hbWUgPT09IHRoaXMuX2ZpZWxkTmFtZSkpO1xuXG4gICAgICBpZiAoIWV2ZW50ZWRGaWx0ZXIpIHtcbiAgICAgICAgLy8gV2Ugc2hvdWxkbid0IGhpdCB0aGlzIHVubGVzcyB0aGUgZmlsdGVyIHdhcyByZW1vdmVkIGZyb20gdGhlIHdvcmtzaGVldFxuICAgICAgICAvLyBhZnRlciB0aGUgZXZlbnQgd2FzIHJhaXNlZC5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnRlcm5hbCBFcnJvcjogRmlsdGVyIG5vIGxvbmdlciBmb3VuZCBpbiB3b3Jrc2hlZXQuJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBldmVudGVkRmlsdGVyO1xuICAgIH0pO1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9FdmVudHMvRmlsdGVyQ2hhbmdlZEV2ZW50LnRzXG4gKiovIiwiLyoqXG4gKiBUaGlzIGlzIHlvdXIgbWFpbi4gVGhpcyBpcyB3aGVyZSB5b3UgcmUtZXhwb3J0IGV2ZXJ5dGhpbmcgeW91IHdhbnQgdG8gYmUgcHVibGljbHkgYXZhaWxhYmxlLlxuICpcbiAqIFRoZSBidWlsZCBlbmZvcmNlcyB0aGF0IHRoZSBmaWxlIGhhcyB0aGUgc2FtZSBuYW1lIGFzIHRoZSBnbG9iYWwgdmFyaWFibGUgdGhhdCBpcyBleHBvcnRlZC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL0FuYWx5dGljc0ludGVyZmFjZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9EYXRhU291cmNlSW50ZXJmYWNlcyc7XG5leHBvcnQgKiBmcm9tICcuL0RhdGFUYWJsZUludGVyZmFjZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9FbmNvZGluZ0ludGVyZmFjZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9FbnVtcyc7XG5leHBvcnQgKiBmcm9tICcuL0V2ZW50SW50ZXJmYWNlcyc7XG5leHBvcnQgKiBmcm9tICcuL0ZpbHRlckludGVyZmFjZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9TZWxlY3Rpb25JbnRlcmZhY2VzJztcbmV4cG9ydCAqIGZyb20gJy4vUGFyYW1ldGVySW50ZXJmYWNlcyc7XG5leHBvcnQgKiBmcm9tICcuL1NlbGVjdGlvbkludGVyZmFjZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9TaGVldEludGVyZmFjZXMnO1xuXG5leHBvcnQgeyBFeHRlbnNpb25zIH0gZnJvbSAnLi9OYW1lc3BhY2VzL0V4dGVuc2lvbnMnO1xuZXhwb3J0IHsgRGFzaGJvYXJkQ29udGVudCB9IGZyb20gJy4vTmFtZXNwYWNlcy9EYXNoYm9hcmRDb250ZW50JztcbmV4cG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSAnLi9OYW1lc3BhY2VzL0Vudmlyb25tZW50JztcbmV4cG9ydCB7IFNldHRpbmdzIH0gZnJvbSAnLi9OYW1lc3BhY2VzL1NldHRpbmdzJztcbmV4cG9ydCB7IFVJIH0gZnJvbSAnLi9OYW1lc3BhY2VzL1VJJztcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1leHRlcm5hbC1jb250cmFjdC9zcmMvQXBpRXh0ZXJuYWxDb250cmFjdC50c1xuICoqLyIsIi8vIEFsbCBlbnVtIHZhbHVlcyBtYWRlIGF2YWlsYWJsZSB0byBFeHRlbnNpb25zIGRldmVsb3BlcnMuXG4vLyBFbnVtcyBzaG91bGQgYmUga2VwdCBpbiBhbHBoYWJldGljYWwgb3JkZXIuXG5cbi8qKlxuICogVGhlIGNvbnRleHQgaW4gd2hpY2ggdGhlIEV4dGVuc2lvbnMgaXMgY3VycmVudGx5IHJ1bm5pbmcuXG4gKi9cbmV4cG9ydCBlbnVtIEV4dGVuc2lvbkNvbnRleHQge1xuICBEZXNrdG9wID0gJ2Rlc2t0b3AnLFxuICBTZXJ2ZXIgPSAnc2VydmVyJ1xufVxuXG4vKipcbiAqIFRoZSBtb2RlIGluIHdoaWNoIHRoZSBFeHRlbnNpb25zIGlzIGN1cnJlbnRseSBydW5uaW5nLlxuICovXG5leHBvcnQgZW51bSBFeHRlbnNpb25Nb2RlIHtcbiAgQXV0aG9yaW5nID0gJ2F1dGhvcmluZycsXG4gIFZpZXdpbmcgPSAndmlld2luZydcbn1cblxuZXhwb3J0IGVudW0gQW5hbHl0aWNzT2JqZWN0VHlwZSB7XG4gIENsdXN0ZXIgPSAnY2x1c3RlcicsXG4gIEZvcmVjYXN0ID0gJ2ZvcmVjYXN0JyxcbiAgVHJlbmRMaW5lID0gJ3RyZW5kLWxpbmUnXG59XG5cbmV4cG9ydCBlbnVtIENvbHVtblR5cGUge1xuICBEaXNjcmV0ZSA9ICdkaXNjcmV0ZScsXG4gIENvbnRpbnVvdXMgPSAnY29udGludW91cydcbn1cblxuLyoqXG4gKiBXaGF0IHRoZSBvYmplY3QgcmVwcmVzZW50cyBpbiBhIGRhc2hib2FyZC5cbiAqL1xuZXhwb3J0IGVudW0gRGFzaGJvYXJkT2JqZWN0VHlwZSB7XG4gIEJsYW5rID0gJ2JsYW5rJyxcbiAgV29ya3NoZWV0ID0gJ3dvcmtzaGVldCcsXG4gIFF1aWNrRmlsdGVyID0gJ3F1aWNrLWZpbHRlcicsXG4gIFBhcmFtZXRlckNvbnRyb2wgPSAncGFyYW1ldGVyLWNvbnRyb2wnLFxuICBQYWdlRmlsdGVyID0gJ3BhZ2UtZmlsdGVyJyxcbiAgTGVnZW5kID0gJ2xlZ2VuZCcsXG4gIFRpdGxlID0gJ3RpdGxlJyxcbiAgVGV4dCA9ICd0ZXh0JyxcbiAgSW1hZ2UgPSAnaW1hZ2UnLFxuICBXZWJQYWdlID0gJ3dlYi1wYWdlJyxcbiAgRXh0ZW5zaW9uID0gJ2V4dGVuc2lvbidcbn1cblxuLyoqXG4gKiBUaGUgZGlmZmVyZW50IHR5cGVzIG9mIGRhdGEgYSB2YWx1ZSBjYW4gaGF2ZVxuICovXG5leHBvcnQgZW51bSBEYXRhVHlwZSB7XG4gIFN0cmluZyA9ICdzdHJpbmcnLFxuICBJbnQgPSAnaW50JyxcbiAgRmxvYXQgPSAnZmxvYXQnLFxuICBCb29sID0gJ2Jvb2wnLFxuICBEYXRlID0gJ2RhdGUnLFxuICBEYXRlVGltZSA9ICdkYXRlLXRpbWUnLFxuICBTcGF0aWFsID0gJ3NwYXRpYWwnXG59XG5cbi8qKlxuICogVmFsaWQgZGF0ZSByYW5nZXMgZm9yIGEgcmVsYXRpdmUgZGF0ZSBmaWx0ZXIuXG4gKi9cbmV4cG9ydCBlbnVtIERhdGVSYW5nZVR5cGUge1xuICBMYXN0ID0gJ2xhc3QnLFxuICBMYXN0TiA9ICdsYXN0LW4nLFxuICBOZXh0ID0gJ25leHQnLFxuICBOZXh0TiA9ICduZXh0LW4nLFxuICBDdXJyZW50ID0gJ2N1cnJlbnQnLFxuICBUb0RhdGUgPSAndG8tZGF0ZSdcbn1cblxuLyoqXG4gKiBUeXBlcyBvZiBkaWFsb2cgZXZlbnQgZm9yIGV2ZW50IGxpc3RlbmluZyBiZXR3ZWVuIGEgcGFyZW50IEV4dGVuc2lvbnMgYW5kIGEgcG9wdXAgZGlhbG9nLlxuICovXG5leHBvcnQgZW51bSBEaWFsb2dFdmVudFR5cGUge1xuICBEaWFsb2dNZXNzYWdlID0gJ2RpYWxvZy1tZXNzYWdlJyxcbiAgRGlhbG9nRXZlbnQgPSAnZGlhbG9nLWV2ZW50J1xufVxuXG5leHBvcnQgZW51bSBFbmNvZGluZ1R5cGUge1xuICBDb2x1bW4gPSAnY29sdW1uJyxcbiAgUm93ID0gJ3JvdycsXG4gIFBhZ2UgPSAncGFnZScsXG4gIEZpbHRlciA9ICdmaWx0ZXInLFxuICBNYXJrc1R5cGUgPSAnbWFya3MtdHlwZScsXG4gIE1lYXN1cmVWYWx1ZXMgPSAnbWVhc3VyZS12YWx1ZXMnLFxuICBDb2xvciA9ICdjb2xvcicsXG4gIFNpemUgPSAnc2l6ZScsXG4gIExhYmVsID0gJ2xhYmVsJyxcbiAgRGV0YWlsID0gJ2RldGFpbCcsXG4gIFRvb2x0aXAgPSAndG9vbHRpcCcsXG4gIFNoYXBlID0gJ3NoYXBlJyxcbiAgUGF0aCA9ICdwYXRoJyxcbiAgQW5nbGUgPSAnYW5nbGUnXG59XG5cbi8qKlxuICogQWxsIGVycm9yIGNvZGVzIHVzZWQgYnkgdGhlIEV4dGVuc2lvbnMgQVBJLlxuICovXG5leHBvcnQgZW51bSBFcnJvckNvZGVzIHtcbiAgLyoqXG4gICAqIE9ubHkgb25lIGRpYWxvZyBjYW4gYmUgb3BlbmVkIGF0IHRpbWUgd2l0aCB0aGUgVUkgbmFtZXNwYWNlIGZ1bmN0aW9uYWxpdHkuXG4gICAqL1xuICBEaWFsb2dBbHJlYWR5T3BlbiA9ICdkaWFsb2ctYWxyZWFkeS1vcGVuJyxcbiAgLyoqXG4gICAqIFRoZSBvcGVuIGRpYWxvZyB3YXMgY2xvc2VkIGJ5IHRoZSB1c2VyLlxuICAgKi9cbiAgRGlhbG9nQ2xvc2VkQnlVc2VyID0gJ2RpYWxvZy1jbG9zZWQtYnktdXNlcicsXG4gIC8qKlxuICAgKiBBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvIHBlcmZvcm0gYSBmaWx0ZXIgb3BlcmF0aW9uLlxuICAgKi9cbiAgRmlsdGVyQ2Fubm90QmVQZXJmb3JtZWQgPSAnZmlsdGVyLWNhbm5vdC1iZS1wZXJmb3JtZWQnLFxuICAvKipcbiAgICogQW4gZXJyb3Igb2NjdXJyZWQgd2l0aGluIHRoZSBUYWJsZWF1IEV4dGVuc2lvbnMgQVBJLiBDb250YWN0IFRhYmxlYXUgU3VwcG9ydC5cbiAgICovXG4gIEludGVybmFsRXJyb3IgPSAnaW50ZXJuYWwtZXJyb3InLFxuICAvKipcbiAgICogQW4gaW52YWxpZCBhZ2dyZWdhdGlvbiB3YXMgc3BlY2lmaWVkIGZvciB0aGUgZmlsdGVyLCBzdWNoIGFzIHNldHRpbmcgYSByYW5nZSBmaWx0ZXIgdG8gXCJTVU0oU2FsZXMpXCIgaW5zdGVhZCBvZiBcIlNhbGVzXCIuXG4gICAqL1xuICBJbnZhbGlkQWdncmVnYXRpb25GaWVsZE5hbWUgPSAnaW52YWxpZC1hZ2dyZWdhdGlvbi1maWVsZC1uYW1lJyxcbiAgLyoqXG4gICAqIEEgZGlhbG9nIG11c3QgZmlyc3QgbGF1bmNoIHRvLCBhbmQgc2VuZCBtZXNzYWdlcyBmcm9tLCB0aGUgc2FtZSBkb21haW4gYXMgdGhlIHBhcmVudCBFeHRlbnNpb25zLlxuICAgKi9cbiAgSW52YWxpZERvbWFpbkRpYWxvZyA9ICdpbnZhbGlkLWRpYWxvZy1kb21haW4nLFxuICAvKipcbiAgICogQW4gaW52YWxpZCBkYXRlIHdhcyBzcGVjaWZpZWQgaW4gYSBtZXRob2QgdGhhdCByZXF1aXJlZCBhIGRhdGUgcGFyYW1ldGVyLlxuICAgKi9cbiAgSW52YWxpZERhdGVQYXJhbWV0ZXIgPSAnaW52YWxpZC1kYXRlLXBhcmFtZXRlcicsXG4gIC8qKlxuICAgKiBBIGZpbHRlciBvcGVyYXRpb24gd2FzIGF0dGVtcHRlZCBvbiBhIGZpZWxkIHRoYXQgZG9lcyBub3QgZXhpc3QgaW4gdGhlIGRhdGEgc291cmNlLlxuICAgKi9cbiAgSW52YWxpZEZpbHRlckZpZWxkTmFtZSA9ICdpbnZhbGlkLWZpbHRlci1maWVsZC1uYW1lJyxcbiAgLyoqXG4gICAqIEEgZmlsdGVyIG9wZXJhdGlvbiB3YXMgYXR0ZW1wdGVkIHVzaW5nIGEgdmFsdWUgdGhhdCBpcyB0aGUgd3JvbmcgZGF0YSB0eXBlIG9yIGZvcm1hdC5cbiAgICovXG4gIEludmFsaWRGaWx0ZXJGaWVsZFZhbHVlID0gJ2ludmFsaWQtZmlsdGVyLWZpZWxkLXZhbHVlJyxcbiAgLyoqXG4gICAqIEEgcGFyYW1ldGVyIGlzIG5vdCB0aGUgY29ycmVjdCBkYXRhIHR5cGUgb3IgZm9ybWF0LiBUaGUgbmFtZSBvZiB0aGUgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBpbiB0aGUgRXJyb3IubWVzc2FnZSBmaWVsZC5cbiAgICovXG4gIEludmFsaWRQYXJhbWV0ZXIgPSAnaW52YWxpZC1wYXJhbWV0ZXInLFxuICAvKipcbiAgICogQW4gaW52YWxpZCBkYXRlIHZhbHVlIHdhcyBzcGVjaWZpZWQgaW4gYSBTaGVldC5zZWxlY3RNYXJrc0FzeW5jKCkgY2FsbCBmb3IgYSBkYXRlIGZpZWxkLlxuICAgKi9cbiAgSW52YWxpZFNlbGVjdGlvbkRhdGUgPSAnaW52YWxpZC1zZWxlY3Rpb24tZGF0ZScsXG4gIC8qKlxuICAgKiBBIGZpZWxkIHdhcyBzcGVjaWZpZWQgaW4gYSBTaGVldC5zZWxlY3RNYXJrc0FzeW5jKCkgY2FsbCB0aGF0IGRvZXMgbm90IGV4aXN0IGluIHRoZSBkYXRhIHNvdXJjZS5cbiAgICovXG4gIEludmFsaWRTZWxlY3Rpb25GaWVsZE5hbWUgPSAnaW52YWxpZC1zZWxlY3Rpb24tZmllbGQtbmFtZScsXG4gIC8qKlxuICAgKiBBbiBpbnZhbGlkIHZhbHVlIHdhcyBzcGVjaWZpZWQgaW4gYSBTaGVldC5zZWxlY3RNYXJrc0FzeW5jKCkgY2FsbC5cbiAgICovXG4gIEludmFsaWRTZWxlY3Rpb25WYWx1ZSA9ICdpbnZhbGlkLXNlbGVjdGlvbi12YWx1ZScsXG4gIC8qKlxuICAgKiBBIHJlcXVpcmVkIHBhcmFtZXRlciB3YXMgbm90IHNwZWNpZmllZCwgbnVsbCwgb3IgYW4gZW1wdHkgc3RyaW5nL2FycmF5LlxuICAgKi9cbiAgTnVsbE9yRW1wdHlQYXJhbWV0ZXIgPSAnbnVsbC1vci1lbXB0eS1wYXJhbWV0ZXInLFxuICAvKipcbiAgICogQW4gdW5rbm93biBldmVudCBuYW1lIHdhcyBzcGVjaWZpZWQgaW4gdGhlIGNhbGwgdG8gVml6LmFkZEV2ZW50TGlzdGVuZXJvciBWaXoucmVtb3ZlRXZlbnRMaXN0ZW5lci5cbiAgICovXG4gIFVuc3VwcG9ydGVkRXZlbnROYW1lID0gJ3Vuc3VwcG9ydGVkLWV2ZW50LW5hbWUnXG59XG5cbi8qKlxuICogIFR5cGUgb2YgYWdncmVnYXRpb24gb24gYSBmaWVsZC5cbiAqL1xuZXhwb3J0IGVudW0gRmllbGRBZ2dyZWdhdGlvblR5cGUge1xuICBTdW0gPSAnc3VtJyxcbiAgQXZnID0gJ2F2ZycsXG4gIE1pbiA9ICdtaW4nLFxuICBNYXggPSAnbWF4JyxcbiAgU3RkZXYgPSAnc3RkZXYnLFxuICBTdGRldnAgPSAnc3RkZXZwJyxcbiAgVmFyID0gJ3ZhcicsXG4gIFZhcnAgPSAndmFycCcsXG4gIENvdW50ID0gJ2NvdW50JyxcbiAgQ291bnRkID0gJ2NvdW50ZCcsXG4gIE1lZGlhbiA9ICdtZWRpYW4nLFxuICBBdHRyID0gJ2F0dHInLFxuICBOb25lID0gJ25vbmUnLFxuICBZZWFyID0gJ3llYXInLFxuICBRdHIgPSAncXRyJyxcbiAgTW9udGggPSAnbW9udGgnLFxuICBEYXkgPSAnZGF5JyxcbiAgSG91ciA9ICdob3VyJyxcbiAgTWludXRlID0gJ21pbnV0ZScsXG4gIFNlY29uZCA9ICdzZWNvbmQnLFxuICBXZWVrID0gJ3dlZWsnLFxuICBXZWVrZGF5ID0gJ3dlZWtkYXknLFxuICBNb250aFllYXIgPSAnbW9udGgteWVhcicsXG4gIE1keSA9ICdtZHknLFxuICBFbmQgPSAnZW5kJyxcbiAgVHJ1bmNZZWFyID0gJ3RydW5jLXllYXInLFxuICBUcnVuY1F0ciA9ICd0cnVuYy1xdHInLFxuICBUcnVuY01vbnRoID0gJ3RydW5jLW1vbnRoJyxcbiAgVHJ1bmNXZWVrID0gJ3RydW5jLXdlZWsnLFxuICBUcnVuY0RheSA9ICd0cnVuYy1kYXknLFxuICBUcnVuY0hvdXIgPSAndHJ1bmMtaG91cicsXG4gIFRydW5jTWludXRlID0gJ3RydW5jLW1pbnV0ZScsXG4gIFRydW5jU2Vjb25kID0gJ3RydW5jLXNlY29uZCcsXG4gIFF1YXJ0MSA9ICdxdWFydDEnLFxuICBRdWFydDMgPSAncXVhcnQzJyxcbiAgU2tld25lc3MgPSAnc2tld25lc3MnLFxuICBLdXJ0b3NpcyA9ICdrdXJ0b3NpcycsXG4gIEluT3V0ID0gJ2luLW91dCcsXG4gIFVzZXIgPSAndXNlcidcbn1cblxuLyoqXG4gKiBSb2xlIG9mIGEgZmllbGQuXG4gKi9cbmV4cG9ydCBlbnVtIEZpZWxkUm9sZVR5cGUge1xuICBEaW1lbnNpb24gPSAnZGltZW5zaW9uJyxcbiAgTWVhc3VyZSA9ICdtZWFzdXJlJyxcbiAgVW5rbm93biA9ICd1bmtub3duJ1xufVxuXG4vKipcbiAqIEFuIGVudW1lcmF0aW9uIG9mIHRoZSB2YWxpZCB0eXBlcyBvZiBmaWx0ZXJzIHRoYXQgY2FuIGJlIGFwcGxpZWQuXG4gKi9cbmV4cG9ydCBlbnVtIEZpbHRlclR5cGUge1xuICBDYXRlZ29yaWNhbCA9ICdjYXRlZ29yaWNhbCcsXG4gIFJhbmdlID0gJ3JhbmdlJyxcbiAgSGllcmFyY2hpY2FsID0gJ2hpZXJhcmNoaWNhbCcsXG4gIFJlbGF0aXZlRGF0ZSA9ICdyZWxhdGl2ZS1kYXRlJ1xufVxuXG4vKipcbiAqIFRoZSBkaWZmZXJlbnQgdXBkYXRlIHR5cGVzIGZvciBhcHBseWluZyBmaWx0ZXJcbiAqL1xuZXhwb3J0IGVudW0gRmlsdGVyVXBkYXRlVHlwZSB7XG4gIEFkZCA9ICdhZGQnLFxuICBBbGwgPSAnYWxsJyxcbiAgUmVwbGFjZSA9ICdyZXBsYWNlJyxcbiAgUmVtb3ZlID0gJ3JlbW92ZSdcbn1cblxuLyoqXG4gKiBUaGUgZG9tYWluIHR5cGUgZm9yIGEgZmlsdGVyXG4gKi9cbmV4cG9ydCBlbnVtIEZpbHRlckRvbWFpblR5cGUge1xuICAvKipcbiAgICogVGhlIGRvbWFpbiB2YWx1ZXMgdGhhdCBhcmUgcmVsZXZhbnQgdG8gdGhlIHNwZWNpZmllZCBmaWx0ZXJcbiAgICogaS5lLiB0aGUgZG9tYWluIGlzIHJlc3RyaWN0ZWQgYnkgYSBwcmV2aW91cyBmaWx0ZXJcbiAgICovXG4gIFJlbGV2YW50ID0gJ3JlbGV2YW50JyxcbiAgLyoqXG4gICAqIGxpc3Qgb2YgYWxsIHBvc3NpYmxlIGRvbWFpbiB2YWx1ZXMgZnJvbSBkYXRhYmFzZVxuICAgKi9cbiAgRGF0YWJhc2UgPSAnZGF0YWJhc2UnXG59XG5cbi8qKlxuICogVGhlIG9wdGlvbiBmb3Igc3BlY2lmeWluZyB3aGljaCB2YWx1ZXMgdG8gaW5jbHVkZSBmb3IgZmlsdGVyaW5nXG4gKiBJbmRpY2F0ZXMgd2hhdCB0byBkbyB3aXRoIG51bGwgdmFsdWVzIGZvciBhIGdpdmVuIGZpbHRlciBvciBtYXJrIHNlbGVjdGlvbiBjYWxsLlxuICovXG5leHBvcnQgZW51bSBGaWx0ZXJOdWxsT3B0aW9uIHtcbiAgTnVsbFZhbHVlcyA9ICdudWxsLXZhbHVlcycsXG4gIE5vbk51bGxWYWx1ZXMgPSAnbm9uLW51bGwtdmFsdWVzJyxcbiAgQWxsVmFsdWVzID0gJ2FsbC12YWx1ZXMnXG59XG5cbi8qKlxuICogVHlwZSBvZiBtYXJrIGZvciBhIGdpdmVuIG1hcmtzIGNhcmQgaW4gYSB2aXouXG4gKi9cbmV4cG9ydCBlbnVtIE1hcmtUeXBlIHtcbiAgQmFyID0gJ2JhcicsXG4gIExpbmUgPSAnbGluZScsXG4gIEFyZWEgPSAnYXJlYScsXG4gIFNxdWFyZSA9ICdzcXVhcmUnLFxuICBDaXJjbGUgPSAnY2lyY2xlJyxcbiAgU2hhcGUgPSAnc2hhcGUnLFxuICBUZXh0ID0gJ3RleHQnLFxuICBNYXAgPSAnbWFwJyxcbiAgUGllID0gJ3BpZScsXG4gIEdhbnR0QmFyID0gJ2dhbnR0LWJhcicsXG4gIFBvbHlnb24gPSAncG9seWdvbidcbn1cblxuLyoqXG4gKiBBbiBlbnVtZXJhdGlvbiBkZXNjcmliaW5nIHRoZSBkaWZmZXJlbnQgdHlwZXMgb2YgYWxsb3dhYmxlIHZhbHVlcy5cbiAqIFRoaXMgaXMgdXNlZCBmb3IgcmVzdHJpY3RpbmcgdGhlIGRvbWFpbiBvZiBhIHBhcmFtZXRlclxuICovXG5leHBvcnQgZW51bSBQYXJhbWV0ZXJWYWx1ZVR5cGUge1xuICBBbGwgPSAnYWxsJyxcbiAgTGlzdCA9ICdsaXN0JyxcbiAgUmFuZ2UgPSAncmFuZ2UnXG59XG5cbi8qKlxuICogRGF0ZSBwZXJpb2QgdXNlZCBpbiBmaWx0ZXJzIGFuZCBpbiBwYXJhbWV0ZXJzLlxuICovXG5leHBvcnQgZW51bSBQZXJpb2RUeXBlIHtcbiAgWWVhcnMgPSAneWVhcnMnLFxuICBRdWFydGVycyA9ICdxdWFydGVycycsXG4gIE1vbnRocyA9ICdtb250aHMnLFxuICBXZWVrcyA9ICd3ZWVrcycsXG4gIERheXMgPSAnZGF5cycsXG4gIEhvdXJzID0gJ2hvdXJzJyxcbiAgTWludXRlcyA9ICdtaW51dGVzJyxcbiAgU2Vjb25kcyA9ICdzZWNvbmRzJ1xufVxuXG5leHBvcnQgZW51bSBRdWlja1RhYmxlQ2FsY1R5cGUge1xuICBSdW5uaW5nVG90YWwgPSAncnVubmluZy10b3RhbCcsXG4gIERpZmZlcmVuY2UgPSAnZGlmZmVyZW5jZScsXG4gIFBlcmNlbnREaWZmZXJlbmNlID0gJ3BlcmNlbnQtZGlmZmVyZW5jZScsXG4gIFBlcmNlbnRPZlRvdGFsID0gJ3BlcmNlbnQtb2YtdG90YWwnLFxuICBSYW5rID0gJ3JhbmsnLFxuICBQZXJjZW50aWxlID0gJ3BlcmNlbnRpbGUnLFxuICBNb3ZpbmdBdmVyYWdlID0gJ21vdmluZy1hdmVyYWdlJyxcbiAgWVREVG90YWwgPSAneXRkLXRvdGFsJyxcbiAgQ29tcG91bmRHcm93dGhSYXRlID0gJ2NvbXBvdW5kLWdyb3d0aC1yYXRlJyxcbiAgWWVhck92ZXJZZWFyR3Jvd3RoID0gJ3llYXItb3Zlci15ZWFyLWdyb3d0aCcsXG4gIFlUREdyb3d0aCA9ICd5dGQtZ3Jvd3RoJyxcbiAgVW5kZWZpbmVkID0gJ3VuZGVmaW5lZCdcbn1cblxuLyoqXG4gKiBFbnVtIGZvciBzcGVjaWZ5aW5nIHRoZSBzZWxlY3Rpb24gdHlwZSBmb3Igc2VsZWN0IG1hcmtzIGFwaS5cbiAqL1xuZXhwb3J0IGVudW0gU2VsZWN0aW9uVXBkYXRlVHlwZSB7XG4gIFJlcGxhY2UgPSAnc2VsZWN0LXJlcGxhY2UnLFxuICBBZGQgPSAnc2VsZWN0LWFkZCcsXG4gIFJlbW92ZSA9ICdzZWxlY3QtcmVtb3ZlJ1xufVxuXG4vKipcbiAqIFRoZSB0eXBlIG9mIHNoZWV0IGEgU2hlZXQgb2JqZWN0IHJlcHJlc2VudHNcbiAqL1xuZXhwb3J0IGVudW0gU2hlZXRUeXBlIHtcbiAgRGFzaGJvYXJkID0gJ2Rhc2hib2FyZCcsXG4gIFN0b3J5ID0gJ3N0b3J5JyxcbiAgV29ya3NoZWV0ID0gJ3dvcmtzaGVldCdcbn1cblxuZXhwb3J0IGVudW0gU29ydERpcmVjdGlvbiB7XG4gIEluY3JlYXNpbmcgPSAnaW5jcmVhc2luZycsXG4gIERlY3JlYXNpbmcgPSAnZGVjcmVhc2luZydcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgY2VydGFpbiB0eXBlIG9mIGV2ZW50IHdoaWNoIGNhbiBiZSBsaXN0ZW5lZCBmb3JcbiAqL1xuZXhwb3J0IGVudW0gVGFibGVhdUV2ZW50VHlwZSB7XG4gIC8qKiBSYWlzZWQgd2hlbiBhbnkgZmlsdGVyIGhhcyBjaGFuZ2VkIHN0YXRlLiovXG4gIEZpbHRlckNoYW5nZWQgPSAnZmlsdGVyLWNoYW5nZWQnLFxuXG4gIC8qKiBUaGUgc2VsZWN0ZWQgbWFya3Mgb24gYSB2aXN1YWxpemF0aW9uIGhhcyBjaGFuZ2VkICovXG4gIE1hcmtTZWxlY3Rpb25DaGFuZ2VkID0gJ21hcmstc2VsZWN0aW9uLWNoYW5nZWQnLFxuXG4gIC8qKiBBIHBhcmFtZXRlciBoYXMgaGFkIGl0cyB2YWx1ZSBtb2RpZmllZCAqL1xuICBQYXJhbWV0ZXJDaGFuZ2VkID0gJ3BhcmFtZXRlci1jaGFuZ2VkJ1xufVxuXG5leHBvcnQgZW51bSBUcmVuZExpbmVNb2RlbFR5cGUge1xuICBMaW5lYXIgPSAnbGluZWFyJyxcbiAgTG9nYXJpdGhtaWMgPSAnbG9nYXJpdGhtaWMnLFxuICBFeHBvbmVudGlhbCA9ICdleHBvbmVudGlhbCcsXG4gIFBvbHlub21pYWwgPSAncG9seW5vbWlhbCdcbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1leHRlcm5hbC1jb250cmFjdC9zcmMvRW51bXMudHNcbiAqKi8iLCJpbXBvcnQgKiBhcyBDb250cmFjdCBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xuXG5pbXBvcnQgeyBUYWJsZWF1U2hlZXRFdmVudCB9IGZyb20gJy4vVGFibGVhdVNoZWV0RXZlbnQnO1xuXG5leHBvcnQgY2xhc3MgVGFibGVhdVdvcmtzaGVldEV2ZW50IGV4dGVuZHMgVGFibGVhdVNoZWV0RXZlbnQgaW1wbGVtZW50cyBDb250cmFjdC5UYWJsZWF1V29ya3NoZWV0RXZlbnQge1xuICBwdWJsaWMgZ2V0IHdvcmtzaGVldCgpOiBDb250cmFjdC5Xb3Jrc2hlZXQge1xuICAgIHJldHVybiB0aGlzLl93b3Jrc2hlZXQ7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IodHlwZTogQ29udHJhY3QuVGFibGVhdUV2ZW50VHlwZSwgcHJvdGVjdGVkIF93b3Jrc2hlZXQ6IENvbnRyYWN0LldvcmtzaGVldCkge1xuICAgIHN1cGVyKHR5cGUsIF93b3Jrc2hlZXQpO1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9FdmVudHMvVGFibGVhdVdvcmtzaGVldEV2ZW50LnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcblxuaW1wb3J0IHsgVGFibGVhdUV2ZW50IH0gZnJvbSAnLi9UYWJsZWF1RXZlbnQnO1xuXG5leHBvcnQgY2xhc3MgVGFibGVhdVNoZWV0RXZlbnQgZXh0ZW5kcyBUYWJsZWF1RXZlbnQgaW1wbGVtZW50cyBDb250cmFjdC5UYWJsZWF1U2hlZXRFdmVudCB7XG4gIHByaXZhdGUgX3NoZWV0OiBDb250cmFjdC5TaGVldDtcblxuICBwdWJsaWMgZ2V0IHNoZWV0KCk6IENvbnRyYWN0LlNoZWV0IHtcbiAgICByZXR1cm4gdGhpcy5fc2hlZXQ7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IodHlwZTogQ29udHJhY3QuVGFibGVhdUV2ZW50VHlwZSwgc2hlZXQ6IENvbnRyYWN0LlNoZWV0KSB7XG4gICAgc3VwZXIodHlwZSk7XG5cbiAgICB0aGlzLl9zaGVldCA9IHNoZWV0O1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9FdmVudHMvVGFibGVhdVNoZWV0RXZlbnQudHNcbiAqKi8iLCJpbXBvcnQgKiBhcyBDb250cmFjdCBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xuXG5leHBvcnQgY2xhc3MgVGFibGVhdUV2ZW50IGltcGxlbWVudHMgQ29udHJhY3QuVGFibGVhdUV2ZW50IHtcbiAgcHJpdmF0ZSBfdHlwZTogQ29udHJhY3QuVGFibGVhdUV2ZW50VHlwZTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IodHlwZTogQ29udHJhY3QuVGFibGVhdUV2ZW50VHlwZSkge1xuICAgIHRoaXMuX3R5cGUgPSB0eXBlO1xuICB9XG5cbiAgcHVibGljIGdldCB0eXBlKCk6IENvbnRyYWN0LlRhYmxlYXVFdmVudFR5cGUge1xuICAgIHJldHVybiB0aGlzLl90eXBlO1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9FdmVudHMvVGFibGVhdUV2ZW50LnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcblxuaW1wb3J0IHsgVGFibGVhdVdvcmtzaGVldEV2ZW50IH0gZnJvbSAnLi9UYWJsZWF1V29ya3NoZWV0RXZlbnQnO1xuXG5leHBvcnQgY2xhc3MgTWFya3NTZWxlY3RlZEV2ZW50IGV4dGVuZHMgVGFibGVhdVdvcmtzaGVldEV2ZW50IGltcGxlbWVudHMgQ29udHJhY3QuTWFya3NTZWxlY3RlZEV2ZW50IHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHdvcmtzaGVldDogQ29udHJhY3QuV29ya3NoZWV0KSB7XG4gICAgc3VwZXIoQ29udHJhY3QuVGFibGVhdUV2ZW50VHlwZS5NYXJrU2VsZWN0aW9uQ2hhbmdlZCwgd29ya3NoZWV0KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRNYXJrc0FzeW5jKCk6IFByb21pc2U8Q29udHJhY3QuTWFya3NDb2xsZWN0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMud29ya3NoZWV0LmdldFNlbGVjdGVkTWFya3NBc3luYygpO1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9FdmVudHMvTWFya3NTZWxlY3RlZEV2ZW50LnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcblxuaW1wb3J0IHsgU2luZ2xlRXZlbnRNYW5hZ2VyIH0gZnJvbSAnLi4vU2luZ2xlRXZlbnRNYW5hZ2VyJztcblxuLyoqXG4gKiBUaGlzIGNsYXNzIGltcGxlbWVudHMgdGhlIFNpbmdsZUV2ZW50TWFuYWdlciBpbnRlcmZhY2UgZm9yIGEgc2luZ2xlIHR5cGUgb2YgVGFibGVhdSBldmVudFxuICpcbiAqIEB0ZW1wbGF0ZSBURXZlbnRUeXBlIFRoZSBUYWJsZWF1IGV2ZW50IHR5cGUgdGhpcyBjbGFzcyBzcGVjaWFsaXplc1xuICovXG5leHBvcnQgY2xhc3MgU2luZ2xlRXZlbnRNYW5hZ2VySW1wbDxURXZlbnRUeXBlIGV4dGVuZHMgQ29udHJhY3QuVGFibGVhdUV2ZW50PiBpbXBsZW1lbnRzIFNpbmdsZUV2ZW50TWFuYWdlciB7XG4gIHByaXZhdGUgX2V2ZW50VHlwZTogQ29udHJhY3QuVGFibGVhdUV2ZW50VHlwZTtcbiAgcHJpdmF0ZSBfaGFuZGxlcnM6IEFycmF5PChldmVudE9iajogVEV2ZW50VHlwZSkgPT4gdm9pZD47XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKGV2ZW50VHlwZTogQ29udHJhY3QuVGFibGVhdUV2ZW50VHlwZSkge1xuICAgIHRoaXMuX2V2ZW50VHlwZSA9IGV2ZW50VHlwZTtcbiAgICB0aGlzLl9oYW5kbGVycyA9IFtdO1xuICB9XG5cbiAgcHVibGljIGdldCBldmVudFR5cGUoKTogQ29udHJhY3QuVGFibGVhdUV2ZW50VHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50VHlwZTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRFdmVudExpc3RlbmVyKGhhbmRsZXI6IChldmVudE9iajogVEV2ZW50VHlwZSkgPT4gdm9pZCk6IENvbnRyYWN0LlRhYmxlYXVFdmVudFVucmVnaXN0ZXJGbiB7XG4gICAgdGhpcy5faGFuZGxlcnMucHVzaChoYW5kbGVyKTtcbiAgICByZXR1cm4gKCkgPT4gdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGhhbmRsZXIpO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZUV2ZW50TGlzdGVuZXIoaGFuZGxlcjogKGV2ZW50T2JqOiBURXZlbnRUeXBlKSA9PiB2b2lkKTogYm9vbGVhbiB7XG4gICAgY29uc3QgYmVmb3JlQ291bnQgPSB0aGlzLl9oYW5kbGVycy5sZW5ndGg7XG4gICAgdGhpcy5faGFuZGxlcnMgPSB0aGlzLl9oYW5kbGVycy5maWx0ZXIoaCA9PiBoICE9PSBoYW5kbGVyKTtcbiAgICByZXR1cm4gYmVmb3JlQ291bnQgPiB0aGlzLl9oYW5kbGVycy5sZW5ndGg7XG4gIH1cblxuICBwdWJsaWMgdHJpZ2dlckV2ZW50KGV2ZW50R2VuZXJhdG9yOiAoKSA9PiBURXZlbnRUeXBlKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBoYW5kbGVyIG9mIHRoaXMuX2hhbmRsZXJzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBldmVudE1vZGVsID0gZXZlbnRHZW5lcmF0b3IoKTtcbiAgICAgICAgaGFuZGxlcihldmVudE1vZGVsKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gU2luY2UgdGhpcyBoYW5kbGVyIGNvdWxkIGJlIG91dHNpZGUgb3VyIGNvbnRyb2wsIGp1c3QgY2F0Y2ggYW55dGhpbmcgaXQgdGhyb3dzIGFuZCBjb250aW51ZSBvblxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL0ludGVybmFsL1NpbmdsZUV2ZW50TWFuYWdlckltcGwudHNcbiAqKi8iLCJpbXBvcnQgKiBhcyBDb250cmFjdCBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xuaW1wb3J0IHsgVmlzdWFsSWQgfSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xuXG5pbXBvcnQgeyBBcGlTZXJ2aWNlIH0gZnJvbSAnLi9TZXJ2aWNlUmVnaXN0cnknO1xuXG4vKipcbiAqIERlZmluZXMgd2hpY2ggdHlwZSBvZiBnZXREYXRhIGNhbGwgdG8gbWFrZS5cbiAqL1xuZXhwb3J0IGVudW0gR2V0RGF0YVR5cGUge1xuICBTdW1tYXJ5ID0gJ3N1bW1hcnknLFxuICBVbmRlcmx5aW5nID0gJ3VuZGVybHlpbmcnXG59XG5cbi8qKlxuICogU2VydmljZSBmb3IgaW1wbGVtZW50aW5nIHRoZSBsb2dpYyBmb3IgdmFyaW91cyBnZXREYXRhIGNhbGxzXG4gKlxuICogQGludGVyZmFjZSBHZXREYXRhU2VydmljZVxuICogQGV4dGVuZHMge0FwaVNlcnZpY2V9XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0RGF0YVNlcnZpY2UgZXh0ZW5kcyBBcGlTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIEdldHMgdGhlIHVuZGVybHlpbmcgZGF0YSBmb3IgYSBwYXJ0aWN1bGFyIHZpc3VhbFxuICAgKlxuICAgKiBAcGFyYW0ge1Zpc3VhbElkfSB2aXN1YWxJZCAgVGhlIHZpc3VhbCB0byBnZXQgZGF0YSBmb3JcbiAgICogQHBhcmFtIHtHZXREYXRhVHlwZX0gZ2V0VHlwZSAgVGhlIHR5cGUgb2YgZ2V0RGF0YSBjYWxsIHRvIG1ha2VcbiAgICogQHBhcmFtIHtib29sZWFufSBpZ25vcmVBbGlhc2VzICBXaGV0aGVyIG9yIG5vdCBhbGlhc2VzIHNob3VsZCBiZSBpZ25vcmVkXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gaWdub3JlU2VsZWN0aW9uICBXaGV0aGVyIG9yIG5vdCBzZWxlY3Rpb24gc2hvdWxkIGJlIGlnbm9yZWRcbiAgICogQHBhcmFtIHtib29sZWFufSBpbmNsdWRlQWxsQ29sdW1ucyAgU2hvdWxkIGFsbCBjb2x1bW5zIGJlIGluY2x1ZGVkXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBtYXhSb3dzICBNYXhpbXVtIG51bWJlciBvZiByb3dzIHRvIHJldHVyblxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxDb250cmFjdC5EYXRhVGFibGU+fSAgRGF0YSB0YWJsZSB3aXRoIHRoZSByZXF1ZXN0ZWQgZGF0YVxuICAgKi9cbiAgICBnZXRVbmRlcmx5aW5nRGF0YUFzeW5jKFxuICAgICAgdmlzdWFsSWQ6IFZpc3VhbElkLFxuICAgICAgZ2V0VHlwZTogR2V0RGF0YVR5cGUsXG4gICAgICBpZ25vcmVBbGlhc2VzOiBib29sZWFuLFxuICAgICAgaWdub3JlU2VsZWN0aW9uOiBib29sZWFuLFxuICAgICAgaW5jbHVkZUFsbENvbHVtbnM6IGJvb2xlYW4sXG4gICAgICBtYXhSb3dzOiBudW1iZXIpOiBQcm9taXNlPENvbnRyYWN0LkRhdGFUYWJsZT47XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgbWFya3MgZm9yIGEgZ2l2ZW4gdmlzdWFsXG4gICAgICpcbiAgICAqIEBwYXJhbSB7VmlzdWFsSWR9IHZpc3VhbElkICBUaGUgdmlzdWFsIHRvIGdldCBkYXRhIGZvclxuICAgICogQHJldHVybnMge1Byb21pc2U8QWN0aXZlTWFya3M+fSAgQ29sbGVjdGlvbiBvZiBkYXRhIHRhYmxlcyB3aXRoIHRoZSBhY3RpdmUgbWFya3NcbiAgICAqL1xuICAgIGdldFNlbGVjdGVkTWFya3NBc3luYyh2aXN1YWxJZDogVmlzdWFsSWQpOiBQcm9taXNlPENvbnRyYWN0Lk1hcmtzQ29sbGVjdGlvbj47XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBjdXJyZW50bHkgaGlnaGxpZ2h0ZWQgbWFya3MgZm9yIGEgZ2l2ZW4gdmlzdWFsXG4gICAgICpcbiAgICAqIEBwYXJhbSB7VmlzdWFsSWR9IHZpc3VhbElkICBUaGUgdmlzdWFsIHRvIGdldCBkYXRhIGZvclxuICAgICogQHJldHVybnMge1Byb21pc2U8QWN0aXZlTWFya3M+fSAgQ29sbGVjdGlvbiBvZiBkYXRhIHRhYmxlcyB3aXRoIHRoZSBhY3RpdmUgbWFya3NcbiAgICAqL1xuICAgIGdldEhpZ2hsaWdodGVkTWFya3NBc3luYyh2aXN1YWxJZDogVmlzdWFsSWQpOiBQcm9taXNlPENvbnRyYWN0Lk1hcmtzQ29sbGVjdGlvbj47XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YXNvdXJjZUlkICBUaGUgaWQgb2YgdGhlIGRhdGFzb3VyY2UgdG8gZ2V0IGRhdGEgZm9yXG4gICAgICogQHBhcmFtIHtib29sZWFufSBpZ25vcmVBbGlhc2VzICBXaGV0aGVyIGFsaWFzIHZhbHVlcyBzaG91bGQgYmUgaWdub3JlZCBpbiB0aGUgcmV0dXJuZWQgZGF0YVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtYXhSb3dzIFRoZSBtYXhpbXVtIG51bWJlciBvZiByb3dzIHRvIHJldHJpZXZlXG4gICAgICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBjb2x1bW5zVG9JbmNsdWRlICBDb2xsZWN0aW9uIG9mIGNvbHVtbiBjYXB0aW9ucyB3aGljaCBzaG91bGQgYmUgcmV0dXJuZWQuIEVtcHR5IG1lYW5zIGFsbCBjb2x1bW5zXG4gICAgICogQHJldHVybnMge1Byb21pc2U8Q29udHJhY3QuRGF0YVRhYmxlPn0gIERhdGEgdGFibGUgd2l0aCB0aGUgcmVxdWVzdGVkIGRhdGFcbiAgICAgKi9cbiAgICBnZXREYXRhU291cmNlRGF0YUFzeW5jKFxuICAgICAgZGF0YXNvdXJjZUlkOiBzdHJpbmcsXG4gICAgICBpZ25vcmVBbGlhc2VzOiBib29sZWFuLFxuICAgICAgbWF4Um93czogbnVtYmVyLFxuICAgICAgY29sdW1uc1RvSW5jbHVkZTogQXJyYXk8c3RyaW5nPik6IFByb21pc2U8Q29udHJhY3QuRGF0YVRhYmxlPjtcbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL1NlcnZpY2VzL0dldERhdGFTZXJ2aWNlLnRzXG4gKiovIiwiaW1wb3J0IHsgSW50ZXJuYWxBcGlEaXNwYXRjaGVyIH0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcblxuaW1wb3J0IHsgRGF0YVNvdXJjZVNlcnZpY2VJbXBsIH0gZnJvbSAnLi9pbXBsL0RhdGFTb3VyY2VTZXJ2aWNlSW1wbCc7XG5pbXBvcnQgeyBGaWx0ZXJTZXJ2aWNlSW1wbCB9IGZyb20gJy4vaW1wbC9GaWx0ZXJTZXJ2aWNlSW1wbCc7XG5pbXBvcnQgeyBHZXREYXRhU2VydmljZUltcGwgfSBmcm9tICcuL2ltcGwvR2V0RGF0YVNlcnZpY2VJbXBsJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2VJbXBsIH0gZnJvbSAnLi9pbXBsL05vdGlmaWNhdGlvblNlcnZpY2VJbXBsJztcbmltcG9ydCB7IFBhcmFtZXRlcnNTZXJ2aWNlSW1wbCB9IGZyb20gJy4vaW1wbC9QYXJhbWV0ZXJzU2VydmljZUltcGwnO1xuaW1wb3J0IHsgU2VsZWN0aW9uU2VydmljZUltcGwgfSBmcm9tICcuL2ltcGwvU2VsZWN0aW9uU2VydmljZUltcGwnO1xuaW1wb3J0IHsgQXBpU2VydmljZVJlZ2lzdHJ5IH0gZnJvbSAnLi9TZXJ2aWNlUmVnaXN0cnknO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJBbGxTaGFyZWRTZXJ2aWNlcyhkaXNwYXRjaGVyOiBJbnRlcm5hbEFwaURpc3BhdGNoZXIpOiB2b2lkIHtcbiAgQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLnJlZ2lzdGVyU2VydmljZShuZXcgRGF0YVNvdXJjZVNlcnZpY2VJbXBsKGRpc3BhdGNoZXIpKTtcbiAgQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLnJlZ2lzdGVyU2VydmljZShuZXcgR2V0RGF0YVNlcnZpY2VJbXBsKGRpc3BhdGNoZXIpKTtcbiAgQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLnJlZ2lzdGVyU2VydmljZShuZXcgRmlsdGVyU2VydmljZUltcGwoZGlzcGF0Y2hlcikpO1xuICBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UucmVnaXN0ZXJTZXJ2aWNlKG5ldyBOb3RpZmljYXRpb25TZXJ2aWNlSW1wbChkaXNwYXRjaGVyKSk7XG4gIEFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5yZWdpc3RlclNlcnZpY2UobmV3IFBhcmFtZXRlcnNTZXJ2aWNlSW1wbChkaXNwYXRjaGVyKSk7XG4gIEFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5yZWdpc3RlclNlcnZpY2UobmV3IFNlbGVjdGlvblNlcnZpY2VJbXBsKGRpc3BhdGNoZXIpKTtcbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL1NlcnZpY2VzL1JlZ2lzdGVyQWxsU2hhcmVkU2VydmljZXMudHNcbiAqKi8iLCJpbXBvcnQge1xuICBEYXRhU2NoZW1hLFxuICBFeGVjdXRlUGFyYW1ldGVycyxcbiAgSW50ZXJuYWxBcGlEaXNwYXRjaGVyLFxuICBQYXJhbWV0ZXJJZCxcbiAgVmVyYklkXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XG5cbmltcG9ydCB7IERhdGFTb3VyY2VTZXJ2aWNlIH0gZnJvbSAnLi4vRGF0YVNvdXJjZVNlcnZpY2UnO1xuaW1wb3J0IHsgU2VydmljZU5hbWVzIH0gZnJvbSAnLi4vU2VydmljZVJlZ2lzdHJ5JztcblxuZXhwb3J0IGNsYXNzIERhdGFTb3VyY2VTZXJ2aWNlSW1wbCBpbXBsZW1lbnRzIERhdGFTb3VyY2VTZXJ2aWNlIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgX2Rpc3BhdGNoZXI6IEludGVybmFsQXBpRGlzcGF0Y2hlcikgeyB9XG5cbiAgcHVibGljIGdldCBzZXJ2aWNlTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBTZXJ2aWNlTmFtZXMuRGF0YVNvdXJjZVNlcnZpY2U7XG4gIH1cblxuICBwdWJsaWMgcmVmcmVzaEFzeW5jKGRhdGFTb3VyY2VJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcGFyYW1ldGVyczogRXhlY3V0ZVBhcmFtZXRlcnMgPSB7W1BhcmFtZXRlcklkLkRhdGFTb3VyY2VJZF06IGRhdGFTb3VyY2VJZH07XG5cbiAgICByZXR1cm4gdGhpcy5fZGlzcGF0Y2hlci5leGVjdXRlKFZlcmJJZC5SZWZyZXNoRGF0YVNvdXJjZSwgcGFyYW1ldGVycykudGhlbjx2b2lkPihyZXNwb25zZSA9PiB7XG4gICAgICByZXR1cm47XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGF0YVNvdXJjZXNBc3luYygpOiBQcm9taXNlPERhdGFTY2hlbWE+IHtcbiAgICByZXR1cm4gdGhpcy5fZGlzcGF0Y2hlci5leGVjdXRlKFZlcmJJZC5HZXREYXRhU291cmNlcywge30pLnRoZW48RGF0YVNjaGVtYT4ocmVzcG9uc2UgPT4ge1xuICAgICAgY29uc3QgZGF0YVNjaGVtYSA9IHJlc3BvbnNlLnJlc3VsdCBhcyBEYXRhU2NoZW1hO1xuICAgICAgcmV0dXJuIGRhdGFTY2hlbWE7XG4gICAgfSk7XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL1NlcnZpY2VzL2ltcGwvRGF0YVNvdXJjZVNlcnZpY2VJbXBsLnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcbmltcG9ydCAqIGFzIEludGVybmFsQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcbmltcG9ydCB7XG4gIENvbW1hbmRFcnJvcixcbiAgRXhlY3V0ZVBhcmFtZXRlcnMsXG4gIEZpbHRlclR5cGUsXG4gIEludGVybmFsQXBpRGlzcGF0Y2hlcixcbiAgUGFyYW1ldGVySWQsXG4gIFZlcmJJZCxcbiAgVmlzdWFsSWRcbn0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcbmltcG9ydCB7IFBhcmFtIH0gZnJvbSAnQHRhYmxlYXUvYXBpLXV0aWxzJztcblxuaW1wb3J0IHsgRXh0ZXJuYWxUb0ludGVybmFsRW51bU1hcHBpbmdzIGFzIEV4dGVybmFsRW51bUNvbnZlcnRlciB9IGZyb20gJy4uLy4uL0VudW1NYXBwaW5ncy9FeHRlcm5hbFRvSW50ZXJuYWxFbnVtTWFwcGluZ3MnO1xuaW1wb3J0IHsgSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzIGFzIEludGVybmFsRW51bUNvbnZlcnRlciB9IGZyb20gJy4uLy4uL0VudW1NYXBwaW5ncy9JbnRlcm5hbFRvRXh0ZXJuYWxFbnVtTWFwcGluZ3MnO1xuaW1wb3J0IHtcbiAgQ2F0ZWdvcmljYWxEb21haW4sXG4gIENhdGVnb3JpY2FsRmlsdGVyLFxuICBSYW5nZURvbWFpbixcbiAgUmFuZ2VGaWx0ZXIsXG4gIFJlbGF0aXZlRGF0ZUZpbHRlclxufSBmcm9tICcuLi8uLi9Nb2RlbHMvRmlsdGVyTW9kZWxzJztcbmltcG9ydCB7IERhdGFWYWx1ZSB9IGZyb20gJy4uLy4uL01vZGVscy9HZXREYXRhTW9kZWxzJztcblxuaW1wb3J0IHsgRmlsdGVyU2VydmljZSB9IGZyb20gJy4uL0ZpbHRlclNlcnZpY2UnO1xuaW1wb3J0IHsgU2VydmljZU5hbWVzIH0gZnJvbSAnLi4vU2VydmljZVJlZ2lzdHJ5JztcblxuZXhwb3J0IGNsYXNzIEZpbHRlclNlcnZpY2VJbXBsIGltcGxlbWVudHMgRmlsdGVyU2VydmljZSB7XG4gIHByaXZhdGUgX2Rpc3BhdGNoZXI6IEludGVybmFsQXBpRGlzcGF0Y2hlcjtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoZGlzcGF0Y2hlcjogSW50ZXJuYWxBcGlEaXNwYXRjaGVyKSB7XG4gICAgdGhpcy5fZGlzcGF0Y2hlciA9IGRpc3BhdGNoZXI7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlcnZpY2VOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFNlcnZpY2VOYW1lcy5GaWx0ZXI7XG4gIH1cblxuICBwdWJsaWMgYXBwbHlGaWx0ZXJBc3luYyhcbiAgICB2aXN1YWxJZDogVmlzdWFsSWQsXG4gICAgZmllbGROYW1lOiBzdHJpbmcsXG4gICAgdmFsdWVzOiBBcnJheTxzdHJpbmc+LFxuICAgIHVwZGF0ZVR5cGU6IENvbnRyYWN0LkZpbHRlclVwZGF0ZVR5cGUsXG4gICAgZmlsdGVyT3B0aW9uczogQ29udHJhY3QuRmlsdGVyT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICBpZiAoIVBhcmFtLmlzVmFsaWRFbnVtVmFsdWU8Q29udHJhY3QuRmlsdGVyVXBkYXRlVHlwZT4odXBkYXRlVHlwZSwgQ29udHJhY3QuRmlsdGVyVXBkYXRlVHlwZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHZhbHVlIGZvciBwYXJhbWV0ZXIgRmlsdGVyVXBkYXRlVHlwZScpO1xuICAgICAgfVxuICAgICAgY29uc3QgdmVyYiA9IFZlcmJJZC5BcHBseUNhdGVnb3JpY2FsRmlsdGVyO1xuICAgICAgY29uc3QgcGFyYW1ldGVyczogRXhlY3V0ZVBhcmFtZXRlcnMgPSB7fTtcbiAgICAgIHBhcmFtZXRlcnNbUGFyYW1ldGVySWQuVmlzdWFsSWRdID0gdmlzdWFsSWQ7XG4gICAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLkZpZWxkTmFtZV0gPSBmaWVsZE5hbWU7XG4gICAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLkZpbHRlclZhbHVlc10gPSB2YWx1ZXM7XG4gICAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLkZpbHRlclVwZGF0ZVR5cGVdID0gdXBkYXRlVHlwZTtcbiAgICAgIHBhcmFtZXRlcnNbUGFyYW1ldGVySWQuSXNFeGNsdWRlTW9kZV0gPVxuICAgICAgICAoZmlsdGVyT3B0aW9ucyA9PT0gdW5kZWZpbmVkIHx8IGZpbHRlck9wdGlvbnMuaXNFeGNsdWRlTW9kZSA9PT0gdW5kZWZpbmVkKSA/IGZhbHNlIDogZmlsdGVyT3B0aW9ucy5pc0V4Y2x1ZGVNb2RlO1xuXG4gICAgICByZXR1cm4gdGhpcy5fZGlzcGF0Y2hlci5leGVjdXRlKHZlcmIsIHBhcmFtZXRlcnMpLnRoZW48c3RyaW5nPihyZXNwb25zZSA9PiB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gcmVzcG9uc2UucmVzdWx0IGFzIENvbW1hbmRFcnJvcjtcbiAgICAgICAgaWYgKCEoZXJyb3IuZXJyb3JDb2RlID09PSBudWxsIHx8IGVycm9yLmVycm9yQ29kZSA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgICAgIC8vIFRPRE86IGNvbWUgYmFjayBhbmQgaW1wbGVtZW50IGVycm9yIGhhbmRsaW5nIGxvZ2ljXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvciBBcHBseWluZyBGaWx0ZXI6ICcgKyBlcnJvci5lcnJvckNvZGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWVsZE5hbWU7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgcHVibGljIGFwcGx5UmFuZ2VGaWx0ZXJBc3luYyh2aXN1YWxJZDogVmlzdWFsSWQsIGZpZWxkTmFtZTogc3RyaW5nLCBmaWx0ZXJPcHRpb25zOiBDb250cmFjdC5SYW5nZUZpbHRlck9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGlmICghZmlsdGVyT3B0aW9ucykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIFBhcmFtZXRlcjogUmFuZ2VGaWx0ZXJPcHRpb25zJyk7XG4gICAgfVxuICAgIFBhcmFtLnZlcmlmeVJhbmdlUGFyYW1UeXBlKGZpbHRlck9wdGlvbnMubWluLCBmaWx0ZXJPcHRpb25zLm1heCk7XG5cbiAgICBjb25zdCB2ZXJiID0gVmVyYklkLkFwcGx5UmFuZ2VGaWx0ZXI7XG4gICAgY29uc3QgcGFyYW1ldGVyczogRXhlY3V0ZVBhcmFtZXRlcnMgPSB7fTtcblxuICAgIGlmIChmaWx0ZXJPcHRpb25zLm1pbikge1xuICAgICAgbGV0IG1pbjogc3RyaW5nIHwgbnVtYmVyO1xuICAgICAgaWYgKGZpbHRlck9wdGlvbnMubWluIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICBtaW4gPSBQYXJhbS5zZXJpYWxpemVEYXRlRm9yUGxhdGZvcm0oZmlsdGVyT3B0aW9ucy5taW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWluID0gZmlsdGVyT3B0aW9ucy5taW47XG4gICAgICB9XG4gICAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLkZpbHRlclJhbmdlTWluXSA9IG1pbjtcbiAgICB9XG5cbiAgICBpZiAoZmlsdGVyT3B0aW9ucy5tYXgpIHtcbiAgICAgIGxldCBtYXg6IHN0cmluZyB8IG51bWJlcjtcbiAgICAgIGlmIChmaWx0ZXJPcHRpb25zLm1heCBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgbWF4ID0gUGFyYW0uc2VyaWFsaXplRGF0ZUZvclBsYXRmb3JtKGZpbHRlck9wdGlvbnMubWF4KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1heCA9IGZpbHRlck9wdGlvbnMubWF4O1xuICAgICAgfVxuICAgICAgcGFyYW1ldGVyc1tQYXJhbWV0ZXJJZC5GaWx0ZXJSYW5nZU1heF0gPSBtYXg7XG4gICAgfVxuXG4gICAgaWYgKGZpbHRlck9wdGlvbnMubnVsbE9wdGlvbikge1xuICAgICAgaWYgKCFQYXJhbS5pc1ZhbGlkRW51bVZhbHVlPENvbnRyYWN0LkZpbHRlck51bGxPcHRpb24+KGZpbHRlck9wdGlvbnMubnVsbE9wdGlvbiwgQ29udHJhY3QuRmlsdGVyTnVsbE9wdGlvbikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHZhbHVlIGZvciBwYXJhbWV0ZXIgTnVsbE9wdGlvbicpO1xuICAgICAgfVxuICAgICAgcGFyYW1ldGVyc1tQYXJhbWV0ZXJJZC5GaWx0ZXJSYW5nZU51bGxPcHRpb25dID0gRXh0ZXJuYWxFbnVtQ29udmVydGVyLm51bGxPcHRpb25zLmNvbnZlcnQoZmlsdGVyT3B0aW9ucy5udWxsT3B0aW9uKTtcbiAgICB9XG4gICAgcGFyYW1ldGVyc1tQYXJhbWV0ZXJJZC5GaWVsZE5hbWVdID0gZmllbGROYW1lO1xuICAgIHBhcmFtZXRlcnNbUGFyYW1ldGVySWQuVmlzdWFsSWRdID0gdmlzdWFsSWQ7XG5cbiAgICByZXR1cm4gdGhpcy5fZGlzcGF0Y2hlci5leGVjdXRlKHZlcmIsIHBhcmFtZXRlcnMpLnRoZW48c3RyaW5nPihyZXNwb25zZSA9PiB7XG4gICAgICByZXR1cm4gZmllbGROYW1lO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGNsZWFyRmlsdGVyQXN5bmModmlzdWFsSWQ6IFZpc3VhbElkLCBmaWVsZE5hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgdmVyYiA9IFZlcmJJZC5DbGVhckZpbHRlcjtcbiAgICBsZXQgcGFyYW1ldGVyczogRXhlY3V0ZVBhcmFtZXRlcnMgPSB7fTtcbiAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLlZpc3VhbElkXSA9IHZpc3VhbElkO1xuICAgIHBhcmFtZXRlcnNbUGFyYW1ldGVySWQuRmllbGROYW1lXSA9IGZpZWxkTmFtZTtcbiAgICByZXR1cm4gdGhpcy5fZGlzcGF0Y2hlci5leGVjdXRlKHZlcmIsIHBhcmFtZXRlcnMpLnRoZW48c3RyaW5nPihyZXNwb3NuZSA9PiB7XG4gICAgICByZXR1cm4gZmllbGROYW1lO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldEZpbHRlcnNBc3luYyh2aXN1YWxJZDogVmlzdWFsSWQpOiBQcm9taXNlPENvbnRyYWN0LkZpbHRlcltdPiB7XG4gICAgY29uc3QgdmVyYiA9IFZlcmJJZC5HZXRGaWx0ZXJzO1xuICAgIGxldCBwYXJhbWV0ZXJzOiBFeGVjdXRlUGFyYW1ldGVycyA9IHt9O1xuICAgIHBhcmFtZXRlcnNbUGFyYW1ldGVySWQuVmlzdWFsSWRdID0gdmlzdWFsSWQ7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc3BhdGNoZXIuZXhlY3V0ZSh2ZXJiLCBwYXJhbWV0ZXJzKS50aGVuPENvbnRyYWN0LkZpbHRlcltdPihyZXNwb25zZSA9PiB7XG4gICAgICBsZXQgZmlsdGVycyA9IHJlc3BvbnNlLnJlc3VsdCBhcyBJbnRlcm5hbENvbnRyYWN0LkZpbHRlcltdO1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydERvbWFpbkZpbHRlcnMoZmlsdGVycyk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2F0ZWdvcmljYWxEb21haW5Bc3luYyhcbiAgICB3b3Jrc2hlZXROYW1lOiBzdHJpbmcsXG4gICAgZmllbGRJZDogc3RyaW5nLFxuICAgIGRvbWFpblR5cGU6IENvbnRyYWN0LkZpbHRlckRvbWFpblR5cGUpOiBQcm9taXNlPENvbnRyYWN0LkNhdGVnb3JpY2FsRG9tYWluPiB7XG4gICAgaWYgKCFQYXJhbS5pc1ZhbGlkRW51bVZhbHVlPENvbnRyYWN0LkZpbHRlckRvbWFpblR5cGU+KGRvbWFpblR5cGUsIENvbnRyYWN0LkZpbHRlckRvbWFpblR5cGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdmFsdWUgZm9yIHBhcmFtZXRlciBGaWx0ZXJEb21haW5UeXBlJyk7XG4gICAgfVxuICAgIGNvbnN0IHZlcmIgPSBWZXJiSWQuR2V0Q2F0ZWdvcmljYWxEb21haW47XG4gICAgbGV0IHBhcmFtZXRlcnM6IEV4ZWN1dGVQYXJhbWV0ZXJzID0ge307XG4gICAgcGFyYW1ldGVyc1tQYXJhbWV0ZXJJZC5WaXN1YWxJZF0gPSB7XG4gICAgICB3b3Jrc2hlZXQ6IHdvcmtzaGVldE5hbWVcbiAgICB9O1xuICAgIHBhcmFtZXRlcnNbUGFyYW1ldGVySWQuRmllbGRJZF0gPSBmaWVsZElkO1xuICAgIHBhcmFtZXRlcnNbUGFyYW1ldGVySWQuRG9tYWluVHlwZV0gPSBkb21haW5UeXBlO1xuICAgIHJldHVybiB0aGlzLl9kaXNwYXRjaGVyLmV4ZWN1dGUodmVyYiwgcGFyYW1ldGVycykudGhlbjxDb250cmFjdC5DYXRlZ29yaWNhbERvbWFpbj4ocmVzcG9uc2UgPT4ge1xuICAgICAgbGV0IGRvbWFpbiA9IHJlc3BvbnNlLnJlc3VsdCBhcyBJbnRlcm5hbENvbnRyYWN0LkNhdGVnb3JpY2FsRG9tYWluO1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydENhdGVnb3JpY2FsRG9tYWluKGRvbWFpbiwgZG9tYWluVHlwZSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UmFuZ2VEb21haW5Bc3luYyh3b3Jrc2hlZXROYW1lOiBzdHJpbmcsIGZpZWxkSWQ6IHN0cmluZywgZG9tYWluVHlwZTogQ29udHJhY3QuRmlsdGVyRG9tYWluVHlwZSk6IFByb21pc2U8Q29udHJhY3QuUmFuZ2VEb21haW4+IHtcbiAgICBpZiAoIVBhcmFtLmlzVmFsaWRFbnVtVmFsdWU8Q29udHJhY3QuRmlsdGVyRG9tYWluVHlwZT4oZG9tYWluVHlwZSwgQ29udHJhY3QuRmlsdGVyRG9tYWluVHlwZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB2YWx1ZSBmb3IgcGFyYW1ldGVyIEZpbHRlckRvbWFpblR5cGUnKTtcbiAgICB9XG4gICAgY29uc3QgdmVyYiA9IFZlcmJJZC5HZXRSYW5nZURvbWFpbjtcbiAgICBsZXQgcGFyYW1ldGVyczogRXhlY3V0ZVBhcmFtZXRlcnMgPSB7fTtcbiAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLlZpc3VhbElkXSA9IHtcbiAgICAgIHdvcmtzaGVldDogd29ya3NoZWV0TmFtZVxuICAgIH07XG4gICAgcGFyYW1ldGVyc1tQYXJhbWV0ZXJJZC5GaWVsZElkXSA9IGZpZWxkSWQ7XG4gICAgcGFyYW1ldGVyc1tQYXJhbWV0ZXJJZC5Eb21haW5UeXBlXSA9IEV4dGVybmFsRW51bUNvbnZlcnRlci5maWx0ZXJEb21haW5UeXBlLmNvbnZlcnQoZG9tYWluVHlwZSk7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc3BhdGNoZXIuZXhlY3V0ZSh2ZXJiLCBwYXJhbWV0ZXJzKS50aGVuPENvbnRyYWN0LlJhbmdlRG9tYWluPihyZXNwb25zZSA9PiB7XG4gICAgICBsZXQgZG9tYWluID0gcmVzcG9uc2UucmVzdWx0IGFzIEludGVybmFsQ29udHJhY3QuUmFuZ2VEb21haW47XG5cbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRSYW5nZURvbWFpbihkb21haW4sIGRvbWFpblR5cGUpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gSGVscGVyIE1ldGhvZHNcbiAgcHJpdmF0ZSBjb252ZXJ0RG9tYWluRmlsdGVycyhkb21haW5GaWx0ZXJzOiBJbnRlcm5hbENvbnRyYWN0LkZpbHRlcltdKTogQ29udHJhY3QuRmlsdGVyW10ge1xuICAgIGxldCBmaWx0ZXJzOiBDb250cmFjdC5GaWx0ZXJbXSA9IFtdO1xuICAgIGRvbWFpbkZpbHRlcnMuZm9yRWFjaChkb21haW5GaWx0ZXIgPT4ge1xuICAgICAgc3dpdGNoIChkb21haW5GaWx0ZXIuZmlsdGVyVHlwZSkge1xuICAgICAgICBjYXNlIEZpbHRlclR5cGUuQ2F0ZWdvcmljYWw6IHtcbiAgICAgICAgICBsZXQgZmlsdGVyID0gZG9tYWluRmlsdGVyIGFzIEludGVybmFsQ29udHJhY3QuQ2F0ZWdvcmljYWxGaWx0ZXI7XG4gICAgICAgICAgaWYgKGZpbHRlcikge1xuICAgICAgICAgICAgZmlsdGVycy5wdXNoKHRoaXMuY29udmVydENhdGVnb3JpY2FsRmlsdGVyKGZpbHRlcikpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgQ2F0ZWdvcmljYWwgRmlsdGVyJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FzZSBGaWx0ZXJUeXBlLlJhbmdlOiB7XG4gICAgICAgICAgbGV0IGZpbHRlciA9IGRvbWFpbkZpbHRlciBhcyBJbnRlcm5hbENvbnRyYWN0LlJhbmdlRmlsdGVyO1xuICAgICAgICAgIGlmIChmaWx0ZXIpIHtcbiAgICAgICAgICAgIGZpbHRlcnMucHVzaCh0aGlzLmNvbnZlcnRSYW5nZUZpbHRlcihmaWx0ZXIpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFJhbmdlIEZpbHRlcicpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgRmlsdGVyVHlwZS5SZWxhdGl2ZURhdGU6IHtcbiAgICAgICAgICBsZXQgZmlsdGVyID0gZG9tYWluRmlsdGVyIGFzIEludGVybmFsQ29udHJhY3QuUmVsYXRpdmVEYXRlRmlsdGVyO1xuICAgICAgICAgIGlmIChmaWx0ZXIpIHtcbiAgICAgICAgICAgIGZpbHRlcnMucHVzaCh0aGlzLmNvbnZlcnRSZWxhdGl2ZURhdGVGaWx0ZXIoZmlsdGVyKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBSZWxhdGl2ZSBEYXRlIEZpbHRlcicpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBmaWx0ZXJzO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0Q2F0ZWdvcmljYWxGaWx0ZXIoZG9tYWluRmlsdGVyOiBJbnRlcm5hbENvbnRyYWN0LkNhdGVnb3JpY2FsRmlsdGVyKTogQ29udHJhY3QuQ2F0ZWdvcmljYWxGaWx0ZXIge1xuICAgIGxldCBhcHBsaWVkVmFsdWVzOiBDb250cmFjdC5EYXRhVmFsdWVbXSA9IGRvbWFpbkZpbHRlci52YWx1ZXMubWFwKGR2ID0+IHtcbiAgICAgIHJldHVybiBuZXcgRGF0YVZhbHVlKGR2LnZhbHVlLCBkdi5mb3JtYXR0ZWRWYWx1ZSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmV3IENhdGVnb3JpY2FsRmlsdGVyKFxuICAgICAgZG9tYWluRmlsdGVyLnZpc3VhbElkLndvcmtzaGVldCxcbiAgICAgIGRvbWFpbkZpbHRlci5maWVsZENhcHRpb24sXG4gICAgICBkb21haW5GaWx0ZXIuZmllbGROYW1lLFxuICAgICAgQ29udHJhY3QuRmlsdGVyVHlwZS5DYXRlZ29yaWNhbCxcbiAgICAgIGFwcGxpZWRWYWx1ZXMsXG4gICAgICBkb21haW5GaWx0ZXIuaXNFeGNsdWRlKTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydFJhbmdlRmlsdGVyKGRvbWFpbkZpbHRlcjogSW50ZXJuYWxDb250cmFjdC5SYW5nZUZpbHRlcik6IENvbnRyYWN0LlJhbmdlRmlsdGVyIHtcbiAgICBsZXQgbWluVmFsdWU6IERhdGFWYWx1ZSA9IG5ldyBEYXRhVmFsdWUoZG9tYWluRmlsdGVyLm1pbi52YWx1ZSwgZG9tYWluRmlsdGVyLm1pbi5mb3JtYXR0ZWRWYWx1ZSk7XG4gICAgbGV0IG1heFZhbHVlOiBEYXRhVmFsdWUgPSBuZXcgRGF0YVZhbHVlKGRvbWFpbkZpbHRlci5tYXgudmFsdWUsIGRvbWFpbkZpbHRlci5tYXguZm9ybWF0dGVkVmFsdWUpO1xuICAgIHJldHVybiBuZXcgUmFuZ2VGaWx0ZXIoXG4gICAgICBkb21haW5GaWx0ZXIudmlzdWFsSWQud29ya3NoZWV0LFxuICAgICAgZG9tYWluRmlsdGVyLmZpZWxkQ2FwdGlvbixcbiAgICAgIGRvbWFpbkZpbHRlci5maWVsZE5hbWUsXG4gICAgICBDb250cmFjdC5GaWx0ZXJUeXBlLlJhbmdlLFxuICAgICAgbWluVmFsdWUsXG4gICAgICBtYXhWYWx1ZSxcbiAgICAgIGRvbWFpbkZpbHRlci5pbmNsdWRlTnVsbFZhbHVlc1xuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRSZWxhdGl2ZURhdGVGaWx0ZXIoZG9tYWluRmlsdGVyOiBJbnRlcm5hbENvbnRyYWN0LlJlbGF0aXZlRGF0ZUZpbHRlcik6IENvbnRyYWN0LlJlbGF0aXZlRGF0ZUZpbHRlciB7XG4gICAgbGV0IGFuY2hvckRhdGVWYWx1ZTogRGF0YVZhbHVlID0gbmV3IERhdGFWYWx1ZShkb21haW5GaWx0ZXIuYW5jaG9yRGF0ZS52YWx1ZSwgZG9tYWluRmlsdGVyLmFuY2hvckRhdGUuZm9ybWF0dGVkVmFsdWUpO1xuICAgIHJldHVybiBuZXcgUmVsYXRpdmVEYXRlRmlsdGVyIChcbiAgICAgIGRvbWFpbkZpbHRlci52aXN1YWxJZC53b3Jrc2hlZXQsXG4gICAgICBkb21haW5GaWx0ZXIuZmllbGRDYXB0aW9uLFxuICAgICAgZG9tYWluRmlsdGVyLmZpZWxkTmFtZSxcbiAgICAgIENvbnRyYWN0LkZpbHRlclR5cGUuUmVsYXRpdmVEYXRlLFxuICAgICAgYW5jaG9yRGF0ZVZhbHVlLFxuICAgICAgSW50ZXJuYWxFbnVtQ29udmVydGVyLmRhdGVTdGVwUGVyaW9kLmNvbnZlcnQoZG9tYWluRmlsdGVyLnBlcmlvZFR5cGUpLFxuICAgICAgSW50ZXJuYWxFbnVtQ29udmVydGVyLmRhdGVSYW5nZVR5cGUuY29udmVydChkb21haW5GaWx0ZXIucmFuZ2VUeXBlKSxcbiAgICAgIGRvbWFpbkZpbHRlci5yYW5nZU5cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0Q2F0ZWdvcmljYWxEb21haW4oXG4gICAgZG9tYWluOiBJbnRlcm5hbENvbnRyYWN0LkNhdGVnb3JpY2FsRG9tYWluLFxuICAgIGRvbWFpblR5cGU6IENvbnRyYWN0LkZpbHRlckRvbWFpblR5cGUpOiBDb250cmFjdC5DYXRlZ29yaWNhbERvbWFpbiB7XG4gICAgbGV0IHZhbHVlczogRGF0YVZhbHVlW10gPSBkb21haW4udmFsdWVzLm1hcCgoZG9tYWluRHYpID0+IHtcbiAgICAgIHJldHVybiBuZXcgRGF0YVZhbHVlKGRvbWFpbkR2LnZhbHVlLCBkb21haW5Edi5mb3JtYXR0ZWRWYWx1ZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIG5ldyBDYXRlZ29yaWNhbERvbWFpbih2YWx1ZXMsIGRvbWFpblR5cGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0UmFuZ2VEb21haW4oZG9tYWluOiBJbnRlcm5hbENvbnRyYWN0LlJhbmdlRG9tYWluLCBkb21haW5UeXBlOiBDb250cmFjdC5GaWx0ZXJEb21haW5UeXBlKTogQ29udHJhY3QuUmFuZ2VEb21haW4ge1xuICAgIGxldCBtaW46IERhdGFWYWx1ZSA9IG5ldyBEYXRhVmFsdWUoZG9tYWluLm1pbi52YWx1ZSwgZG9tYWluLm1pbi5mb3JtYXR0ZWRWYWx1ZSk7XG4gICAgbGV0IG1heDogRGF0YVZhbHVlID0gbmV3IERhdGFWYWx1ZShkb21haW4ubWF4LnZhbHVlLCBkb21haW4ubWF4LmZvcm1hdHRlZFZhbHVlKTtcbiAgICByZXR1cm4gbmV3IFJhbmdlRG9tYWluKFxuICAgICAgbWluLFxuICAgICAgbWF4LFxuICAgICAgZG9tYWluVHlwZVxuICAgICk7XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL1NlcnZpY2VzL2ltcGwvRmlsdGVyU2VydmljZUltcGwudHNcbiAqKi8iLCIvKipcbiAqIFRoaXMgaXMgeW91ciBtYWluLiBUaGlzIGlzIHdoZXJlIHlvdSByZS1leHBvcnQgZXZlcnl0aGluZyB5b3Ugd2FudCB0byBiZSBwdWJsaWNseSBhdmFpbGFibGUuXG4gKlxuICogVGhlIGJ1aWxkIGVuZm9yY2VzIHRoYXQgdGhlIGZpbGUgaGFzIHRoZSBzYW1lIG5hbWUgYXMgdGhlIGdsb2JhbCB2YXJpYWJsZSB0aGF0IGlzIGV4cG9ydGVkLlxuICovXG5cbmV4cG9ydCB7IEVudW1Db252ZXJ0ZXIgfSBmcm9tICcuL0VudW1Db252ZXJ0ZXInO1xuZXhwb3J0IHsgUGFyYW0gfSBmcm9tICcuL1BhcmFtJztcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS11dGlscy9zcmMvQXBpVXRpbHMudHNcbiAqKi8iLCIvKipcbiAqIFRoaXMgY2xhc3MgY29udmVydHMgZnJvbSBhIHNvdXJjZSBlbnVtIHZhbHVlIHRvIGRlc3RpbmF0aW9uIGVudW1cbiAqIHZhbHVlIGdpdmVuIGEgbWFwcGluZyBmcm9tIHNvdXJjZSB0byBkZXN0aW5hdGlvbiB3aGVuIGNvbnN0cnVjdGVkLlxuICovXG5leHBvcnQgY2xhc3MgRW51bUNvbnZlcnRlcjxUU291cmNlVHlwZSBleHRlbmRzIHN0cmluZywgVERlc3RpbmF0aW9uVHlwZT4ge1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfbWFwcGluZ3M6IHsgW2VudW1WYWw6IHN0cmluZ106IFREZXN0aW5hdGlvblR5cGU7IH0sXG4gICAgcHJpdmF0ZSBfZGVmYXVsdFZhbD86IFREZXN0aW5hdGlvblR5cGUpIHsgfVxuXG4gIHB1YmxpYyBjb252ZXJ0KGVudW1WYWw6IFRTb3VyY2VUeXBlLCB0aHJvd0lmTWlzc2luZz86IGJvb2xlYW4pOiBURGVzdGluYXRpb25UeXBlIHtcbiAgICBpZiAodGhpcy5fbWFwcGluZ3MuaGFzT3duUHJvcGVydHkoZW51bVZhbCkpIHtcbiAgICAgIHJldHVybiB0aGlzLl9tYXBwaW5nc1tlbnVtVmFsIGFzIHN0cmluZ107XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2RlZmF1bHRWYWwgIT09IHVuZGVmaW5lZCAmJiAhdGhyb3dJZk1pc3NpbmcpIHtcbiAgICAgIHJldHVybiB0aGlzLl9kZWZhdWx0VmFsO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcignTWFwcGluZyBub3QgZm91bmQgZm9yICcgKyBlbnVtVmFsKTtcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLXV0aWxzL3NyYy9FbnVtQ29udmVydGVyLnRzXG4gKiovIiwiZXhwb3J0IGNsYXNzIFBhcmFtIHtcbiAgLyoqXG4gICAqIFZlcmlmaWVzIHRoYXQgYW4gaW5jb21pbmcgcGFyYW1ldGVyIGlzICd0cnV0aHknIGFuZCB0aHJvd3NcbiAgICogYW4gZXJyb3IgaWYgaXQncyBub3QuIFRoaXMgd2lsbCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgdmFsdWVcbiAgICogaXMgbnVsbCwgdW5kZWZpbmVkLCBOYU4sIHRoZSBlbXB0eSBzdHJpbmcsIDAsIG9yIGZhbHNlLlxuICAgKlxuICAgKiBAcGFyYW0gYXJndW1lbnRWYWx1ZSB2YWx1ZSB0byB2ZXJpZnlcbiAgICogQHBhcmFtIGFyZ3VtZW50TmFtZSBuYW1lIG9mIGFyZ3VtZW50IHRvIHZlcmlmeVxuICAgKi9cbiAgLyp0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgKi9cbiAgcHVibGljIHN0YXRpYyB2ZXJpZnlWYWx1ZShhcmd1bWVudFZhbHVlOiBhbnksIGFyZ3VtZW50TmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFhcmd1bWVudFZhbHVlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZhbHVlIGlzIGludmFsaWQgZm9yIGFyZ3VtZW50OiAnICsgYXJndW1lbnROYW1lKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpZXMgdGhhdCBhIHN0cmluZyBpcyB2YWxpZC4gIFRocm93cyBhbiBlcnJvciBpZiB0aGUgc3RyaW5nIGlzXG4gICAqIG51bGwsIHVuZGVmaW5lZCwgb3IgTmFOLlxuICAgKlxuICAgKiBAcGFyYW0gYXJndW1lbnRWYWx1ZSB2YWx1ZSB0byB2ZXJpZnlcbiAgICogQHBhcmFtIGFyZ3VtZW50TmFtZSBuYW1lIG9mIGFyZ3VtZW50IHRvIHZlcmlmeVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB2ZXJpZnlTdHJpbmcoYXJndW1lbnRWYWx1ZTogc3RyaW5nLCBhcmd1bWVudE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChhcmd1bWVudFZhbHVlID09PSBudWxsIHx8IGFyZ3VtZW50VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTdHJpbmcgdmFsdWUgaXMgaW52YWxpZCBmb3IgYXJndW1lbnQ6ICcgKyBhcmd1bWVudE5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmllcyB0aGUgdmFsdWUgaXMgcGFydCBvZiB0aGUgRW51bVxuICAgKlxuICAgKiBTdHJpbmcgZW51bXMgYXJlIHtzdHJpbmcgOiBzdHJpbmd9IGRpY3Rpb25hcmllcyB3aGljaCBhcmUgbm90IHJldmVyc2UgbWFwcGFibGVcbiAgICogVGhpcyBpcyBhbiB1Z2x5IHdvcmthcm91bmRcbiAgICogQHBhcmFtIHZhbHVlIHZhbHVlIHRvIHZlcmlmeVxuICAgKiBAcGFyYW0gZW51bVR5cGUgZW51bSB0byB2ZXJpZnkgYWdhaW5zdFxuICAgKi9cbiAgLyogdHNsaW50OmRpc2FibGU6bm8tYW55ICovXG4gIHB1YmxpYyBzdGF0aWMgaXNWYWxpZEVudW1WYWx1ZTxFbnVtVHlwZT4odmFsdWU6IEVudW1UeXBlLCBlbnVtVHlwZTogYW55KTogYm9vbGVhbiB7XG4gICAgbGV0IGlzVmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBPYmplY3Qua2V5cyhlbnVtVHlwZSkuZm9yRWFjaCgoZW51bUtleSkgPT4ge1xuICAgICAgaWYgKGVudW1UeXBlW2VudW1LZXldID09PSB2YWx1ZS50b1N0cmluZygpKSB7XG4gICAgICAgIGlzVmFsaWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBpc1ZhbGlkO1xuICB9XG4gIC8qIHRzbGludDplbmFibGU6bm8tYW55ICovXG5cbiAgLyoqXG4gICAqIHNlcmlhbGl6ZXMgdGhlIGRhdGUgaW50byB0aGUgZm9ybWF0IHRoYXQgdGhlIHNlcnZlciBleHBlY3RzLlxuICAgKiBAcGFyYW0gZGF0ZSB0aGUgZGF0ZSB0byBzZXJpYWxpemVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc2VyaWFsaXplRGF0ZUZvclBsYXRmb3JtKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgIGNvbnN0IHllYXI6IG51bWJlciA9IGRhdGUuZ2V0VVRDRnVsbFllYXIoKTtcbiAgICBjb25zdCBtb250aDogbnVtYmVyID0gZGF0ZS5nZXRVVENNb250aCgpICsgMTtcbiAgICBjb25zdCBkYXk6IG51bWJlciA9IGRhdGUuZ2V0VVRDRGF0ZSgpO1xuICAgIGNvbnN0IGhoOiBudW1iZXIgPSBkYXRlLmdldFVUQ0hvdXJzKCk7XG4gICAgY29uc3QgbW06IG51bWJlciA9IGRhdGUuZ2V0VVRDTWludXRlcygpO1xuICAgIGNvbnN0IHNlYzogbnVtYmVyID0gZGF0ZS5nZXRVVENTZWNvbmRzKCk7XG4gICAgcmV0dXJuIHllYXIgKyAnLScgKyBtb250aCArICctJyArIGRheSArICcgJyArIGhoICsgJzonICsgbW0gKyAnOicgKyBzZWM7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHNlcmlhbGl6ZUJvb2xlYW5Gb3JQbGF0Zm9ybShib29sOiBib29sZWFuKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYm9vbCA/ICd0cnVlJyA6ICdmYWxzZSc7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHNlcmlhbGl6ZU51bWJlckZvclBsYXRmb3JtKG51bTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbnVtLnRvU3RyaW5nKDEwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmllcyB0aGUgcGFyYW1zIG1pbiBhbmQgbWF4IGZvciBhcHBseWluZyByYW5nZSBmaWx0ZXJcbiAgICogQHBhcmFtIG1pbiByYW5nZSBtaW5cbiAgICogQHBhcmFtIG1heCByYW5nZSBtYXhcbiAgICovXG4gIC8qIHRzbGludDpkaXNhYmxlOm5vLWFueSAqL1xuICBwdWJsaWMgc3RhdGljIHZlcmlmeVJhbmdlUGFyYW1UeXBlKG1pbjogYW55LCBtYXg6IGFueSk6IHZvaWQge1xuICAvKiB0c2xpbnQ6ZW5hYmxlOm5vLWFueSAqL1xuICAgIGlmICghbWluICYmICFtYXgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBQYXJhbWV0ZXI6IEF0IGxlYXN0IG9uZSBvZiBtaW4gb3IgbWF4IGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgaWYgKCFQYXJhbS5pc1R5cGVOdW1iZXIobWluKSAmJiAhUGFyYW0uaXNUeXBlRGF0ZShtaW4pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgUGFyYW1ldGVyIFR5cGU6IE9ubHkgRGF0ZSBhbmQgbnVtYmVyIGFyZSBhbGxvd2VkIGZvciBwYXJhbWV0ZXIgbWluJyk7XG4gICAgfVxuXG4gICAgaWYgKCFQYXJhbS5pc1R5cGVOdW1iZXIobWF4KSAmJiAhUGFyYW0uaXNUeXBlRGF0ZShtYXgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgUGFyYW1ldGVyIFR5cGU6IE9ubHkgRGF0ZSBhbmQgbnVtYmVyIGFyZSBhbGxvd2VkIGZvciBwYXJhbWV0ZXIgbWF4Jyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZihtaW4pICE9PSB0eXBlb2YobWF4KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFBhcmFtZXRlciBUeXBlOiBQYXJhbWV0ZXJzIG1pbiBhbmQgbWF4IHNob3VsZCBiZSBvZiB0aGUgc2FtZSB0eXBlJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIHRoZSBpbnB1dCBpcyBhIG51bWJlclxuICAgKi9cbiAgLyogdHNsaW50OmRpc2FibGU6bm8tYW55ICovXG4gIHB1YmxpYyBzdGF0aWMgaXNUeXBlTnVtYmVyKGlucHV0OiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mKGlucHV0KSA9PT0gJ251bWJlcicgfHwgaW5wdXQgaW5zdGFuY2VvZiBOdW1iZXI7XG4gIH1cbiAgLyogdHNsaW50OmVuYWJsZTpuby1hbnkgKi9cblxuICAvKipcbiAgICogVmVyaWZpZXMgdGhlIGlucHV0IGlzIGEgRGF0ZVxuICAgKi9cbiAgLyogdHNsaW50OmRpc2FibGU6bm8tYW55ICovXG4gIHB1YmxpYyBzdGF0aWMgaXNUeXBlRGF0ZShpbnB1dDogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlucHV0IGluc3RhbmNlb2YgRGF0ZTtcbiAgfVxuICAvKiB0c2xpbnQ6ZW5hYmxlOm5vLWFueSAqL1xuXG4gIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnkgKi9cbiAgcHVibGljIHN0YXRpYyBpc1R5cGVTdHJpbmcoaW5wdXQ6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YoaW5wdXQpID09PSAnc3RyaW5nJyB8fCBpbnB1dCBpbnN0YW5jZW9mIFN0cmluZztcbiAgfVxuXG4gIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnkgKi9cbiAgcHVibGljIHN0YXRpYyBpc1R5cGVCb29sKGlucHV0OiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mKGlucHV0KSA9PT0gJ2Jvb2xlYW4nIHx8IGlucHV0IGluc3RhbmNlb2YgQm9vbGVhbjtcbiAgfVxuXG4gIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnkgKi9cbiAgcHVibGljIHN0YXRpYyBzZXJpYWxpemVQYXJhbXRlclZhbHVlKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmIChQYXJhbS5pc1R5cGVOdW1iZXIodmFsdWUpKSB7XG4gICAgICByZXR1cm4gUGFyYW0uc2VyaWFsaXplTnVtYmVyRm9yUGxhdGZvcm0odmFsdWUgYXMgbnVtYmVyKTtcbiAgICB9IGVsc2UgaWYgKFBhcmFtLmlzVHlwZURhdGUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gUGFyYW0uc2VyaWFsaXplRGF0ZUZvclBsYXRmb3JtKHZhbHVlIGFzIERhdGUpO1xuICAgIH0gZWxzZSBpZiAoUGFyYW0uaXNUeXBlQm9vbCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBQYXJhbS5zZXJpYWxpemVCb29sZWFuRm9yUGxhdGZvcm0odmFsdWUgYXMgYm9vbGVhbik7XG4gICAgfSBlbHNlIGlmIChQYXJhbS5pc1R5cGVTdHJpbmcodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVmFsdWUgaXMgaW52YWxpZCBmb3IgYXJndW1lbnQ6IHZhbHVlJyk7XG4gICAgfVxuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktdXRpbHMvc3JjL1BhcmFtLnRzXG4gKiovIiwiaW1wb3J0IHtcbiAgRmlsdGVyRG9tYWluVHlwZSBhcyBFeHRlcm5hbERvbWFpblR5cGUsXG4gIEZpbHRlck51bGxPcHRpb24gYXMgRXh0ZXJuYWxOdWxsT3B0aW9uXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XG5pbXBvcnQge1xuICBGaWx0ZXJEb21haW5UeXBlIGFzIEludGVybmFsRG9tYWluVHlwZSxcbiAgRmlsdGVyTnVsbE9wdGlvbiBhcyBJbnRlcm5hbE51bGxPcHRpb25cbn0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcblxuaW1wb3J0IHsgRW51bUNvbnZlcnRlciB9IGZyb20gJ0B0YWJsZWF1L2FwaS11dGlscyc7XG5cbi8qIHRzbGludDpkaXNhYmxlOnR5cGVkZWYgLSBEaXNhYmxlIHRoaXMgdG8gbWFrZSBkZWNsYXJpbmcgdGhlc2UgY2xhc3NlcyBhIGJpdCBlYXNpZXIgKi9cbi8qKlxuICogTWFwcyBlbnVtcyB1c2VkIGJ5IHRoZSBleHRlcm5hbC1hcGktY29udHJhY3QgdG8gdGhlIGVudW1zIHVzZWRcbiAqIGluIHRoZSBpbnRlcm5hbC1hcGktY29udHJhY3QsIHdoaWNoIGRldmVsb3BlcnMgY29kZSBhZ2FpbnN0LlxuICovXG5leHBvcnQgY2xhc3MgRXh0ZXJuYWxUb0ludGVybmFsRW51bU1hcHBpbmdzIHtcbiAgcHVibGljIHN0YXRpYyBudWxsT3B0aW9ucyA9IG5ldyBFbnVtQ29udmVydGVyPEV4dGVybmFsTnVsbE9wdGlvbiwgSW50ZXJuYWxOdWxsT3B0aW9uPih7XG4gICAgW0V4dGVybmFsTnVsbE9wdGlvbi5BbGxWYWx1ZXNdOiBJbnRlcm5hbE51bGxPcHRpb24uQWxsVmFsdWVzLFxuICAgIFtFeHRlcm5hbE51bGxPcHRpb24uTm9uTnVsbFZhbHVlc106IEludGVybmFsTnVsbE9wdGlvbi5Ob25OdWxsVmFsdWVzLFxuICAgIFtFeHRlcm5hbE51bGxPcHRpb24uTm9uTnVsbFZhbHVlc106IEludGVybmFsTnVsbE9wdGlvbi5OdWxsVmFsdWVzXG4gIH0pO1xuXG4gIHB1YmxpYyBzdGF0aWMgZmlsdGVyRG9tYWluVHlwZSA9IG5ldyBFbnVtQ29udmVydGVyPEV4dGVybmFsRG9tYWluVHlwZSwgSW50ZXJuYWxEb21haW5UeXBlPih7XG4gICAgW0V4dGVybmFsRG9tYWluVHlwZS5SZWxldmFudF06IEludGVybmFsRG9tYWluVHlwZS5SZWxldmFudCxcbiAgICBbRXh0ZXJuYWxEb21haW5UeXBlLkRhdGFiYXNlXTogSW50ZXJuYWxEb21haW5UeXBlLkRhdGFiYXNlXG4gIH0pO1xufVxuLyogdHNsaW50OmVuYWJsZTp0eXBlZGVmICovXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9FbnVtTWFwcGluZ3MvRXh0ZXJuYWxUb0ludGVybmFsRW51bU1hcHBpbmdzLnRzXG4gKiovIiwiaW1wb3J0IHtcbiAgQ29sdW1uVHlwZSBhcyBFeHRlcm5hbENvbHVtblR5cGUsXG4gIERhc2hib2FyZE9iamVjdFR5cGUgYXMgRXh0ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLFxuICBEYXRhVHlwZSBhcyBFeHRlcm5hbERhdGFUeXBlLFxuICBEYXRlUmFuZ2VUeXBlIGFzIEV4dGVybmFsRGF0ZVJhbmdlVHlwZSxcbiAgRXh0ZW5zaW9uQ29udGV4dCBhcyBFeHRlcm5hbEV4dGVuc2lvbnNDb250ZXh0LFxuICBFeHRlbnNpb25Nb2RlIGFzIEV4dGVybmFsRXh0ZW5zaW9uc01vZGUsXG4gIEZpZWxkQWdncmVnYXRpb25UeXBlIGFzIEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUsXG4gIEZpZWxkUm9sZVR5cGUgYXMgRXh0ZXJuYWxGaWVsZFJvbGVUeXBlLFxuICBGaWx0ZXJUeXBlIGFzIEV4dGVybmFsRmlsdGVyVHlwZSxcbiAgRmlsdGVyVXBkYXRlVHlwZSBhcyBFeHRlcm5hbEZpbHRlclVwZGF0ZVR5cGUsXG4gIFBhcmFtZXRlclZhbHVlVHlwZSBhcyBFeHRlcm5hbFBhcmFtZXRlclZhbHVlVHlwZSxcbiAgUGVyaW9kVHlwZSBhcyBFeHRlcm5hbERhdGVQZXJpb2QsXG4gIFNoZWV0VHlwZSBhcyBFeHRlcm5hbFNoZWV0VHlwZSxcbn0gZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcblxuaW1wb3J0IHtcbiAgQ29sdW1uVHlwZSBhcyBJbnRlcm5hbENvbHVtblR5cGUsXG4gIERhc2hib2FyZE9iamVjdFR5cGUgYXMgSW50ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLFxuICBEYXRhVHlwZSBhcyBJbnRlcm5hbERhdGFUeXBlLFxuICBEYXRlUmFuZ2VUeXBlIGFzIEludGVybmFsRGF0ZVJhbmdlVHlwZSxcbiAgRGF0ZVN0ZXBQZXJpb2QgYXMgSW50ZXJuYWxEYXRlU3RlcFBlcmlvZCxcbiAgRG9tYWluUmVzdHJpY3Rpb25UeXBlIGFzIEludGVybmFsRG9tYWluUmVzdHJpY3Rpb25UeXBlLFxuICBFeHRlbnNpb25Db250ZXh0IGFzIEludGVybmFsRXh0ZW5zaW9uc0NvbnRleHQsXG4gIEV4dGVuc2lvbk1vZGUgYXMgSW50ZXJuYWxFeHRlbnNpb25zTW9kZSxcbiAgRmllbGRBZ2dyZWdhdGlvblR5cGUgYXMgSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZSxcbiAgRmllbGRSb2xlVHlwZSBhcyBJbnRlcm5hbEZpZWxkUm9sZVR5cGUsXG4gIEZpbHRlclR5cGUgYXMgSW50ZXJuYWxGaWx0ZXJUeXBlLFxuICBGaWx0ZXJVcGRhdGVUeXBlIGFzIEludGVybmFsRmlsdGVyVXBkYXRlVHlwZSxcbiAgU2hlZXRUeXBlIGFzIEludGVybmFsU2hlZXRUeXBlLFxufSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xuXG5pbXBvcnQgeyBFbnVtQ29udmVydGVyIH0gZnJvbSAnQHRhYmxlYXUvYXBpLXV0aWxzJztcblxuLyogdHNsaW50OmRpc2FibGU6dHlwZWRlZiAtIERpc2FibGUgdGhpcyB0byBtYWtlIGRlY2xhcmluZyB0aGVzZSBjbGFzc2VzIGEgYml0IGVhc2llciAqL1xuLyoqXG4gKiBNYXBzIGVudW1zIHVzZWQgYnkgdGhlIGludGVybmFsLWFwaS1jb250cmFjdCB0byB0aGUgZW51bXMgdXNlZFxuICogaW4gdGhlIGV4dGVybmFsLWFwaS1jb250cmFjdCwgd2hpY2ggZGV2ZWxvcGVycyBjb2RlIGFnYWluc3QuXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnRlcm5hbFRvRXh0ZXJuYWxFbnVtTWFwcGluZ3Mge1xuICBwdWJsaWMgc3RhdGljIGV4dGVuc2lvbkNvbnRleHQgPSBuZXcgRW51bUNvbnZlcnRlcjxJbnRlcm5hbEV4dGVuc2lvbnNDb250ZXh0LCBFeHRlcm5hbEV4dGVuc2lvbnNDb250ZXh0Pih7XG4gICAgW0ludGVybmFsRXh0ZW5zaW9uc0NvbnRleHQuRGVza3RvcF06IEV4dGVybmFsRXh0ZW5zaW9uc0NvbnRleHQuRGVza3RvcCxcbiAgICBbSW50ZXJuYWxFeHRlbnNpb25zQ29udGV4dC5TZXJ2ZXJdOiBFeHRlcm5hbEV4dGVuc2lvbnNDb250ZXh0LlNlcnZlclxuICB9KTtcblxuICBwdWJsaWMgc3RhdGljIGV4dGVuc2lvbk1vZGUgPSBuZXcgRW51bUNvbnZlcnRlcjxJbnRlcm5hbEV4dGVuc2lvbnNNb2RlLCBFeHRlcm5hbEV4dGVuc2lvbnNNb2RlPih7XG4gICAgW0ludGVybmFsRXh0ZW5zaW9uc01vZGUuQXV0aG9yaW5nXTogRXh0ZXJuYWxFeHRlbnNpb25zTW9kZS5BdXRob3JpbmcsXG4gICAgW0ludGVybmFsRXh0ZW5zaW9uc01vZGUuVmlld2luZ106IEV4dGVybmFsRXh0ZW5zaW9uc01vZGUuVmlld2luZ1xuICB9KTtcblxuICBwdWJsaWMgc3RhdGljIGNvbHVtblR5cGUgPSBuZXcgRW51bUNvbnZlcnRlcjxJbnRlcm5hbENvbHVtblR5cGUsIEV4dGVybmFsQ29sdW1uVHlwZT4oe1xuICAgIFtJbnRlcm5hbENvbHVtblR5cGUuQ29udGludW91c106IEV4dGVybmFsQ29sdW1uVHlwZS5Db250aW51b3VzLFxuICAgIFtJbnRlcm5hbENvbHVtblR5cGUuRGlzY3JldGVdOiBFeHRlcm5hbENvbHVtblR5cGUuRGlzY3JldGVcbiAgfSk7XG5cbiAgcHVibGljIHN0YXRpYyBmaWVsZEFnZ3JlZ2F0aW9uVHlwZSA9IG5ldyBFbnVtQ29udmVydGVyPEludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUsIEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGU+KHtcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5BdHRyXTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5BdHRyLFxuICAgIFtJbnRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLkF2Z106IEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuQXZnLFxuICAgIFtJbnRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLkNvdW50XTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5Db3VudCxcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5Db3VudGRdOiBFeHRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLkNvdW50ZCxcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5EYXldOiBFeHRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLkRheSxcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5FbmRdOiBFeHRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLkVuZCxcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5Ib3VyXTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5Ib3VyLFxuICAgIFtJbnRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLkluT3V0XTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5Jbk91dCxcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5LdXJ0b3Npc106IEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuS3VydG9zaXMsXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuTWF4XTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5NYXgsXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuTWR5XTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5NZHksXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuTWVkaWFuXTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5NZWRpYW4sXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuTWluXTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5NaW4sXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuTWludXRlXTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5NaW51dGUsXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuTW9udGhZZWFyXTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5Nb250aFllYXIsXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuTm9uZV06IEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuTm9uZSxcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5RdHJdOiBFeHRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlF0cixcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5RdWFydDFdOiBFeHRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlF1YXJ0MSxcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5RdWFydDNdOiBFeHRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlF1YXJ0MyxcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5TZWNvbmRdOiBFeHRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlNlY29uZCxcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5Ta2V3bmVzc106IEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuU2tld25lc3MsXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuU3RkZXZdOiBFeHRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlN0ZGV2LFxuICAgIFtJbnRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlN0ZGV2cF06IEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuU3RkZXZwLFxuICAgIFtJbnRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlN1bV06IEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuU3VtLFxuICAgIFtJbnRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlRydW5jRGF5XTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5UcnVuY0RheSxcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5UcnVuY0hvdXJdOiBFeHRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlRydW5jSG91cixcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5UcnVuY01pbnV0ZV06IEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuVHJ1bmNNaW51dGUsXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuVHJ1bmNNb250aF06IEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuVHJ1bmNNb250aCxcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5UcnVuY1F0cl06IEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuVHJ1bmNRdHIsXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuVHJ1bmNTZWNvbmRdOiBFeHRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlRydW5jU2Vjb25kLFxuICAgIFtJbnRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlRydW5jV2Vla106IEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuVHJ1bmNXZWVrLFxuICAgIFtJbnRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlRydW5jWWVhcl06IEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuVHJ1bmNZZWFyLFxuICAgIFtJbnRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlVzZXJdOiBFeHRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlVzZXIsXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuVmFyXTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5WYXIsXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuVmFycF06IEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuVmFycCxcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5XZWVrXTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5XZWVrLFxuICAgIFtJbnRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLldlZWtkYXldOiBFeHRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLldlZWtkYXksXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuWWVhcl06IEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuWWVhcixcbiAgfSk7XG5cbiAgcHVibGljIHN0YXRpYyBmaWVsZFJvbGVUeXBlID0gbmV3IEVudW1Db252ZXJ0ZXI8SW50ZXJuYWxGaWVsZFJvbGVUeXBlLCBFeHRlcm5hbEZpZWxkUm9sZVR5cGU+KHtcbiAgICBbSW50ZXJuYWxGaWVsZFJvbGVUeXBlLkRpbWVuc2lvbl06IEV4dGVybmFsRmllbGRSb2xlVHlwZS5EaW1lbnNpb24sXG4gICAgW0ludGVybmFsRmllbGRSb2xlVHlwZS5NZWFzdXJlXTogRXh0ZXJuYWxGaWVsZFJvbGVUeXBlLk1lYXN1cmUsXG4gICAgW0ludGVybmFsRmllbGRSb2xlVHlwZS5Vbmtub3duXTogRXh0ZXJuYWxGaWVsZFJvbGVUeXBlLlVua25vd24sXG4gIH0pO1xuXG4gIHB1YmxpYyBzdGF0aWMgc2hlZXRUeXBlID0gbmV3IEVudW1Db252ZXJ0ZXI8SW50ZXJuYWxTaGVldFR5cGUsIEV4dGVybmFsU2hlZXRUeXBlPih7XG4gICAgW0ludGVybmFsU2hlZXRUeXBlLkRhc2hib2FyZF06IEV4dGVybmFsU2hlZXRUeXBlLkRhc2hib2FyZCxcbiAgICBbSW50ZXJuYWxTaGVldFR5cGUuU3RvcnldOiBFeHRlcm5hbFNoZWV0VHlwZS5TdG9yeSxcbiAgICBbSW50ZXJuYWxTaGVldFR5cGUuV29ya3NoZWV0XTogRXh0ZXJuYWxTaGVldFR5cGUuV29ya3NoZWV0XG4gIH0pO1xuXG4gIHB1YmxpYyBzdGF0aWMgZGFzaGJvYXJkT2JqZWN0VHlwZSA9IG5ldyBFbnVtQ29udmVydGVyPEludGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZSwgRXh0ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlPih7XG4gICAgW0ludGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5FeHRlbnNpb25dOiBFeHRlcm5hbERhc2hib2FyZE9iamVjdFR5cGUuRXh0ZW5zaW9uLFxuICAgIFtJbnRlcm5hbERhc2hib2FyZE9iamVjdFR5cGUuQmxhbmtdOiBFeHRlcm5hbERhc2hib2FyZE9iamVjdFR5cGUuQmxhbmssXG4gICAgW0ludGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5JbWFnZV06IEV4dGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5JbWFnZSxcbiAgICBbSW50ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLkxlZ2VuZF06IEV4dGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5MZWdlbmQsXG4gICAgW0ludGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5QYWdlRmlsdGVyXTogRXh0ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLlBhZ2VGaWx0ZXIsXG4gICAgW0ludGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5QYXJhbWV0ZXJDb250cm9sXTogRXh0ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLlBhcmFtZXRlckNvbnRyb2wsXG4gICAgW0ludGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5RdWlja0ZpbHRlcl06IEV4dGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5RdWlja0ZpbHRlcixcbiAgICBbSW50ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLlRleHRdOiBFeHRlcm5hbERhc2hib2FyZE9iamVjdFR5cGUuVGV4dCxcbiAgICBbSW50ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLlRpdGxlXTogRXh0ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLlRpdGxlLFxuICAgIFtJbnRlcm5hbERhc2hib2FyZE9iamVjdFR5cGUuV2ViUGFnZV06IEV4dGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5XZWJQYWdlLFxuICAgIFtJbnRlcm5hbERhc2hib2FyZE9iamVjdFR5cGUuV29ya3NoZWV0XTogRXh0ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLldvcmtzaGVldFxuICB9KTtcblxuICBwdWJsaWMgc3RhdGljIGRhdGFUeXBlID0gbmV3IEVudW1Db252ZXJ0ZXI8SW50ZXJuYWxEYXRhVHlwZSwgRXh0ZXJuYWxEYXRhVHlwZT4oe1xuICAgIFtJbnRlcm5hbERhdGFUeXBlLkJvb2xdOiBFeHRlcm5hbERhdGFUeXBlLkJvb2wsXG4gICAgW0ludGVybmFsRGF0YVR5cGUuRGF0ZV06IEV4dGVybmFsRGF0YVR5cGUuRGF0ZSxcbiAgICBbSW50ZXJuYWxEYXRhVHlwZS5EYXRlVGltZV06IEV4dGVybmFsRGF0YVR5cGUuRGF0ZVRpbWUsXG4gICAgW0ludGVybmFsRGF0YVR5cGUuRmxvYXRdOiBFeHRlcm5hbERhdGFUeXBlLkZsb2F0LFxuICAgIFtJbnRlcm5hbERhdGFUeXBlLkludF06IEV4dGVybmFsRGF0YVR5cGUuSW50LFxuICAgIFtJbnRlcm5hbERhdGFUeXBlLlN0cmluZ106IEV4dGVybmFsRGF0YVR5cGUuU3RyaW5nXG4gIH0pO1xuXG4gIHB1YmxpYyBzdGF0aWMgZmlsdGVyVXBkYXRlVHlwZSA9IG5ldyBFbnVtQ29udmVydGVyPEludGVybmFsRmlsdGVyVXBkYXRlVHlwZSwgRXh0ZXJuYWxGaWx0ZXJVcGRhdGVUeXBlPih7XG4gICAgW0ludGVybmFsRmlsdGVyVXBkYXRlVHlwZS5BZGRdOiBFeHRlcm5hbEZpbHRlclVwZGF0ZVR5cGUuQWRkLFxuICAgIFtJbnRlcm5hbEZpbHRlclVwZGF0ZVR5cGUuQWxsXTogRXh0ZXJuYWxGaWx0ZXJVcGRhdGVUeXBlLkFsbCxcbiAgICBbSW50ZXJuYWxGaWx0ZXJVcGRhdGVUeXBlLlJlbW92ZV06IEV4dGVybmFsRmlsdGVyVXBkYXRlVHlwZS5SZW1vdmUsXG4gICAgW0ludGVybmFsRmlsdGVyVXBkYXRlVHlwZS5SZXBsYWNlXTogRXh0ZXJuYWxGaWx0ZXJVcGRhdGVUeXBlLlJlcGxhY2VcbiAgfSk7XG5cbiAgcHVibGljIHN0YXRpYyBhbGxvd2FibGVWYWx1ZXMgPSBuZXcgRW51bUNvbnZlcnRlcjxJbnRlcm5hbERvbWFpblJlc3RyaWN0aW9uVHlwZSwgRXh0ZXJuYWxQYXJhbWV0ZXJWYWx1ZVR5cGU+KHtcbiAgICBbSW50ZXJuYWxEb21haW5SZXN0cmljdGlvblR5cGUuQWxsXTogRXh0ZXJuYWxQYXJhbWV0ZXJWYWx1ZVR5cGUuQWxsLFxuICAgIFtJbnRlcm5hbERvbWFpblJlc3RyaWN0aW9uVHlwZS5MaXN0XTogRXh0ZXJuYWxQYXJhbWV0ZXJWYWx1ZVR5cGUuTGlzdCxcbiAgICBbSW50ZXJuYWxEb21haW5SZXN0cmljdGlvblR5cGUuUmFuZ2VdOiBFeHRlcm5hbFBhcmFtZXRlclZhbHVlVHlwZS5SYW5nZVxuICB9KTtcblxuICBwdWJsaWMgc3RhdGljIGRhdGVTdGVwUGVyaW9kID0gbmV3IEVudW1Db252ZXJ0ZXI8SW50ZXJuYWxEYXRlU3RlcFBlcmlvZCwgRXh0ZXJuYWxEYXRlUGVyaW9kPih7XG4gICAgW0ludGVybmFsRGF0ZVN0ZXBQZXJpb2QuWWVhcnNdOiBFeHRlcm5hbERhdGVQZXJpb2QuWWVhcnMsXG4gICAgW0ludGVybmFsRGF0ZVN0ZXBQZXJpb2QuUXVhcnRlcnNdOiBFeHRlcm5hbERhdGVQZXJpb2QuUXVhcnRlcnMsXG4gICAgW0ludGVybmFsRGF0ZVN0ZXBQZXJpb2QuTW9udGhzXTogRXh0ZXJuYWxEYXRlUGVyaW9kLk1vbnRocyxcbiAgICBbSW50ZXJuYWxEYXRlU3RlcFBlcmlvZC5XZWVrc106IEV4dGVybmFsRGF0ZVBlcmlvZC5XZWVrcyxcbiAgICBbSW50ZXJuYWxEYXRlU3RlcFBlcmlvZC5EYXlzXTogRXh0ZXJuYWxEYXRlUGVyaW9kLkRheXMsXG4gICAgW0ludGVybmFsRGF0ZVN0ZXBQZXJpb2QuSG91cnNdOiBFeHRlcm5hbERhdGVQZXJpb2QuSG91cnMsXG4gICAgW0ludGVybmFsRGF0ZVN0ZXBQZXJpb2QuTWludXRlc106IEV4dGVybmFsRGF0ZVBlcmlvZC5NaW51dGVzLFxuICAgIFtJbnRlcm5hbERhdGVTdGVwUGVyaW9kLlNlY29uZHNdOiBFeHRlcm5hbERhdGVQZXJpb2QuU2Vjb25kc1xuICB9KTtcblxuICBwdWJsaWMgc3RhdGljIGRhdGVSYW5nZVR5cGUgPSBuZXcgRW51bUNvbnZlcnRlcjxJbnRlcm5hbERhdGVSYW5nZVR5cGUsIEV4dGVybmFsRGF0ZVJhbmdlVHlwZT4oe1xuICAgIFtJbnRlcm5hbERhdGVSYW5nZVR5cGUuQ3VycmVudF06IEV4dGVybmFsRGF0ZVJhbmdlVHlwZS5DdXJyZW50LFxuICAgIFtJbnRlcm5hbERhdGVSYW5nZVR5cGUuTGFzdF06IEV4dGVybmFsRGF0ZVJhbmdlVHlwZS5MYXN0LFxuICAgIFtJbnRlcm5hbERhdGVSYW5nZVR5cGUuTGFzdE5dOiBFeHRlcm5hbERhdGVSYW5nZVR5cGUuTGFzdE4sXG4gICAgW0ludGVybmFsRGF0ZVJhbmdlVHlwZS5OZXh0XTogRXh0ZXJuYWxEYXRlUmFuZ2VUeXBlLk5leHQsXG4gICAgW0ludGVybmFsRGF0ZVJhbmdlVHlwZS5OZXh0Tl06IEV4dGVybmFsRGF0ZVJhbmdlVHlwZS5OZXh0TixcbiAgICBbSW50ZXJuYWxEYXRlUmFuZ2VUeXBlLlRvRGF0ZV06IEV4dGVybmFsRGF0ZVJhbmdlVHlwZS5Ub0RhdGVcbiAgfSk7XG5cbiAgcHVibGljIHN0YXRpYyBmaWx0ZXJUeXBlID0gbmV3IEVudW1Db252ZXJ0ZXI8SW50ZXJuYWxGaWx0ZXJUeXBlLCBFeHRlcm5hbEZpbHRlclR5cGU+KHtcbiAgICBbSW50ZXJuYWxGaWx0ZXJUeXBlLkNhdGVnb3JpY2FsXTogRXh0ZXJuYWxGaWx0ZXJUeXBlLkNhdGVnb3JpY2FsLFxuICAgIFtJbnRlcm5hbEZpbHRlclR5cGUuUmFuZ2VdIDogRXh0ZXJuYWxGaWx0ZXJUeXBlLlJhbmdlLFxuICAgIFtJbnRlcm5hbEZpbHRlclR5cGUuUmVsYXRpdmVEYXRlXTogRXh0ZXJuYWxGaWx0ZXJUeXBlLlJlbGF0aXZlRGF0ZSxcbiAgICBbSW50ZXJuYWxGaWx0ZXJUeXBlLkhpZXJhcmNoaWNhbF06IEV4dGVybmFsRmlsdGVyVHlwZS5IaWVyYXJjaGljYWxcbiAgfSk7XG59XG4vKiB0c2xpbnQ6ZW5hYmxlOnR5cGVkZWYgKi9cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL0VudW1NYXBwaW5ncy9JbnRlcm5hbFRvRXh0ZXJuYWxFbnVtTWFwcGluZ3MudHNcbiAqKi8iLCJpbXBvcnQgKiBhcyBDb250cmFjdCBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xuXG5pbXBvcnQgeyBGaWx0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vU2VydmljZXMvRmlsdGVyU2VydmljZSc7XG5pbXBvcnQgeyBBcGlTZXJ2aWNlUmVnaXN0cnksIFNlcnZpY2VOYW1lcyB9IGZyb20gJy4uL1NlcnZpY2VzL1NlcnZpY2VSZWdpc3RyeSc7XG5cbmV4cG9ydCBjbGFzcyBGaWx0ZXIgaW1wbGVtZW50cyBDb250cmFjdC5GaWx0ZXIge1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIF93b3Jrc2hlZXROYW1lOiBzdHJpbmcsXG4gICAgcHJvdGVjdGVkIF9maWVsZE5hbWU6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgX2ZpbHRlclR5cGU6IENvbnRyYWN0LkZpbHRlclR5cGUsXG4gICAgcHJvdGVjdGVkIF9maWVsZElkOiBzdHJpbmcpIHtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgd29ya3NoZWV0TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl93b3Jrc2hlZXROYW1lO1xuICB9XG5cbiAgcHVibGljIGdldCBmaWVsZE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZmllbGROYW1lO1xuICB9XG5cbiAgcHVibGljIGdldCBmaWVsZElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkSWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZpbHRlclR5cGUoKTogQ29udHJhY3QuRmlsdGVyVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlclR5cGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0RmllbGRBc3luYygpOiBQcm9taXNlPENvbnRyYWN0LkZpZWxkPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENhdGVnb3JpY2FsRmlsdGVyIGV4dGVuZHMgRmlsdGVyIGltcGxlbWVudHMgQ29udHJhY3QuQ2F0ZWdvcmljYWxGaWx0ZXIge1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgd29ya3NoZWV0TmFtZTogc3RyaW5nLFxuICAgIGZpZWxkTmFtZTogc3RyaW5nLFxuICAgIGZpZWxkSWQ6IHN0cmluZyxcbiAgICBmaWx0ZXJUeXBlOiBDb250cmFjdC5GaWx0ZXJUeXBlLFxuICAgIHByaXZhdGUgX2FwcGxpZWRWYWx1ZXM6IENvbnRyYWN0LkRhdGFWYWx1ZVtdLFxuICAgIHByaXZhdGUgX2lzRXhjbHVkZU1vZGU6IGJvb2xlYW4pIHtcbiAgICAgIHN1cGVyKHdvcmtzaGVldE5hbWUsIGZpZWxkTmFtZSwgZmlsdGVyVHlwZSwgZmllbGRJZCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFwcGxpZWRWYWx1ZXMoKTogQ29udHJhY3QuRGF0YVZhbHVlW10ge1xuICAgIHJldHVybiB0aGlzLl9hcHBsaWVkVmFsdWVzO1xuICB9XG5cbiAgcHVibGljIGdldCBpc0V4Y2x1ZGVNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc0V4Y2x1ZGVNb2RlO1xuICB9XG5cbiAgcHVibGljIGdldERvbWFpbkFzeW5jKGRvbWFpblR5cGU/OiBDb250cmFjdC5GaWx0ZXJEb21haW5UeXBlKTogUHJvbWlzZTxDb250cmFjdC5DYXRlZ29yaWNhbERvbWFpbj4ge1xuICAgIGlmICghZG9tYWluVHlwZSkge1xuICAgICAgZG9tYWluVHlwZSA9IENvbnRyYWN0LkZpbHRlckRvbWFpblR5cGUuUmVsZXZhbnQ7XG4gICAgfVxuICAgIGNvbnN0IHNlcnZpY2UgPSBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZTxGaWx0ZXJTZXJ2aWNlPihTZXJ2aWNlTmFtZXMuRmlsdGVyKTtcbiAgICByZXR1cm4gc2VydmljZS5nZXRDYXRlZ29yaWNhbERvbWFpbkFzeW5jKHRoaXMuX3dvcmtzaGVldE5hbWUsIHRoaXMuX2ZpZWxkSWQsIGRvbWFpblR5cGUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSYW5nZUZpbHRlciBleHRlbmRzIEZpbHRlciBpbXBsZW1lbnRzIENvbnRyYWN0LlJhbmdlRmlsdGVyIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHdvcmtzaGVldE5hbWU6IHN0cmluZyxcbiAgICBmaWVsZE5hbWU6IHN0cmluZyxcbiAgICBmaWVsZElkOiBzdHJpbmcsXG4gICAgZmlsdGVyVHlwZTogQ29udHJhY3QuRmlsdGVyVHlwZSxcbiAgICBwcml2YXRlIF9taW46IENvbnRyYWN0LkRhdGFWYWx1ZSxcbiAgICBwcml2YXRlIF9tYXg6IENvbnRyYWN0LkRhdGFWYWx1ZSxcbiAgICBwcml2YXRlIF9pbmNsdWRlTnVsbFZhbHVlczogYm9vbGVhbikge1xuICAgICAgc3VwZXIod29ya3NoZWV0TmFtZSwgZmllbGROYW1lLCBmaWx0ZXJUeXBlLCBmaWVsZElkKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWluVmFsdWUoKTogQ29udHJhY3QuRGF0YVZhbHVlIHtcbiAgICByZXR1cm4gdGhpcy5fbWluO1xuICB9XG5cbiAgcHVibGljIGdldCBtYXhWYWx1ZSgpOiBDb250cmFjdC5EYXRhVmFsdWUge1xuICAgIHJldHVybiB0aGlzLl9tYXg7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGluY2x1ZGVOdWxsVmFsdWVzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pbmNsdWRlTnVsbFZhbHVlcztcbiAgfVxuXG4gIHB1YmxpYyAgZ2V0RG9tYWluQXN5bmMoZG9tYWluVHlwZT86IENvbnRyYWN0LkZpbHRlckRvbWFpblR5cGUpOiBQcm9taXNlPENvbnRyYWN0LlJhbmdlRG9tYWluPiB7XG4gICAgY29uc3Qgc2VydmljZSA9IEFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5nZXRTZXJ2aWNlPEZpbHRlclNlcnZpY2U+KFNlcnZpY2VOYW1lcy5GaWx0ZXIpO1xuICAgIGlmICghZG9tYWluVHlwZSkge1xuICAgICAgZG9tYWluVHlwZSA9IENvbnRyYWN0LkZpbHRlckRvbWFpblR5cGUuUmVsZXZhbnQ7XG4gICAgfVxuICAgIHJldHVybiBzZXJ2aWNlLmdldFJhbmdlRG9tYWluQXN5bmModGhpcy5fd29ya3NoZWV0TmFtZSwgdGhpcy5fZmllbGRJZCwgZG9tYWluVHlwZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlbGF0aXZlRGF0ZUZpbHRlciBleHRlbmRzIEZpbHRlciBpbXBsZW1lbnRzIENvbnRyYWN0LlJlbGF0aXZlRGF0ZUZpbHRlciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICB3b3Jrc2hlZXROYW1lOiBzdHJpbmcsXG4gICAgZmllbGROYW1lOiBzdHJpbmcsXG4gICAgZmllbGRJZDogc3RyaW5nLFxuICAgIGZpbHRlclR5cGU6IENvbnRyYWN0LkZpbHRlclR5cGUsXG4gICAgcHJpdmF0ZSBfYW5jaG9yRGF0ZTogQ29udHJhY3QuRGF0YVZhbHVlLFxuICAgIHByaXZhdGUgX3BlcmlvZFR5cGU6IENvbnRyYWN0LlBlcmlvZFR5cGUsXG4gICAgcHJpdmF0ZSBfcmFuZ2VUeXBlOiBDb250cmFjdC5EYXRlUmFuZ2VUeXBlLFxuICAgIHByaXZhdGUgX3JhbmdlTjogbnVtYmVyKSB7XG4gICAgICBzdXBlcih3b3Jrc2hlZXROYW1lLCBmaWVsZE5hbWUsIGZpbHRlclR5cGUsIGZpZWxkSWQpO1xuICB9XG5cbiAgcHVibGljIGdldCBhbmNob3JEYXRlKCk6IENvbnRyYWN0LkRhdGFWYWx1ZSB7XG4gICAgcmV0dXJuIHRoaXMuX2FuY2hvckRhdGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBlcmlvZFR5cGUoKTogQ29udHJhY3QuUGVyaW9kVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX3BlcmlvZFR5cGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJhbmdlVHlwZSgpOiBDb250cmFjdC5EYXRlUmFuZ2VUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fcmFuZ2VUeXBlO1xuICB9XG5cbiAgcHVibGljIGdldCByYW5nZU4oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcmFuZ2VOO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDYXRlZ29yaWNhbERvbWFpbiBpbXBsZW1lbnRzIENvbnRyYWN0LkNhdGVnb3JpY2FsRG9tYWluIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX3ZhbHVlczogQ29udHJhY3QuRGF0YVZhbHVlW10sXG4gICAgcHJpdmF0ZSBfZG9tYWluVHlwZTogQ29udHJhY3QuRmlsdGVyRG9tYWluVHlwZSkge1xuICB9XG5cbiAgcHVibGljIGdldCB2YWx1ZXMoKTogQ29udHJhY3QuRGF0YVZhbHVlW10ge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHR5cGUoKTogQ29udHJhY3QuRmlsdGVyRG9tYWluVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX2RvbWFpblR5cGU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJhbmdlRG9tYWluIGltcGxlbWVudHMgQ29udHJhY3QuUmFuZ2VEb21haW4ge1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfbWluOiBDb250cmFjdC5EYXRhVmFsdWUsXG4gICAgcHJpdmF0ZSBfbWF4OiBDb250cmFjdC5EYXRhVmFsdWUsXG4gICAgcHJpdmF0ZSBfZG9tYWluVHlwZTogQ29udHJhY3QuRmlsdGVyRG9tYWluVHlwZSkge1xuICB9XG5cbiAgcHVibGljIGdldCB0eXBlKCk6IENvbnRyYWN0LkZpbHRlckRvbWFpblR5cGUge1xuICAgIHJldHVybiB0aGlzLl9kb21haW5UeXBlO1xuICB9XG5cbiAgcHVibGljIGdldCBtaW4oKTogQ29udHJhY3QuRGF0YVZhbHVlIHtcbiAgICByZXR1cm4gdGhpcy5fbWluO1xuICB9XG5cbiAgcHVibGljIGdldCBtYXgoKTogQ29udHJhY3QuRGF0YVZhbHVlIHtcbiAgICByZXR1cm4gdGhpcy5fbWF4O1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9Nb2RlbHMvRmlsdGVyTW9kZWxzLnRzXG4gKiovIiwiLyoqXG4gKiBCYXNlIGludGVyZmFjZSBmb3IgYW4gYXBpIHNlcnZpY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcGlTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIEdldHMgdGhlIG5hbWUgZm9yIHRoaXMgc2VydmljZS5cbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29sbGVjdGlvbiBvZiBzZXJ2aWNlIG5hbWUgd2hpY2ggd2lsbCBiZSByZWdpc3RlcmVkIGluIHRoZSBhcGktc2hhcmVkIHByb2plY3RcbiAqL1xuZXhwb3J0IGNvbnN0IGVudW0gU2VydmljZU5hbWVzIHtcbiAgRGF0YVNvdXJjZVNlcnZpY2UgPSAnZGF0YS1zb3VyY2Utc2VydmljZScsXG4gIEdldERhdGEgPSAnZ2V0LWRhdGEtc2VydmljZScsXG4gIEZpbHRlciA9ICdmaWx0ZXItc2VydmljZScsXG4gIE5vdGlmaWNhdGlvbiA9ICdub3RpZmljYXRpb24tc2VydmljZScsXG4gIFBhcmFtZXRlcnMgPSAncGFyYW1ldGVycy1zZXJ2aWNlJyxcbiAgU2VsZWN0aW9uID0gJ3NlbGVjdGlvbi1zZXJ2aWNlJ1xufVxuXG4vKipcbiAqIERvIHNvbWUgZ2xvYmFibCBkZWNsYXJhdGlvbnMgc28gd2UgY2FuIGNyZWF0ZSBhIHNpbmdsZXRvbiBvbiB0aGUgd2luZG93IG9iamVjdFxuICovXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cgeyBfX3RhYmxlYXVBcGlTZXJ2aWNlUmVnaXN0cnk6IFNlcnZpY2VSZWdpc3RyeSB8IHVuZGVmaW5lZDsgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2VSZWdpc3RyeSB7XG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBuZXcgc2VydmljZSBpbnRvIHRoZSBzZXJ2aWNlIHJlZ2lzdHJ5LiBBbnkgZXhpc3Rpbmcgb25lIHdpbGxcbiAgICogYmUgb3ZlcndyaXR0ZW4uIHRoZSBzZXJ2aWNlIGlzIHJlZ2lzdGVyZWQgdW5kZXIgc2VydmljZS5zZXJ2aWNlTmFtZVxuICAgKlxuICAgKiBAcGFyYW0ge0FwaVNlcnZpY2V9IHNlcnZpY2UgVGhlIHNlcnZpdmUgdG8gcmVnaXN0ZXJcbiAgICovXG4gIHJlZ2lzdGVyU2VydmljZShzZXJ2aWNlOiBBcGlTZXJ2aWNlKTogdm9pZDtcblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBnaXZlbiBzZXJ2aWNlIGZyb20gdGhlIHJlZ2lzdHJ5LiBJZiB0aGVyZSBpcyBub3QgYVxuICAgKiBzZXJ2aWNlIHJlZ2lzdGVyZWQgdW5kZXIgdGhhdCBuYW1lLCB0aHJvd3MgYW5kIGVycm9yXG4gICAqXG4gICAqIEB0ZW1wbGF0ZSBUIFRoZSB0eXBlIG9mIHRoZSBzZXJ2aWNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZXJ2aWNlTmFtZSBUaGUgbmFtZSBvZiB0aGUgc2VydmljZS5cbiAgICogQHJldHVybnMge1R9IFRoZSByZXF1ZXN0ZWQgc2VydmljZVxuICAgKi9cbiAgZ2V0U2VydmljZTxUIGV4dGVuZHMgQXBpU2VydmljZT4oc2VydmljZU5hbWU6IHN0cmluZyk6IFQ7XG59XG5cbmNsYXNzIFNlcnZpY2VSZWdpc3RyeUltcGwgaW1wbGVtZW50cyBTZXJ2aWNlUmVnaXN0cnkge1xuICBwcml2YXRlIF9zZXJ2aWNlczogeyBbc2VydmljZU5hbWU6IHN0cmluZ106IEFwaVNlcnZpY2U7IH07XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX3NlcnZpY2VzID0ge307XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJTZXJ2aWNlKHNlcnZpY2U6IEFwaVNlcnZpY2UpOiB2b2lkIHtcbiAgICB0aGlzLl9zZXJ2aWNlc1tzZXJ2aWNlLnNlcnZpY2VOYW1lXSA9IHNlcnZpY2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0U2VydmljZTxUIGV4dGVuZHMgQXBpU2VydmljZT4oc2VydmljZU5hbWU6IHN0cmluZyk6IFQge1xuICAgIGlmICghdGhpcy5fc2VydmljZXMuaGFzT3duUHJvcGVydHkoc2VydmljZU5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIFNlcnZpY2UgJHtzZXJ2aWNlTmFtZX0gaXMgcmVnaXN0ZXJlZGApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zZXJ2aWNlc1tzZXJ2aWNlTmFtZV0gYXMgVDtcbiAgfVxufVxuXG4vKipcbiAqIHN0YXRpYyBjbGFzcyB1c2VkIGZvciBnZXR0aW5nIGFjY2VzcyB0byB0aGUgc2luZ2xlIGluc3RhbmNlXG4gKiBvZiB0aGUgQXBpU2VydmljZVJlZ2lzdHJ5XG4gKi9cbmV4cG9ydCBjbGFzcyBBcGlTZXJ2aWNlUmVnaXN0cnkge1xuICAvKipcbiAgICogR2V0cyB0aGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBTZXJ2aWNlUmVnaXN0cnlcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IGluc3RhbmNlKCk6IFNlcnZpY2VSZWdpc3RyeSB7XG4gICAgaWYgKCF3aW5kb3cuX190YWJsZWF1QXBpU2VydmljZVJlZ2lzdHJ5KSB7XG4gICAgICBBcGlTZXJ2aWNlUmVnaXN0cnkuc2V0SW5zdGFuY2UobmV3IFNlcnZpY2VSZWdpc3RyeUltcGwoKSk7XG4gICAgfVxuXG4gICAgaWYgKCF3aW5kb3cuX190YWJsZWF1QXBpU2VydmljZVJlZ2lzdHJ5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Fzc2lnbmluZyBzZXJ2aWNlIHJlZ2lzdHJ5IGZhaWxlZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB3aW5kb3cuX190YWJsZWF1QXBpU2VydmljZVJlZ2lzdHJ5O1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBtZXRob2QgdG8gb3ZlcnJpZGUgdGhlIHJlZ2lzdHJ5IGluc3RhbmNlLiBDYW4gYmUgdXNlZCBieSB1bml0IHRlc3RzXG4gICAqXG4gICAqIEBwYXJhbSB7U2VydmljZVJlZ2lzdHJ5fSBzZXJ2aWNlUmVnaXN0cnkgVGhlIG5ldyByZWdpc3RyeVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzZXRJbnN0YW5jZShzZXJ2aWNlUmVnaXN0cnk/OiBTZXJ2aWNlUmVnaXN0cnkpOiB2b2lkIHtcbiAgICB3aW5kb3cuX190YWJsZWF1QXBpU2VydmljZVJlZ2lzdHJ5ID0gc2VydmljZVJlZ2lzdHJ5O1xuICB9XG5cbiAgLy8gUHJpdmF0ZSB0byBhdm9pZCBhbnlvbmUgY29uc3RydWN0aW5nIHRoaXNcbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHt9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9TZXJ2aWNlcy9TZXJ2aWNlUmVnaXN0cnkudHNcbiAqKi8iLCJpbXBvcnQgKiBhcyBDb250cmFjdCBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xuaW1wb3J0IHtcbiAgRGF0YVRhYmxlIGFzIERhdGFUYWJsZUludGVybmFsQ29udHJhY3QsXG4gIEV4ZWN1dGVQYXJhbWV0ZXJzLFxuICBIaWdobGlnaHRlZE1hcmtzVGFibGUsXG4gIEludGVybmFsQXBpRGlzcGF0Y2hlcixcbiAgUGFyYW1ldGVySWQsXG4gIFNlbGVjdGVkTWFya3NUYWJsZSxcbiAgVW5kZXJseWluZ0RhdGFUYWJsZSxcbiAgVmVyYklkLFxuICBWaXN1YWxJZCxcbn0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcblxuaW1wb3J0IHsgQ29sdW1uLCBEYXRhVGFibGUsIERhdGFWYWx1ZSwgTWFya0luZm8gfSBmcm9tICcuLi8uLi9Nb2RlbHMvR2V0RGF0YU1vZGVscyc7XG5pbXBvcnQgeyBHZXREYXRhU2VydmljZSwgR2V0RGF0YVR5cGUgfSBmcm9tICcuLi9HZXREYXRhU2VydmljZSc7XG5pbXBvcnQgeyBTZXJ2aWNlTmFtZXMgfSBmcm9tICcuLi9TZXJ2aWNlUmVnaXN0cnknO1xuXG5leHBvcnQgY2xhc3MgR2V0RGF0YVNlcnZpY2VJbXBsIGltcGxlbWVudHMgR2V0RGF0YVNlcnZpY2Uge1xuICBwcml2YXRlIF9kaXNwYXRjaGVyOiBJbnRlcm5hbEFwaURpc3BhdGNoZXI7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKGRpc3BhdGNoZXI6IEludGVybmFsQXBpRGlzcGF0Y2hlcikge1xuICAgIHRoaXMuX2Rpc3BhdGNoZXIgPSBkaXNwYXRjaGVyO1xuICB9XG5cbiAgcHVibGljIGdldCBzZXJ2aWNlTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBTZXJ2aWNlTmFtZXMuR2V0RGF0YTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRVbmRlcmx5aW5nRGF0YUFzeW5jKFxuICAgIHZpc3VhbElkOiBWaXN1YWxJZCxcbiAgICBnZXRUeXBlOiBHZXREYXRhVHlwZSxcbiAgICBpZ25vcmVBbGlhc2VzOiBib29sZWFuLFxuICAgIGlnbm9yZVNlbGVjdGlvbjogYm9vbGVhbixcbiAgICBpbmNsdWRlQWxsQ29sdW1uczogYm9vbGVhbixcbiAgICBtYXhSb3dzOiBudW1iZXIpOiBQcm9taXNlPERhdGFUYWJsZT4ge1xuICAgICAgLy8gQ3JlYXRlIGFsbCBvZiBvdXIgcGFyYW1ldGVyc1xuICAgICAgY29uc3QgdmVyYiA9IGdldFR5cGUgPT09IEdldERhdGFUeXBlLlN1bW1hcnkgPyBWZXJiSWQuR2V0RGF0YVN1bW1hcnlEYXRhIDogVmVyYklkLkdldFVuZGVybHlpbmdEYXRhO1xuICAgICAgY29uc3QgcGFyYW1ldGVyczogRXhlY3V0ZVBhcmFtZXRlcnMgPSB7fTtcbiAgICAgIHBhcmFtZXRlcnNbUGFyYW1ldGVySWQuVmlzdWFsSWRdID0gdmlzdWFsSWQ7XG4gICAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLklnbm9yZUFsaWFzZXNdID0gaWdub3JlQWxpYXNlcztcbiAgICAgIHBhcmFtZXRlcnNbUGFyYW1ldGVySWQuSWdub3JlU2VsZWN0aW9uXSA9IGlnbm9yZVNlbGVjdGlvbjtcbiAgICAgIHBhcmFtZXRlcnNbUGFyYW1ldGVySWQuSW5jbHVkZUFsbENvbHVtbnNdID0gaW5jbHVkZUFsbENvbHVtbnM7XG4gICAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLk1heFJvd3NdID0gbWF4Um93cztcblxuICAgICAgcmV0dXJuIHRoaXMuX2Rpc3BhdGNoZXIuZXhlY3V0ZSh2ZXJiLCBwYXJhbWV0ZXJzKS50aGVuPERhdGFUYWJsZT4ocmVzcG9uc2UgPT4ge1xuICAgICAgICBjb25zdCByZXNwb25zZURhdGEgPSByZXNwb25zZS5yZXN1bHQgYXMgVW5kZXJseWluZ0RhdGFUYWJsZTtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1Jlc3VsdHNUYWJsZShyZXNwb25zZURhdGEuZGF0YSwgcmVzcG9uc2VEYXRhLmlzU3VtbWFyeSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgcHVibGljIGdldFNlbGVjdGVkTWFya3NBc3luYyh2aXN1YWxJZDogVmlzdWFsSWQpOiBQcm9taXNlPENvbnRyYWN0Lk1hcmtzQ29sbGVjdGlvbj4ge1xuICAgIGNvbnN0IHBhcmFtZXRlcnM6IEV4ZWN1dGVQYXJhbWV0ZXJzID0geyBbUGFyYW1ldGVySWQuVmlzdWFsSWRdOiB2aXN1YWxJZCB9O1xuICAgIHJldHVybiB0aGlzLl9kaXNwYXRjaGVyLmV4ZWN1dGUoVmVyYklkLkdldFNlbGVjdGVkTWFya3MsIHBhcmFtZXRlcnMpLnRoZW48Q29udHJhY3QuTWFya3NDb2xsZWN0aW9uPihyZXNwb25zZSA9PiB7XG4gICAgICBjb25zdCByZXNwb25zZURhdGEgPSByZXNwb25zZS5yZXN1bHQgYXMgU2VsZWN0ZWRNYXJrc1RhYmxlO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0YTogcmVzcG9uc2VEYXRhLmRhdGEubWFwKHRhYmxlID0+IHRoaXMucHJvY2Vzc1Jlc3VsdHNUYWJsZSh0YWJsZSwgdHJ1ZSkpXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldEhpZ2hsaWdodGVkTWFya3NBc3luYyh2aXN1YWxJZDogVmlzdWFsSWQpOiBQcm9taXNlPENvbnRyYWN0Lk1hcmtzQ29sbGVjdGlvbj4ge1xuICAgIGNvbnN0IHBhcmFtZXRlcnM6IEV4ZWN1dGVQYXJhbWV0ZXJzID0geyBbUGFyYW1ldGVySWQuVmlzdWFsSWRdOiB2aXN1YWxJZCB9O1xuICAgIHJldHVybiB0aGlzLl9kaXNwYXRjaGVyLmV4ZWN1dGUoVmVyYklkLkdldEhpZ2hsaWdodGVkTWFya3MsIHBhcmFtZXRlcnMpLnRoZW48Q29udHJhY3QuTWFya3NDb2xsZWN0aW9uPihyZXNwb25zZSA9PiB7XG4gICAgICBjb25zdCByZXNwb25zZURhdGEgPSByZXNwb25zZS5yZXN1bHQgYXMgSGlnaGxpZ2h0ZWRNYXJrc1RhYmxlO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0YTogcmVzcG9uc2VEYXRhLmRhdGEubWFwKHRhYmxlID0+IHRoaXMucHJvY2Vzc1Jlc3VsdHNUYWJsZSh0YWJsZSwgdHJ1ZSkpXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldERhdGFTb3VyY2VEYXRhQXN5bmMoXG4gICAgZGF0YVNvdXJjZUlkOiBzdHJpbmcsXG4gICAgaWdub3JlQWxpYXNlczogYm9vbGVhbixcbiAgICBtYXhSb3dzOiBudW1iZXIsXG4gICAgY29sdW1uc1RvSW5jbHVkZTogQXJyYXk8c3RyaW5nPik6IFByb21pc2U8RGF0YVRhYmxlPiB7XG4gICAgICBjb25zdCBwYXJhbWV0ZXJzOiBFeGVjdXRlUGFyYW1ldGVycyA9IHtcbiAgICAgICAgW1BhcmFtZXRlcklkLkRhdGFTb3VyY2VJZF06IGRhdGFTb3VyY2VJZCxcbiAgICAgICAgW1BhcmFtZXRlcklkLklnbm9yZUFsaWFzZXNdOiBpZ25vcmVBbGlhc2VzLFxuICAgICAgICBbUGFyYW1ldGVySWQuTWF4Um93c106IG1heFJvd3MsXG4gICAgICAgIFtQYXJhbWV0ZXJJZC5Db2x1bW5zVG9JbmNsdWRlXTogY29sdW1uc1RvSW5jbHVkZSxcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiB0aGlzLl9kaXNwYXRjaGVyLmV4ZWN1dGUoVmVyYklkLkdldERhdGFTb3VyY2VEYXRhLCBwYXJhbWV0ZXJzKS50aGVuPERhdGFUYWJsZT4ocmVzcG9uc2UgPT4ge1xuICAgICAgICBjb25zdCByZXNwb25zZURhdGEgPSByZXNwb25zZS5yZXN1bHQgYXMgVW5kZXJseWluZ0RhdGFUYWJsZTtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1Jlc3VsdHNUYWJsZShyZXNwb25zZURhdGEuZGF0YSwgZmFsc2UpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gIHByb3RlY3RlZCBwcm9jZXNzUmVzdWx0c1RhYmxlKHJlc3BvbnNlRGF0YTogRGF0YVRhYmxlSW50ZXJuYWxDb250cmFjdCwgaXNTdW1tYXJ5OiBib29sZWFuKTogRGF0YVRhYmxlIHtcbiAgICBjb25zdCBoZWFkZXJzID0gcmVzcG9uc2VEYXRhLmhlYWRlcnMubWFwKGggPT4gbmV3IENvbHVtbihoLmZpZWxkQ2FwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRyYWN0LkRhdGFUeXBlLlN0cmluZyAvKmguRGF0YVR5cGUqLyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGguaXNSZWZlcmVuY2VkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaC5pbmRleCkpO1xuICAgIC8vIFRPRE8gVGhpcyBzaG91bGQgYmUgY29udHJvbGxlZCBieSBhIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoaXMgYXBpIHdpbGwgcmVzcG9uZCBtYXJrcyBpbmZvIG9yIG5vdFxuICAgIGxldCBtYXJrcztcbiAgICBpZiAocmVzcG9uc2VEYXRhLm1hcmtzKSB7XG4gICAgICBtYXJrcyA9IHJlc3BvbnNlRGF0YS5tYXJrcy5tYXAoaCA9PiBuZXcgTWFya0luZm8oaC50eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoLmNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoLnR1cGxlSWQpKTtcbiAgICB9XG4gICAgY29uc3QgdGFibGUgPSByZXNwb25zZURhdGEuZGF0YVRhYmxlLm1hcChyb3cgPT4ge1xuICAgICAgcmV0dXJuIHJvdy5tYXAoY2VsbCA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0YVZhbHVlKGNlbGwudmFsdWUsIGNlbGwuZm9ybWF0dGVkVmFsdWUpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpZiAobWFya3MpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0YVRhYmxlKHRhYmxlLCBoZWFkZXJzLCB0YWJsZS5sZW5ndGgsIGlzU3VtbWFyeSwgbWFya3MpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IERhdGFUYWJsZSh0YWJsZSwgaGVhZGVycywgdGFibGUubGVuZ3RoLCBpc1N1bW1hcnkpO1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9TZXJ2aWNlcy9pbXBsL0dldERhdGFTZXJ2aWNlSW1wbC50c1xuICoqLyIsImltcG9ydCB7IEludGVybmFsQXBpRGlzcGF0Y2hlciwgTW9kZWwsIE5vdGlmaWNhdGlvbiwgTm90aWZpY2F0aW9uSWQgfSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xuXG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlLCBVbnJlZ2lzdGVyRm4gfSBmcm9tICcuLi9Ob3RpZmljYXRpb25TZXJ2aWNlJztcbmltcG9ydCB7IFNlcnZpY2VOYW1lcyB9IGZyb20gJy4uL1NlcnZpY2VSZWdpc3RyeSc7XG5cbmNsYXNzIFJlZ2lzdHJhdGlvbiB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9maWx0ZXJGbjogKG5vdGlmaWNhdGlvbk1vZGVsOiBNb2RlbCkgPT4gYm9vbGVhbixcbiAgICBwcml2YXRlIF9jYWxsYmFja0ZuOiAobm90aWZpY2F0aW9uTW9kZWw6IE1vZGVsKSA9PiB2b2lkKSB7XG4gICAgICAvLyBOb3RoaW5nIEhlcmVcbiAgfVxuXG4gIHB1YmxpYyBvbk5vdGlmaWNhdGlvbihub3RpZmljYXRpb25Nb2RlbDogTW9kZWwpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZmlsdGVyRm4obm90aWZpY2F0aW9uTW9kZWwpKSB7XG4gICAgICB0aGlzLl9jYWxsYmFja0ZuKG5vdGlmaWNhdGlvbk1vZGVsKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvblNlcnZpY2VJbXBsIGltcGxlbWVudHMgTm90aWZpY2F0aW9uU2VydmljZSB7XG4gIHByaXZhdGUgX2hhbmRsZXJzOiB7IFtub3RpZmljYXRpb25JZDogc3RyaW5nXTogQXJyYXk8UmVnaXN0cmF0aW9uPiB9O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpc3BhdGNoZXI6IEludGVybmFsQXBpRGlzcGF0Y2hlcikge1xuICAgIHRoaXMuX2hhbmRsZXJzID0ge307XG4gICAgdGhpcy5kaXNwYXRjaGVyLnJlZ2lzdGVyTm90aWZpY2F0aW9uSGFuZGxlcih0aGlzLm9uTm90aWZpY2F0aW9uLmJpbmQodGhpcykpO1xuICB9XG5cbiAgcHVibGljIGdldCBzZXJ2aWNlTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBTZXJ2aWNlTmFtZXMuTm90aWZpY2F0aW9uO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVySGFuZGxlcihpZDogTm90aWZpY2F0aW9uSWQsIGZpbHRlckZuOiAobW9kZWw6IE1vZGVsKSA9PiBib29sZWFuLCBoYW5kbGVyOiAobW9kZWw6IE1vZGVsKSA9PiB2b2lkKTogVW5yZWdpc3RlckZuIHtcbiAgICBjb25zdCBoYW5kbGVycyA9IHRoaXMuX2hhbmRsZXJzW2lkXSB8fCBuZXcgQXJyYXk8UmVnaXN0cmF0aW9uPigpO1xuICAgIGNvbnN0IHJlZ2lzdHJhdGlvbiA9IG5ldyBSZWdpc3RyYXRpb24oZmlsdGVyRm4sIGhhbmRsZXIpO1xuICAgIGhhbmRsZXJzLnB1c2gocmVnaXN0cmF0aW9uKTtcbiAgICB0aGlzLl9oYW5kbGVyc1tpZF0gPSBoYW5kbGVycztcbiAgICByZXR1cm4gKCkgPT4gdGhpcy5yZW1vdmVSZWdpc3RyYXRpb24oaWQsIHJlZ2lzdHJhdGlvbik7XG4gIH1cblxuICBwcml2YXRlIGhhc0hhbmRsZXJzRm9yTm90aWZpY2F0aW9uVHlwZShpZDogTm90aWZpY2F0aW9uSWQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faGFuZGxlcnMuaGFzT3duUHJvcGVydHkoaWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbk5vdGlmaWNhdGlvbihub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbik6IHZvaWQge1xuICAgIGlmICghdGhpcy5oYXNIYW5kbGVyc0Zvck5vdGlmaWNhdGlvblR5cGUobm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvbklkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEdvIHRocm91Z2ggYW5kIGNoZWNrIGZvciBhbGwgdGhlIGhhbmRsZXJzIG9mIHRoaXMgcGFydGljdWxhciBub3RpZmljYXRpb25cbiAgICB0aGlzLl9oYW5kbGVyc1tub3RpZmljYXRpb24ubm90aWZpY2F0aW9uSWRdLmZvckVhY2goaCA9PiBoLm9uTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbi5kYXRhKSk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZVJlZ2lzdHJhdGlvbihpZDogTm90aWZpY2F0aW9uSWQsIHJlZ2lzdHJhdGlvbjogUmVnaXN0cmF0aW9uKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmhhc0hhbmRsZXJzRm9yTm90aWZpY2F0aW9uVHlwZShpZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9oYW5kbGVyc1tpZF0gPSB0aGlzLl9oYW5kbGVyc1tpZF0uZmlsdGVyKHJlZyA9PiByZWcgIT09IHJlZ2lzdHJhdGlvbik7XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL1NlcnZpY2VzL2ltcGwvTm90aWZpY2F0aW9uU2VydmljZUltcGwudHNcbiAqKi8iLCJpbXBvcnQgKiBhcyBDb250cmFjdCBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xuaW1wb3J0IHtcbiAgRXhlY3V0ZVBhcmFtZXRlcnMsXG4gIEludGVybmFsQXBpRGlzcGF0Y2hlcixcbiAgTW9kZWwsXG4gIFBhcmFtZXRlcklkLFxuICBQYXJhbWV0ZXJJbmZvLFxuICBTaGVldFBhdGgsXG4gIFZlcmJJZCxcbn0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcblxuaW1wb3J0IHsgUGFyYW1ldGVySW1wbCB9IGZyb20gJy4uLy4uL0ludGVybmFsL1BhcmFtZXRlckltcGwnO1xuaW1wb3J0IHsgUGFyYW1ldGVyIH0gZnJvbSAnLi4vLi4vUGFyYW1ldGVyJztcbmltcG9ydCB7IFBhcmFtZXRlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vUGFyYW1ldGVyc1NlcnZpY2UnO1xuaW1wb3J0IHsgU2VydmljZU5hbWVzIH0gZnJvbSAnLi4vU2VydmljZVJlZ2lzdHJ5JztcblxuZXhwb3J0IGNsYXNzIFBhcmFtZXRlcnNTZXJ2aWNlSW1wbCBpbXBsZW1lbnRzIFBhcmFtZXRlcnNTZXJ2aWNlIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgZGlzcGF0Y2hlcjogSW50ZXJuYWxBcGlEaXNwYXRjaGVyKSB7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlcnZpY2VOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFNlcnZpY2VOYW1lcy5QYXJhbWV0ZXJzO1xuICB9XG5cbiAgcHVibGljIGdldFBhcmFtZXRlcnNGb3JTaGVldEFzeW5jKHNoZWV0UGF0aDogU2hlZXRQYXRoLCBzaGVldDogQ29udHJhY3QuU2hlZXQpOiBQcm9taXNlPEFycmF5PFBhcmFtZXRlcj4+IHtcbiAgICBjb25zdCBwYXJhbWV0ZXJzID0ge1xuICAgICAgW1BhcmFtZXRlcklkLlNoZWV0UGF0aF06IHNoZWV0UGF0aFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5kaXNwYXRjaGVyLmV4ZWN1dGUoVmVyYklkLkdldFBhcmFtZXRlcnNGb3JTaGVldCwgcGFyYW1ldGVycykudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAvLyBUT0RPIC0gQ2hlY2sgZm9yIGVycm9yXG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdCBhcyBBcnJheTxQYXJhbWV0ZXJJbmZvPjtcbiAgICAgIHJldHVybiByZXN1bHQubWFwKHBhcmFtZXRlckluZm8gPT4ge1xuICAgICAgICBjb25zdCBpbXBsID0gbmV3IFBhcmFtZXRlckltcGwocGFyYW1ldGVySW5mbyk7XG4gICAgICAgIHJldHVybiBuZXcgUGFyYW1ldGVyKGltcGwsIHNoZWV0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGNoYW5nZVBhcmFtZXRlclZhbHVlQXN5bmMoZmllbGROYW1lOiBzdHJpbmcsIG5ld1ZhbHVlOiBzdHJpbmcpOiBQcm9taXNlPFBhcmFtZXRlckluZm8+IHtcbiAgICBjb25zdCBwYXJhbWV0ZXJzID0ge1xuICAgICAgW1BhcmFtZXRlcklkLlBhcmFtZXRlckZpZWxkTmFtZV06IGZpZWxkTmFtZSxcbiAgICAgIFtQYXJhbWV0ZXJJZC5QYXJhbWV0ZXJWYWx1ZV06IG5ld1ZhbHVlXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoZXIuZXhlY3V0ZShWZXJiSWQuQ2hhbmdlUGFyYW1ldGVyVmFsdWUsIHBhcmFtZXRlcnMpLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0IGFzIFBhcmFtZXRlckluZm87XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGZpbmRQYXJhbWV0ZXJCeU5hbWVBc3luYyhuYW1lOiBzdHJpbmcsIHNoZWV0OiBDb250cmFjdC5TaGVldCk6IFByb21pc2U8UGFyYW1ldGVyIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuZmluZFBhcmFtZXRlckFzeW5jKHNoZWV0LCBuYW1lLCB1bmRlZmluZWQpO1xuICB9XG5cbiAgcHVibGljIGZpbmRQYXJhbWV0ZXJCeUdsb2JhbEZpZWxkTmFtZUFzeW5jKGZpZWxkTmFtZTogc3RyaW5nLCBzaGVldDogQ29udHJhY3QuU2hlZXQpOiBQcm9taXNlPFBhcmFtZXRlciB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLmZpbmRQYXJhbWV0ZXJBc3luYyhzaGVldCwgdW5kZWZpbmVkLCBmaWVsZE5hbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kUGFyYW1ldGVyQXN5bmMoXG4gICAgc2hlZXQ6IENvbnRyYWN0LlNoZWV0LFxuICAgIG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBmaWVsZE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IFByb21pc2U8UGFyYW1ldGVyIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgcGFyYW1ldGVyczogRXhlY3V0ZVBhcmFtZXRlcnMgPSB7fTtcbiAgICBpZiAobmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLlBhcmFtZXRlckNhcHRpb25dID0gbmFtZTtcbiAgICB9IGVsc2UgaWYgKGZpZWxkTmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLlBhcmFtZXRlckZpZWxkTmFtZV0gPSBmaWVsZE5hbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyByZXF1aXJlIGZpZWxkIG5hbWUgb3IgY2FwdGlvbicpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoZXIuZXhlY3V0ZShWZXJiSWQuRmluZFBhcmFtZXRlciwgcGFyYW1ldGVycykudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICBjb25zdCBpbnN0YW5jZU9mUGFyYW1ldGVySW5mbyA9IChvYmplY3Q6IE1vZGVsKTogb2JqZWN0IGlzIFBhcmFtZXRlckluZm8gPT4ge1xuICAgICAgICByZXR1cm4gJ2ZpZWxkTmFtZScgaW4gb2JqZWN0O1xuICAgICAgfTtcblxuICAgICAgLy8gV2UgbmVlZCB0byBjaGVjayB0byBzZWUgaWYgd2UgZ290IGEgdmFsaWQgcmVzcG9uc2UgYmFjayBhZ2FpblxuICAgICAgaWYgKGluc3RhbmNlT2ZQYXJhbWV0ZXJJbmZvKHJlc3BvbnNlLnJlc3VsdCkpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0IGFzIFBhcmFtZXRlckluZm87XG4gICAgICAgIGNvbnN0IGltcGwgPSBuZXcgUGFyYW1ldGVySW1wbChyZXN1bHQpO1xuICAgICAgICByZXR1cm4gbmV3IFBhcmFtZXRlcihpbXBsLCBzaGVldCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9TZXJ2aWNlcy9pbXBsL1BhcmFtZXRlcnNTZXJ2aWNlSW1wbC50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25JZCwgUGFyYW1ldGVySW5mbyB9IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XG5pbXBvcnQgeyBQYXJhbSB9IGZyb20gJ0B0YWJsZWF1L2FwaS11dGlscyc7XG5cbmltcG9ydCB7IEludGVybmFsVG9FeHRlcm5hbEVudW1NYXBwaW5ncyB9IGZyb20gJy4uL0VudW1NYXBwaW5ncy9JbnRlcm5hbFRvRXh0ZXJuYWxFbnVtTWFwcGluZ3MnO1xuaW1wb3J0IHsgUGFyYW1ldGVyQ2hhbmdlZEV2ZW50IH0gZnJvbSAnLi4vRXZlbnRzL1BhcmFtZXRlckNoYW5nZWRFdmVudCc7XG5pbXBvcnQgeyBEYXRhVmFsdWUgfSBmcm9tICcuLi9Nb2RlbHMvR2V0RGF0YU1vZGVscyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vU2VydmljZXMvTm90aWZpY2F0aW9uU2VydmljZSc7XG5pbXBvcnQgeyBQYXJhbWV0ZXJzU2VydmljZSB9IGZyb20gJy4uL1NlcnZpY2VzL1BhcmFtZXRlcnNTZXJ2aWNlJztcbmltcG9ydCB7IEFwaVNlcnZpY2VSZWdpc3RyeSwgU2VydmljZU5hbWVzIH0gZnJvbSAnLi4vU2VydmljZXMvU2VydmljZVJlZ2lzdHJ5JztcbmltcG9ydCB7IFNpbmdsZUV2ZW50TWFuYWdlciB9IGZyb20gJy4uL1NpbmdsZUV2ZW50TWFuYWdlcic7XG5pbXBvcnQgeyBTaW5nbGVFdmVudE1hbmFnZXJJbXBsIH0gZnJvbSAnLi9TaW5nbGVFdmVudE1hbmFnZXJJbXBsJztcblxuZXhwb3J0IGNsYXNzIFBhcmFtZXRlckltcGwge1xuICBwcml2YXRlIF9hbGxvd2FibGVWYWx1ZXM6IENvbnRyYWN0LlBhcmFtZXRlckRvbWFpblJlc3RyaWN0aW9uO1xuICBwcml2YXRlIF9nbG9iYWxGaWVsZE5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSBfcGFyYW1ldGVySW5mbzogUGFyYW1ldGVySW5mbztcblxuICBwdWJsaWMgY29uc3RydWN0b3IocGFyYW1ldGVySW5mbzogUGFyYW1ldGVySW5mbykge1xuICAgIHRoaXMuc2V0UGFyYW1ldGVySW5mbyhwYXJhbWV0ZXJJbmZvKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9wYXJhbWV0ZXJJbmZvLm5hbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGN1cnJlbnRWYWx1ZSgpOiBEYXRhVmFsdWUge1xuICAgIHJldHVybiBuZXcgRGF0YVZhbHVlKHRoaXMuX3BhcmFtZXRlckluZm8uY3VycmVudFZhbHVlLnZhbHVlLCB0aGlzLl9wYXJhbWV0ZXJJbmZvLmN1cnJlbnRWYWx1ZS5mb3JtYXR0ZWRWYWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRhdGFUeXBlKCk6IENvbnRyYWN0LkRhdGFUeXBlIHtcbiAgICByZXR1cm4gSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzLmRhdGFUeXBlLmNvbnZlcnQodGhpcy5fcGFyYW1ldGVySW5mby5kYXRhVHlwZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFsbG93YWJsZVZhbHVlcygpOiBDb250cmFjdC5QYXJhbWV0ZXJEb21haW5SZXN0cmljdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX2FsbG93YWJsZVZhbHVlcztcbiAgfVxuXG4gIHB1YmxpYyBjaGFuZ2VWYWx1ZUFzeW5jKG5ld1ZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgRGF0ZSk6IFByb21pc2U8RGF0YVZhbHVlPiB7XG4gICAgbGV0IGNvZXJjZWRWYWx1ZSA9IFBhcmFtLnNlcmlhbGl6ZVBhcmFtdGVyVmFsdWUobmV3VmFsdWUpO1xuICAgIGNvbnN0IHBhcmFtZXRlcnNTZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8UGFyYW1ldGVyc1NlcnZpY2U+KFNlcnZpY2VOYW1lcy5QYXJhbWV0ZXJzKTtcbiAgICByZXR1cm4gcGFyYW1ldGVyc1NlcnZpY2UuY2hhbmdlUGFyYW1ldGVyVmFsdWVBc3luYyh0aGlzLl9nbG9iYWxGaWVsZE5hbWUsIGNvZXJjZWRWYWx1ZSkudGhlbihwYXJhbWV0ZXJJbmZvID0+IHtcbiAgICAgIHRoaXMuc2V0UGFyYW1ldGVySW5mbyhwYXJhbWV0ZXJJbmZvKTtcbiAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRWYWx1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgbWV0aG9kIHdoaWNoIGdvZXMgdGhyb3VnaCBhbmQgcmVnaXN0ZXJzIGVhY2ggZXZlbnQgdHlwZSB0aGlzIGltcGwga25vd3MgYWJvdXRcbiAgICogd2l0aCB0aGUgTm90aWZpY2F0aW9uU2VydmljZS4gSXQgcmV0dXJucyBhbiBhcnJheSBvZiBTaW5nbGVFdmVudE1hbmFnZXIgb2JqZWN0cyB3aGljaFxuICAgKiBjYW4gdGhlbiBiZSBwYXNzZWQgdG8gYW4gRXZlbnRMaXN0ZW5lck1hbmFnZXIgdG8gaGFuZGxlIHVzZXIgcmVnaXN0cmF0aW9uIC8gdW5yZWdpc3RyYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBzaGVldCBUaGUgc2hlZXQgb2JqZWN0IHdoaWNoIHdpbGwgYmUgaW5jbHVkZWQgd2l0aCB0aGUgZXZlbnQgbm90aWZpY2F0aW9uc1xuICAgKiBAcmV0dXJucyB7QXJyYXk8U2luZ2xlRXZlbnRNYW5hZ2VyPn0gQ29sbGVjdGlvbiBvZiBldmVudCBtYW5hZ2VycyB0byBwYXNzIHRvIGFuIEV2ZW50TGlzdGVuZXJNYW5hZ2VyXG4gICAqL1xuICBwdWJsaWMgaW5pdGlhbGl6ZUV2ZW50cyhzaGVldDogQ29udHJhY3QuU2hlZXQpOiBBcnJheTxTaW5nbGVFdmVudE1hbmFnZXI+IHtcbiAgICBjb25zdCByZXN1bHRzID0gbmV3IEFycmF5PFNpbmdsZUV2ZW50TWFuYWdlcj4oKTtcbiAgICBsZXQgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZTtcblxuICAgIHRyeSB7XG4gICAgICBub3RpZmljYXRpb25TZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8Tm90aWZpY2F0aW9uU2VydmljZT4oU2VydmljZU5hbWVzLk5vdGlmaWNhdGlvbik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSB0aGlzIHNlcnZpY2UgcmVnaXN0ZXJlZCwganVzdCByZXR1cm5cbiAgICAgIHJldHVybiByZXN1bHRzO1xuICAgIH1cblxuICAgIC8vIEluaXRpYWxpemUgYWxsIG9mIHRoZSBldmVudCBtYW5hZ2VycyB3ZSdsbCBuZWVkIChvbmUgZm9yIGVhY2ggZXZlbnQgdHlwZSlcbiAgICBjb25zdCBwYXJhbWV0ZXJFdmVudCA9IG5ldyBTaW5nbGVFdmVudE1hbmFnZXJJbXBsPFBhcmFtZXRlckNoYW5nZWRFdmVudD4oQ29udHJhY3QuVGFibGVhdUV2ZW50VHlwZS5QYXJhbWV0ZXJDaGFuZ2VkKTtcbiAgICBub3RpZmljYXRpb25TZXJ2aWNlLnJlZ2lzdGVySGFuZGxlcihOb3RpZmljYXRpb25JZC5QYXJhbWV0ZXJDaGFuZ2VkLCAobW9kZWwpID0+IHtcbiAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IG1vZGVsIGFzIHN0cmluZztcbiAgICAgIHJldHVybiBmaWVsZE5hbWUgPT09IHRoaXMuX2dsb2JhbEZpZWxkTmFtZTtcbiAgICB9LCAoZmllbGROYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIHBhcmFtZXRlckV2ZW50LnRyaWdnZXJFdmVudCgoKSA9PiBuZXcgUGFyYW1ldGVyQ2hhbmdlZEV2ZW50KGZpZWxkTmFtZSwgc2hlZXQpKTtcbiAgICB9KTtcblxuICAgIHJlc3VsdHMucHVzaChwYXJhbWV0ZXJFdmVudCk7XG5cbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfVxuXG4gIHByaXZhdGUgc2V0UGFyYW1ldGVySW5mbyhwYXJhbWV0ZXJJbmZvOiBQYXJhbWV0ZXJJbmZvKTogdm9pZCB7XG4gICAgdGhpcy5fcGFyYW1ldGVySW5mbyA9IHBhcmFtZXRlckluZm87XG4gICAgdGhpcy5fZ2xvYmFsRmllbGROYW1lID0gcGFyYW1ldGVySW5mby5maWVsZE5hbWU7XG5cbiAgICBjb25zdCB0eXBlID0gSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzLmFsbG93YWJsZVZhbHVlcy5jb252ZXJ0KHBhcmFtZXRlckluZm8uYWxsb3dhYmxlVmFsdWVzVHlwZSk7XG4gICAgbGV0IGxpc3RWYWx1ZXM6IEFycmF5PERhdGFWYWx1ZT4gfCB1bmRlZmluZWQ7XG4gICAgbGV0IG1pblZhbHVlOiBEYXRhVmFsdWUgfCB1bmRlZmluZWQ7XG4gICAgbGV0IG1heFZhbHVlOiBEYXRhVmFsdWUgfCB1bmRlZmluZWQ7XG4gICAgbGV0IHN0ZXBTaXplOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbGV0IGRhdGVTdGVwUGVyaW9kOiBDb250cmFjdC5QZXJpb2RUeXBlIHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKHR5cGUgPT09IENvbnRyYWN0LlBhcmFtZXRlclZhbHVlVHlwZS5MaXN0KSB7XG4gICAgICBjb25zdCB2YWx1ZXMgPSBwYXJhbWV0ZXJJbmZvLmFsbG93YWJsZVZhbHVlcyB8fCBbXTtcbiAgICAgIGxpc3RWYWx1ZXMgPSB2YWx1ZXMubWFwKHZhbCA9PiBuZXcgRGF0YVZhbHVlKHZhbC52YWx1ZSwgdmFsLmZvcm1hdHRlZFZhbHVlKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSBDb250cmFjdC5QYXJhbWV0ZXJWYWx1ZVR5cGUuUmFuZ2UpIHtcbiAgICAgIG1pblZhbHVlID0gcGFyYW1ldGVySW5mby5taW5WYWx1ZSAmJiBuZXcgRGF0YVZhbHVlKHBhcmFtZXRlckluZm8ubWluVmFsdWUudmFsdWUsIHBhcmFtZXRlckluZm8ubWluVmFsdWUuZm9ybWF0dGVkVmFsdWUpO1xuICAgICAgbWF4VmFsdWUgPSBwYXJhbWV0ZXJJbmZvLm1heFZhbHVlICYmIG5ldyBEYXRhVmFsdWUocGFyYW1ldGVySW5mby5tYXhWYWx1ZS52YWx1ZSwgcGFyYW1ldGVySW5mby5tYXhWYWx1ZS5mb3JtYXR0ZWRWYWx1ZSk7XG4gICAgICBzdGVwU2l6ZSA9IHBhcmFtZXRlckluZm8uc3RlcFNpemU7XG4gICAgICBkYXRlU3RlcFBlcmlvZCA9IHBhcmFtZXRlckluZm8uZGF0ZVN0ZXBQZXJpb2QgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzLmRhdGVTdGVwUGVyaW9kLmNvbnZlcnQocGFyYW1ldGVySW5mby5kYXRlU3RlcFBlcmlvZCk7XG4gICAgfVxuXG4gICAgdGhpcy5fYWxsb3dhYmxlVmFsdWVzID0ge1xuICAgICAgdHlwZTogdHlwZSxcbiAgICAgIGFsbG93YWJsZVZhbHVlczogbGlzdFZhbHVlcyxcbiAgICAgIG1pblZhbHVlOiBtaW5WYWx1ZSxcbiAgICAgIG1heFZhbHVlOiBtYXhWYWx1ZSxcbiAgICAgIHN0ZXBTaXplOiBzdGVwU2l6ZSxcbiAgICAgIGRhdGVTdGVwUGVyaW9kOiBkYXRlU3RlcFBlcmlvZFxuICAgIH07XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL0ludGVybmFsL1BhcmFtZXRlckltcGwudHNcbiAqKi8iLCJpbXBvcnQgKiBhcyBDb250cmFjdCBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xuXG5pbXBvcnQgeyBQYXJhbWV0ZXJzU2VydmljZSB9IGZyb20gJy4uL1NlcnZpY2VzL1BhcmFtZXRlcnNTZXJ2aWNlJztcbmltcG9ydCB7IEFwaVNlcnZpY2VSZWdpc3RyeSwgU2VydmljZU5hbWVzIH0gZnJvbSAnLi4vU2VydmljZXMvU2VydmljZVJlZ2lzdHJ5JztcbmltcG9ydCB7IFRhYmxlYXVTaGVldEV2ZW50IH0gZnJvbSAnLi9UYWJsZWF1U2hlZXRFdmVudCc7XG5cbmV4cG9ydCBjbGFzcyBQYXJhbWV0ZXJDaGFuZ2VkRXZlbnQgZXh0ZW5kcyBUYWJsZWF1U2hlZXRFdmVudCBpbXBsZW1lbnRzIENvbnRyYWN0LlBhcmFtZXRlckNoYW5nZWRFdmVudCB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIF9nbG9iYWxGaWVsZE5hbWU6IHN0cmluZywgc2hlZXQ6IENvbnRyYWN0LlNoZWV0KSB7XG4gICAgc3VwZXIoQ29udHJhY3QuVGFibGVhdUV2ZW50VHlwZS5QYXJhbWV0ZXJDaGFuZ2VkLCBzaGVldCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UGFyYW1ldGVyQXN5bmMoKTogUHJvbWlzZTxDb250cmFjdC5QYXJhbWV0ZXI+IHtcbiAgICAvLyBDYWxsIGRvd24gdG8gb3VyIHNlcnZpY2UgdG8gZ2V0IHRoZSBwYXJhbWV0ZXIgYmFjayB2aWEgaXRzIGZpZWxkIG5hbWVcbiAgICBjb25zdCBzZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8UGFyYW1ldGVyc1NlcnZpY2U+KFNlcnZpY2VOYW1lcy5QYXJhbWV0ZXJzKTtcbiAgICByZXR1cm4gc2VydmljZS5maW5kUGFyYW1ldGVyQnlHbG9iYWxGaWVsZE5hbWVBc3luYyh0aGlzLl9nbG9iYWxGaWVsZE5hbWUsIHRoaXMuc2hlZXQpLnRoZW4ocGFyYW1ldGVyID0+IHtcbiAgICAgIGlmIChwYXJhbWV0ZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBmaW5kIHBhcmFtZXRlcicpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcGFyYW1ldGVyO1xuICAgIH0pO1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktc2hhcmVkL3NyYy9FdmVudHMvUGFyYW1ldGVyQ2hhbmdlZEV2ZW50LnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcbmltcG9ydCB7XG4gIEV4ZWN1dGVQYXJhbWV0ZXJzLFxuICBJbnRlcm5hbEFwaURpc3BhdGNoZXIsXG4gIFBhcmFtZXRlcklkLFxuICBRdWFudGl0YXRpdmVJbmNsdWRlZFZhbHVlcyxcbiAgU2VsZWN0aW9uVXBkYXRlVHlwZSBhcyBTZWxlY3Rpb25VcGRhdGVUeXBlSW50ZXJuYWwsXG4gIFZlcmJJZCxcbiAgVmlzdWFsSWRcbn0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcbmltcG9ydCB7IERpbWVuc2lvblNlbGVjdGlvbk1vZGVsLFxuICBIaWVyYXJjaGljYWxTZWxlY3Rpb25Nb2RlbCxcbiAgUmFuZ2VTZWxlY3Rpb25Nb2RlbCxcbiAgU2VsZWN0aW9uTW9kZWxzQ29udGFpbmVyLFxuICBUdXBsZVNlbGVjdGlvbk1vZGVsLFxuICBWYWx1ZVNlbGVjdGlvbk1vZGVsXG59IGZyb20gJy4uLy4uL01vZGVscy9TZWxlY3Rpb25Nb2RlbHMnO1xuaW1wb3J0IHsgU2VsZWN0aW9uU2VydmljZSB9IGZyb20gJy4uL1NlbGVjdGlvblNlcnZpY2UnO1xuaW1wb3J0IHsgU2VydmljZU5hbWVzIH0gZnJvbSAnLi4vU2VydmljZVJlZ2lzdHJ5JztcblxuZXhwb3J0IGNsYXNzIFNlbGVjdGlvblNlcnZpY2VJbXBsIGltcGxlbWVudHMgU2VsZWN0aW9uU2VydmljZSB7XG4gIHByaXZhdGUgX2Rpc3BhdGNoZXI6IEludGVybmFsQXBpRGlzcGF0Y2hlcjtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoZGlzcGF0Y2hlcjogSW50ZXJuYWxBcGlEaXNwYXRjaGVyKSB7XG4gICAgdGhpcy5fZGlzcGF0Y2hlciA9IGRpc3BhdGNoZXI7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlcnZpY2VOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFNlcnZpY2VOYW1lcy5TZWxlY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHRvIGNsZWFyIGFsbCB0aGUgc2VsZWN0ZWQgbWFya3MgZm9yIHRoZSBnaXZlbiB3b3Jrc2hlZXQuXG4gICAqXG4gICAqIEBwYXJhbSB2aXN1YWxJZFxuICAgKi9cbiAgcHVibGljIGNsZWFyU2VsZWN0ZWRNYXJrc0FzeW5jKHZpc3VhbElkOiBWaXN1YWxJZCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHBhcmFtZXRlcnM6IEV4ZWN1dGVQYXJhbWV0ZXJzID0ge1tQYXJhbWV0ZXJJZC5WaXN1YWxJZF06IHZpc3VhbElkfTtcbiAgICByZXR1cm4gdGhpcy5fZGlzcGF0Y2hlci5leGVjdXRlKFZlcmJJZC5DbGVhclNlbGVjdGVkTWFya3MsIHBhcmFtZXRlcnMpLnRoZW48dm9pZD4ocmVzcG9uc2UgPT4ge1xuICAgICAgcmV0dXJuIDsgLy8gRXhwZWN0aW5nIGFuIGVtcHR5IG1vZGVsIGFuZCBoZW5jZSB0aGUgdm9pZCByZXNwb25zZS5cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdG8gc2VsZWN0IG1hcmtzIGZvciB0aGUgZ2l2ZW4gd29ya3NoZWV0LlxuICAgKlxuICAgKiBAcGFyYW0gdmlzdWFsSWRcbiAgICogQHBhcmFtIHNlbGVjdGlvbkNyaXRlcmlhXG4gICAqIEBwYXJhbSBzZWxlY3Rpb25VcGRhdGVUeXBlXG4gICAqL1xuICBwdWJsaWMgc2VsZWN0TWFya3NCeVZhbHVlQXN5bmModmlzdWFsSWQ6IFZpc3VhbElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uQ3JpdGVyaWFzOiBBcnJheTxDb250cmFjdC5TZWxlY3Rpb25Dcml0ZXJpYT4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25VcGRhdGVUeXBlOiBDb250cmFjdC5TZWxlY3Rpb25VcGRhdGVUeXBlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHNlbGVjdGlvbkNyaXRlcmlhcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzZWxlY3Rpb24gY3JpdGVyaWEuIFNlbGVjdGlvbnMgbWlzc2luZy4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3Rpb25UeXBlOiBzdHJpbmcgPSB0aGlzLnZhbGlkYXRlU2VsZWN0aW9uVXBkYXRlVHlwZShzZWxlY3Rpb25VcGRhdGVUeXBlKTtcbiAgICBsZXQgc2VsZWN0aW9uQ3JpdGVyaWFUeXBlOiBTZWxlY3Rpb25Dcml0ZXJpYVR5cGUgPSB0aGlzLnZhbGlkYXRlU2VsZWN0aW9uQ3JpdGVyaWEoc2VsZWN0aW9uQ3JpdGVyaWFzWzBdKTtcbiAgICBsZXQgc2VsZWN0aW9uTW9kZWxDb250YWluZXI6IFNlbGVjdGlvbk1vZGVsc0NvbnRhaW5lciA9IHRoaXMucGFyc2VTZWxlY3Rpb25NYXJrcyhzZWxlY3Rpb25Dcml0ZXJpYXMsIHNlbGVjdGlvbkNyaXRlcmlhVHlwZSk7XG5cbiAgICBjb25zdCBwYXJhbWV0ZXJzOiBFeGVjdXRlUGFyYW1ldGVycyA9IHtcbiAgICAgIFtQYXJhbWV0ZXJJZC5WaXN1YWxJZF06IHZpc3VhbElkLFxuICAgICAgW1BhcmFtZXRlcklkLlNlbGVjdGlvblVwZGF0ZVR5cGVdOiBzZWxlY3Rpb25UeXBlXG4gICAgfTtcblxuICAgIHN3aXRjaCAoc2VsZWN0aW9uQ3JpdGVyaWFUeXBlKSB7XG4gICAgICBjYXNlIFNlbGVjdGlvbkNyaXRlcmlhVHlwZS5IaWVyYXJjaGljYWxUeXBlOiB7XG4gICAgICAgIHBhcmFtZXRlcnNbUGFyYW1ldGVySWQuSGllclZhbFNlbGVjdGlvbk1vZGVsc10gPSBzZWxlY3Rpb25Nb2RlbENvbnRhaW5lci5oaWVyTW9kZWxBcnI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBTZWxlY3Rpb25Dcml0ZXJpYVR5cGUuUmFuZ2VUeXBlOiB7XG4gICAgICAgIHBhcmFtZXRlcnNbUGFyYW1ldGVySWQuUXVhbnRSYW5nZVNlbGVjdGlvbk1vZGVsc10gPSBzZWxlY3Rpb25Nb2RlbENvbnRhaW5lci5xdWFudE1vZGVsQXJyO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgU2VsZWN0aW9uQ3JpdGVyaWFUeXBlLkRpbWVuc2lvblR5cGU6IHtcbiAgICAgICAgcGFyYW1ldGVyc1tQYXJhbWV0ZXJJZC5EaW1WYWxTZWxlY3Rpb25Nb2RlbHNdID0gc2VsZWN0aW9uTW9kZWxDb250YWluZXIuZGltTW9kZWxBcnI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9kaXNwYXRjaGVyLmV4ZWN1dGUoVmVyYklkLlNlbGVjdEJ5VmFsdWUsIHBhcmFtZXRlcnMpLnRoZW48dm9pZD4ocmVzcG9uc2UgPT4ge1xuICAgICAgLy8gRXhwZWN0aW5nIGFuIGVtcHR5IG1vZGVsIGFuZCBoZW5jZSB0aGUgdm9pZCByZXNwb25zZS5cbiAgICAgIHJldHVybjtcbiAgICAgIC8vIFRPRE8gSW52ZXN0aWdhdGUgdGhlIGVycm9yIHJlc3BvbnNlIHdpdGggbXVsdGlwbGUgb3V0cHV0IHBhcmFtcyBhbmQgdGhyb3cgZXJyb3IgYWNjb3JkaW5nbHkuXG4gICAgfSk7XG4gIH1cblxuICAgIC8qKlxuICAgKiBNZXRob2QgdG8gc2VsZWN0IG1hcmtzIGZvciB0aGUgZ2l2ZW4gd29ya3NoZWV0LlxuICAgKlxuICAgKiBAcGFyYW0gdmlzdWFsSWRcbiAgICogQHBhcmFtIE1hcmtJbmZvXG4gICAqIEBwYXJhbSBzZWxlY3Rpb25VcGRhdGVUeXBlXG4gICAqL1xuICBwdWJsaWMgc2VsZWN0TWFya3NCeUlkQXN5bmModmlzdWFsSWQ6IFZpc3VhbElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya3M6IEFycmF5PENvbnRyYWN0Lk1hcmtJbmZvPixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblVwZGF0ZVR5cGU6IENvbnRyYWN0LlNlbGVjdGlvblVwZGF0ZVR5cGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAobWFya3MubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc2VsZWN0aW9uLiBNYXJrcyBpbmZvIG1pc3NpbmcuJyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZWN0aW9uVHlwZTogc3RyaW5nID0gdGhpcy52YWxpZGF0ZVNlbGVjdGlvblVwZGF0ZVR5cGUoc2VsZWN0aW9uVXBkYXRlVHlwZSk7XG4gICAgbGV0IHNlbGVjdGlvbk1vZGVsQ29udGFpbmVyOiBTZWxlY3Rpb25Nb2RlbHNDb250YWluZXIgPSB0aGlzLnBhcnNlU2VsZWN0aW9uSWRzKG1hcmtzKTtcblxuICAgIGNvbnN0IHBhcmFtZXRlcnM6IEV4ZWN1dGVQYXJhbWV0ZXJzID0ge1xuICAgICAgW1BhcmFtZXRlcklkLlZpc3VhbElkXTogdmlzdWFsSWQsXG4gICAgICBbUGFyYW1ldGVySWQuU2VsZWN0aW9uVXBkYXRlVHlwZV06IHNlbGVjdGlvblR5cGUsXG4gICAgICBbUGFyYW1ldGVySWQuU2VsZWN0aW9uXTogc2VsZWN0aW9uTW9kZWxDb250YWluZXIuc2VsZWN0aW9uXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5fZGlzcGF0Y2hlci5leGVjdXRlKFZlcmJJZC5TZWxlY3RCeVZhbHVlLCBwYXJhbWV0ZXJzKS50aGVuPHZvaWQ+KHJlc3BvbnNlID0+IHtcbiAgICAgIC8vIEV4cGVjdGluZyBhbiBlbXB0eSBtb2RlbCBhbmQgaGVuY2UgdGhlIHZvaWQgcmVzcG9uc2UuXG4gICAgICByZXR1cm47XG4gICAgICAvLyBUT0RPIEludmVzdGlnYXRlIHRoZSBlcnJvciByZXNwb25zZSB3aXRoIG11bHRpcGxlIG91dHB1dCBwYXJhbXMgYW5kIHRocm93IGVycm9yIGFjY29yZGluZ2x5LlxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byBwcmVwYXJlIHRoZSBwcmVzIG1vZGVscyBmb3Igc2VsZWN0aW9uIGJ5IE1hcmtzSW5mb1xuICAgKiBAcGFyYW0gbWFya3NcbiAgICovXG4gIHByaXZhdGUgcGFyc2VTZWxlY3Rpb25JZHMobWFya3M6IEFycmF5PENvbnRyYWN0Lk1hcmtJbmZvPik6IFNlbGVjdGlvbk1vZGVsc0NvbnRhaW5lciB7XG4gICAgbGV0IGlkczogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICAgIGxldCBzZWxlY3Rpb25Nb2RlbENvbnRhaW5lcjogU2VsZWN0aW9uTW9kZWxzQ29udGFpbmVyID0gbmV3IFNlbGVjdGlvbk1vZGVsc0NvbnRhaW5lcigpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWFya3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCB0dXBsZUlkOiBOdW1iZXIgfCB1bmRlZmluZWQgID0gbWFya3NbaV0udHVwbGVJZDtcbiAgICAgIGlmICh0dXBsZUlkICE9PSB1bmRlZmluZWQgJiYgdHVwbGVJZCAhPT0gbnVsbCkgeyAvLyBJZiB0dXBsZSBpZCBpcyBwcm92aWRlZCB1c2UgdGhhdCBpbnN0ZWFkIG9mIHBhaXJcbiAgICAgICAgIGlkcy5wdXNoKHR1cGxlSWQudG9TdHJpbmcoKSk7IC8vIGNvbGxlY3QgdGhlIHR1cGxlIGlkc1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHR1cGxlSWQgcHJvdmlkZWQuJyk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpZHMubGVuZ3RoICE9PSAwKSB7IC8vIHR1cGxlIGlkcyBiYXNlZCBzZWxlY3Rpb25cbiAgICAgIGxldCB0dXBsZVNlbGVjdGlvbk1vZGVsOiBUdXBsZVNlbGVjdGlvbk1vZGVsID0gbmV3IFR1cGxlU2VsZWN0aW9uTW9kZWwoKTtcbiAgICAgIHR1cGxlU2VsZWN0aW9uTW9kZWwuc2VsZWN0aW9uVHlwZSA9ICd0dXBsZXMnO1xuICAgICAgdHVwbGVTZWxlY3Rpb25Nb2RlbC5vYmplY3RJZHMgPSBpZHM7XG4gICAgICBzZWxlY3Rpb25Nb2RlbENvbnRhaW5lci5zZWxlY3Rpb24gPSB0dXBsZVNlbGVjdGlvbk1vZGVsO1xuICAgIH1cbiAgICByZXR1cm4gc2VsZWN0aW9uTW9kZWxDb250YWluZXI7XG4gIH1cbiAgLyoqXG4gICAqIE1ldGhvZCB0byBwcmVwYXJlIHRoZSBwcmVzIG1vZGVscyBmb3Igc2VsZWN0aW9uIGJ5IHZhbHVlcy5cbiAgICpcbiAgICogU3VwcG9ydHMgMyB0eXBlcyBmb3Igc2VsZWN0aW9uOlxuICAgKiAxKSBoaWVyYXJjaGljYWwgdmFsdWUgYmFzZWQgc2VsZWN0aW9uXG4gICAqIDIpIHJhbmdlIHZhbHVlIGJhc2VkIHNlbGVjdGlvblxuICAgKiAzKSBEaW1lbnNpb24gdmFsdWUgYmFzZWQgc2VsZWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBtYXJrc1xuICAgKiBAcGFyYW0gaGllck1vZGVsQXJyXG4gICAqIEBwYXJhbSBkaW1Nb2RlbEFyclxuICAgKiBAcGFyYW0gcXVhbnRNb2RlbEFyclxuICAgKiBAcGFyYW0gc2VsZWN0aW9uXG4gICAqL1xuICBwcml2YXRlIHBhcnNlU2VsZWN0aW9uTWFya3Moc2VsZWN0aW9uQ3JpdGVyaWFzOiBBcnJheTxDb250cmFjdC5TZWxlY3Rpb25Dcml0ZXJpYT4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25UeXBlOiBTZWxlY3Rpb25Dcml0ZXJpYVR5cGUpOiBTZWxlY3Rpb25Nb2RlbHNDb250YWluZXIge1xuICAgIGxldCBzZWxlY3Rpb25Nb2RlbENvbnRhaW5lcjogU2VsZWN0aW9uTW9kZWxzQ29udGFpbmVyID0gbmV3IFNlbGVjdGlvbk1vZGVsc0NvbnRhaW5lcigpO1xuICAgIGxldCBtaXhlZFNlbGVjdGlvbnNFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWxlY3Rpb25Dcml0ZXJpYXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHN0ID0gc2VsZWN0aW9uQ3JpdGVyaWFzW2ldO1xuICAgICAgaWYgKHN0LmZpZWxkTmFtZSAmJiAoc3QudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBzdC52YWx1ZSAhPT0gbnVsbCkpIHtcbiAgICAgICAgbGV0IGNhdFJlZ2V4ID0gbmV3IFJlZ0V4cCgnKFxcW1tBLVphLXowLTldK10pLionLCAnZycpO1xuICAgICAgICBsZXQgcmFuZ2VPcHRpb246IENvbnRyYWN0LlJhbmdlVmFsdWUgPSBzdC52YWx1ZSBhcyBDb250cmFjdC5SYW5nZVZhbHVlO1xuICAgICAgICBpZiAoY2F0UmVnZXgudGVzdChzdC5maWVsZE5hbWUpKSB7IC8vIEhpZXJhcmNoaWNhbCB2YWx1ZSBzZWxlY3Rpb25cbiAgICAgICAgICBpZiAoc2VsZWN0aW9uVHlwZSA9PT0gU2VsZWN0aW9uQ3JpdGVyaWFUeXBlLkhpZXJhcmNoaWNhbFR5cGUpIHtcbiAgICAgICAgICAgIGxldCBoaWVyTW9kZWw6IEhpZXJhcmNoaWNhbFNlbGVjdGlvbk1vZGVsID0gPEhpZXJhcmNoaWNhbFNlbGVjdGlvbk1vZGVsPiB0aGlzLmFkZFRvUGFyYW1zTGlzdChzdC5maWVsZE5hbWUsIHN0LnZhbHVlKTtcbiAgICAgICAgICAgIHNlbGVjdGlvbk1vZGVsQ29udGFpbmVyLmhpZXJNb2RlbEFyci5wdXNoKGhpZXJNb2RlbCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1peGVkU2VsZWN0aW9uc0Vycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICgoPENvbnRyYWN0LlJhbmdlVmFsdWU+IHJhbmdlT3B0aW9uKS5taW4gIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICYmICg8Q29udHJhY3QuUmFuZ2VWYWx1ZT4gcmFuZ2VPcHRpb24pLm1heCAhPT0gdW5kZWZpbmVkKSB7IC8vIFJhbmdlIHZhbHVlIHNlbGVjdGlvblxuICAgICAgICAgIGlmIChzZWxlY3Rpb25UeXBlID09PSBTZWxlY3Rpb25Dcml0ZXJpYVR5cGUuUmFuZ2VUeXBlKSB7XG4gICAgICAgICAgICBsZXQgcXVhbnRNb2RlbDogUmFuZ2VTZWxlY3Rpb25Nb2RlbCA9IHRoaXMuYWRkVG9SYW5nZVBhcmFtc0xpc3Qoc3QuZmllbGROYW1lLCByYW5nZU9wdGlvbik7XG4gICAgICAgICAgICBzZWxlY3Rpb25Nb2RlbENvbnRhaW5lci5xdWFudE1vZGVsQXJyLnB1c2gocXVhbnRNb2RlbCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1peGVkU2VsZWN0aW9uc0Vycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHsgLy8gRGltZW5zaW9uIHZhbHVlIHNlbGVjdGlvblxuICAgICAgICAgIGlmIChzZWxlY3Rpb25UeXBlID09PSBTZWxlY3Rpb25Dcml0ZXJpYVR5cGUuRGltZW5zaW9uVHlwZSkge1xuICAgICAgICAgICAgbGV0IGRpbU1vZGVsOiBEaW1lbnNpb25TZWxlY3Rpb25Nb2RlbCA9IDxEaW1lbnNpb25TZWxlY3Rpb25Nb2RlbD4gdGhpcy5hZGRUb1BhcmFtc0xpc3Qoc3QuZmllbGROYW1lLCBzdC52YWx1ZSk7XG4gICAgICAgICAgICBzZWxlY3Rpb25Nb2RlbENvbnRhaW5lci5kaW1Nb2RlbEFyci5wdXNoKGRpbU1vZGVsKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbWl4ZWRTZWxlY3Rpb25zRXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1peGVkU2VsZWN0aW9uc0Vycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RpZmZlcmVudCB0eXBlcyBvZiBzZWxlY3Rpb24gY3JpdGVyaWFzIHByb3ZpZGVkLicpO1xuICAgIH1cbiAgICByZXR1cm4gc2VsZWN0aW9uTW9kZWxDb250YWluZXI7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHNlbGVjdGlvbkNyaXRlcmlhcyBWYWxpZGF0ZSBhbmQgZGV0ZXJtaW5lIHRoZSBzZWxlY3Rpb24gY3JpdGVyaWFzIHR5cGUuXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlU2VsZWN0aW9uQ3JpdGVyaWEoc2VsZWN0aW9uQ3JpdGVyaWE6IENvbnRyYWN0LlNlbGVjdGlvbkNyaXRlcmlhKTogU2VsZWN0aW9uQ3JpdGVyaWFUeXBlIHtcbiAgICBsZXQgc2VsZWN0aW9uVHlwZTogU2VsZWN0aW9uQ3JpdGVyaWFUeXBlO1xuICAgIC8vIERldGVybWluZSB0aGUgdHlwZSBvZiBzZWxlY3Rpb24sIHRoaXMgY29tbWFuZCBpcyBieSBsb29raW5nIGF0IHRoZSBmaXJzdCBzZWxlY3Rpb25cbiAgICBsZXQgY3JpdDogQ29udHJhY3QuU2VsZWN0aW9uQ3JpdGVyaWEgPSBzZWxlY3Rpb25Dcml0ZXJpYTtcblxuICAgIGxldCBjYXRSZWdleCA9IG5ldyBSZWdFeHAoJyhcXFtbQS1aYS16MC05XStdKS4qJywgJ2cnKTtcbiAgICBsZXQgcmFuZ2VPcHRpb246IENvbnRyYWN0LlJhbmdlVmFsdWUgPSBjcml0LnZhbHVlIGFzIENvbnRyYWN0LlJhbmdlVmFsdWU7XG5cbiAgICBpZiAoY3JpdC5maWVsZE5hbWUgJiYgKGNyaXQudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBjcml0LnZhbHVlICE9PSBudWxsKSkge1xuICAgICAgaWYgKGNhdFJlZ2V4LnRlc3QoY3JpdC5maWVsZE5hbWUpKSB7IC8vIEhpZXJhcmNoaWNhbCB2YWx1ZSBzZWxlY3Rpb25cbiAgICAgICAgc2VsZWN0aW9uVHlwZSA9IFNlbGVjdGlvbkNyaXRlcmlhVHlwZS5IaWVyYXJjaGljYWxUeXBlO1xuICAgICAgfSBlbHNlIGlmICgoPENvbnRyYWN0LlJhbmdlVmFsdWU+IHJhbmdlT3B0aW9uKS5taW4gIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICYmICg8Q29udHJhY3QuUmFuZ2VWYWx1ZT4gcmFuZ2VPcHRpb24pLm1heCAhPT0gdW5kZWZpbmVkKSB7IC8vIFJhbmdlIHZhbHVlIHNlbGVjdGlvblxuICAgICAgICBzZWxlY3Rpb25UeXBlID0gU2VsZWN0aW9uQ3JpdGVyaWFUeXBlLlJhbmdlVHlwZTtcbiAgICAgIH0gZWxzZSB7IC8vIERpbWVyc2lvbiB2YWx1ZSBzZWxlY3Rpb25cbiAgICAgICAgc2VsZWN0aW9uVHlwZSA9IFNlbGVjdGlvbkNyaXRlcmlhVHlwZS5EaW1lbnNpb25UeXBlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IgKCdJbnZhbGlkIHNlbGVjdGlvbiBjcml0ZXJpYSBmb3JtYXQuJyk7XG4gICAgfVxuICAgIHJldHVybiBzZWxlY3Rpb25UeXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byB0cmFuc2Zvcm0gdGhlIGtleSB2YWx1ZSBwYWlyIGludG8gdmFsdWUgYmFzZWQgcHJlcyBtb2RlbCBvYmplY3QuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZVNlbGVjdGlvbk1vZGVsXG4gICAqIEBwYXJhbSBmaWVsZE5hbWVcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqL1xuICBwcml2YXRlIGFkZFRvUGFyYW1zTGlzdChmaWVsZE5hbWU6IHN0cmluZywgdmFsdWU6IG9iamVjdCk6IFZhbHVlU2VsZWN0aW9uTW9kZWwge1xuICAgIGxldCB2YWx1ZVNlbGVjdGlvbk1vZGVsOiBWYWx1ZVNlbGVjdGlvbk1vZGVsID0gbmV3IFZhbHVlU2VsZWN0aW9uTW9kZWwoKTtcbiAgICBsZXQgbWFya1ZhbHVlczogQXJyYXk8c3RyaW5nPiA9IFtdO1xuXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIGxldCB2YWx1ZUFycjogQXJyYXk8c3RyaW5nPiA9IHZhbHVlO1xuICAgICAgZm9yICggbGV0IGkgPSAwOyBpIDwgdmFsdWVBcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbWFya1ZhbHVlcy5wdXNoKHZhbHVlQXJyW2ldLnRvU3RyaW5nKCkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBtYXJrVmFsdWVzLnB1c2godmFsdWUudG9TdHJpbmcoKSk7XG4gICAgfVxuXG4gICAgdmFsdWVTZWxlY3Rpb25Nb2RlbC5xdWFsaWZpZWRGaWVsZENhcHRpb24gPSBmaWVsZE5hbWU7XG4gICAgdmFsdWVTZWxlY3Rpb25Nb2RlbC5zZWxlY3RWYWx1ZXMgPSBtYXJrVmFsdWVzO1xuICAgIHJldHVybiB2YWx1ZVNlbGVjdGlvbk1vZGVsO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byB0cmFuc2Zvcm0gdGhlIGtleSB2YWx1ZSBwYWlyIGludG8gcmFuZ2UgYmFzZWQgc2VsZWN0aW9uIHByZXMgbW9kZWwuXG4gICAqXG4gICAqIFRPRE86IE5lZWQgdG8gaGFuZGxlIHRoZSBwYXJzaW5nIG9mIGRhdGUgdHlwZSB2YWx1ZXMuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZVNlbGVjdGlvbk1vZGVsXG4gICAqIEBwYXJhbSBmaWVsZE5hbWVcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqL1xuICBwcml2YXRlIGFkZFRvUmFuZ2VQYXJhbXNMaXN0KGZpZWxkTmFtZTogc3RyaW5nLCB2YWx1ZTogQ29udHJhY3QuUmFuZ2VWYWx1ZSk6IFJhbmdlU2VsZWN0aW9uTW9kZWwge1xuICAgIGxldCByYW5nZVNlbGVjdGlvbk1vZGVsOiBSYW5nZVNlbGVjdGlvbk1vZGVsID0gbmV3IFJhbmdlU2VsZWN0aW9uTW9kZWwoKTtcbiAgICByYW5nZVNlbGVjdGlvbk1vZGVsLnF1YWxpZmllZEZpZWxkQ2FwdGlvbiA9IGZpZWxkTmFtZTtcbiAgICBpZiAodmFsdWUubWF4ICE9PSB1bmRlZmluZWQgJiYgdmFsdWUubWF4ICE9PSBudWxsKSB7XG4gICAgICByYW5nZVNlbGVjdGlvbk1vZGVsLm1heFZhbHVlID0gdmFsdWUubWF4LnRvU3RyaW5nKCk7XG4gICAgfVxuICAgIGlmICh2YWx1ZS5taW4gIT09IHVuZGVmaW5lZCAmJiB2YWx1ZS5taW4gIT09IG51bGwpIHtcbiAgICAgIHJhbmdlU2VsZWN0aW9uTW9kZWwubWluVmFsdWUgPSB2YWx1ZS5taW4udG9TdHJpbmcoKTtcbiAgICB9XG4gICAgcmFuZ2VTZWxlY3Rpb25Nb2RlbC5pbmNsdWRlZCA9IHRoaXMudmFsaWRhdGVOdWxsT3B0aW9uVHlwZSh2YWx1ZS5udWxsT3B0aW9uKTtcbiAgICByZXR1cm4gcmFuZ2VTZWxlY3Rpb25Nb2RlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdG8gdmFsaWRhdGUgdGhlIHNlbGVjdGlvbiB1cGRhdGUgdHlwZS5cbiAgICpcbiAgICogQHBhcmFtIHNlbGVjdGlvblVwZGF0ZVR5cGVcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVTZWxlY3Rpb25VcGRhdGVUeXBlKHNlbGVjdGlvblVwZGF0ZVR5cGU6IENvbnRyYWN0LlNlbGVjdGlvblVwZGF0ZVR5cGUpOiBzdHJpbmcge1xuICAgIGlmIChzZWxlY3Rpb25VcGRhdGVUeXBlID09PSBDb250cmFjdC5TZWxlY3Rpb25VcGRhdGVUeXBlLlJlcGxhY2UpIHtcbiAgICAgIHJldHVybiBTZWxlY3Rpb25VcGRhdGVUeXBlSW50ZXJuYWwuUmVwbGFjZTtcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGlvblVwZGF0ZVR5cGUgPT09IENvbnRyYWN0LlNlbGVjdGlvblVwZGF0ZVR5cGUuQWRkKSB7XG4gICAgICByZXR1cm4gU2VsZWN0aW9uVXBkYXRlVHlwZUludGVybmFsLkFkZDtcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGlvblVwZGF0ZVR5cGUgPT09IENvbnRyYWN0LlNlbGVjdGlvblVwZGF0ZVR5cGUuUmVtb3ZlKSB7XG4gICAgICByZXR1cm4gU2VsZWN0aW9uVXBkYXRlVHlwZUludGVybmFsLlJlbW92ZTtcbiAgICB9XG4gICAgcmV0dXJuIFNlbGVjdGlvblVwZGF0ZVR5cGVJbnRlcm5hbC5SZXBsYWNlO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byB2YWxpZGF0ZSB0aGUgaW5jbHVkZSB0eXBlIGZvciByYW5nZSBzZWxlY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSBudWxsT3B0aW9uXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlTnVsbE9wdGlvblR5cGUobnVsbE9wdGlvbjogQ29udHJhY3QuRmlsdGVyTnVsbE9wdGlvbiB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gICAgaWYgKG51bGxPcHRpb24pIHtcbiAgICAgIGlmIChudWxsT3B0aW9uID09PSBDb250cmFjdC5GaWx0ZXJOdWxsT3B0aW9uLk51bGxWYWx1ZXMpIHtcbiAgICAgICAgcmV0dXJuIFF1YW50aXRhdGl2ZUluY2x1ZGVkVmFsdWVzLkluY2x1ZGVOdWxsO1xuICAgICAgfSBlbHNlIGlmIChudWxsT3B0aW9uID09PSBDb250cmFjdC5GaWx0ZXJOdWxsT3B0aW9uLk5vbk51bGxWYWx1ZXMpIHtcbiAgICAgICAgcmV0dXJuIFF1YW50aXRhdGl2ZUluY2x1ZGVkVmFsdWVzLkluY2x1ZGVOb25OdWxsO1xuICAgICAgfSBlbHNlIGlmIChudWxsT3B0aW9uID09PSBDb250cmFjdC5GaWx0ZXJOdWxsT3B0aW9uLkFsbFZhbHVlcykge1xuICAgICAgICByZXR1cm4gUXVhbnRpdGF0aXZlSW5jbHVkZWRWYWx1ZXMuSW5jbHVkZUFsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gUXVhbnRpdGF0aXZlSW5jbHVkZWRWYWx1ZXMuSW5jbHVkZUFsbDtcbiAgfVxuXG59XG5cbi8qKlxuICogRW51bSBmb3IgdGhlIGRpZmZlcmVudCBzZWxlY3Rpb24gY3JpdGVyaWEgdHlwZXMuXG4gKi9cbmVudW0gU2VsZWN0aW9uQ3JpdGVyaWFUeXBlIHtcbiAgSGllcmFyY2hpY2FsVHlwZSA9IDEsXG4gIFJhbmdlVHlwZSA9IDIsXG4gIERpbWVuc2lvblR5cGUgPSAzLFxuICBUdXBsZXNUeXBlID0gNCxcbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1zaGFyZWQvc3JjL1NlcnZpY2VzL2ltcGwvU2VsZWN0aW9uU2VydmljZUltcGwudHNcbiAqKi8iLCIvKipcbiAqIFNlbGVjdGlvbiBNb2RlbC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNlbGVjdGlvbk1vZGVsIHtcbiAgcXVhbGlmaWVkRmllbGRDYXB0aW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVmFsdWUgYmFzZWQgc2VsZWN0aW9uIG1vZGVsLiBNZWFudCBmb3IgaGllcmFyY2hpY2FsLCByYW5nZSBhbmQgY2F0ZWdvcmljYWwgc2VsZWN0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIFZhbHVlU2VsZWN0aW9uTW9kZWwgZXh0ZW5kcyBTZWxlY3Rpb25Nb2RlbCB7XG4gIHNlbGVjdFZhbHVlczogQXJyYXk8c3RyaW5nPiA9IFtdO1xufVxuXG4vKipcbiAqIEhpZXJhcmNoaWNhbCB2YWx1ZSBzZWxlY3Rpb24gbW9kZWxcbiAqL1xuZXhwb3J0IGNsYXNzIEhpZXJhcmNoaWNhbFNlbGVjdGlvbk1vZGVsIGV4dGVuZHMgVmFsdWVTZWxlY3Rpb25Nb2RlbCB7XG59XG5cbi8qKlxuICogUmFuZ2UgYmFzZWQgdmFsdWUgc2VsZWN0aW9uIG1vZGVsXG4gKi9cbmV4cG9ydCBjbGFzcyBSYW5nZVNlbGVjdGlvbk1vZGVsIGV4dGVuZHMgU2VsZWN0aW9uTW9kZWwge1xuICBtaW5WYWx1ZTogc3RyaW5nO1xuICBtYXhWYWx1ZTogc3RyaW5nO1xuICBpbmNsdWRlZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIERpbWVuc2lvbiB2YWx1ZSBzZWxlY3Rpb24gbW9kZWxcbiAqL1xuZXhwb3J0IGNsYXNzIERpbWVuc2lvblNlbGVjdGlvbk1vZGVsIGV4dGVuZHMgVmFsdWVTZWxlY3Rpb25Nb2RlbCB7XG59XG4vKipcbiAqIFR1cGxlIGJhc2VkIHNlbGVjdGlvbiBtb2RlbFxuICovXG5leHBvcnQgY2xhc3MgVHVwbGVTZWxlY3Rpb25Nb2RlbCB7XG4gIHNlbGVjdGlvblR5cGU6IHN0cmluZztcbiAgb2JqZWN0SWRzOiBBcnJheTxzdHJpbmc+ID0gW107XG59XG5cbi8qKlxuICogQ29udGFpbmVyIGNsYXNzIHRvIHBvcHVsYXRlIGFsbCB0aGUgc2VsZWN0aW9uIG1vZGVscyB3aGVuIHBhcnNpbmcgaW5wdXRcbiAqL1xuZXhwb3J0IGNsYXNzIFNlbGVjdGlvbk1vZGVsc0NvbnRhaW5lciB7XG4gIGhpZXJNb2RlbEFycjogQXJyYXk8SGllcmFyY2hpY2FsU2VsZWN0aW9uTW9kZWw+ID0gW107XG4gIGRpbU1vZGVsQXJyOiBBcnJheTxEaW1lbnNpb25TZWxlY3Rpb25Nb2RlbD4gPSBbXTtcbiAgcXVhbnRNb2RlbEFycjogQXJyYXk8UmFuZ2VTZWxlY3Rpb25Nb2RlbD4gPSBbXTtcbiAgc2VsZWN0aW9uOiBUdXBsZVNlbGVjdGlvbk1vZGVsO1xufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLXNoYXJlZC9zcmMvTW9kZWxzL1NlbGVjdGlvbk1vZGVscy50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XG5cbmltcG9ydCB7IERhc2hib2FyZEltcGwgfSBmcm9tICcuL0ludGVybmFsL0Rhc2hib2FyZEltcGwnO1xuaW1wb3J0IHsgU2hlZXQgfSBmcm9tICcuL1NoZWV0JztcblxuZXhwb3J0IGNsYXNzIERhc2hib2FyZCBleHRlbmRzIFNoZWV0IGltcGxlbWVudHMgQ29udHJhY3QuRGFzaGJvYXJkIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgX2Rhc2hib2FyZEltcGw6IERhc2hib2FyZEltcGwpIHtcbiAgICBzdXBlcihfZGFzaGJvYXJkSW1wbCk7XG4gICAgX2Rhc2hib2FyZEltcGwuaW5pdGlhbGl6ZVdpdGhQdWJsaWNJbnRlcmZhY2VzKHRoaXMpO1xuICB9XG5cbiAgcHVibGljIGdldCB3b3Jrc2hlZXRzKCk6IEFycmF5PENvbnRyYWN0LldvcmtzaGVldD4ge1xuICAgIHJldHVybiB0aGlzLl9kYXNoYm9hcmRJbXBsLndvcmtzaGVldHM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG9iamVjdHMoKTogQXJyYXk8Q29udHJhY3QuRGFzaGJvYXJkT2JqZWN0PiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rhc2hib2FyZEltcGwub2JqZWN0cztcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvZXh0ZW5zaW9ucy1hcGkvc3JjL0Rhc2hib2FyZC50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XG5cbmltcG9ydCB7IEV2ZW50TGlzdGVuZXJNYW5hZ2VyIH0gZnJvbSAnQHRhYmxlYXUvYXBpLXNoYXJlZCc7XG5cbmltcG9ydCB7IFNoZWV0SW1wbCB9IGZyb20gJy4vSW50ZXJuYWwvU2hlZXRJbXBsJztcblxuZXhwb3J0IGNsYXNzIFNoZWV0IGV4dGVuZHMgRXZlbnRMaXN0ZW5lck1hbmFnZXIgaW1wbGVtZW50cyBDb250cmFjdC5TaGVldCB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIF9zaGVldEltcGw6IFNoZWV0SW1wbCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc2hlZXRJbXBsLm5hbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNoZWV0VHlwZSgpOiBDb250cmFjdC5TaGVldFR5cGUge1xuICAgIHJldHVybiB0aGlzLl9zaGVldEltcGwuc2hlZXRUeXBlO1xuICB9XG5cbiAgcHVibGljIGdldCBzaXplKCk6IENvbnRyYWN0LlNpemUge1xuICAgIHJldHVybiB0aGlzLl9zaGVldEltcGwuc2l6ZTtcbiAgfVxuXG4gIHB1YmxpYyBmaW5kUGFyYW1ldGVyQXN5bmMocGFyYW1ldGVyTmFtZTogc3RyaW5nKTogUHJvbWlzZTxDb250cmFjdC5QYXJhbWV0ZXIgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fc2hlZXRJbXBsLmZpbmRQYXJhbWV0ZXJBc3luYyhwYXJhbWV0ZXJOYW1lLCB0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRQYXJhbWV0ZXJzQXN5bmMoKTogUHJvbWlzZTxBcnJheTxDb250cmFjdC5QYXJhbWV0ZXI+PiB7XG4gICAgcmV0dXJuIHRoaXMuX3NoZWV0SW1wbC5nZXRQYXJhbWV0ZXJzQXN5bmModGhpcyk7XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2V4dGVuc2lvbnMtYXBpL3NyYy9TaGVldC50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XG5cbi8qKlxuICogSW1wbGVtZW50YXRpb24gb2YgdGhlIGV4dGVybmFsIERhc2hib2FyZENvbnRlbnQgbmFtZXNwYWNlLlxuICogVGhpcyBkb2VzIG5vdCBmb2xsb3cgdGhlIEltcGwgcGF0dGVybiBhcyBEYXNoYm9hcmRDb250ZW50IGlzXG4gKiBjdXJyZW50bHkganVzdCBhIChzaW5nbGUpIHByb3BlcnR5IGJhZy5cbiAqL1xuZXhwb3J0IGNsYXNzIERhc2hib2FyZENvbnRlbnQgaW1wbGVtZW50cyBDb250cmFjdC5EYXNoYm9hcmRDb250ZW50IHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgX2Rhc2hib2FyZDogQ29udHJhY3QuRGFzaGJvYXJkKSB7IH1cblxuICBwdWJsaWMgZ2V0IGRhc2hib2FyZCgpOiBDb250cmFjdC5EYXNoYm9hcmQge1xuICAgIHJldHVybiB0aGlzLl9kYXNoYm9hcmQ7XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2V4dGVuc2lvbnMtYXBpL3NyYy9OYW1lc3BhY2VzL0Rhc2hib2FyZENvbnRlbnQudHNcbiAqKi8iLCJpbXBvcnQgKiBhcyBDb250cmFjdCBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xuXG5pbXBvcnQgeyBFeHRlbnNpb25FbnZpcm9ubWVudCB9IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XG5pbXBvcnQgeyBJbnRlcm5hbFRvRXh0ZXJuYWxFbnVtTWFwcGluZ3MgYXMgRW51bU1hcHBpbmdzIH0gZnJvbSAnQHRhYmxlYXUvYXBpLXNoYXJlZCc7XG5cbi8qKlxuICogSW1wbGVtZW50YXRpb24gb2YgdGhlIGV4dGVybmFsIGVudmlyb25tZW50IG5hbWVzcGFjZS5cbiAqIEVudmlyb25tZW50IGRvZXMgbm90IGZvbGxvdyB0aGUgSW1wbCBwYXR0ZXJuIGFzIGl0IGlzXG4gKiBqdXN0IGEgcHJvcGVydHkgYmFnLlxuICovXG5leHBvcnQgY2xhc3MgRW52aXJvbm1lbnQgaW1wbGVtZW50cyBDb250cmFjdC5FbnZpcm9ubWVudCB7XG4gIHByaXZhdGUgX2FwaVZlcnNpb246IHN0cmluZztcbiAgcHJpdmF0ZSBfY29udGV4dDogQ29udHJhY3QuRXh0ZW5zaW9uQ29udGV4dDtcbiAgcHJpdmF0ZSBfbGFuZ3VhZ2U6IHN0cmluZztcbiAgcHJpdmF0ZSBfbG9jYWxlOiBzdHJpbmc7XG4gIHByaXZhdGUgX21vZGU6IENvbnRyYWN0LkV4dGVuc2lvbk1vZGU7XG4gIHByaXZhdGUgX29wZXJhdGluZ1N5c3RlbTogc3RyaW5nO1xuICBwcml2YXRlIF90YWJsZWF1VmVyc2lvbjogc3RyaW5nO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihleHRlbnNpb25FbnZpcm9ubWVudDogRXh0ZW5zaW9uRW52aXJvbm1lbnQpIHtcbiAgICB0aGlzLl9hcGlWZXJzaW9uID0gZXh0ZW5zaW9uRW52aXJvbm1lbnQuYXBpVmVyc2lvbjtcbiAgICB0aGlzLl9jb250ZXh0ID0gRW51bU1hcHBpbmdzLmV4dGVuc2lvbkNvbnRleHQuY29udmVydChleHRlbnNpb25FbnZpcm9ubWVudC5leHRlbnNpb25Db250ZXh0KTtcbiAgICB0aGlzLl9sYW5ndWFnZSA9IGV4dGVuc2lvbkVudmlyb25tZW50LmV4dGVuc2lvbkxhbmd1YWdlO1xuICAgIHRoaXMuX2xvY2FsZSA9IGV4dGVuc2lvbkVudmlyb25tZW50LmV4dGVuc2lvbkxvY2FsZTtcbiAgICB0aGlzLl9tb2RlID0gRW51bU1hcHBpbmdzLmV4dGVuc2lvbk1vZGUuY29udmVydChleHRlbnNpb25FbnZpcm9ubWVudC5leHRlbnNpb25Nb2RlKTtcbiAgICB0aGlzLl9vcGVyYXRpbmdTeXN0ZW0gPSBleHRlbnNpb25FbnZpcm9ubWVudC5vcGVyYXRpbmdTeXN0ZW07XG4gICAgdGhpcy5fdGFibGVhdVZlcnNpb24gPSBleHRlbnNpb25FbnZpcm9ubWVudC50YWJsZWF1VmVyc2lvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXBpVmVyc2lvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hcGlWZXJzaW9uO1xuICB9XG5cbiAgcHVibGljIGdldCBjb250ZXh0KCk6IENvbnRyYWN0LkV4dGVuc2lvbkNvbnRleHQge1xuICAgIHJldHVybiB0aGlzLl9jb250ZXh0O1xuICB9XG5cbiAgcHVibGljIGdldCBsYW5ndWFnZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9sYW5ndWFnZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbG9jYWxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2xvY2FsZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbW9kZSgpOiBDb250cmFjdC5FeHRlbnNpb25Nb2RlIHtcbiAgICByZXR1cm4gdGhpcy5fbW9kZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgb3BlcmF0aW5nU3lzdGVtKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX29wZXJhdGluZ1N5c3RlbTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGFibGVhdVZlcnNpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdGFibGVhdVZlcnNpb247XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2V4dGVuc2lvbnMtYXBpL3NyYy9OYW1lc3BhY2VzL0Vudmlyb25tZW50LnRzXG4gKiovIiwiaW1wb3J0IHsgU2V0dGluZ3MgYXMgU2V0dGluZ3NDb250cmFjdCB9IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XG5cbmltcG9ydCB7IFNldHRpbmdzSW1wbCB9IGZyb20gJy4uL0ludGVybmFsL1NldHRpbmdzSW1wbCc7XG5pbXBvcnQgeyBTZXR0aW5nc0NvbGxlY3Rpb24gfSBmcm9tICcuLi9TZXJ2aWNlcy9TZXR0aW5nc1NlcnZpY2UnO1xuXG4vKipcbiAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBleHRlcm5hbCBzZXR0aW5ncyBuYW1lc3BhY2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBTZXR0aW5ncyBpbXBsZW1lbnRzIFNldHRpbmdzQ29udHJhY3Qge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBzZXR0aW5nc0ltcGw6IFNldHRpbmdzSW1wbCkgeyB9XG5cbiAgcHVibGljIGVyYXNlKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZXR0aW5nc0ltcGwuZXJhc2Uoa2V5KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQoa2V5OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnNldHRpbmdzSW1wbC5nZXQoa2V5KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBbGwoKTogU2V0dGluZ3NDb2xsZWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5nc0ltcGwuZ2V0QWxsKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzTW9kaWZpZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3NJbXBsLmlzTW9kaWZpZWQ7XG4gIH1cblxuICBwdWJsaWMgc2F2ZUFzeW5jKCk6IFByb21pc2U8U2V0dGluZ3NDb2xsZWN0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3NJbXBsLnNhdmVBc3luYygpO1xuICB9XG5cbiAgcHVibGljIHNldChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2V0dGluZ3NJbXBsLnNldChrZXksIHZhbHVlKTtcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvZXh0ZW5zaW9ucy1hcGkvc3JjL05hbWVzcGFjZXMvU2V0dGluZ3MudHNcbiAqKi8iLCJpbXBvcnQgeyBJbnRlcm5hbEFwaURpc3BhdGNoZXIgfSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xuaW1wb3J0IHsgQXBpU2VydmljZVJlZ2lzdHJ5IH0gZnJvbSAnQHRhYmxlYXUvYXBpLXNoYXJlZCc7XG5cbmltcG9ydCB7IEluaXRpYWxpemF0aW9uU2VydmljZUltcGwgfSBmcm9tICcuL0ltcGwvSW5pdGlhbGl6YXRpb25TZXJ2aWNlSW1wbCc7XG5pbXBvcnQgeyBTZXR0aW5nc1NlcnZpY2VJbXBsIH0gZnJvbSAgJy4vSW1wbC9TZXR0aW5nc1NlcnZpY2VJbXBsJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyQWxsRXh0ZW5zaW9uc1NlcnZpY2VzKGRpc3BhdGNoZXI6IEludGVybmFsQXBpRGlzcGF0Y2hlcik6IHZvaWQge1xuICBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UucmVnaXN0ZXJTZXJ2aWNlKG5ldyBJbml0aWFsaXphdGlvblNlcnZpY2VJbXBsKGRpc3BhdGNoZXIpKTtcbiAgQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLnJlZ2lzdGVyU2VydmljZShuZXcgU2V0dGluZ3NTZXJ2aWNlSW1wbChkaXNwYXRjaGVyKSk7XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9leHRlbnNpb25zLWFwaS9zcmMvU2VydmljZXMvUmVnaXN0ZXJBbGxFeHRlbnNpb25zU2VydmljZXMudHNcbiAqKi8iLCJpbXBvcnQgeyBFeHRlbnNpb25Cb290c3RyYXBJbmZvLCBJbnRlcm5hbEFwaURpc3BhdGNoZXIsIFZlcmJJZCB9IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XG5cbmltcG9ydCB7IEV4dGVuc2lvbnNTZXJ2aWNlTmFtZXMgfSBmcm9tICcuLi9FeHRlbnNpb25zU2VydmljZU5hbWVzJztcbmltcG9ydCB7IEluaXRpYWxpemF0aW9uU2VydmljZSB9IGZyb20gJy4uL0luaXRpYWxpemF0aW9uU2VydmljZSc7XG5cbmV4cG9ydCBjbGFzcyBJbml0aWFsaXphdGlvblNlcnZpY2VJbXBsIGltcGxlbWVudHMgSW5pdGlhbGl6YXRpb25TZXJ2aWNlIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgZGlzcGF0Y2hlcjogSW50ZXJuYWxBcGlEaXNwYXRjaGVyKSB7IH1cblxuICBwdWJsaWMgZ2V0IHNlcnZpY2VOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEV4dGVuc2lvbnNTZXJ2aWNlTmFtZXMuSW5pdGlhbGl6YXRpb25TZXJ2aWNlO1xuICB9XG5cbiAgcHVibGljIGluaXRpYWxpemVEYXNoYm9hcmRFeHRlbnNpb25zQXN5bmMoKTogUHJvbWlzZTxFeHRlbnNpb25Cb290c3RyYXBJbmZvPiB7XG4gICAgLy8gV2UgZG9uJ3QgbmVlZCBhbnkgcGFyYW1ldGVycyBmb3IgdGhpcyBjYWxsIGJlY2F1c2UgdGhleSBhcmUgYWRkZWQgaW4gZm9yIHVzIGJ5IHRoZSBkaXNwYXRjaGVyXG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2hlci5leGVjdXRlKFZlcmJJZC5Jbml0aWFsaXplRXh0ZW5zaW9uLCB7fSkudGhlbjxFeHRlbnNpb25Cb290c3RyYXBJbmZvPihyZXNwb25zZSA9PiB7XG4gICAgICAvLyBUT0RPIC0gVmFsaWRhdGUgcmV0dXJuIHZhbHVlXG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdCBhcyBFeHRlbnNpb25Cb290c3RyYXBJbmZvO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvZXh0ZW5zaW9ucy1hcGkvc3JjL1NlcnZpY2VzL0ltcGwvSW5pdGlhbGl6YXRpb25TZXJ2aWNlSW1wbC50c1xuICoqLyIsImltcG9ydCB7XG4gIEV4ZWN1dGVQYXJhbWV0ZXJzLFxuICBFeHRlbnNpb25TZXR0aW5nc0luZm8sXG4gIEludGVybmFsQXBpRGlzcGF0Y2hlcixcbiAgUGFyYW1ldGVySWQsXG4gIFZlcmJJZFxufSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xuXG5pbXBvcnQgeyBFeHRlbnNpb25zU2VydmljZU5hbWVzIH0gZnJvbSAnLi4vRXh0ZW5zaW9uc1NlcnZpY2VOYW1lcyc7XG5pbXBvcnQgeyBTZXR0aW5nc0NvbGxlY3Rpb24sIFNldHRpbmdzU2VydmljZSB9IGZyb20gJy4uL1NldHRpbmdzU2VydmljZSc7XG5cbmV4cG9ydCBjbGFzcyBTZXR0aW5nc1NlcnZpY2VJbXBsIGltcGxlbWVudHMgU2V0dGluZ3NTZXJ2aWNlIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgZGlzcGF0Y2hlcjogSW50ZXJuYWxBcGlEaXNwYXRjaGVyKSB7IH1cblxuICBwdWJsaWMgZ2V0IHNlcnZpY2VOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEV4dGVuc2lvbnNTZXJ2aWNlTmFtZXMuU2V0dGluZ3NTZXJ2aWNlO1xuICB9XG5cbiAgcHVibGljIHNhdmVTZXR0aW5nc0FzeW5jKHNldHRpbmdzOiBTZXR0aW5nc0NvbGxlY3Rpb24pOiBQcm9taXNlPFNldHRpbmdzQ29sbGVjdGlvbj4ge1xuICAgIGNvbnN0IHBhcmFtZXRlcnM6IEV4ZWN1dGVQYXJhbWV0ZXJzID0ge1tQYXJhbWV0ZXJJZC5TZXR0aW5nc1ZhbHVlc106IHNldHRpbmdzfTtcblxuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoZXIuZXhlY3V0ZShWZXJiSWQuU2F2ZUV4dGVuc2lvblNldHRpbmdzLCBwYXJhbWV0ZXJzKS50aGVuPFNldHRpbmdzQ29sbGVjdGlvbj4odmFsdWUgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gdmFsdWUucmVzdWx0IGFzIEV4dGVuc2lvblNldHRpbmdzSW5mbztcblxuICAgICAgaWYgKCFyZXN1bHQgfHwgIXJlc3VsdC5zZXR0aW5nc1ZhbHVlcykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludGVybmFsIGVycm9yIHNhdmluZyBzZXR0aW5ncy4nKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuKHJlc3VsdC5zZXR0aW5nc1ZhbHVlcyk7XG4gICAgfSk7XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2V4dGVuc2lvbnMtYXBpL3NyYy9TZXJ2aWNlcy9JbXBsL1NldHRpbmdzU2VydmljZUltcGwudHNcbiAqKi8iLCJpbXBvcnQgeyBWZXJzaW9uTnVtYmVyIGFzIFZlcnNpb25OdW1iZXJDb250cmFjdCB9IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XG5cbmRlY2xhcmUgdmFyIEFERElOX0FQSV9WRVJTSU9OX05VTUJFUjogc3RyaW5nO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgZXh0ZW5zaW9ucyBsaWJyYXJ5XG4gKi9cbmV4cG9ydCBjbGFzcyBWZXJzaW9uTnVtYmVyIGltcGxlbWVudHMgVmVyc2lvbk51bWJlckNvbnRyYWN0IHtcblxuICAvLyBVc2luZyBzb21lIHdlYnBhY2sgdHJpY2tzLCB3ZSBjYW4gaW5qZWN0IHRoaXMgdmVyc2lvbiBpbnRvIG91ciBjb2RlIChraW5kYSBsaWtlIGMrKyBwcmVwcm9jZXNzb3Igc3R1ZmYpXG4gIHByaXZhdGUgc3RhdGljIF9pbnN0YW5jZTogVmVyc2lvbk51bWJlciA9IG5ldyBWZXJzaW9uTnVtYmVyKEFERElOX0FQSV9WRVJTSU9OX05VTUJFUik7XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgdmVyc2lvbiBudW1iZXIuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldCBJbnN0YW5jZSgpOiBWZXJzaW9uTnVtYmVyIHtcbiAgICByZXR1cm4gVmVyc2lvbk51bWJlci5faW5zdGFuY2U7XG4gIH1cblxuICBwcml2YXRlIF9tYWpvcjogbnVtYmVyO1xuICBwcml2YXRlIF9taW5vcjogbnVtYmVyO1xuICBwcml2YXRlIF9maXg6IG51bWJlcjtcblxuICAvLyBwcml2YXRlIGNvbnN0cnVjdG9yIHNvIGV2ZXJ5b25lIHVzZXMgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZVxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHZlcnNpb25TdHJpbmc6IHN0cmluZykge1xuICAgIGNvbnN0IHBhcnRzID0gdmVyc2lvblN0cmluZy5zcGxpdCgnLicpLm1hcChwID0+IHBhcnNlSW50KHAsIDEwKSk7XG4gICAgaWYgKHBhcnRzLmxlbmd0aCAhPT0gMykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHZlcnNpb24gbnVtYmVyOiAnICsgdmVyc2lvblN0cmluZyk7XG4gICAgfVxuXG4gICAgdGhpcy5fbWFqb3IgPSBwYXJ0c1swXTtcbiAgICB0aGlzLl9taW5vciA9IHBhcnRzWzFdO1xuICAgIHRoaXMuX2ZpeCA9IHBhcnRzWzJdO1xuICB9XG5cbiAgcHVibGljIGdldCBtYWpvcigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9tYWpvcjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWlub3IoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbWlub3I7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZpeCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9maXg7XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2V4dGVuc2lvbnMtYXBpL3NyYy9WZXJzaW9uTnVtYmVyLnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcbmltcG9ydCB7IERhc2hib2FyZE9iamVjdFR5cGUsIEV4dGVuc2lvbkRhc2hib2FyZEluZm8sIFNoZWV0UGF0aCwgVmlzdWFsSWQgfSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xuaW1wb3J0IHsgSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzLCBQb2ludCwgU2l6ZSB9IGZyb20gJ0B0YWJsZWF1L2FwaS1zaGFyZWQnO1xuXG5pbXBvcnQgeyBEYXNoYm9hcmRPYmplY3QgfSBmcm9tICcuLi9EYXNoYm9hcmRPYmplY3QnO1xuaW1wb3J0IHsgV29ya3NoZWV0IH0gZnJvbSAnLi4vV29ya3NoZWV0JztcbmltcG9ydCB7IFNoZWV0SW1wbCB9IGZyb20gJy4vU2hlZXRJbXBsJztcbmltcG9ydCB7IFNoZWV0SW5mb0ltcGwgfSBmcm9tICcuL1NoZWV0SW5mb0ltcGwnO1xuaW1wb3J0IHsgV29ya3NoZWV0SW1wbCB9IGZyb20gJy4vV29ya3NoZWV0SW1wbCc7XG5cbmV4cG9ydCBjbGFzcyBEYXNoYm9hcmRJbXBsIGV4dGVuZHMgU2hlZXRJbXBsIHtcbiAgcHJpdmF0ZSBfd29ya3NoZWV0czogQXJyYXk8Q29udHJhY3QuV29ya3NoZWV0PjtcbiAgcHJpdmF0ZSBfb2JqZWN0czogQXJyYXk8Q29udHJhY3QuRGFzaGJvYXJkT2JqZWN0PjtcblxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBfaW5mbzogRXh0ZW5zaW9uRGFzaGJvYXJkSW5mbywgcHJpdmF0ZSBfc2hlZXRQYXRoOiBTaGVldFBhdGgpIHtcbiAgICBzdXBlcihuZXcgU2hlZXRJbmZvSW1wbChfaW5mby5uYW1lLCBDb250cmFjdC5TaGVldFR5cGUuRGFzaGJvYXJkLCBuZXcgU2l6ZShfaW5mby5zaXplLmgsIF9pbmZvLnNpemUudykpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgd29ya3NoZWV0cygpOiBBcnJheTxDb250cmFjdC5Xb3Jrc2hlZXQ+IHtcbiAgICByZXR1cm4gdGhpcy5fd29ya3NoZWV0cztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgb2JqZWN0cygpOiBBcnJheTxDb250cmFjdC5EYXNoYm9hcmRPYmplY3Q+IHtcbiAgICByZXR1cm4gdGhpcy5fb2JqZWN0cztcbiAgfVxuXG4gIHB1YmxpYyBpbml0aWFsaXplV2l0aFB1YmxpY0ludGVyZmFjZXMoZGFzaGJvYXJkOiBDb250cmFjdC5EYXNoYm9hcmQpOiB2b2lkIHtcbiAgICB0aGlzLl93b3Jrc2hlZXRzID0gbmV3IEFycmF5PFdvcmtzaGVldD4oKTtcbiAgICB0aGlzLl9vYmplY3RzID0gbmV3IEFycmF5PENvbnRyYWN0LkRhc2hib2FyZE9iamVjdD4oKTtcblxuICAgIC8vIFByb2Nlc3MgYWxsIHRoZSB6b25lcyB3aGljaCBhcmUgY29udGFpbmVkIGluIHRoaXMgZGFzaGJvYXJkXG4gICAgZm9yIChjb25zdCB6b25lIG9mIHRoaXMuX2luZm8uem9uZXMpIHtcbiAgICAgIGxldCB3b3Jrc2hlZXQ6IFdvcmtzaGVldCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgICAgY29uc3Qgem9uZVNpemUgPSBuZXcgU2l6ZSh6b25lLmhlaWdodCwgem9uZS53aWR0aCk7XG5cbiAgICAgIGlmICh6b25lLnpvbmVUeXBlID09PSBEYXNoYm9hcmRPYmplY3RUeXBlLldvcmtzaGVldCkge1xuICAgICAgICBjb25zdCBzaGVldEluZm8gPSBuZXcgU2hlZXRJbmZvSW1wbCh6b25lLm5hbWUsIENvbnRyYWN0LlNoZWV0VHlwZS5Xb3Jrc2hlZXQsIHpvbmVTaXplKTtcbiAgICAgICAgY29uc3Qgdml6SWQ6IFZpc3VhbElkID0ge1xuICAgICAgICAgIHdvcmtzaGVldDogem9uZS5uYW1lLFxuICAgICAgICAgIGRhc2hib2FyZDogdGhpcy5faW5mby5uYW1lLFxuICAgICAgICAgIHN0b3J5Ym9hcmQ6IHRoaXMuX3NoZWV0UGF0aC5zdG9yeWJvYXJkLFxuICAgICAgICAgIGZsaXBib2FyZFpvbmVJRDogdGhpcy5fc2hlZXRQYXRoLmZsaXBib2FyZFpvbmVJRCxcbiAgICAgICAgICBzdG9yeVBvaW50SUQ6IHRoaXMuX3NoZWV0UGF0aC5zdG9yeVBvaW50SURcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCB3b3Jrc2hlZXRJbXBsID0gbmV3IFdvcmtzaGVldEltcGwoc2hlZXRJbmZvLCB2aXpJZCwgZGFzaGJvYXJkKTtcbiAgICAgICAgd29ya3NoZWV0ID0gbmV3IFdvcmtzaGVldCh3b3Jrc2hlZXRJbXBsKTtcbiAgICAgICAgdGhpcy5fd29ya3NoZWV0cy5wdXNoKHdvcmtzaGVldCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHpvbmVQb2ludCA9IG5ldyBQb2ludCh6b25lLngsIHpvbmUueSk7XG5cbiAgICAgIGNvbnN0IGRhc2hib2FyZE9iamVjdCA9IG5ldyBEYXNoYm9hcmRPYmplY3QoXG4gICAgICAgIGRhc2hib2FyZCxcbiAgICAgICAgSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzLmRhc2hib2FyZE9iamVjdFR5cGUuY29udmVydCh6b25lLnpvbmVUeXBlKSxcbiAgICAgICAgem9uZVBvaW50LFxuICAgICAgICB6b25lU2l6ZSxcbiAgICAgICAgd29ya3NoZWV0XG4gICAgICApO1xuXG4gICAgICB0aGlzLl9vYmplY3RzLnB1c2goZGFzaGJvYXJkT2JqZWN0KTtcbiAgICB9XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2V4dGVuc2lvbnMtYXBpL3NyYy9JbnRlcm5hbC9EYXNoYm9hcmRJbXBsLnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcblxuLyoqXG4gKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgZGFzaGJvYXJkIG9iamVjdHMgLSB0aGUgem9uZXMgaW4gYSBkYXNoYm9hcmQuXG4gKiBUaGlzIGRvZXMgbm90IGZvbGxvdyB0aGUgSW1wbCBwYXR0ZXJuIGFzIGl0IGlzIGp1c3QgYSBwcm9wZXJ0eSBiYWcuXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXNoYm9hcmRPYmplY3QgaW1wbGVtZW50cyBDb250cmFjdC5EYXNoYm9hcmRPYmplY3Qge1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfZGFzaGJvYXJkOiBDb250cmFjdC5EYXNoYm9hcmQsXG4gICAgcHJpdmF0ZSBfdHlwZTogQ29udHJhY3QuRGFzaGJvYXJkT2JqZWN0VHlwZSxcbiAgICBwcml2YXRlIF9wb3NpdGlvbjogQ29udHJhY3QuUG9pbnQsXG4gICAgcHJpdmF0ZSBfc2l6ZTogQ29udHJhY3QuU2l6ZSxcbiAgICBwcml2YXRlIF93b3Jrc2hlZXQ6IENvbnRyYWN0LldvcmtzaGVldCB8IHVuZGVmaW5lZFxuICApIHsgfVxuXG4gIHB1YmxpYyBnZXQgZGFzaGJvYXJkKCk6IENvbnRyYWN0LkRhc2hib2FyZCB7XG4gICAgcmV0dXJuIHRoaXMuX2Rhc2hib2FyZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdHlwZSgpOiBDb250cmFjdC5EYXNoYm9hcmRPYmplY3RUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcG9zaXRpb24oKTogQ29udHJhY3QuUG9pbnQge1xuICAgIHJldHVybiB0aGlzLl9wb3NpdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2l6ZSgpOiBDb250cmFjdC5TaXplIHtcbiAgICByZXR1cm4gdGhpcy5fc2l6ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgd29ya3NoZWV0KCk6IENvbnRyYWN0LldvcmtzaGVldCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dvcmtzaGVldDtcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvZXh0ZW5zaW9ucy1hcGkvc3JjL0Rhc2hib2FyZE9iamVjdC50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XG5cbmltcG9ydCB7IFNoZWV0IH0gZnJvbSAnLi9TaGVldCc7XG5cbmltcG9ydCB7IFdvcmtzaGVldEltcGwgfSBmcm9tICcuL0ludGVybmFsL1dvcmtzaGVldEltcGwnO1xuXG5leHBvcnQgY2xhc3MgV29ya3NoZWV0IGV4dGVuZHMgU2hlZXQgaW1wbGVtZW50cyBDb250cmFjdC5Xb3Jrc2hlZXQge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBfd29ya3NoZWV0SW1wbDogV29ya3NoZWV0SW1wbCkge1xuICAgIHN1cGVyKF93b3Jrc2hlZXRJbXBsKTtcblxuICAgIC8vIENhbGwgdG8gaW5pdGlhbGl6ZSBldmVudHMgYW5kIHRoZW4gY2FsbCBkb3duIHRvIHRoZSBldmVudCBsaXN0ZW5lciBtYW5hZ2VyIHRvIGhhbmRsZSB0aGluZ3NcbiAgICB0aGlzLl93b3Jrc2hlZXRJbXBsLmluaXRpYWxpemVFdmVudHModGhpcykuZm9yRWFjaChlID0+IHRoaXMuYWRkTmV3RXZlbnRUeXBlKGUpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGFyZW50RGFzaGJvYXJkKCk6IENvbnRyYWN0LkRhc2hib2FyZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dvcmtzaGVldEltcGwucGFyZW50RGFzaGJvYXJkO1xuICB9XG5cbiAgcHVibGljIGFwcGx5RmlsdGVyQXN5bmMoXG4gICAgZmllbGROYW1lOiBzdHJpbmcsIHZhbHVlczogQXJyYXk8c3RyaW5nPiwgdXBkYXRlVHlwZTogQ29udHJhY3QuRmlsdGVyVXBkYXRlVHlwZSwgb3B0aW9uczogQ29udHJhY3QuRmlsdGVyT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICByZXR1cm4gdGhpcy5fd29ya3NoZWV0SW1wbC5hcHBseUZpbHRlckFzeW5jKGZpZWxkTmFtZSwgdmFsdWVzLCB1cGRhdGVUeXBlLCBvcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBhcHBseVJhbmdlRmlsdGVyQXN5bmMoZmllbGROYW1lOiBzdHJpbmcsIGZpbHRlck9wdGlvbnM6IENvbnRyYWN0LlJhbmdlRmlsdGVyT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX3dvcmtzaGVldEltcGwuYXBwbHlSYW5nZUZpbHRlckFzeW5jKGZpZWxkTmFtZSwgZmlsdGVyT3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJGaWx0ZXJBc3luYyhmaWVsZE5hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX3dvcmtzaGVldEltcGwuY2xlYXJGaWx0ZXJBc3luYyhmaWVsZE5hbWUpO1xuICB9XG5cbiAgcHVibGljIGdldEFuYWx5dGljT2JqZWN0c0FzeW5jKCk6IFByb21pc2U8QXJyYXk8Q29udHJhY3QuQW5hbHl0aWNzT2JqZWN0Pj4ge1xuICAgIHRocm93IG5ldyBFcnJvcignQVBJIGNhbGwgbm90IHlldCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREYXRhU291cmNlc0FzeW5jKCk6IFByb21pc2U8QXJyYXk8Q29udHJhY3QuRGF0YVNvdXJjZT4+IHtcbiAgICByZXR1cm4gdGhpcy5fd29ya3NoZWV0SW1wbC5nZXREYXRhU291cmNlc0FzeW5jKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RW5jb2RpbmdzQXN5bmMoKTogUHJvbWlzZTxBcnJheTxDb250cmFjdC5FbmNvZGluZz4+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0FQSSBjYWxsIG5vdCB5ZXQgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RmlsdGVyc0FzeW5jKCk6IFByb21pc2U8Q29udHJhY3QuRmlsdGVyW10+IHtcbiAgICByZXR1cm4gdGhpcy5fd29ya3NoZWV0SW1wbC5nZXRGaWx0ZXJzQXN5bmMoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTZWxlY3RlZE1hcmtzQXN5bmMoKTogUHJvbWlzZTxDb250cmFjdC5NYXJrc0NvbGxlY3Rpb24+IHtcbiAgICByZXR1cm4gdGhpcy5fd29ya3NoZWV0SW1wbC5nZXRTZWxlY3RlZE1hcmtzQXN5bmMoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRIaWdobGlnaHRlZE1hcmtzQXN5bmMoKTogUHJvbWlzZTxDb250cmFjdC5NYXJrc0NvbGxlY3Rpb24+IHtcbiAgICByZXR1cm4gdGhpcy5fd29ya3NoZWV0SW1wbC5nZXRIaWdobGlnaHRlZE1hcmtzQXN5bmMoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTdW1tYXJ5RGF0YUFzeW5jKG9wdGlvbnM6IENvbnRyYWN0LkdldFN1bW1hcnlEYXRhT3B0aW9ucyk6IFByb21pc2U8Q29udHJhY3QuRGF0YVRhYmxlPiB7XG4gICAgcmV0dXJuIHRoaXMuX3dvcmtzaGVldEltcGwuZ2V0U3VtbWFyeURhdGFBc3luYyhvcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRVbmRlcmx5aW5nRGF0YUFzeW5jKG9wdGlvbnM6IENvbnRyYWN0LkdldFVuZGVybHlpbmdEYXRhT3B0aW9ucyk6IFByb21pc2U8Q29udHJhY3QuRGF0YVRhYmxlPiB7XG4gICAgcmV0dXJuIHRoaXMuX3dvcmtzaGVldEltcGwuZ2V0VW5kZXJseWluZ0RhdGFBc3luYyhvcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhclNlbGVjdGVkTWFya3NBc3luYygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fd29ya3NoZWV0SW1wbC5jbGVhclNlbGVjdGVkTWFya3NBc3luYygpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdE1hcmtzQnlJREFzeW5jKG1hcmtzSW5mbzogQXJyYXk8Q29udHJhY3QuTWFya0luZm8+LCB1cGRhdGVUeXBlOiBDb250cmFjdC5TZWxlY3Rpb25VcGRhdGVUeXBlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdBUEkgY2FsbCBub3QgeWV0IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdE1hcmtzQnlWYWx1ZUFzeW5jKHNlbGVjdGlvbnM6IEFycmF5PENvbnRyYWN0LlNlbGVjdGlvbkNyaXRlcmlhPixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblVwZGF0ZVR5cGU6IENvbnRyYWN0LlNlbGVjdGlvblVwZGF0ZVR5cGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fd29ya3NoZWV0SW1wbC5zZWxlY3RNYXJrc0J5VmFsdWVBc3luYyhzZWxlY3Rpb25zLCBzZWxlY3Rpb25VcGRhdGVUeXBlKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RNYXJrc0J5SWRBc3luYyhzZWxlY3Rpb25zOiBBcnJheTxDb250cmFjdC5NYXJrSW5mbz4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25VcGRhdGVUeXBlOiBDb250cmFjdC5TZWxlY3Rpb25VcGRhdGVUeXBlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX3dvcmtzaGVldEltcGwuc2VsZWN0TWFya3NCeUlkQXN5bmMoc2VsZWN0aW9ucywgc2VsZWN0aW9uVXBkYXRlVHlwZSk7XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2V4dGVuc2lvbnMtYXBpL3NyYy9Xb3Jrc2hlZXQudHNcbiAqKi8iLCJpbXBvcnQgKiBhcyBDb250cmFjdCBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xuXG5pbXBvcnQgeyBTaGVldFBhdGggfSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xuaW1wb3J0IHsgQXBpU2VydmljZVJlZ2lzdHJ5LCBQYXJhbWV0ZXJzU2VydmljZSwgU2VydmljZU5hbWVzIH0gZnJvbSAnQHRhYmxlYXUvYXBpLXNoYXJlZCc7XG5cbmltcG9ydCB7IFNoZWV0SW5mb0ltcGwgfSBmcm9tICcuL1NoZWV0SW5mb0ltcGwnO1xuXG5leHBvcnQgY2xhc3MgU2hlZXRJbXBsIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgX3NoZWV0SW5mb0ltcGw6IFNoZWV0SW5mb0ltcGwpIHtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zaGVldEluZm9JbXBsLm5hbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNoZWV0VHlwZSgpOiBDb250cmFjdC5TaGVldFR5cGUge1xuICAgIHJldHVybiB0aGlzLl9zaGVldEluZm9JbXBsLnNoZWV0VHlwZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2hlZXRQYXRoKCk6IFNoZWV0UGF0aCB7XG4gICAgcmV0dXJuIHRoaXMuX3NoZWV0SW5mb0ltcGwuc2hlZXRQYXRoO1xuICB9XG5cbiAgcHVibGljIGdldCBzaXplKCk6IENvbnRyYWN0LlNpemUge1xuICAgIHJldHVybiB0aGlzLl9zaGVldEluZm9JbXBsLnNoZWV0U2l6ZTtcbiAgfVxuXG4gIHB1YmxpYyBmaW5kUGFyYW1ldGVyQXN5bmMocGFyYW1ldGVyTmFtZTogc3RyaW5nLCBzaGVldDogQ29udHJhY3QuU2hlZXQpOiBQcm9taXNlPENvbnRyYWN0LlBhcmFtZXRlciB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IHNlcnZpY2UgPSBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZTxQYXJhbWV0ZXJzU2VydmljZT4oU2VydmljZU5hbWVzLlBhcmFtZXRlcnMpO1xuICAgIHJldHVybiBzZXJ2aWNlLmZpbmRQYXJhbWV0ZXJCeU5hbWVBc3luYyhwYXJhbWV0ZXJOYW1lLCBzaGVldCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UGFyYW1ldGVyc0FzeW5jKHNoZWV0OiBDb250cmFjdC5TaGVldCk6IFByb21pc2U8QXJyYXk8Q29udHJhY3QuUGFyYW1ldGVyPj4ge1xuICAgIGNvbnN0IHNlcnZpY2UgPSBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZTxQYXJhbWV0ZXJzU2VydmljZT4oU2VydmljZU5hbWVzLlBhcmFtZXRlcnMpO1xuICAgIHJldHVybiBzZXJ2aWNlLmdldFBhcmFtZXRlcnNGb3JTaGVldEFzeW5jKHRoaXMuc2hlZXRQYXRoLCBzaGVldCk7XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2V4dGVuc2lvbnMtYXBpL3NyYy9JbnRlcm5hbC9TaGVldEltcGwudHNcbiAqKi8iLCJpbXBvcnQgeyBTaGVldFR5cGUsIFNpemUgfSBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xuaW1wb3J0IHsgU2hlZXRQYXRoIH0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcblxuZXhwb3J0IGNsYXNzIFNoZWV0SW5mb0ltcGwge1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfbmFtZTogc3RyaW5nLFxuICAgIHByaXZhdGUgX3NoZWV0VHlwZTogU2hlZXRUeXBlLFxuICAgIHByaXZhdGUgX3NoZWV0U2l6ZTogU2l6ZVxuICApIHsgfVxuXG4gIHB1YmxpYyBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9uYW1lO1xuICB9XG5cbiAgcHVibGljIGdldCBzaGVldFNpemUoKTogU2l6ZSB7XG4gICAgcmV0dXJuIHRoaXMuX3NoZWV0U2l6ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2hlZXRUeXBlKCk6IFNoZWV0VHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX3NoZWV0VHlwZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2hlZXRQYXRoKCk6IFNoZWV0UGF0aCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNoZWV0TmFtZTogdGhpcy5uYW1lLFxuICAgICAgaXNEYXNoYm9hcmQ6IHRoaXMuc2hlZXRUeXBlID09PSBTaGVldFR5cGUuRGFzaGJvYXJkXG4gICAgICAvLyBUT0RPIC0gU3Rvcmllc1xuICAgIH07XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2V4dGVuc2lvbnMtYXBpL3NyYy9JbnRlcm5hbC9TaGVldEluZm9JbXBsLnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcbmltcG9ydCB7XG4gIERhdGFTY2hlbWEsXG4gIERhdGFTb3VyY2UgYXMgRGF0YVNvdXJjZUluZm8sXG4gIEZpbHRlckV2ZW50LCBOb3RpZmljYXRpb25JZCxcbiAgVmlzdWFsSWQsXG4gIFdvcmtzaGVldERhdGFTb3VyY2VJbmZvXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XG5cbmltcG9ydCB7XG4gIEFwaVNlcnZpY2VSZWdpc3RyeSxcbiAgRGF0YVNvdXJjZVNlcnZpY2UsXG4gIEZpbHRlckNoYW5nZWRFdmVudCxcbiAgRmlsdGVyU2VydmljZSxcbiAgR2V0RGF0YVNlcnZpY2UsXG4gIEdldERhdGFUeXBlLFxuICBNYXJrc1NlbGVjdGVkRXZlbnQsXG4gIE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gIFNlbGVjdGlvblNlcnZpY2UsXG4gIFNlcnZpY2VOYW1lcyxcbiAgU2luZ2xlRXZlbnRNYW5hZ2VyLFxuICBTaW5nbGVFdmVudE1hbmFnZXJJbXBsXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1zaGFyZWQnO1xuXG5pbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSAnLi4vRGF0YVNvdXJjZSc7XG5pbXBvcnQgeyBXb3Jrc2hlZXQgfSBmcm9tICcuLi9Xb3Jrc2hlZXQnO1xuXG5pbXBvcnQgeyBEYXRhU291cmNlSW1wbCB9IGZyb20gJy4vRGF0YVNvdXJjZUltcGwnO1xuaW1wb3J0IHsgU2hlZXRJbXBsIH0gZnJvbSAnLi9TaGVldEltcGwnO1xuaW1wb3J0IHsgU2hlZXRJbmZvSW1wbCB9IGZyb20gJy4vU2hlZXRJbmZvSW1wbCc7XG5cbmNvbnN0IHZpc3VhbElkc0FyZUVxdWFsID0gZnVuY3Rpb24oYTogVmlzdWFsSWQsIGI6IFZpc3VhbElkKTogYm9vbGVhbiB7XG4gIHJldHVybiBhICYmIGIgJiZcbiAgICBhLndvcmtzaGVldCA9PT0gYi53b3Jrc2hlZXQgJiZcbiAgICBhLmRhc2hib2FyZCA9PT0gYi5kYXNoYm9hcmQgJiZcbiAgICBhLnN0b3J5Ym9hcmQgPT09IGIuc3Rvcnlib2FyZCAmJlxuICAgIGEuc3RvcnlQb2ludElEID09PSBiLnN0b3J5UG9pbnRJRCAmJlxuICAgIGEuZmxpcGJvYXJkWm9uZUlEID09PSBiLmZsaXBib2FyZFpvbmVJRDtcbn07XG5cbmV4cG9ydCBjbGFzcyBXb3Jrc2hlZXRJbXBsIGV4dGVuZHMgU2hlZXRJbXBsIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHNoZWV0SW5mb0ltcGw6IFNoZWV0SW5mb0ltcGwsXG4gICAgICAgICAgICAgICAgICAgICBwcml2YXRlIF92aXN1YWxJZDogVmlzdWFsSWQsXG4gICAgICAgICAgICAgICAgICAgICBwcml2YXRlIF9wYXJlbnREYXNoYm9hcmQ6IENvbnRyYWN0LkRhc2hib2FyZCkge1xuICAgIHN1cGVyKHNoZWV0SW5mb0ltcGwpO1xuICB9XG5cbiAgcHVibGljIGdldCBwYXJlbnREYXNoYm9hcmQoKTogQ29udHJhY3QuRGFzaGJvYXJkIHtcbiAgICByZXR1cm4gdGhpcy5fcGFyZW50RGFzaGJvYXJkO1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBtZXRob2Qgd2hpY2ggZ29lcyB0aHJvdWdoIGFuZCByZWdpc3RlcnMgZWFjaCBldmVudCB0eXBlIHRoaXMgaW1wbCBrbm93cyBhYm91dFxuICAgKiB3aXRoIHRoZSBOb3RpZmljYXRpb25TZXJ2aWNlLiBJdCByZXR1cm5zIGFuIGFycmF5IG9mIFNpbmdsZUV2ZW50TWFuYWdlciBvYmplY3RzIHdoaWNoXG4gICAqIGNhbiB0aGVuIGJlIHBhc3NlZCB0byBhbiBFdmVudExpc3RlbmVyTWFuYWdlciB0byBoYW5kbGUgdXNlciByZWdpc3RyYXRpb24gLyB1bnJlZ2lzdHJhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtXb3Jrc2hlZXR9IHdvcmtzaGVldCBUaGUgd29ya3NoZWV0IG9iamVjdCB3aGljaCB3aWxsIGJlIGluY2x1ZGVkIHdpdGggdGhlIGV2ZW50IG5vdGlmaWNhdGlvbnNcbiAgICogQHJldHVybnMge0FycmF5PFNpbmdsZUV2ZW50TWFuYWdlcj59IENvbGxlY3Rpb24gb2YgZXZlbnQgbWFuYWdlcnMgdG8gcGFzcyB0byBhbiBFdmVudExpc3RlbmVyTWFuYWdlclxuICAgKi9cbiAgcHVibGljIGluaXRpYWxpemVFdmVudHMod29ya3NoZWV0OiBXb3Jrc2hlZXQpOiBBcnJheTxTaW5nbGVFdmVudE1hbmFnZXI+IHtcbiAgICBjb25zdCByZXN1bHRzID0gbmV3IEFycmF5PFNpbmdsZUV2ZW50TWFuYWdlcj4oKTtcbiAgICBsZXQgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZTtcblxuICAgIHRyeSB7XG4gICAgICBub3RpZmljYXRpb25TZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8Tm90aWZpY2F0aW9uU2VydmljZT4oU2VydmljZU5hbWVzLk5vdGlmaWNhdGlvbik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSB0aGlzIHNlcnZpY2UgcmVnaXN0ZXJlZCwganVzdCByZXR1cm5cbiAgICAgIHJldHVybiByZXN1bHRzO1xuICAgIH1cblxuICAgIC8vIEluaXRpYWxpemUgYWxsIG9mIHRoZSBldmVudCBtYW5hZ2VycyB3ZSdsbCBuZWVkIChvbmUgZm9yIGVhY2ggZXZlbnQgdHlwZSlcbiAgICBjb25zdCBtYXJrc0V2ZW50ID0gbmV3IFNpbmdsZUV2ZW50TWFuYWdlckltcGw8TWFya3NTZWxlY3RlZEV2ZW50PihDb250cmFjdC5UYWJsZWF1RXZlbnRUeXBlLk1hcmtTZWxlY3Rpb25DaGFuZ2VkKTtcbiAgICBub3RpZmljYXRpb25TZXJ2aWNlLnJlZ2lzdGVySGFuZGxlcihOb3RpZmljYXRpb25JZC5TZWxlY3RlZE1hcmtzQ2hhbmdlZCwgKG1vZGVsKSA9PiB7XG4gICAgICBjb25zdCB2aXN1YWxJZCA9IG1vZGVsIGFzIFZpc3VhbElkO1xuICAgICAgcmV0dXJuIHZpc3VhbElkc0FyZUVxdWFsKHZpc3VhbElkLCB0aGlzLnZpc3VhbElkKTtcbiAgICB9LCAodml6OiBWaXN1YWxJZCkgPT4ge1xuICAgICAgbWFya3NFdmVudC50cmlnZ2VyRXZlbnQoKCkgPT4gbmV3IE1hcmtzU2VsZWN0ZWRFdmVudCh3b3Jrc2hlZXQpKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGZpbHRlckV2ZW50ID0gbmV3IFNpbmdsZUV2ZW50TWFuYWdlckltcGw8RmlsdGVyQ2hhbmdlZEV2ZW50PihDb250cmFjdC5UYWJsZWF1RXZlbnRUeXBlLkZpbHRlckNoYW5nZWQpO1xuICAgIG5vdGlmaWNhdGlvblNlcnZpY2UucmVnaXN0ZXJIYW5kbGVyKE5vdGlmaWNhdGlvbklkLkZpbHRlckNoYW5nZWQsIChtb2RlbCkgPT4ge1xuICAgICAgY29uc3QgZmlsdGVyRXZlbnRSZXNwb25zZSA9IG1vZGVsIGFzIEZpbHRlckV2ZW50O1xuICAgICAgcmV0dXJuIHRoaXMudmlzdWFsSWQud29ya3NoZWV0ID09PSBmaWx0ZXJFdmVudFJlc3BvbnNlLnZpc3VhbElkLndvcmtzaGVldDtcbiAgICB9LCAoZXZlbnQ6IEZpbHRlckV2ZW50KSA9PiB7XG4gICAgICBmaWx0ZXJFdmVudC50cmlnZ2VyRXZlbnQoKCkgPT4gbmV3IEZpbHRlckNoYW5nZWRFdmVudCh3b3Jrc2hlZXQsIGV2ZW50LmZpZWxkTmFtZSkpO1xuICAgIH0pO1xuXG4gICAgcmVzdWx0cy5wdXNoKG1hcmtzRXZlbnQpO1xuICAgIHJlc3VsdHMucHVzaChmaWx0ZXJFdmVudCk7XG5cbiAgICAvLyBUT0RPIC0gb3RoZXIgZXZlbnQgdHlwZXNcblxuICAgIHJldHVybiByZXN1bHRzO1xuICB9XG5cbiAgcHVibGljIGdldCB2aXN1YWxJZCgpOiBWaXN1YWxJZCB7XG4gICAgcmV0dXJuIHRoaXMuX3Zpc3VhbElkO1xuICB9XG5cbiAgcHVibGljIGFwcGx5RmlsdGVyQXN5bmMoXG4gICAgZmllbGROYW1lOiBzdHJpbmcsIHZhbHVlczogQXJyYXk8c3RyaW5nPiwgdXBkYXRlVHlwZTogQ29udHJhY3QuRmlsdGVyVXBkYXRlVHlwZSwgb3B0aW9uczogQ29udHJhY3QuRmlsdGVyT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICBjb25zdCBzZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8RmlsdGVyU2VydmljZT4oU2VydmljZU5hbWVzLkZpbHRlcik7XG4gICAgICByZXR1cm4gc2VydmljZS5hcHBseUZpbHRlckFzeW5jKHRoaXMudmlzdWFsSWQsIGZpZWxkTmFtZSwgdmFsdWVzLCB1cGRhdGVUeXBlLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgcHVibGljIGFwcGx5UmFuZ2VGaWx0ZXJBc3luYyhmaWVsZE5hbWU6IHN0cmluZywgZmlsdGVyT3B0aW9uczogQ29udHJhY3QuUmFuZ2VGaWx0ZXJPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBzZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8RmlsdGVyU2VydmljZT4oU2VydmljZU5hbWVzLkZpbHRlcik7XG4gICAgcmV0dXJuIHNlcnZpY2UuYXBwbHlSYW5nZUZpbHRlckFzeW5jKHRoaXMudmlzdWFsSWQsIGZpZWxkTmFtZSwgZmlsdGVyT3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJGaWx0ZXJBc3luYyhmaWVsZE5hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3Qgc2VydmljZSA9IEFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5nZXRTZXJ2aWNlPEZpbHRlclNlcnZpY2U+KFNlcnZpY2VOYW1lcy5GaWx0ZXIpO1xuICAgIHJldHVybiBzZXJ2aWNlLmNsZWFyRmlsdGVyQXN5bmModGhpcy52aXN1YWxJZCwgZmllbGROYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREYXRhU291cmNlc0FzeW5jKCk6IFByb21pc2U8QXJyYXk8Q29udHJhY3QuRGF0YVNvdXJjZT4+IHtcbiAgICBjb25zdCBzZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8RGF0YVNvdXJjZVNlcnZpY2U+KFNlcnZpY2VOYW1lcy5EYXRhU291cmNlU2VydmljZSk7XG5cbiAgICByZXR1cm4gc2VydmljZS5nZXREYXRhU291cmNlc0FzeW5jKCkudGhlbjxBcnJheTxDb250cmFjdC5EYXRhU291cmNlPj4ocmVzdWx0ID0+IHtcbiAgICAgIGNvbnN0IGRhdGFTY2hlbWE6IERhdGFTY2hlbWEgPSByZXN1bHQgYXMgRGF0YVNjaGVtYTtcbiAgICAgIGNvbnN0IHdvcmtzaGVldERhdGFTb3VyY2VJbmZvOiBXb3Jrc2hlZXREYXRhU291cmNlSW5mbyA9IGRhdGFTY2hlbWEud29ya3NoZWV0RGF0YVNjaGVtYU1hcFt0aGlzLm5hbWVdO1xuXG4gICAgICBsZXQgZGF0YVNvdXJjZXM6IEFycmF5PENvbnRyYWN0LkRhdGFTb3VyY2U+ID0gW107XG5cbiAgICAgIC8vIEZpcnN0LCBhZGQgdGhlIHByaW1hcnkgZGF0YXNvdXJjZS4gIEJ5IGNvbnZlbnRpb24sIGl0IGNvbWVzIGZpcnN0IGluIHRoZSByZXR1cm5lZCBhcnJheS5cbiAgICAgIGxldCBwcmltYXJ5SWQ6IHN0cmluZyA9IHdvcmtzaGVldERhdGFTb3VyY2VJbmZvLnByaW1hcnlEYXRhU291cmNlO1xuICAgICAgZGF0YVNvdXJjZXMucHVzaCh0aGlzLmNyZWF0ZURhdGFTb3VyY2VGcm9tSW5mbyhkYXRhU2NoZW1hLmRhdGFTb3VyY2VzW3ByaW1hcnlJZF0pKTtcblxuICAgICAgLy8gVGhlbiwgbG9vcCB0aHJvdWdoIGFueSBzZWNvbmRhcnkgZGF0YSBzb3VyY2VzIGFuZCBhZGQgdGhlbS5cbiAgICAgIGZvciAobGV0IHNlY29uZGFyeUlkIG9mIHdvcmtzaGVldERhdGFTb3VyY2VJbmZvLnJlZmVyZW5jZWREYXRhU291cmNlTGlzdCkge1xuICAgICAgICBpZiAoc2Vjb25kYXJ5SWQgIT09IHByaW1hcnlJZCkge1xuICAgICAgICAgIGRhdGFTb3VyY2VzLnB1c2godGhpcy5jcmVhdGVEYXRhU291cmNlRnJvbUluZm8oZGF0YVNjaGVtYS5kYXRhU291cmNlc1tzZWNvbmRhcnlJZF0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZGF0YVNvdXJjZXM7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RmlsdGVyc0FzeW5jKCk6IFByb21pc2U8Q29udHJhY3QuRmlsdGVyW10+IHtcbiAgICBjb25zdCBzZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8RmlsdGVyU2VydmljZT4oU2VydmljZU5hbWVzLkZpbHRlcik7XG4gICAgcmV0dXJuIHNlcnZpY2UuZ2V0RmlsdGVyc0FzeW5jKHRoaXMudmlzdWFsSWQpO1xuICB9XG5cbiAgcHVibGljIGdldFNlbGVjdGVkTWFya3NBc3luYygpOiBQcm9taXNlPENvbnRyYWN0Lk1hcmtzQ29sbGVjdGlvbj4ge1xuICAgIGNvbnN0IHNlcnZpY2UgPSBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZTxHZXREYXRhU2VydmljZT4oU2VydmljZU5hbWVzLkdldERhdGEpO1xuICAgIHJldHVybiBzZXJ2aWNlLmdldFNlbGVjdGVkTWFya3NBc3luYyh0aGlzLnZpc3VhbElkKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRIaWdobGlnaHRlZE1hcmtzQXN5bmMoKTogUHJvbWlzZTxDb250cmFjdC5NYXJrc0NvbGxlY3Rpb24+IHtcbiAgICBjb25zdCBzZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8R2V0RGF0YVNlcnZpY2U+KFNlcnZpY2VOYW1lcy5HZXREYXRhKTtcbiAgICByZXR1cm4gc2VydmljZS5nZXRIaWdobGlnaHRlZE1hcmtzQXN5bmModGhpcy52aXN1YWxJZCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0U3VtbWFyeURhdGFBc3luYyhvcHRpb25zOiBDb250cmFjdC5HZXRTdW1tYXJ5RGF0YU9wdGlvbnMpOiBQcm9taXNlPENvbnRyYWN0LkRhdGFUYWJsZT4ge1xuICAgIGNvbnN0IHNlcnZpY2UgPSBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZTxHZXREYXRhU2VydmljZT4oU2VydmljZU5hbWVzLkdldERhdGEpO1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgcmV0dXJuIHNlcnZpY2UuZ2V0VW5kZXJseWluZ0RhdGFBc3luYyhcbiAgICAgIHRoaXMudmlzdWFsSWQsIEdldERhdGFUeXBlLlN1bW1hcnksICEhb3B0aW9ucy5pZ25vcmVBbGlhc2VzLCAhIW9wdGlvbnMuaWdub3JlU2VsZWN0aW9uLCB0cnVlLCAwKTtcbiAgICB9XG5cbiAgcHVibGljIGdldFVuZGVybHlpbmdEYXRhQXN5bmMob3B0aW9uczogQ29udHJhY3QuR2V0VW5kZXJseWluZ0RhdGFPcHRpb25zKTogUHJvbWlzZTxDb250cmFjdC5EYXRhVGFibGU+IHtcbiAgICBjb25zdCBzZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8R2V0RGF0YVNlcnZpY2U+KFNlcnZpY2VOYW1lcy5HZXREYXRhKTtcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICByZXR1cm4gc2VydmljZS5nZXRVbmRlcmx5aW5nRGF0YUFzeW5jKFxuICAgICAgdGhpcy52aXN1YWxJZCxcbiAgICAgIEdldERhdGFUeXBlLlVuZGVybHlpbmcsXG4gICAgICAhIW9wdGlvbnMuaWdub3JlQWxpYXNlcyxcbiAgICAgICEhb3B0aW9ucy5pZ25vcmVTZWxlY3Rpb24sXG4gICAgICAhIW9wdGlvbnMuaW5jbHVkZUFsbENvbHVtbnMsXG4gICAgICBvcHRpb25zLm1heFJvd3MgfHwgMCk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJTZWxlY3RlZE1hcmtzQXN5bmMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgc2VydmljZSA9IEFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5nZXRTZXJ2aWNlPFNlbGVjdGlvblNlcnZpY2U+KFNlcnZpY2VOYW1lcy5TZWxlY3Rpb24pO1xuICAgIHJldHVybiBzZXJ2aWNlLmNsZWFyU2VsZWN0ZWRNYXJrc0FzeW5jKHRoaXMudmlzdWFsSWQpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdE1hcmtzQnlWYWx1ZUFzeW5jKHNlbGVjdGlvbnM6IEFycmF5PENvbnRyYWN0LlNlbGVjdGlvbkNyaXRlcmlhPixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblVwZGF0ZVR5cGU6IENvbnRyYWN0LlNlbGVjdGlvblVwZGF0ZVR5cGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8U2VsZWN0aW9uU2VydmljZT4oU2VydmljZU5hbWVzLlNlbGVjdGlvbik7XG4gICAgcmV0dXJuIHNlcnZpY2Uuc2VsZWN0TWFya3NCeVZhbHVlQXN5bmModGhpcy52aXN1YWxJZCwgc2VsZWN0aW9ucywgc2VsZWN0aW9uVXBkYXRlVHlwZSk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0TWFya3NCeUlkQXN5bmMoc2VsZWN0aW9uczogQXJyYXk8Q29udHJhY3QuTWFya0luZm8+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uVXBkYXRlVHlwZTogQ29udHJhY3QuU2VsZWN0aW9uVXBkYXRlVHlwZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHNlcnZpY2UgPSBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZTxTZWxlY3Rpb25TZXJ2aWNlPihTZXJ2aWNlTmFtZXMuU2VsZWN0aW9uKTtcbiAgICByZXR1cm4gc2VydmljZS5zZWxlY3RNYXJrc0J5SWRBc3luYyh0aGlzLnZpc3VhbElkLCBzZWxlY3Rpb25zLCBzZWxlY3Rpb25VcGRhdGVUeXBlKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRGF0YVNvdXJjZUZyb21JbmZvKGRhdGFTb3VyY2VJbmZvOiBEYXRhU291cmNlSW5mbyk6IENvbnRyYWN0LkRhdGFTb3VyY2Uge1xuICAgIGNvbnN0IGRhdGFTb3VyY2VJbXBsID0gbmV3IERhdGFTb3VyY2VJbXBsKGRhdGFTb3VyY2VJbmZvKTtcbiAgICBjb25zdCBkYXRhU291cmNlID0gbmV3IERhdGFTb3VyY2UoZGF0YVNvdXJjZUltcGwpO1xuICAgIGRhdGFTb3VyY2VJbXBsLmluaXRpYWxpemVXaXRoUHVibGljSW50ZXJmYWNlcyhkYXRhU291cmNlKTtcbiAgICByZXR1cm4gZGF0YVNvdXJjZTtcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvZXh0ZW5zaW9ucy1hcGkvc3JjL0ludGVybmFsL1dvcmtzaGVldEltcGwudHNcbiAqKi8iLCJpbXBvcnQgKiBhcyBDb250cmFjdCBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xuXG5pbXBvcnQgeyBEYXRhU291cmNlSW1wbCB9IGZyb20gJy4vSW50ZXJuYWwvRGF0YVNvdXJjZUltcGwnO1xuXG5leHBvcnQgY2xhc3MgRGF0YVNvdXJjZSBpbXBsZW1lbnRzIENvbnRyYWN0LkRhdGFTb3VyY2Uge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBfZGF0YVNvdXJjZUltcGw6IERhdGFTb3VyY2VJbXBsKSB7IH1cblxuICBwdWJsaWMgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YVNvdXJjZUltcGwubmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YVNvdXJjZUltcGwuaWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZpZWxkcygpOiBDb250cmFjdC5GaWVsZFtdIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YVNvdXJjZUltcGwuZmllbGRzO1xuICB9XG5cbiAgcHVibGljIGdldCBjb25uZWN0aW9uU3VtbWFyaWVzKCk6IENvbnRyYWN0LkNvbm5lY3Rpb25TdW1tYXJ5W10ge1xuICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlSW1wbC5jb25uZWN0aW9uU3VtbWFyaWVzO1xuICB9XG5cbiAgcHVibGljIGdldCBleHRyYWN0VXBkYXRlVGltZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlSW1wbC5leHRyYWN0VXBkYXRlVGltZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNFeHRyYWN0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlSW1wbC5pc0V4dHJhY3Q7XG4gIH1cblxuICBwdWJsaWMgcmVmcmVzaEFzeW5jKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlSW1wbC5yZWZyZXNoQXN5bmMoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRVbmRlcmx5aW5nRGF0YUFzeW5jKG9wdGlvbnM/OiBDb250cmFjdC5EYXRhU291cmNlVW5kZXJseWluZ0RhdGFPcHRpb25zKTpcbiAgICBQcm9taXNlPENvbnRyYWN0LkRhdGFUYWJsZT4ge1xuICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlSW1wbC5nZXRVbmRlcmx5aW5nRGF0YUFzeW5jKG9wdGlvbnMpO1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9leHRlbnNpb25zLWFwaS9zcmMvRGF0YVNvdXJjZS50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XG5pbXBvcnQgKiBhcyBJbnRlcm5hbENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XG5pbXBvcnQgeyBBcGlTZXJ2aWNlUmVnaXN0cnksIERhdGFTb3VyY2VTZXJ2aWNlLCBHZXREYXRhU2VydmljZSwgU2VydmljZU5hbWVzIH0gZnJvbSAnQHRhYmxlYXUvYXBpLXNoYXJlZCc7XG5cbmltcG9ydCB7IEZpZWxkSW1wbCB9IGZyb20gJy4vRmllbGRJbXBsJztcblxuaW1wb3J0IHsgRmllbGQgfSBmcm9tICcuLi9GaWVsZCc7XG5cbmV4cG9ydCBjbGFzcyBEYXRhU291cmNlSW1wbCB7XG4gIHByaXZhdGUgX2ZpZWxkczogRmllbGRbXTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBfZGF0YVNvdXJjZUluZm86IEludGVybmFsQ29udHJhY3QuRGF0YVNvdXJjZSkgeyB9XG5cbiAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGFTb3VyY2VJbmZvLm5hbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGFTb3VyY2VJbmZvLmlkO1xuICB9XG5cbiAgcHVibGljIGdldCBleHRyYWN0VXBkYXRlVGltZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlSW5mby5leHRyYWN0VXBkYXRlVGltZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZmllbGRzKCk6IENvbnRyYWN0LkZpZWxkW10ge1xuICAgIHJldHVybiB0aGlzLl9maWVsZHM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzRXh0cmFjdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YVNvdXJjZUluZm8uaXNFeHRyYWN0O1xuICB9XG5cbiAgcHVibGljIGdldCBjb25uZWN0aW9uU3VtbWFyaWVzKCk6IENvbnRyYWN0LkNvbm5lY3Rpb25TdW1tYXJ5W10ge1xuICAgIHRocm93IG5ldyBFcnJvcignRGF0YVNvdXJjZSBjb25uZWN0aW9uU3VtbWFyaWVzIEFQSSBub3QgeWV0IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgcHVibGljIHJlZnJlc2hBc3luYygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBkYXRhU291cmNlU2VydmljZSA9IEFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5nZXRTZXJ2aWNlPERhdGFTb3VyY2VTZXJ2aWNlPihcbiAgICAgIFNlcnZpY2VOYW1lcy5EYXRhU291cmNlU2VydmljZSk7XG5cbiAgICByZXR1cm4gZGF0YVNvdXJjZVNlcnZpY2UucmVmcmVzaEFzeW5jKHRoaXMuX2RhdGFTb3VyY2VJbmZvLmlkKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRVbmRlcmx5aW5nRGF0YUFzeW5jKG9wdGlvbnM/OiBDb250cmFjdC5EYXRhU291cmNlVW5kZXJseWluZ0RhdGFPcHRpb25zKTpcbiAgICBQcm9taXNlPENvbnRyYWN0LkRhdGFUYWJsZT4ge1xuICAgICAgY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgICAgICAgaWdub3JlQWxpYXNlczogZmFsc2UsXG4gICAgICAgICAgbWF4Um93czogMTAwMDAsXG4gICAgICAgICAgY29sdW1uc1RvSW5jbHVkZTogW10sXG4gICAgICB9O1xuXG4gICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAgICAgY29uc3QgZ2V0RGF0YVNlcnZpY2UgPSBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZTxHZXREYXRhU2VydmljZT4oU2VydmljZU5hbWVzLkdldERhdGEpO1xuICAgICAgcmV0dXJuIGdldERhdGFTZXJ2aWNlLmdldERhdGFTb3VyY2VEYXRhQXN5bmMoXG4gICAgICAgIHRoaXMuaWQsXG4gICAgICAgICEhb3B0aW9ucy5pZ25vcmVBbGlhc2VzLFxuICAgICAgICBvcHRpb25zLm1heFJvd3MgfHwgZGVmYXVsdE9wdGlvbnMubWF4Um93cyxcbiAgICAgICAgb3B0aW9ucy5jb2x1bW5zVG9JbmNsdWRlIHx8IGRlZmF1bHRPcHRpb25zLmNvbHVtbnNUb0luY2x1ZGUpO1xuICB9XG5cbiAgcHVibGljIGluaXRpYWxpemVXaXRoUHVibGljSW50ZXJmYWNlcyhkYXRhU291cmNlOiBDb250cmFjdC5EYXRhU291cmNlKTogdm9pZCB7XG4gICAgdGhpcy5fZmllbGRzID0gdGhpcy5fZGF0YVNvdXJjZUluZm8uZmllbGRzLm1hcChmaWVsZE1vZGVsID0+IHtcbiAgICAgIGNvbnN0IGZpZWxkSW1wbCA9IG5ldyBGaWVsZEltcGwoZmllbGRNb2RlbCwgZGF0YVNvdXJjZSk7XG4gICAgICByZXR1cm4gbmV3IEZpZWxkKGZpZWxkSW1wbCk7XG4gICAgfSk7XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2V4dGVuc2lvbnMtYXBpL3NyYy9JbnRlcm5hbC9EYXRhU291cmNlSW1wbC50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XG5pbXBvcnQgKiBhcyBJbnRlcm5hbENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XG5pbXBvcnQgeyBJbnRlcm5hbFRvRXh0ZXJuYWxFbnVtTWFwcGluZ3MgfSBmcm9tICdAdGFibGVhdS9hcGktc2hhcmVkJztcblxuZXhwb3J0IGNsYXNzIEZpZWxkSW1wbCB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIF9maWVsZEluZm86IEludGVybmFsQ29udHJhY3QuRmllbGQsXG4gICAgICAgICAgICAgICAgICAgICBwcml2YXRlIF9wYXJlbnREYXRhU291cmNlOiBDb250cmFjdC5EYXRhU291cmNlKSB7ICB9XG5cbiAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkSW5mby5uYW1lO1xuICB9XG5cbiAgcHVibGljIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9maWVsZEluZm8uaWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRlc2NyaXB0aW9uKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkSW5mby5kZXNjcmlwdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWdncmVnYXRpb24oKTogQ29udHJhY3QuRmllbGRBZ2dyZWdhdGlvblR5cGUge1xuICAgIHJldHVybiBJbnRlcm5hbFRvRXh0ZXJuYWxFbnVtTWFwcGluZ3MuZmllbGRBZ2dyZWdhdGlvblR5cGUuY29udmVydCh0aGlzLl9maWVsZEluZm8uYWdncmVnYXRpb24pO1xuICB9XG5cbiAgcHVibGljIGdldCBkYXRhU291cmNlKCk6IENvbnRyYWN0LkRhdGFTb3VyY2Uge1xuICAgIHJldHVybiB0aGlzLl9wYXJlbnREYXRhU291cmNlO1xuICB9XG5cbiAgcHVibGljIGdldCByb2xlKCk6IENvbnRyYWN0LkZpZWxkUm9sZVR5cGUge1xuICAgIHJldHVybiBJbnRlcm5hbFRvRXh0ZXJuYWxFbnVtTWFwcGluZ3MuZmllbGRSb2xlVHlwZS5jb252ZXJ0KHRoaXMuX2ZpZWxkSW5mby5yb2xlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNIaWRkZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkSW5mby5pc0hpZGRlbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNHZW5lcmF0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkSW5mby5pc0dlbmVyYXRlZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNDYWxjdWxhdGVkRmllbGQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkSW5mby5pc0NhbGN1bGF0ZWRGaWVsZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNDb21iaW5lZEZpZWxkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9maWVsZEluZm8uaXNDb21iaW5lZEZpZWxkO1xuICB9XG5cbiAgcHVibGljIGdldENhbGN1bGF0ZWRGaWVsZEFzeW5jKCk6IFByb21pc2U8Q29udHJhY3QuQ2FsY3VsYXRlZEZpZWxkIHwgdW5kZWZpbmVkPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGaWVsZCBnZXRDYWxjdWxhdGVkRmllbGRBc3luYyBtZXRob2Qgbm90IHlldCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvZXh0ZW5zaW9ucy1hcGkvc3JjL0ludGVybmFsL0ZpZWxkSW1wbC50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XG5cbmltcG9ydCB7IEZpZWxkSW1wbCB9IGZyb20gJy4vSW50ZXJuYWwvRmllbGRJbXBsJztcblxuZXhwb3J0IGNsYXNzIEZpZWxkIGltcGxlbWVudHMgQ29udHJhY3QuRmllbGQge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBfZmllbGRJbXBsOiBGaWVsZEltcGwpIHsgfVxuXG4gIHB1YmxpYyBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9maWVsZEltcGwubmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZmllbGRJbXBsLmlkO1xuICB9XG5cbiAgcHVibGljIGdldCBkZXNjcmlwdGlvbigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9maWVsZEltcGwuZGVzY3JpcHRpb247XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFnZ3JlZ2F0aW9uKCk6IENvbnRyYWN0LkZpZWxkQWdncmVnYXRpb25UeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fZmllbGRJbXBsLmFnZ3JlZ2F0aW9uO1xuICB9XG5cbiAgcHVibGljIGdldCBkYXRhU291cmNlKCk6IENvbnRyYWN0LkRhdGFTb3VyY2Uge1xuICAgIHJldHVybiB0aGlzLl9maWVsZEltcGwuZGF0YVNvdXJjZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcm9sZSgpOiBDb250cmFjdC5GaWVsZFJvbGVUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fZmllbGRJbXBsLnJvbGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzSGlkZGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9maWVsZEltcGwuaXNIaWRkZW47XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzR2VuZXJhdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9maWVsZEltcGwuaXNHZW5lcmF0ZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzQ2FsY3VsYXRlZEZpZWxkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9maWVsZEltcGwuaXNDYWxjdWxhdGVkRmllbGQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbHVtblR5cGUoKTogQ29udHJhY3QuQ29sdW1uVHlwZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGaWVsZC5jb2x1bW5UeXBlIG5vdCB5ZXQgaW1wbGVtZXRuZWQuJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzQ29tYmluZWRGaWVsZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZmllbGRJbXBsLmlzQ29tYmluZWRGaWVsZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDYWxjdWxhdGVkRmllbGRBc3luYygpOiBQcm9taXNlPENvbnRyYWN0LkNhbGN1bGF0ZWRGaWVsZCB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLl9maWVsZEltcGwuZ2V0Q2FsY3VsYXRlZEZpZWxkQXN5bmMoKTtcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvZXh0ZW5zaW9ucy1hcGkvc3JjL0ZpZWxkLnRzXG4gKiovIiwiaW1wb3J0IHsgRXh0ZW5zaW9uU2V0dGluZ3NJbmZvIH0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcbmltcG9ydCB7IEFwaVNlcnZpY2VSZWdpc3RyeSB9IGZyb20gJ0B0YWJsZWF1L2FwaS1zaGFyZWQnO1xuaW1wb3J0IHsgUGFyYW0gfSBmcm9tICdAdGFibGVhdS9hcGktdXRpbHMnO1xuXG5pbXBvcnQgeyBFeHRlbnNpb25zU2VydmljZU5hbWVzIH0gZnJvbSAnLi4vU2VydmljZXMvRXh0ZW5zaW9uc1NlcnZpY2VOYW1lcyc7XG5pbXBvcnQgeyBTZXR0aW5nc0NvbGxlY3Rpb24sIFNldHRpbmdzU2VydmljZSB9IGZyb20gJy4uL1NlcnZpY2VzL1NldHRpbmdzU2VydmljZSc7XG5cbmV4cG9ydCBjbGFzcyBTZXR0aW5nc0ltcGwge1xuICBwcml2YXRlIF9pc01vZGlmaWVkOiBib29sZWFuO1xuICBwcml2YXRlIF9jdXJyZW50U2V0dGluZ3M6IFNldHRpbmdzQ29sbGVjdGlvbjtcblxuICAvLyBTaW5jZSBwcm9taXNlcyBjYW4ndCBiZSBpbnRyb3NwZWN0ZWQgZm9yIHN0YXRlLCBrZWVwIGEgdmFyaWFibGUgdGhhdFxuICAvLyBpbmRpY2F0ZXMgYSBzYXZlIGlzIGluIHByb2dyZXNzLCBzbyB0aGF0IHNldC9lcmFzZSBjYW4ndCBiZSBjYWxsZWQgZHVyaW5nIGEgc2F2ZS5cbiAgcHJpdmF0ZSBfc2F2ZUluUHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgY29uc3RydWN0b3Ioc2V0dGluZ3NJbmZvOiBFeHRlbnNpb25TZXR0aW5nc0luZm8pIHtcbiAgICB0aGlzLmluaXRpYWxpemVTZXR0aW5ncyhzZXR0aW5nc0luZm8pO1xuICB9XG5cbiAgcHVibGljIGVyYXNlKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgUGFyYW0udmVyaWZ5VmFsdWUoa2V5LCAna2V5Jyk7XG5cbiAgICAvLyBPbmx5IG1ha2UgYSBtb2RpZmljYXRpb24gaWYgd2UgaGF2ZSB0aGUga2V5IGFscmVhZHlcbiAgICBpZiAodGhpcy5fY3VycmVudFNldHRpbmdzW2tleV0pIHtcbiAgICAgIHRoaXMudmVyaWZ5U2V0dGluZ3NBcmVVbmxvY2tlZCgpO1xuXG4gICAgICBkZWxldGUgdGhpcy5fY3VycmVudFNldHRpbmdzW2tleV07XG4gICAgICB0aGlzLl9pc01vZGlmaWVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0KGtleTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBQYXJhbS52ZXJpZnlWYWx1ZShrZXksICdrZXknKTtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFNldHRpbmdzW2tleV07XG4gIH1cblxuICBwdWJsaWMgZ2V0QWxsKCk6IFNldHRpbmdzQ29sbGVjdGlvbiB7XG4gICAgLy8gUmV0dXJucyBhIG11dGFibGUgY29weSBvZiB0aGUgc2V0dGluZ3NcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5fY3VycmVudFNldHRpbmdzKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNNb2RpZmllZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNNb2RpZmllZDtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlQXN5bmMoKTogUHJvbWlzZTxTZXR0aW5nc0NvbGxlY3Rpb24+IHtcbiAgICB0aGlzLnZlcmlmeVNldHRpbmdzQXJlVW5sb2NrZWQoKTtcblxuICAgIC8vIEp1c3QgcmVzb2x2ZSBpbW1lZGlhdGVseSBpZiBzZXR0aW5ncyBhcmUgdW5jaGFuZ2VkXG4gICAgaWYgKCF0aGlzLl9pc01vZGlmaWVkKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlPFNldHRpbmdzQ29sbGVjdGlvbj4odGhpcy5fY3VycmVudFNldHRpbmdzKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zYXZlSW5Qcm9ncmVzcyA9IHRydWU7XG5cbiAgICAvLyBVc2UgdGhlIHNldHRpbmdzIHNlcnZpY2UgdG8gc2F2ZSBzZXR0aW5ncyB0byB0d2JcbiAgICBjb25zdCBzZXR0aW5nc1NlcnZpY2UgPSBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZTxTZXR0aW5nc1NlcnZpY2U+KFxuICAgICAgRXh0ZW5zaW9uc1NlcnZpY2VOYW1lcy5TZXR0aW5nc1NlcnZpY2UpO1xuXG4gICAgcmV0dXJuIHNldHRpbmdzU2VydmljZS5zYXZlU2V0dGluZ3NBc3luYyh0aGlzLl9jdXJyZW50U2V0dGluZ3MpLnRoZW48U2V0dGluZ3NDb2xsZWN0aW9uPihuZXdTZXR0aW5ncyA9PiB7XG4gICAgICB0aGlzLl9zYXZlSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgdGhpcy5faXNNb2RpZmllZCA9IGZhbHNlO1xuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLl9jdXJyZW50U2V0dGluZ3MsIG5ld1NldHRpbmdzKTtcbiAgICAgIHJldHVybiBuZXdTZXR0aW5ncztcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBQYXJhbS52ZXJpZnlWYWx1ZShrZXksICdrZXknKTsgLy8gS2V5IHNob3VsZG4ndCBiZSBhbiBlbXB0eSBzdHJpbmcuXG4gICAgUGFyYW0udmVyaWZ5U3RyaW5nKHZhbHVlLCAndmFsdWUnKTsgLy8gRW1wdHkgc3RyaW5nIHZhbHVlIGlzIGFsbG93ZWQuXG4gICAgdGhpcy52ZXJpZnlTZXR0aW5nc0FyZVVubG9ja2VkKCk7XG5cbiAgICB0aGlzLl9jdXJyZW50U2V0dGluZ3Nba2V5XSA9IHZhbHVlO1xuICAgIHRoaXMuX2lzTW9kaWZpZWQgPSB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplU2V0dGluZ3Moc2V0dGluZ3NJbmZvOiBFeHRlbnNpb25TZXR0aW5nc0luZm8pOiB2b2lkIHtcbiAgICBQYXJhbS52ZXJpZnlWYWx1ZShzZXR0aW5nc0luZm8sICdzZXR0aW5nc0luZm8nKTtcbiAgICBQYXJhbS52ZXJpZnlWYWx1ZShzZXR0aW5nc0luZm8uc2V0dGluZ3NWYWx1ZXMsICdzZXR0aW5nc0luZm8uU2V0dGluZ3NWYWx1ZXMnKTtcblxuICAgIHRoaXMuX2N1cnJlbnRTZXR0aW5ncyA9IHNldHRpbmdzSW5mby5zZXR0aW5nc1ZhbHVlcztcblxuICAgIC8vIFJlc2V0IHRoZSBpc01vZGlmaWVkIGZsYWdcbiAgICB0aGlzLl9pc01vZGlmaWVkID0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBoZWxwZXIgc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUgYW55IGxvY2FsIHVwZGF0ZSB0byB0aGlzLmN1cnJlbnRTZXR0aW5ncy5cbiAgICogQ2hlY2tzIGlmIGEgY3VycmVudCBzYXZlIGNhbGwgaXMgc3RpbGwgaW4gcHJvZ3Jlc3MgYW5kIHRocm93cyBhbiBlcnJvciBpZiBzby5cbiAgICovXG4gIHByaXZhdGUgdmVyaWZ5U2V0dGluZ3NBcmVVbmxvY2tlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fc2F2ZUluUHJvZ3Jlc3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXN5bmMgU2F2ZSBpcyBpbiBwcm9ncmVzcywgdXBkYXRpbmcgc2V0dGluZ3MgaXMgbm90IGFsbG93ZWQuJyk7XG4gICAgfVxuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9leHRlbnNpb25zLWFwaS9zcmMvSW50ZXJuYWwvU2V0dGluZ3NJbXBsLnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcblxuaW1wb3J0IHsgRXh0ZW5zaW9uc0ltcGwgfSBmcm9tICcuLi9JbnRlcm5hbC9FeHRlbnNpb25zSW1wbCc7XG5cbi8qKlxuICogSW1wbGVtZW50YXRpb24gb2YgdGhlIGV4dGVybmFsIEV4dGVuc2lvbnMgbmFtZXNwYWNlLlxuICovXG5leHBvcnQgY2xhc3MgRXh0ZW5zaW9ucyBpbXBsZW1lbnRzIENvbnRyYWN0LkV4dGVuc2lvbnMge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBleHRlbnNpb25JbXBsOiBFeHRlbnNpb25zSW1wbCkge1xuICAgIHRoaXMuZXh0ZW5zaW9uSW1wbCA9IGV4dGVuc2lvbkltcGw7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRhc2hib2FyZENvbnRlbnQoKTogQ29udHJhY3QuRGFzaGJvYXJkQ29udGVudCB7XG4gICAgcmV0dXJuIHRoaXMuZXh0ZW5zaW9uSW1wbC5kYXNoYm9hcmRDb250ZW50O1xuICB9XG5cbiAgcHVibGljIGdldCBlbnZpcm9ubWVudCgpOiBDb250cmFjdC5FbnZpcm9ubWVudCB7XG4gICAgcmV0dXJuIHRoaXMuZXh0ZW5zaW9uSW1wbC5lbnZpcm9ubWVudDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2V0dGluZ3MoKTogQ29udHJhY3QuU2V0dGluZ3Mge1xuICAgIHJldHVybiB0aGlzLmV4dGVuc2lvbkltcGwuc2V0dGluZ3M7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHVpKCk6IENvbnRyYWN0LlVJIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0FQSSBjYWxsIG5vdCB5ZXQgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0aWFsaXplQXN5bmMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuZXh0ZW5zaW9uSW1wbC5pbml0aWFsaXplQXN5bmMoKTtcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvZXh0ZW5zaW9ucy1hcGkvc3JjL05hbWVzcGFjZXMvRXh0ZW5zaW9ucy50c1xuICoqLyIsImltcG9ydCB7IEFwaUV2ZW50SGFuZGxlciB9IGZyb20gJ0B0YWJsZWF1L2FwaS1jb3JlJztcclxuaW1wb3J0IHsgSW50ZXJuYWxBcGlEaXNwYXRjaGVyLCBJbnRlcm5hbEFwaURpc3BhdGNoZXJIb2xkZXIgfSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xyXG5cclxuaW1wb3J0IHsgQWRkSW5BcGlQcmVzTGF5ZXJJbXBsIH0gZnJvbSAnLi9BZGRJbkFwaVByZXNMYXllckltcGwnO1xyXG5pbXBvcnQgeyBEZXNrdG9wQXBpRGlzcGF0Y2hlciB9IGZyb20gJy4vRGVza3RvcEFwaURpc3BhdGNoZXInO1xyXG5pbXBvcnQgeyBpbml0aWFsaXplV2ViQ2hhbm5lbFByZXNMYXllciB9IGZyb20gJy4vUXRXZWJDaGFubmVsSW1wbCc7XHJcblxyXG4vKipcclxuICogV3JhcHBlciBmb3IgYWxsIHRoZSBib290c3RyYXBwaW5nIGxvZ2ljLiBUaGlzIGNvZGUgYXR0ZW1wdHMgdG8gaW5pdGlhbGl6ZSB0aGUgcXQgcHJlcy1sYXllclxyXG4gKiBhcyB3ZWxsIGFzIHRoZSBkZXNrdG9wIGRpc3BhdGNoZXIuIEl0IHRoZW4gYXNzaWducyBpdCB0byB0aGUgZ2xvYmFsIGRlc2t0b3AgZGlzcGF0Y2hlciB0b1xyXG4gKiBiZSBwaWNrZWQgdXAgYnkgdGhlIGFkZC1pbiBleHRlcm5hbCBBcGlcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBkb0Jvb3RzdHJhcCgpOiBQcm9taXNlPEludGVybmFsQXBpRGlzcGF0Y2hlcj4ge1xyXG5cclxuICAvLyBGaXJzdCB3ZSBuZWVkIHRvIGluaXRpYWxpemUgdGhlIHdlYmNoYW5uZWwgcHJlcy1sYXllclxyXG4gIGxldCBkaXNwYXRjaGVyUHJvbWlzZSA9IGluaXRpYWxpemVXZWJDaGFubmVsUHJlc0xheWVyKCkudGhlbjxJbnRlcm5hbEFwaURpc3BhdGNoZXI+KChwcmVzbGF5ZXIpID0+IHtcclxuICAgIGNvbnN0IHByZXNMYXllckFwaSA9IG5ldyBBZGRJbkFwaVByZXNMYXllckltcGwocHJlc2xheWVyKTtcclxuICAgIGlmICghcHJlc0xheWVyQXBpLkFkZEluSW5zdGFuY2VJbmZvLmFkZEluTG9jYXRvclByZXNNb2RlbCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FkZEluSW5zdGFuY2VJbmZvIHVuZGVmaW5lZCcpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEluaXRpYWxpemUgdGhlIGFwaUV2ZW50SGFuZGxlciBhbmQgdGhlIGRlc2t0b3BEaXNwYXRjaGVyIHdpdGggaXRcclxuICAgIGNvbnN0IGFwaUV2ZW50SGFuZGxlciA9IG5ldyBBcGlFdmVudEhhbmRsZXIocHJlc0xheWVyQXBpLCBwcmVzTGF5ZXJBcGkuQWRkSW5JbnN0YW5jZUluZm8uYWRkSW5Mb2NhdG9yUHJlc01vZGVsKTtcclxuICAgIGNvbnN0IGRlc2t0b3BEaXNwYXRjaGVyID0gbmV3IERlc2t0b3BBcGlEaXNwYXRjaGVyKGFwaUV2ZW50SGFuZGxlcik7XHJcblxyXG4gICAgcmV0dXJuIGRlc2t0b3BEaXNwYXRjaGVyO1xyXG4gIH0pO1xyXG5cclxuICAvLyBBc3NpZ24gdGhlIGRlc2t0b3AgZGlzcGF0Y2hlciBmb3IgdGhlIG90aGVyIHByb2plY3QgdG8gZmluZCBpdFxyXG4gIEludGVybmFsQXBpRGlzcGF0Y2hlckhvbGRlci5zZXREZXNrdG9wRGlzcGF0Y2hlclByb21pc2UoZGlzcGF0Y2hlclByb21pc2UpO1xyXG5cclxuICByZXR1cm4gZGlzcGF0Y2hlclByb21pc2U7XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi4vc3JjL0ZyZWxhcmREZXNrdG9wQm9vdHN0cmFwLnRzXG4gKiovIiwiLyoqXG4gKiBUaGlzIGlzIHlvdXIgbWFpbi4gVGhpcyBpcyB3aGVyZSB5b3UgcmUtZXhwb3J0IGV2ZXJ5dGhpbmcgeW91IHdhbnQgdG8gYmUgcHVibGljbHkgYXZhaWxhYmxlLlxuICpcbiAqIFRoZSBidWlsZCBlbmZvcmNlcyB0aGF0IHRoZSBmaWxlIGhhcyB0aGUgc2FtZSBuYW1lIGFzIHRoZSBnbG9iYWwgdmFyaWFibGUgdGhhdCBpcyBleHBvcnRlZC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL0FwaUV2ZW50SGFuZGxlcic7XG5cbi8vIE5lZWQgdG8gZXhwb3J0IHRoZXNlIHR3byBwcmVzIG1vZGVscyBmb3IgdXNlIGJ5IG90aGVyIHByb2plY3RzXG5leHBvcnQge1xuICBBZGRJbkluc3RhbmNlUHJlc01vZGVsLFxuICBBZGRJbkxvY2F0b3JQcmVzTW9kZWwsXG4gIEFkZEluQm9vdHN0cmFwSW5mb1ByZXNNb2RlbCxcbiAgUHJlc2VudGF0aW9uTW9kZWxcbn0gZnJvbSAnLi4vZ2VuLXNyYy9wcmVzbGF5ZXIvUHJlc01vZGVscyc7XG5leHBvcnQgeyBOb3RpZmljYXRpb25JZCB9IGZyb20gJy4uL2dlbi1zcmMvcHJlc2xheWVyL0V2ZW50cyc7XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktY29yZS9zcmMvQXBpQ29yZS50c1xuICoqLyIsImltcG9ydCB7XG4gIEV4ZWN1dGVQYXJhbWV0ZXJzLFxuICBFeGVjdXRlUmVzcG9uc2UsXG4gIEV4dGVuc2lvbkxvY2F0b3IgYXMgQXBpRXh0ZW5zaW9uTG9jYXRvcixcbiAgTW9kZWwsXG4gIE5vdGlmaWNhdGlvbklkLFxuICBQYXJhbWV0ZXJJZCBhcyBBcGlQYXJhbWV0ZXJJZCxcbiAgVmVyYklkLFxuICBWZXJzaW9uTnVtYmVyLFxufSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xuaW1wb3J0IHsgUHJlc2VudGF0aW9uTGF5ZXIgfSBmcm9tICdAdGFibGVhdS9wcmVzbGF5ZXItYXBpLWNvbnRyYWN0JztcblxuaW1wb3J0IHsgTm90aWZpY2F0aW9uSWQgYXMgUHJlc0xheWVyRXZlbnRJZCB9IGZyb20gJy4uL2dlbi1zcmMvcHJlc2xheWVyL0V2ZW50cyc7XG5pbXBvcnQgeyBQYXJhbWV0ZXJJZCBhcyBQcmVzTGF5ZXJQYXJhbWV0ZXJJZCB9IGZyb20gJy4uL2dlbi1zcmMvcHJlc2xheWVyL1BhcmFtcyc7XG5pbXBvcnQgeyBBZGRJbkxvY2F0b3JQcmVzTW9kZWwsIFByZXNlbnRhdGlvbk1vZGVsIH0gZnJvbSAnLi4vZ2VuLXNyYy9wcmVzbGF5ZXIvUHJlc01vZGVscyc7XG5pbXBvcnQgeyBDb21tYW5kTWFwcGluZ1JlZ2lzdHJ5IH0gZnJvbSAnLi9tYXBwaW5ncy9Db21tYW5kTWFwcGluZ1JlZ2lzdHJ5JztcbmltcG9ydCB7IENvbW1hbmRNYXBwaW5nUmVnaXN0cnlGYWN0b3J5IH0gZnJvbSAnLi9tYXBwaW5ncy9Db21tYW5kTWFwcGluZ1JlZ2lzdHJ5RmFjdG9yeSc7XG5pbXBvcnQgeyBFdmVudE1hcHBpbmdSZWdpc3RyeSwgRXZlbnRNYXBwaW5nUmVnaXN0cnlGYWN0b3J5IH0gZnJvbSAnLi9tYXBwaW5ncy9FdmVudE1hcHBpbmdSZWdpc3RyeUZhY3RvcnknO1xuaW1wb3J0IHtcbiAgQXBpVG9QcmVzTGF5ZXJNYXBwaW5nUmVnaXN0cnksXG4gIFBhcmFtZXRlck1hcHBpbmdSZWdpc3RyeUZhY3RvcnksXG4gIFByZXNMYXllclRvQXBpTWFwcGluZ1JlZ2lzdHJ5LFxufSBmcm9tICcuL21hcHBpbmdzL1BhcmFtZXRlck1hcHBpbmdSZWdpc3RyeUZhY3RvcnknO1xuXG5leHBvcnQgdHlwZSBOb3RpZmljYXRpb25IYW5kbGVyID0gKG5vdGlmaWNhdGlvbjogTm90aWZpY2F0aW9uSWQsIG1vZGVsOiBNb2RlbCkgPT4gdm9pZDtcblxuLyoqXG4gKiBNYWluIGNsYXNzIGZvciB0aGUgYXBpLWNvcmUgcHJvamVjdC4gVGhpcyBjbGFzcyBpcyByZXNwb25zaWJsZSBmb3IgZXhlY3V0aW5nIGNvbWFtbmQgYW5kIG1hcnNoYWxsaW5nIG5vdGlmY2F0aW9uc1xuICogYmV0d2VlbiB0aGUgaW50ZXJuYWwgQXBpIGFuZCB0aGUgcHJlcy1sYXllciBBcGkuIEFmdGVyIGNvbnN0cnVjdGlvbiwgU2V0VmVyc2lvbk51bWJlciBtdXN0IGJlIGNhbGxlZCBpbiBvcmRlciB0b1xuICogdXNlIHRoaXMgY2xhc3NcbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgQXBpRXZlbnRIYW5kbGVyXG4gKi9cbmV4cG9ydCBjbGFzcyBBcGlFdmVudEhhbmRsZXIge1xuICBwcml2YXRlIF9wcmVzTGF5ZXI6IFByZXNlbnRhdGlvbkxheWVyO1xuICBwcml2YXRlIF9wcmVzTGF5ZXJBZGRJbkxvY2F0b3I6IEFkZEluTG9jYXRvclByZXNNb2RlbDtcbiAgcHJpdmF0ZSBfYXBpRXh0ZW5zaW9uTG9jYXRvcjogQXBpRXh0ZW5zaW9uTG9jYXRvcjtcbiAgcHJpdmF0ZSBfZXZlbnRIYW5kbGVyOiBOb3RpZmljYXRpb25IYW5kbGVyO1xuICBwcml2YXRlIF9jb21tYW5kUmVnaXN0cnk6IENvbW1hbmRNYXBwaW5nUmVnaXN0cnk7XG4gIHByaXZhdGUgX2V2ZW50UmVnaXN0cnk6IEV2ZW50TWFwcGluZ1JlZ2lzdHJ5O1xuICBwcml2YXRlIF9hcGlUb1ByZXNMYXllclJlZ2lzdHJ5OiBBcGlUb1ByZXNMYXllck1hcHBpbmdSZWdpc3RyeTtcbiAgcHJpdmF0ZSBfcHJlc0xheWVyVG9BcGlSZWdpc3RyeTogUHJlc0xheWVyVG9BcGlNYXBwaW5nUmVnaXN0cnk7XG4gIHByaXZhdGUgX3ZlcnNpb25OdW1iZXI/OiBWZXJzaW9uTnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIEFwaUV2ZW50SGFuZGxlci5cbiAgICogQHBhcmFtIHtQcmVzZW50YXRpb25MYXllcn0gcHJlc0xheWVyIC0gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIHByZXMtbGF5ZXIgQXBpIHRvIHVzZVxuICAgKiBAcGFyYW0ge0FkZEluTG9jYXRvclByZXNNb2RlbH0gYWRkSW5Mb2NhdG9yUHJlc01vZGVsIC0gbG9jYXRvciBmb3IgdGhlIGFkZC1pbiB3aGljaCBpcyBiZWluZyByZWZlcmVuY2VkXG4gICAqIEBtZW1iZXJvZiBBcGlFdmVudEhhbmRsZXJcbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwcmVzTGF5ZXI6IFByZXNlbnRhdGlvbkxheWVyLCBhZGRJbkxvY2F0b3JQcmVzTW9kZWw6IEFkZEluTG9jYXRvclByZXNNb2RlbCkge1xuICAgIHRoaXMuX3ByZXNMYXllciA9IHByZXNMYXllcjtcbiAgICB0aGlzLl9wcmVzTGF5ZXJBZGRJbkxvY2F0b3IgPSBhZGRJbkxvY2F0b3JQcmVzTW9kZWw7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgaW50ZXJuYWwgQXBpIHZlcnNpb24gbnVtYmVyIHdoaWNoIHRoZSBleHRlcm5hbCBsaWJyYXJ5IGlzIGV4cGVjdGluZyB0byB1c2UuIFRoaXMgbXVzdCBiZSBjYWxsZWQgYmVmb3JlXG4gICAqIGFueXRoaW5nIGVsc2UgaW4gb3JkZXIgdG8gcHJvcGVybHkgc2V0IHVwIHRoZSB0cmFuc2xhdGlvbiBsYXllcnMuXG4gICAqXG4gICAqIEBwYXJhbSB7VmVyc2lvbk51bWJlcn0gdmVyc2lvbk51bWJlclxuICAgKiBAbWVtYmVyb2YgQXBpRXZlbnRIYW5kbGVyXG4gICAqL1xuICBwdWJsaWMgc2V0VmVyc2lvbk51bWJlcih2ZXJzaW9uTnVtYmVyOiBWZXJzaW9uTnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fdmVyc2lvbk51bWJlciA9IHZlcnNpb25OdW1iZXI7XG5cbiAgICAvLyBJbml0aWFsaXplIGFsbCBvdXIgcmVnaXN0cmllc1xuICAgIHRoaXMuX2NvbW1hbmRSZWdpc3RyeSA9IENvbW1hbmRNYXBwaW5nUmVnaXN0cnlGYWN0b3J5LmNyZWF0ZUNvbW1hbmRNYXBwaW5nUmVnaXN0cnkodmVyc2lvbk51bWJlcik7XG4gICAgdGhpcy5fYXBpVG9QcmVzTGF5ZXJSZWdpc3RyeSA9IFBhcmFtZXRlck1hcHBpbmdSZWdpc3RyeUZhY3RvcnkuY3JlYXRlQXBpVG9QcmVzTGF5ZXJQYXJhbVJlZ2lzdHJ5KHZlcnNpb25OdW1iZXIpO1xuICAgIHRoaXMuX3ByZXNMYXllclRvQXBpUmVnaXN0cnkgPSBQYXJhbWV0ZXJNYXBwaW5nUmVnaXN0cnlGYWN0b3J5LmNyZWF0ZVByZXNMYXllclRvQXBpUGFyYW1SZWdpc3RyeSh2ZXJzaW9uTnVtYmVyKTtcbiAgICB0aGlzLl9ldmVudFJlZ2lzdHJ5ID0gRXZlbnRNYXBwaW5nUmVnaXN0cnlGYWN0b3J5LmNyZWF0ZUV2ZW50TWFwcGluZ1JlZ2lzdHJ5KHZlcnNpb25OdW1iZXIpO1xuXG4gICAgLy8gQ29udmVydCBvdXIgYWRkSW5Mb2NhdG9yIHRvIHRoZSBBcGkgdmVyc2lvblxuICAgIHRoaXMuX2FwaUV4dGVuc2lvbkxvY2F0b3IgPSB0aGlzLl9wcmVzTGF5ZXJUb0FwaVJlZ2lzdHJ5XG4gICAgICAuZ2V0KFByZXNMYXllclBhcmFtZXRlcklkLkFkZEluTG9jYXRvciwgQXBpUGFyYW1ldGVySWQuRXh0ZW5zaW9uTG9jYXRvcikodGhpcy5fcHJlc0xheWVyQWRkSW5Mb2NhdG9yKSBhcyBBcGlFeHRlbnNpb25Mb2NhdG9yO1xuXG4gICAgZm9yIChjb25zdCBwbEV2ZW50SWQgb2YgT2JqZWN0LmtleXModGhpcy5fZXZlbnRSZWdpc3RyeSkpIHtcbiAgICAgIC8vIFJlZ2lzdGVyIGZvciBhbGwgbm90aWZpY2F0aW9ucyB3ZSBrbm93IGFib3V0IGFuZCBiaW5kIHRoZSBldmVudCB0eXBlIHRvIHRoZSBjYWxsYmFja1xuICAgICAgdGhpcy5fcHJlc0xheWVyLnJlZ2lzdGVyTm90aWZpY2F0aW9uSGFuZGxlcihwbEV2ZW50SWQsIHRoaXMub25QcmVzTGF5ZXJOb3RpZmljYXRpb24uYmluZCh0aGlzLCBwbEV2ZW50SWQpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBhbiBldmVudCBoYW5kbGVyIGZ1bmN0aW9uIHRvIGJlIG5vdGlmaWVkIHdoZW4gQXBpIGV2ZW50cyBjb21lIGluLiBPbmx5IGEgc2luZ2xlIHJlZ2lzdHJhdGlvbiBpcyBzdXBwb3J0ZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7Tm90aWZpY2F0aW9uSGFuZGxlcn0gZXZlbnRIYW5kbGVyXG4gICAqIEBtZW1iZXJvZiBBcGlFdmVudEhhbmRsZXJcbiAgICovXG4gIHB1YmxpYyBzZXRFdmVudEhhbmRsZXIoZXZlbnRIYW5kbGVyOiBOb3RpZmljYXRpb25IYW5kbGVyKTogdm9pZCB7XG4gICAgdGhpcy5fZXZlbnRIYW5kbGVyID0gZXZlbnRIYW5kbGVyO1xuXG4gICAgLy8gVE9ETyAtIFJlZ2lzdGVyIGZvciBwcmVzIGxheWVyIGV2ZW50c1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGVzIHRoZSByZXF1ZXN0ZWQgQXBpIGNvbW1hbmQgYnkgY29udmVydGluZyB0aGUgcGFyYW1ldGVycywgcnVubmluZyB0aGUgY29tbWFuZCBhZ2FpbnN0IHRoZSBwcmVzLWxheWVyLFxuICAgKiB0aGVuIHByb2Nlc3NpbmcgdGhlIHJlc3VsdCBiYWNrIGludG8gYSBmb3JtYXQgdGhlIEFwaSBjYW4gdW5kZXJzdGFuZFxuICAgKlxuICAgKiBAcGFyYW0ge1ZlcmJJZH0gdmVyYlxuICAgKiBAcGFyYW0ge0V4ZWN1dGVQYXJhbWV0ZXJzfSBwYXJhbWV0ZXJzXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEV4ZWN1dGVSZXNwb25zZT59XG4gICAqIEBtZW1iZXJvZiBBcGlFdmVudEhhbmRsZXJcbiAgICovXG4gIHB1YmxpYyBleGVjdXRlKHZlcmI6IFZlcmJJZCwgcGFyYW1ldGVyczogRXhlY3V0ZVBhcmFtZXRlcnMpOiBQcm9taXNlPEV4ZWN1dGVSZXNwb25zZT4ge1xuICAgIHRoaXMuYXNzZXJ0SW5pdGlhbGl6ZWQoKTtcblxuICAgIGNvbnN0IGNvbW1hbmQgPSB0aGlzLl9jb21tYW5kUmVnaXN0cnkuZ2V0Q29tbWFuZCh2ZXJiKTtcbiAgICBwYXJhbWV0ZXJzID0gcGFyYW1ldGVycyB8fCB7fTtcblxuICAgIC8vIEF1Z21lbnQgdGhlIGNvbW1hbmQgd2l0aCB0aGUgbG9jYXRvciBpZiBpdCdzIG5lZWRlZFxuICAgIGlmIChjb21tYW5kLm5lZWRzQWRkSW5Mb2NhdG9yKSB7XG4gICAgICBwYXJhbWV0ZXJzW0FwaVBhcmFtZXRlcklkLkV4dGVuc2lvbkxvY2F0b3JdID0gdGhpcy5fYXBpRXh0ZW5zaW9uTG9jYXRvcjtcbiAgICB9XG5cbiAgICBjb25zdCBjb21tYW5kc1BhcmFtcyA9IGNvbW1hbmQuY3JlYXRlUGFyYW1zKHBhcmFtZXRlcnMsIHRoaXMuX2FwaVRvUHJlc0xheWVyUmVnaXN0cnkpO1xuICAgIHJldHVybiB0aGlzLl9wcmVzTGF5ZXIuaW52b2tlQ29tbWFuZDx7W2RvY1BhcmFtSWQ6IHN0cmluZ106IG9iamVjdH0+KGNvbW1hbmQubmFtZXNwYWNlLCBjb21tYW5kLmNvbW1hbmRJZCwgY29tbWFuZHNQYXJhbXMpXG4gICAgLnRoZW48RXhlY3V0ZVJlc3BvbnNlPigoY29tbWFuZFJlc3VsdCkgPT4ge1xuICAgICAgY29uc3QgY29udmVydGVkUmVzdWx0ID0gY29tbWFuZC5Qcm9jZXNzUmVzdWx0KGNvbW1hbmRSZXN1bHQsIHRoaXMuX3ByZXNMYXllclRvQXBpUmVnaXN0cnkpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVzdWx0OiBjb252ZXJ0ZWRSZXN1bHRcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSGVscGVyIG1ldGhvZCB0byBjaGVjayB0aGF0IHRoaW5ncyBhcmUgaW5pdGlhbGl6ZWQgYXMgZXhwZWN0ZWQuIFRocm93cyBpZiBpbml0aWFsaXphdGlvbiBub3QgY29tcGxldGVcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQG1lbWJlcm9mIEFwaUV2ZW50SGFuZGxlclxuICAgKi9cbiAgcHJpdmF0ZSBhc3NlcnRJbml0aWFsaXplZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3ZlcnNpb25OdW1iZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVmVyc2lvbk51bWJlciBub3QgeWV0IGNvbmZpZ3VyZWQuIENhbm5vdCB0YWtlIGFueSBhY3Rpb25zJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIGEgbmV3IGV2ZW50IG5vdGlmaWNhdGlvbiBjb21lcyBpbiBmcm9tIHRoZSBwcmVzZW50YXRpb24gbGF5ZXJcbiAgICpcbiAgICogQHBhcmFtIGV2ZW50SWQgVGhlIHByZXMgbGF5ZXIgZXZlbnQgaWRcbiAgICogQHBhcmFtIHByZXNNb2RlbCBUaGUgcHJlcyBtb2RlbCB0aGF0IGlzIGluY2x1ZGVkIHdpdGggdGhlIGV2ZW50XG4gICAqL1xuICBwcml2YXRlIG9uUHJlc0xheWVyTm90aWZpY2F0aW9uKGV2ZW50SWQ6IFByZXNMYXllckV2ZW50SWQsIHByZXNNb2RlbDogUHJlc2VudGF0aW9uTW9kZWwpOiB2b2lkIHtcbiAgICAvLyBGaXJzdCBsb29rIHVwIHRoaXMgZXZlbnRJZCBpbiBvdXIgcmVnaXN0cnkgYW5kIGNvbnZlcnQgdG8gcHJlc01vZGVsXG4gICAgY29uc3QgZXZlbnRNYXBwaW5nID0gdGhpcy5fZXZlbnRSZWdpc3RyeVtldmVudElkXTtcbiAgICBjb25zdCBhcGlNb2RlbCA9IGV2ZW50TWFwcGluZy5jb252ZXJ0ZXIocHJlc01vZGVsKTtcblxuICAgIGlmICh0aGlzLl9ldmVudEhhbmRsZXIpIHtcbiAgICAgIHRoaXMuX2V2ZW50SGFuZGxlcihldmVudE1hcHBpbmcuYXBpSWQsIGFwaU1vZGVsKTtcbiAgICB9XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1jb3JlL3NyYy9BcGlFdmVudEhhbmRsZXIudHNcbiAqKi8iLCIvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy9cbi8vIFRoaXMgZmlsZSBpcyB0aGUgY29weXJpZ2h0ZWQgcHJvcGVydHkgb2YgVGFibGVhdSBTb2Z0d2FyZSBhbmQgaXMgcHJvdGVjdGVkXG4vLyBieSByZWdpc3RlcmVkIHBhdGVudHMgYW5kIG90aGVyIGFwcGxpY2FibGUgVS5TLiBhbmQgaW50ZXJuYXRpb25hbCBsYXdzIGFuZFxuLy8gcmVndWxhdGlvbnMuXG4vL1xuLy8gVW5saWNlbnNlZCB1c2Ugb2YgdGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBpcyBwcm9oaWJpdGVkLiBQbGVhc2UgcmVmZXIgdG9cbi8vIHRoZSBOT1RJQ0VTLnR4dCBmaWxlIGZvciBmdXJ0aGVyIGRldGFpbHMuXG4vL1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFdBUk5JTkc6IENvbXB1dGVyIGdlbmVyYXRlZCBmaWxlLiAgRG8gbm90IGhhbmQgbW9kaWZ5LlxuLy8gREVQRU5EUyBPTjogWycuLi90eXBlc2NyaXB0L2pzLWFwaS9hcGktY29yZS9ub2RlX21vZHVsZXMvQHRhYmxlYXUvcHJlc2xheWVyLWNvZGVnZW4tdHlwZXNjcmlwdC90ZW1wbGF0ZXMvcGFyYW1zLXRzLnRlbXBsYXRlJywgdScuLi90eXBlc2NyaXB0L2pzLWFwaS9hcGktY29yZS90ZW1wLXByZXMtbGF5ZXIvYWxsLXBhcmFtcy5kYXRhJ11cblxuZXhwb3J0IGVudW0gUGFyYW1ldGVySWQge1xuXG4gIC8vIERQSV9JbnRlZ2VyUkxFLCBoYXZpbmcgdHlwZSBpbnRbXVxuICBJbnRlZ2VyUkxFID0gJ2ludFJsZScsXG5cbiAgLy8gRFBJX1Vuc2lnbmVkSW50ZWdlclJMRSwgaGF2aW5nIHR5cGUgdWludFtdXG4gIFVuc2lnbmVkSW50ZWdlclJMRSA9ICd1aW50UmxlJyxcblxuICAvLyBEUElfRmxvYXRSTEUsIGhhdmluZyB0eXBlIGZsb2F0W11cbiAgRmxvYXRSTEUgPSAnZmxvYXRSbGUnLFxuXG4gIC8vIERQSV9QYXJhbWV0ZXJJRCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFBhcmFtZXRlcklEID0gJ3BhcmFtVHlwZScsXG5cbiAgLy8gRFBJX0FsbG93Q3VzdG9tRGF0YWJhc2UsIGhhdmluZyB0eXBlIGJvb2xcbiAgQWxsb3dDdXN0b21EYXRhYmFzZSA9ICdhbGxvd0N1c3RvbURhdGFiYXNlJyxcblxuICAvLyBEUElfQWxsb3dDdXN0b21TY2hlbWEsIGhhdmluZyB0eXBlIGJvb2xcbiAgQWxsb3dDdXN0b21TY2hlbWEgPSAnYWxsb3dDdXN0b21TY2hlbWEnLFxuXG4gIC8vIERQSV9BbGxvd0N1c3RvbVNRTCwgaGF2aW5nIHR5cGUgYm9vbFxuICBBbGxvd0N1c3RvbVNRTCA9ICdhbGxvd0N1c3RvbVNxbCcsXG5cbiAgLy8gRFBJX0FsbG93Q3VzdG9tU1FMV2l0aG91dFNjaGVtYSwgaGF2aW5nIHR5cGUgYm9vbFxuICBBbGxvd0N1c3RvbVNRTFdpdGhvdXRTY2hlbWEgPSAnYWxsb3dDdXN0b21TcWxXaXRob3V0U2NoZW1hJyxcblxuICAvLyBEUElfQWxsb3dQcmV2aWV3RGF0YSwgaGF2aW5nIHR5cGUgYm9vbFxuICBBbGxvd1ByZXZpZXdEYXRhID0gJ2FsbG93UHJldmlld0RhdGEnLFxuXG4gIC8vIERQSV9BbGxvd1N0b3JlZFByb2MsIGhhdmluZyB0eXBlIGJvb2xcbiAgQWxsb3dTdG9yZWRQcm9jID0gJ2FsbG93U3RvcmVkUHJvY2VkdXJlJyxcblxuICAvLyBEUElfQWxsb3dVbmlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBBbGxvd1VuaW9uID0gJ2FsbG93VW5pb24nLFxuXG4gIC8vIERQSV9BcmVWYXJpYWJsZXNWaXNpYmxlLCBoYXZpbmcgdHlwZSBib29sXG4gIEFyZVZhcmlhYmxlc1Zpc2libGUgPSAnYXJlVmFyaWFibGVzVmlzaWJsZScsXG5cbiAgLy8gRFBJX0F0dHJMZWdhY3lDb25uZWN0aW9uLCBoYXZpbmcgdHlwZSBib29sXG4gIEF0dHJMZWdhY3lDb25uZWN0aW9uID0gJ3dpZGdldEF0dHJMZWdhY3knLFxuXG4gIC8vIERQSV9BdHRyUmVhZFVuY29tbWl0dGVkLCBoYXZpbmcgdHlwZSBib29sXG4gIEF0dHJSZWFkVW5jb21taXR0ZWQgPSAnd2lkZ2V0QXR0clJlYWRVbmNvbW1pdHRlZERhdGEnLFxuXG4gIC8vIERQSV9BdHRyUmVxdWlyZVNTTCwgaGF2aW5nIHR5cGUgYm9vbFxuICBBdHRyUmVxdWlyZVNTTCA9ICd3aWRnZXRBdHRyUmVxdWlyZVNzbCcsXG5cbiAgLy8gRFBJX0F0dHJSZXF1aXJlRW5jcnlwdGlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBBdHRyUmVxdWlyZUVuY3J5cHRpb24gPSAnd2lkZ2V0QXR0clJlcXVpcmVFbmNyeXB0aW9uJyxcblxuICAvLyBEUElfQm9vbCwgaGF2aW5nIHR5cGUgYm9vbFxuICBCb29sID0gJ2Jvb2wnLFxuXG4gIC8vIERQSV9DYW5QYXJ0aXRpb24sIGhhdmluZyB0eXBlIGJvb2xcbiAgQ2FuUGFydGl0aW9uID0gJ2NhblBhcnRpdGlvbicsXG5cbiAgLy8gRFBJX0NhblJlY29tbWVuZERhdGFTb3VyY2VzLCBoYXZpbmcgdHlwZSBib29sXG4gIENhblJlY29tbWVuZERhdGFTb3VyY2VzID0gJ2NhblJlY29tbWVuZERhdGFzb3VyY2VzJyxcblxuICAvLyBEUElfQ2FuUmVjb21tZW5kVGFibGVzLCBoYXZpbmcgdHlwZSBib29sXG4gIENhblJlY29tbWVuZFRhYmxlcyA9ICdjYW5SZWNvbW1lbmRUYWJsZXMnLFxuXG4gIC8vIERQSV9DaGVja1Blcm1pc3Npb25zLCBoYXZpbmcgdHlwZSBib29sXG4gIENoZWNrUGVybWlzc2lvbnMgPSAnY2hlY2tQZXJtaXNzaW9ucycsXG5cbiAgLy8gRFBJX0RhdGFiYXNlTmFtZU9wdGlvbmFsLCBoYXZpbmcgdHlwZSBib29sXG4gIERhdGFiYXNlTmFtZU9wdGlvbmFsID0gJ2RhdGFiYXNlTmFtZU9wdGlvbmFsJyxcblxuICAvLyBEUElfRGF0YWJhc2VXSE9wdGlvbmFsLCBoYXZpbmcgdHlwZSBib29sXG4gIERhdGFiYXNlV0hPcHRpb25hbCA9ICdkYXRhYmFzZVdhcmVob3VzZU9wdGlvbmFsJyxcblxuICAvLyBEUElfRG9WYWxpZGF0aW9uLCBoYXZpbmcgdHlwZSBib29sXG4gIERvVmFsaWRhdGlvbiA9ICdkb1ZhbGlkYXRpb24nLFxuXG4gIC8vIERQSV9Eb25lTG9hZGluZ0FsbFNoZWV0cywgaGF2aW5nIHR5cGUgYm9vbFxuICBEb25lTG9hZGluZ0FsbFNoZWV0cyA9ICdnb29nbGVTaGVldERvbmVMb2FkaW5nJyxcblxuICAvLyBEUElfR0FCYXNpY0l0ZW1zRW5hYmxlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBHQUJhc2ljSXRlbXNFbmFibGVkID0gJ2dhQmFzaWNJdGVtc0VuYWJsZWQnLFxuXG4gIC8vIERQSV9HQURpbWVuc2lvbk1lYXN1cmVzRW5hYmxlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBHQURpbWVuc2lvbk1lYXN1cmVzRW5hYmxlZCA9ICdnYURpbWVuc2lvbnNNZWFzdXJlc0VuYWJsZWQnLFxuXG4gIC8vIERQSV9HQUZpbHRlcnNFbmFibGVkLCBoYXZpbmcgdHlwZSBib29sXG4gIEdBRmlsdGVyc0VuYWJsZWQgPSAnZ2FGaWx0ZXJzRW5hYmxlZCcsXG5cbiAgLy8gRFBJX0hhc0RhdGFiYXNlLCBoYXZpbmcgdHlwZSBib29sXG4gIEhhc0RhdGFiYXNlID0gJ2hhc0RhdGFiYXNlJyxcblxuICAvLyBEUElfSGFzRGF0YUxvc3MsIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzRGF0YUxvc3MgPSAnaGFzRGF0YUxvc3MnLFxuXG4gIC8vIERQSV9IYXNGYXN0TWV0YWRhdGEsIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzRmFzdE1ldGFkYXRhID0gJ2hhc0Zhc3RNZXRhZGF0YScsXG5cbiAgLy8gRFBJX0hhc05ld2x5RGlzY292ZXJlZFNjaGVtYSwgaGF2aW5nIHR5cGUgYm9vbFxuICBIYXNOZXdseURpc2NvdmVyZWRTY2hlbWEgPSAnaGFzTmV3bHlEaXNjb3ZlcmVkU2NoZW1hJyxcblxuICAvLyBEUElfSGFzUGVybWlzc2lvbnMsIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzUGVybWlzc2lvbnMgPSAnaGFzUGVybWlzc2lvbnMnLFxuXG4gIC8vIERQSV9IYXNTY2hlbWEsIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzU2NoZW1hID0gJ2hhc1NjaGVtYScsXG5cbiAgLy8gRFBJX0hhc1NjaGVtYUNvdW50LCBoYXZpbmcgdHlwZSBib29sXG4gIEhhc1NjaGVtYUNvdW50ID0gJ2hhc1NjaGVtYUNvdW50JyxcblxuICAvLyBEUElfSGFzVGFibGVzLCBoYXZpbmcgdHlwZSBib29sXG4gIEhhc1RhYmxlcyA9ICdoYXNUYWJsZXMnLFxuXG4gIC8vIERQSV9IYXNVbmNvbW1pdHRlZENoYW5nZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzVW5jb21taXR0ZWRDaGFuZ2VzID0gJ2hhc1VuY29tbWl0dGVkQ2hhbmdlcycsXG5cbiAgLy8gRFBJX0hhc1dhcmVob3VzZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBIYXNXYXJlaG91c2UgPSAnaGFzV2FyZWhvdXNlJyxcblxuICAvLyBEUElfSGFzV2FybmluZywgaGF2aW5nIHR5cGUgYm9vbFxuICBIYXNXYXJuaW5nID0gJ2hhc1dhcm5pbmcnLFxuXG4gIC8vIERQSV9Jc0NhbGN1bGF0ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNDYWxjdWxhdGVkID0gJ2lzQ2FsY3VsYXRlZCcsXG5cbiAgLy8gRFBJX0lzQ29ubmVjdGVkVG9EYXRhU291cmNlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzQ29ubmVjdGVkVG9EYXRhU291cmNlID0gJ2lzQ29ubmVjdGVkRGF0YXNvdXJjZScsXG5cbiAgLy8gRFBJX0lzRGlzYWJsZWREYXRhQ29ubmVjdGlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0Rpc2FibGVkRGF0YUNvbm5lY3Rpb24gPSAnaXNEaXNhYmxlZERhdGFDb25uZWN0aW9uJyxcblxuICAvLyBEUElfSXNFZGl0YWJsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0VkaXRhYmxlID0gJ2lzRWRpdGFibGUnLFxuXG4gIC8vIERQSV9Jc0VuYWJsZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNFbmFibGVkID0gJ2lzRW5hYmxlZCcsXG5cbiAgLy8gRFBJX0lzRmluaXNoZWRDb25uZWN0aW5nLCBoYXZpbmcgdHlwZSBib29sXG4gIElzRmluaXNoZWRDb25uZWN0aW5nID0gJ2lzRmluaXNoZWRDb25uZWN0aW5nJyxcblxuICAvLyBEUElfSXNIaWRkZW4sIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNIaWRkZW4gPSAnaXNIaWRkZW4nLFxuXG4gIC8vIERQSV9Jc011bHRpVGFibGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNNdWx0aVRhYmxlID0gJ2lzTXVsdGlUYWJsZScsXG5cbiAgLy8gRFBJX0lzTmV3Q3VzdG9tU1FMLCBoYXZpbmcgdHlwZSBib29sXG4gIElzTmV3Q3VzdG9tU1FMID0gJ2lzTmV3Q3VzdG9tU3FsJyxcblxuICAvLyBEUElfSXNOZXdEYXRhU291cmNlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzTmV3RGF0YVNvdXJjZSA9ICdpc05ld0RhdGFTcmMnLFxuXG4gIC8vIERQSV9Jc1B1Ymxpc2hlZEZlZGVyYXRlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1B1Ymxpc2hlZEZlZGVyYXRlZCA9ICdpc1B1Ymxpc2hlZEZlZGVyYXRlZCcsXG5cbiAgLy8gRFBJX0lzU2FtcGxlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1NhbXBsZWQgPSAnaXNTYW1wbGVkJyxcblxuICAvLyBEUElfSXNTY2hlbWFNZW1iZXJOZXdseURpc2NvdmVyZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNTY2hlbWFNZW1iZXJOZXdseURpc2NvdmVyZWQgPSAnaXNTY2hlbWFNZW1iZXJOZXdseURpc2NvdmVyZWQnLFxuXG4gIC8vIERQSV9Jc1Nsb3dGYXN0LCBoYXZpbmcgdHlwZSBib29sXG4gIElzU2xvd0Zhc3QgPSAnaXNTbG93ZmFzdCcsXG5cbiAgLy8gRFBJX0lzU3VwcG9ydGVkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzU3VwcG9ydGVkID0gJ2lzU3VwcG9ydGVkJyxcblxuICAvLyBEUElfSXNUYWJsZVNlbGVjdGlvblZpc2libGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNUYWJsZVNlbGVjdGlvblZpc2libGUgPSAnaXNUYWJsZVNlbGVjdGlvblZpc2libGUnLFxuXG4gIC8vIERQSV9Jc1RhYmxlYXVTZXJ2ZXJEYXRhc291cmNlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzVGFibGVhdVNlcnZlckRhdGFzb3VyY2UgPSAnaXNUYWJsZWF1U2VydmVyRGF0YXNvdXJjZScsXG5cbiAgLy8gRFBJX0lzVGFibGVhdVNlcnZlckRhdGFzb3VyY2VDb25uZWN0YWJsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1RhYmxlYXVTZXJ2ZXJEYXRhc291cmNlQ29ubmVjdGFibGUgPSAnaXNUYWJsZWF1U2VydmVyRGF0YXNvdXJjZUNvbm5lY3RhYmxlJyxcblxuICAvLyBEUElfSXNUYWJsZWF1U2VydmVyRGF0YXNvdXJjZURvd25sb2FkYWJsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1RhYmxlYXVTZXJ2ZXJEYXRhc291cmNlRG93bmxvYWRhYmxlID0gJ2lzVGFibGVhdVNlcnZlckRhdGFzb3VyY2VEb3dubG9hZGFibGUnLFxuXG4gIC8vIERQSV9Jc1Zpc2libGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNWaXNpYmxlID0gJ2lzVmlzaWJsZScsXG5cbiAgLy8gRFBJX05lZWRGbGF0dGVuLCBoYXZpbmcgdHlwZSBib29sXG4gIE5lZWRGbGF0dGVuID0gJ25lZWRGbGF0dGVuJyxcblxuICAvLyBEUElfU1NMUmVxdWlyZXNDZXJ0aWZpY2F0ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBTU0xSZXF1aXJlc0NlcnRpZmljYXRlID0gJ3NzbFJlcXVpcmVzQ2VydGlmaWNhdGUnLFxuXG4gIC8vIERQSV9TY2hlbWFPcHRpb25hbCwgaGF2aW5nIHR5cGUgYm9vbFxuICBTY2hlbWFPcHRpb25hbCA9ICdzY2hlbWFPcHRpb25hbCcsXG5cbiAgLy8gRFBJX1NlcnZpY2VOYW1lT3B0aW9uYWwsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2VydmljZU5hbWVPcHRpb25hbCA9ICdzZXJ2aWNlTmFtZU9wdGlvbmFsJyxcblxuICAvLyBEUElfU2hvdWxkV2FybkZvckNyb3NzU2NoZW1hSm9pbnMsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvdWxkV2FybkZvckNyb3NzU2NoZW1hSm9pbnMgPSAnc2hvdWxkV2FybkNyb3NzU2NoZW1hSm9pbnMnLFxuXG4gIC8vIERQSV9TaG93QnJvd3NlQnV0dG9uLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dCcm93c2VCdXR0b24gPSAnc2hvd0Jyb3dzZUJ1dHRvbicsXG5cbiAgLy8gRFBJX1Nob3dDb25uZWN0aW9uUHJvbXB0LCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dDb25uZWN0aW9uUHJvbXB0ID0gJ3Nob3dDb25uZWN0aW9uUHJvbXB0JyxcblxuICAvLyBEUElfU2hvd0RCQnJvd3NlQnV0dG9uLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dEQkJyb3dzZUJ1dHRvbiA9ICdzaG93RGJCcm93c2VCdXR0b24nLFxuXG4gIC8vIERQSV9TaG93REJOYW1lUHJvbXB0LCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dEQk5hbWVQcm9tcHQgPSAnc2hvd0RiUHJvbXB0JyxcblxuICAvLyBEUElfU2hvd0RCV0hOYW1lUHJvbXB0LCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dEQldITmFtZVByb21wdCA9ICdzaG93RGJ3aFByb21wdCcsXG5cbiAgLy8gRFBJX1Nob3dJbXBvcnRTU0xDZXJ0TGFiZWwsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd0ltcG9ydFNTTENlcnRMYWJlbCA9ICdzaG93SW1wb3J0U3NsY2VydExhYmVsJyxcblxuICAvLyBEUElfU2hvd1BvcnRQcm9tcHQsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd1BvcnRQcm9tcHQgPSAnc2hvd1BvcnRQcm9tcHQnLFxuXG4gIC8vIERQSV9TaG93U1NMQ2hlY2tib3gsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd1NTTENoZWNrYm94ID0gJ3Nob3dTc2xDaGVja2JveCcsXG5cbiAgLy8gRFBJX1Nob3dFbmNyeXB0aW9uQ2hlY2tib3gsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd0VuY3J5cHRpb25DaGVja2JveCA9ICdzaG93RW5jcnlwdGlvbkNoZWNrYm94JyxcblxuICAvLyBEUElfU2hvd1NlcnZlck5hbWVQcm9tcHQsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd1NlcnZlck5hbWVQcm9tcHQgPSAnc2hvd1NlcnZlclByb21wdCcsXG5cbiAgLy8gRFBJX1Nob3dTZXJ2aWNlTmFtZVByb21wdCwgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93U2VydmljZU5hbWVQcm9tcHQgPSAnc2hvd1NlcnZpY2VQcm9tcHQnLFxuXG4gIC8vIERQSV9TaG93VW5jb21taXR0ZWREYXRhQ2hlY2tib3gsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd1VuY29tbWl0dGVkRGF0YUNoZWNrYm94ID0gJ3Nob3dVbmNvbW1pdHRlZERhdGFDaGVja2JveCcsXG5cbiAgLy8gRFBJX1N1cHBvcnRzR2VuZXJpY0F1dGgsIGhhdmluZyB0eXBlIGJvb2xcbiAgU3VwcG9ydHNHZW5lcmljQXV0aCA9ICdzdXBwb3J0c0dlbmVyaWNBdXRoJyxcblxuICAvLyBEUElfVGFibGVhdVNlcnZlckZldGNoQXNjZW5kaW5nLCBoYXZpbmcgdHlwZSBib29sXG4gIFRhYmxlYXVTZXJ2ZXJGZXRjaEFzY2VuZGluZyA9ICd0YWJsZWF1U2VydmVyRmV0Y2hBc2NlbmRpbmcnLFxuXG4gIC8vIERQSV9Vc2VzUmFkaW9CdXR0b24sIGhhdmluZyB0eXBlIGJvb2xcbiAgVXNlc1JhZGlvQnV0dG9uID0gJ3VzZXNSYWRpb0J1dHRvbicsXG5cbiAgLy8gRFBJX0JpZ1F1ZXJ5TGVnYWN5U1FMQ2hlY2tTdGF0dXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgQmlnUXVlcnlMZWdhY3lTUUxDaGVja1N0YXR1cyA9ICdkYXRhc291cmNlQmlncXVlcnlMZWdhY3lTcWxDaGVja1N0YXR1cycsXG5cbiAgLy8gRFBJX0hhc0JpZ1F1ZXJ5TGVnYWN5U1FMQ2hlY2ssIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzQmlnUXVlcnlMZWdhY3lTUUxDaGVjayA9ICdkYXRhc291cmNlQmlncXVlcnlMZWdhY3lTcWxDaGVjaycsXG5cbiAgLy8gRFBJX0F1dG9GZXRjaExpbWl0LCBoYXZpbmcgdHlwZSBpbnRcbiAgQXV0b0ZldGNoTGltaXQgPSAnYXV0b0ZldGNoTGltaXQnLFxuXG4gIC8vIERQSV9Db25uZWN0aW9uVHlwZSwgaGF2aW5nIHR5cGUgaW50XG4gIENvbm5lY3Rpb25UeXBlID0gJ2Nvbm5lY3Rpb25UeXBlJyxcblxuICAvLyBEUElfSWNvbklkLCBoYXZpbmcgdHlwZSBpbnRcbiAgSWNvbklkID0gJ2ljb25JZCcsXG5cbiAgLy8gRFBJX1NlbGVjdGVkQ2F0YWxvZ0luZGV4LCBoYXZpbmcgdHlwZSBpbnRcbiAgU2VsZWN0ZWRDYXRhbG9nSW5kZXggPSAnc2VsZWN0ZWRDYXRhbG9nSW5kZXgnLFxuXG4gIC8vIERQSV9TZWxlY3RlZEN1YmVJbmRleCwgaGF2aW5nIHR5cGUgaW50XG4gIFNlbGVjdGVkQ3ViZUluZGV4ID0gJ3NlbGVjdGVkQ3ViZUluZGV4JyxcblxuICAvLyBEUElfU2VsZWN0ZWRHQUFjY291bnRJbmRleCwgaGF2aW5nIHR5cGUgaW50XG4gIFNlbGVjdGVkR0FBY2NvdW50SW5kZXggPSAnc2VsZWN0ZWRHYUFjY291bnRJbmRleCcsXG5cbiAgLy8gRFBJX1NlbGVjdGVkR0FNZWFzdXJlU2V0SW5kZXgsIGhhdmluZyB0eXBlIGludFxuICBTZWxlY3RlZEdBTWVhc3VyZVNldEluZGV4ID0gJ3NlbGVjdGVkR2FNZWFzdXJlU2V0SW5kZXgnLFxuXG4gIC8vIERQSV9TZWxlY3RlZEdBUHJvcGVydHlJbmRleCwgaGF2aW5nIHR5cGUgaW50XG4gIFNlbGVjdGVkR0FQcm9wZXJ0eUluZGV4ID0gJ3NlbGVjdGVkR2FQcm9wZXJ0eUluZGV4JyxcblxuICAvLyBEUElfU2VsZWN0ZWRHQVNlZ21lbnRJbmRleCwgaGF2aW5nIHR5cGUgaW50XG4gIFNlbGVjdGVkR0FTZWdtZW50SW5kZXggPSAnc2VsZWN0ZWRHYVNlZ21lbnRJbmRleCcsXG5cbiAgLy8gRFBJX1NlbGVjdGVkR0FWaWV3SW5kZXgsIGhhdmluZyB0eXBlIGludFxuICBTZWxlY3RlZEdBVmlld0luZGV4ID0gJ3NlbGVjdGVkR2FWaWV3SW5kZXgnLFxuXG4gIC8vIERQSV9TZWxlY3RlZEdvb2dsZVNoZWV0SW5kZXgsIGhhdmluZyB0eXBlIGludFxuICBTZWxlY3RlZEdvb2dsZVNoZWV0SW5kZXggPSAnc2VsZWN0ZWRHb29nbGVTaGVldEluZGV4JyxcblxuICAvLyBEUElfU2VsZWN0ZWRPcHRpb25JbmRleCwgaGF2aW5nIHR5cGUgaW50XG4gIFNlbGVjdGVkT3B0aW9uSW5kZXggPSAnc2VsZWN0ZWRPcHRpb25JbmRleCcsXG5cbiAgLy8gRFBJX1Nsb3dNZXRhZGF0YUNvdW50LCBoYXZpbmcgdHlwZSBpbnRcbiAgU2xvd01ldGFkYXRhQ291bnQgPSAnc2xvd01ldGFkYXRhQ291bnQnLFxuXG4gIC8vIERQSV9UYWJsZWF1U2VydmVyRmV0Y2hTb3J0QnksIGhhdmluZyB0eXBlIGludFxuICBUYWJsZWF1U2VydmVyRmV0Y2hTb3J0QnkgPSAndGFibGVhdVNlcnZlckZldGNoU29ydCcsXG5cbiAgLy8gRFBJX0FjdHVhbFBhcmFtZXRlck9yZGluYWwsIGhhdmluZyB0eXBlIHVpbnRcbiAgQWN0dWFsUGFyYW1ldGVyT3JkaW5hbCA9ICdhY3R1YWxQYXJhbWV0ZXJPcmRpbmFsJyxcblxuICAvLyBEUElfQWN0dWFsUGFyYW1ldGVyVHlwZSwgaGF2aW5nIHR5cGUgdWludFxuICBBY3R1YWxQYXJhbWV0ZXJUeXBlID0gJ2FjdHVhbFBhcmFtZXRlclR5cGUnLFxuXG4gIC8vIERQSV9DaGFyU2V0SUQsIGhhdmluZyB0eXBlIHVpbnRcbiAgQ2hhclNldElEID0gJ2NoYXJzZXRJZCcsXG5cbiAgLy8gRFBJX0RhdGFTb3VyY2VPcmRpbmFsLCBoYXZpbmcgdHlwZSB1aW50XG4gIERhdGFTb3VyY2VPcmRpbmFsID0gJ2RhdGFzb3VyY2VPcmRpbmFsJyxcblxuICAvLyBEUElfRmlsdGVyQ291bnQsIGhhdmluZyB0eXBlIHVpbnRcbiAgRmlsdGVyQ291bnQgPSAnZmlsdGVyQ291bnQnLFxuXG4gIC8vIERQSV9WYXJpYWJsZXNDb3VudCwgaGF2aW5nIHR5cGUgdWludFxuICBWYXJpYWJsZXNDb3VudCA9ICd2YXJpYWJsZXNDb3VudCcsXG5cbiAgLy8gRFBJX0FjdHVhbFBhcmFtZXRlckRpc3BsYXlOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQWN0dWFsUGFyYW1ldGVyRGlzcGxheU5hbWUgPSAnYWN0dWFsUGFyYW1ldGVyRGlzcGxheU5hbWUnLFxuXG4gIC8vIERQSV9BY3R1YWxQYXJhbWV0ZXJOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQWN0dWFsUGFyYW1ldGVyTmFtZSA9ICdhY3R1YWxQYXJhbWV0ZXJOYW1lJyxcblxuICAvLyBEUElfQWN0dWFsUGFyYW1ldGVyVmFsdWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBY3R1YWxQYXJhbWV0ZXJWYWx1ZSA9ICdhY3R1YWxQYXJhbWV0ZXJWYWx1ZScsXG5cbiAgLy8gRFBJX0F0dHJBUElWZXJzaW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQXR0ckFQSVZlcnNpb24gPSAnYXR0ckFwaVZlcnNpb24nLFxuXG4gIC8vIERQSV9BdHRyQXV0aFR5cGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBdHRyQXV0aFR5cGUgPSAnd2lkZ2V0QXR0ckF1dGh0eXBlJyxcblxuICAvLyBEUElfQXR0ckNvbm5lY3Rpb25EYXRhLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQXR0ckNvbm5lY3Rpb25EYXRhID0gJ2F0dHJDb25uZWN0aW9uRGF0YScsXG5cbiAgLy8gRFBJX0F0dHJDb25uZWN0aW9uTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF0dHJDb25uZWN0aW9uTmFtZSA9ICdhdHRyQ29ubmVjdGlvbk5hbWUnLFxuXG4gIC8vIERQSV9BdHRyQ29ubmVjdGlvblR5cGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBdHRyQ29ubmVjdGlvblR5cGUgPSAnd2lkZ2V0QXR0ckNvbm5lY3Rpb250eXBlJyxcblxuICAvLyBEUElfQXR0ckNvbm5lY3Rpb25VUkwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBdHRyQ29ubmVjdGlvblVSTCA9ICdhdHRyQ29ubmVjdGlvblVybCcsXG5cbiAgLy8gRFBJX0F0dHJDdWJlU3BlY2lmaWNhdGlvbklkLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQXR0ckN1YmVTcGVjaWZpY2F0aW9uSWQgPSAnd2lkZ2V0QXR0ckN1YmVTcGVjaWZpY2F0aW9uSWQnLFxuXG4gIC8vIERQSV9BdHRyQ3ViZVNwZWNpZmljYXRpb25WYWx1ZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF0dHJDdWJlU3BlY2lmaWNhdGlvblZhbHVlID0gJ3dpZGdldEF0dHJDdWJlU3BlY2lmaWNhdGlvblZhbHVlJyxcblxuICAvLyBEUElfQXR0ckRTTiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF0dHJEU04gPSAnd2lkZ2V0QXR0ckRzbicsXG5cbiAgLy8gRFBJX0F0dHJEYXRhYmFzZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF0dHJEYXRhYmFzZSA9ICd3aWRnZXRBdHRyRGInLFxuXG4gIC8vIERQSV9BdHRyRGF0YWJhc2VXYXJlaG91c2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBdHRyRGF0YWJhc2VXYXJlaG91c2UgPSAnd2lkZ2V0QXR0ckRid2gnLFxuXG4gIC8vIERQSV9BdHRyRHJpdmVyLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQXR0ckRyaXZlciA9ICd3aWRnZXRBdHRyRHJpdmVyJyxcblxuICAvLyBEUElfQXR0ckZpbGVuYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQXR0ckZpbGVuYW1lID0gJ3dpZGdldEF0dHJGaWxlbmFtZScsXG5cbiAgLy8gRFBJX0F0dHJIVFRQUGF0aCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF0dHJIVFRQUGF0aCA9ICd3aWRnZXRBdHRySHR0cFBhdGgnLFxuXG4gIC8vIERQSV9BdHRySW5jcmVtZW50YWxSZWZyZXNoS2V5LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQXR0ckluY3JlbWVudGFsUmVmcmVzaEtleSA9ICdhdHRySW5jcmVtZW50YWxSZWZyZXNoS2V5JyxcblxuICAvLyBEUElfQXR0cktlcmJlcm9zSG9zdCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF0dHJLZXJiZXJvc0hvc3QgPSAnd2lkZ2V0QXR0cktlcmJlcm9zSG9zdCcsXG5cbiAgLy8gRFBJX0F0dHJLZXJiZXJvc1JlYWxtLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQXR0cktlcmJlcm9zUmVhbG0gPSAnd2lkZ2V0QXR0cktlcmJlcm9zUmVhbG0nLFxuXG4gIC8vIERQSV9BdHRyS2VyYmVyb3NTZXJ2aWNlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQXR0cktlcmJlcm9zU2VydmljZSA9ICd3aWRnZXRBdHRyS2VyYmVyb3NTZXJ2aWNlJyxcblxuICAvLyBEUElfQXR0ckxhc3RSZWNvcmRUb2tlbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF0dHJMYXN0UmVjb3JkVG9rZW4gPSAnYXR0ckxhc3RSZWNvcmRUb2tlbicsXG5cbiAgLy8gRFBJX0F0dHJNRFdQYXRoLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQXR0ck1EV1BhdGggPSAnd2lkZ2V0QXR0ck1kd1BhdGgnLFxuXG4gIC8vIERQSV9BdHRyTURXVXNlcm5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBdHRyTURXVXNlcm5hbWUgPSAnd2lkZ2V0QXR0ck1kd1VzZXJuYW1lJyxcblxuICAvLyBEUElfQXR0ck9EQkNQcm9tcHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBdHRyT0RCQ1Byb21wdCA9ICd3aWRnZXRBdHRyT2RiY1Byb21wdCcsXG5cbiAgLy8gRFBJX0F0dHJPREJDU3RyaW5nRXh0cmFzLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQXR0ck9EQkNTdHJpbmdFeHRyYXMgPSAnd2lkZ2V0QXR0ck9kYmNTdHJpbmdFeHRyYXMnLFxuXG4gIC8vIERQSV9BdHRyUG9ydCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF0dHJQb3J0ID0gJ3dpZGdldEF0dHJQb3J0JyxcblxuICAvLyBEUElfQXR0clNBUENsaWVudCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF0dHJTQVBDbGllbnQgPSAnd2lkZ2V0QXR0clNhcENsaWVudCcsXG5cbiAgLy8gRFBJX0F0dHJTQVBMYW5ndWFnZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF0dHJTQVBMYW5ndWFnZSA9ICd3aWRnZXRBdHRyU2FwTGFuZ3VhZ2UnLFxuXG4gIC8vIERQSV9BdHRyRWRpdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF0dHJFZGl0aW9uID0gJ3dpZGdldEF0dHJTc2xFZGl0aW9uJyxcblxuICAvLyBEUElfQXR0clNTT0RvbWFpbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF0dHJTU09Eb21haW4gPSAnd2lkZ2V0QXR0clNzb0RvbWFpbicsXG5cbiAgLy8gRFBJX0F0dHJTU0xDZXJ0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQXR0clNTTENlcnQgPSAnd2lkZ2V0QXR0clNzbENlcnQnLFxuXG4gIC8vIERQSV9BdHRyU2NyaXB0VmVyc2lvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF0dHJTY3JpcHRWZXJzaW9uID0gJ2F0dHJTY3JpcHRWZXJzaW9uJyxcblxuICAvLyBEUElfQXR0clNlcnZlciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF0dHJTZXJ2ZXIgPSAnd2lkZ2V0QXR0clNlcnZlcicsXG5cbiAgLy8gRFBJX0F0dHJTZXJ2aWNlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQXR0clNlcnZpY2UgPSAnd2lkZ2V0QXR0clNlcnZpY2UnLFxuXG4gIC8vIERQSV9BdHRyVXNlcm5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBdHRyVXNlcm5hbWUgPSAnd2lkZ2V0QXR0clVzZXInLFxuXG4gIC8vIERQSV9BdXRoZW50aWNhdGlvblByb21wdCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF1dGhlbnRpY2F0aW9uUHJvbXB0ID0gJ2F1dGhlbnRpY2F0aW9uUHJvbXB0JyxcblxuICAvLyBEUElfQnV0dG9uQ2xpY2tBY3Rpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBCdXR0b25DbGlja0FjdGlvbiA9ICdidXR0b25DbGlja0FjdGlvbicsXG5cbiAgLy8gRFBJX0J1dHRvbkNhcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBCdXR0b25DYXB0aW9uID0gJ2J1dHRvbkNhcHRpb24nLFxuXG4gIC8vIERQSV9DYXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ2FwdGlvbiA9ICdjYXB0aW9uJyxcblxuICAvLyBEUElfQ2F0YWxvZ0xpc3RQcm9tcHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDYXRhbG9nTGlzdFByb21wdCA9ICdjYXRhbG9nTGlzdFByb21wdCcsXG5cbiAgLy8gRFBJX0NhdGFsb2dOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ2F0YWxvZ05hbWUgPSAnY2F0YWxvZ05hbWUnLFxuXG4gIC8vIERQSV9DYXRhbG9nU2VhcmNoVGVybSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIENhdGFsb2dTZWFyY2hUZXJtID0gJ2NhdGFsb2dTZWFyY2hUZXJtJyxcblxuICAvLyBEUElfQ2F0ZWdvcnksIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDYXRlZ29yeSA9ICdpdGVtQ2F0ZWdvcnknLFxuXG4gIC8vIERQSV9DbGFzc05hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDbGFzc05hbWUgPSAnY2xhc3NOYW1lRm9yQ2xlYW5pbmcnLFxuXG4gIC8vIERQSV9DbG91ZEZpbGVDbGFzc05hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDbG91ZEZpbGVDbGFzc05hbWUgPSAnY2xvdWRGaWxlQ2xhc3NOYW1lJyxcblxuICAvLyBEUElfQ2xvdWRGaWxlU3RvcmFnZVByb3ZpZGVyLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ2xvdWRGaWxlU3RvcmFnZVByb3ZpZGVyID0gJ2Nsb3VkRmlsZVN0b3JhZ2VQcm92aWRlcicsXG5cbiAgLy8gRFBJX0NvbmZpZ05hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDb25maWdOYW1lID0gJ2Nvbm5lY3Rpb25Db25maWdOYW1lJyxcblxuICAvLyBEUElfQ29ubmVjdGlvbkNhcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDb25uZWN0aW9uQ2FwdGlvbiA9ICdjb25uZWN0aW9uQ2FwdGlvbicsXG5cbiAgLy8gRFBJX0Nvbm5lY3Rpb25EZXNjcmlwdGlvbkxhYmVsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ29ubmVjdGlvbkRlc2NyaXB0aW9uTGFiZWwgPSAnY29ubmVjdGlvbkRlc2NyaXB0aW9uTGFiZWwnLFxuXG4gIC8vIERQSV9Db25uZWN0aW9uQ2xhc3MsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDb25uZWN0aW9uQ2xhc3MgPSAnY29ubmVjdGlvbkNsYXNzTmFtZScsXG5cbiAgLy8gRFBJX0Nvbm5lY3Rpb25OYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ29ubmVjdGlvbk5hbWUgPSAnY29ubmVjdGlvbk5hbWUnLFxuXG4gIC8vIERQSV9Db25uZWN0aW9uT3B0aW9uTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIENvbm5lY3Rpb25PcHRpb25OYW1lID0gJ2Nvbm5lY3Rpb25PcHRpb25OYW1lJyxcblxuICAvLyBEUElfQ29ubmVjdGlvblNwZWNpZmljYXRpb25UaXRsZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIENvbm5lY3Rpb25TcGVjaWZpY2F0aW9uVGl0bGUgPSAnY29ubmVjdGlvblNwZWNpZmljYXRpb25UaXRsZScsXG5cbiAgLy8gRFBJX0Nvbm5lY3Rpb25UeXBlTGFiZWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDb25uZWN0aW9uVHlwZUxhYmVsID0gJ2Nvbm5lY3Rpb25UeXBlTGFiZWwnLFxuXG4gIC8vIERQSV9DdWJlRGVzY3JpcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDdWJlRGVzY3JpcHRpb24gPSAnY3ViZURlc2NyaXB0aW9uJyxcblxuICAvLyBEUElfQ3ViZUxhc3RVcGRhdGVkLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ3ViZUxhc3RVcGRhdGVkID0gJ2N1YmVMYXN0VXBkYXRlZCcsXG5cbiAgLy8gRFBJX0N1YmVMaXN0UHJvbXB0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ3ViZUxpc3RQcm9tcHQgPSAnY3ViZUxpc3RQcm9tcHQnLFxuXG4gIC8vIERQSV9DdWJlTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEN1YmVOYW1lID0gJ2N1YmVOYW1lJyxcblxuICAvLyBEUElfQ3ViZVNlYXJjaFRlcm0sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDdWJlU2VhcmNoVGVybSA9ICdjdWJlU2VhcmNoVGVybScsXG5cbiAgLy8gRFBJX0N1cnJlbnRUZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ3VycmVudFRleHQgPSAnY3VycmVudFRleHQnLFxuXG4gIC8vIERQSV9DdXN0b21TcGxpdFN0cmluZ1NlcGFyYXRvciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEN1c3RvbVNwbGl0U3RyaW5nU2VwYXJhdG9yID0gJ2N1c3RvbVNwbGl0U3RyaW5nU2VwYXJhdG9yJyxcblxuICAvLyBEUElfRGF0YXNvdXJjZUlkLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRGF0YXNvdXJjZUlkID0gJ2RhdGFzb3VyY2VJZCcsXG5cbiAgLy8gRFBJX0RCTmFtZVByb21wdCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERCTmFtZVByb21wdCA9ICdkYk5hbWVQcm9tcHQnLFxuXG4gIC8vIERQSV9EQldITmFtZVByb21wdCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERCV0hOYW1lUHJvbXB0ID0gJ2RiV2FyZWhvdXNlTmFtZVByb21wdCcsXG5cbiAgLy8gRFBJX0RTQ2xhc3MsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEU0NsYXNzID0gJ2RzQ2xhc3MnLFxuXG4gIC8vIERQSV9EYXRhYmFzZU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEYXRhYmFzZU5hbWUgPSAnZGF0YXNvdXJjZURhdGFiYXNlTmFtZScsXG5cbiAgLy8gRFBJX0RhdGFiYXNlTm90ZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERhdGFiYXNlTm90ZSA9ICdkYXRhYmFzZU5vdGUnLFxuXG4gIC8vIERQSV9EcmFnTGFiZWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEcmFnTGFiZWwgPSAnZHJhZ0xhYmVsJyxcblxuICAvLyBEUElfRWZmZWN0aXZlRGF0ZVJhbmdlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRWZmZWN0aXZlRGF0ZVJhbmdlID0gJ2VmZmVjdGl2ZURhdGVSYW5nZScsXG5cbiAgLy8gRFBJX0dvb2dsZVNoZWV0Q3JlYXRlZFRpbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBHb29nbGVTaGVldENyZWF0ZWRUaW1lID0gJ2dvb2dsZVNoZWV0Q3JlYXRlZFRpbWUnLFxuXG4gIC8vIERQSV9Hb29nbGVTaGVldElkLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgR29vZ2xlU2hlZXRJZCA9ICdnb29nbGVTaGVldElkJyxcblxuICAvLyBEUElfR29vZ2xlU2hlZXRMYXN0TW9kaWZpZWRUaW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgR29vZ2xlU2hlZXRMYXN0TW9kaWZpZWRUaW1lID0gJ2dvb2dsZVNoZWV0TGFzdE1vZGlmaWVkVGltZScsXG5cbiAgLy8gRFBJX0dvb2dsZVNoZWV0TGFzdE1vZGlmeWluZ1VzZXIsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBHb29nbGVTaGVldExhc3RNb2RpZnlpbmdVc2VyID0gJ2dvb2dsZVNoZWV0TGFzdE1vZGlmeWluZ1VzZXInLFxuXG4gIC8vIERQSV9Hb29nbGVTaGVldExhc3RWaWV3ZWRCeVVzZXJUaW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgR29vZ2xlU2hlZXRMYXN0Vmlld2VkQnlVc2VyVGltZSA9ICdnb29nbGVTaGVldExhc3RWaWV3ZWRCeVVzZXJUaW1lJyxcblxuICAvLyBEUElfR29vZ2xlU2hlZXRNaW1lVHlwZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEdvb2dsZVNoZWV0TWltZVR5cGUgPSAnZ29vZ2xlU2hlZXRNaW1lVHlwZScsXG5cbiAgLy8gRFBJX0dvb2dsZVNoZWV0TmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEdvb2dsZVNoZWV0TmFtZSA9ICdnb29nbGVTaGVldE5hbWUnLFxuXG4gIC8vIERQSV9Hb29nbGVTaGVldE93bmVyLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgR29vZ2xlU2hlZXRPd25lciA9ICdnb29nbGVTaGVldE93bmVyJyxcblxuICAvLyBEUElfR29vZ2xlU2hlZXRUaHVtYm5haWxMaW5rLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgR29vZ2xlU2hlZXRUaHVtYm5haWxMaW5rID0gJ2dvb2dsZVNoZWV0VGh1bWJuYWlsTGluaycsXG5cbiAgLy8gRFBJX0dvb2dsZVNoZWV0VGh1bWJuYWlsSWQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBHb29nbGVTaGVldFRodW1ibmFpbElkID0gJ2dvb2dsZVNoZWV0VGh1bWJuYWlsSWQnLFxuXG4gIC8vIERQSV9Hb29nbGVTaGVldFRodW1ibmFpbExvY2FsUGF0aCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEdvb2dsZVNoZWV0VGh1bWJuYWlsTG9jYWxQYXRoID0gJ2dvb2dsZVNoZWV0VGh1bWJuYWlsTG9jYWxQYXRoJyxcblxuICAvLyBEUElfR29vZ2xlU2hlZXRXZWJWaWV3TGluaywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEdvb2dsZVNoZWV0V2ViVmlld0xpbmsgPSAnZ29vZ2xlU2hlZXRXZWJWaWV3TGluaycsXG5cbiAgLy8gRFBJX0dvb2dsZVNoZWV0c0xpc3RFcnJvck1lc3NhZ2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBHb29nbGVTaGVldHNMaXN0RXJyb3JNZXNzYWdlID0gJ2dvb2dsZVNoZWV0c0xpc3RFcnJvck1lc3NhZ2UnLFxuXG4gIC8vIERQSV9Jbml0aWFsU1FMLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgSW5pdGlhbFNRTCA9ICdpbml0aWFsU3FsJyxcblxuICAvLyBEUElfSVNPRGF0ZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIElTT0RhdGUgPSAnaXNvRGF0ZScsXG5cbiAgLy8gRFBJX0lTT0VuZERhdGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBJU09FbmREYXRlID0gJ2lzb0VuZERhdGUnLFxuXG4gIC8vIERQSV9JU09TdGFydERhdGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBJU09TdGFydERhdGUgPSAnaXNvU3RhcnREYXRlJyxcblxuICAvLyBEUElfSXNvbGF0aW9uTGV2ZWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBJc29sYXRpb25MZXZlbCA9ICdkYXRhc291cmNlSXNvbGF0aW9uTGV2ZWwnLFxuXG4gIC8vIERQSV9JdGVtRGVzY3JpcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBJdGVtRGVzY3JpcHRpb24gPSAnaXRlbURlc2NyaXB0aW9uJyxcblxuICAvLyBEUElfSXRlbUlkLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgSXRlbUlkID0gJ2l0ZW1JZCcsXG5cbiAgLy8gRFBJX0tlcmJlcm9zSG9zdCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEtlcmJlcm9zSG9zdCA9ICdkYXRhc291cmNlS2VyYmVyb3NIb3N0JyxcblxuICAvLyBEUElfS2VyYmVyb3NSZWFsbSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEtlcmJlcm9zUmVhbG0gPSAnZGF0YXNvdXJjZUtlcmJlcm9zUmVhbG0nLFxuXG4gIC8vIERQSV9LZXJiZXJvc1NlcnZpY2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBLZXJiZXJvc1NlcnZpY2UgPSAnZGF0YXNvdXJjZUtlcmJlcm9zU2VydmljZScsXG5cbiAgLy8gRFBJX05hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBOYW1lID0gJ25hbWUnLFxuXG4gIC8vIERQSV9PcHRpb25JZCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE9wdGlvbklkID0gJ29wdGlvbklkJyxcblxuICAvLyBEUElfUGFydGl0aW9uaW5nQnV0dG9uTGFiZWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBQYXJ0aXRpb25pbmdCdXR0b25MYWJlbCA9ICdwYXJ0aXRpb25pbmdCdXR0b25MYWJlbCcsXG5cbiAgLy8gRFBJX1BhcnRpdGlvbmluZ0J1dHRvblRvb2x0aXAsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBQYXJ0aXRpb25pbmdCdXR0b25Ub29sdGlwID0gJ3BhcnRpdGlvbmluZ0J1dHRvblRvb2x0aXAnLFxuXG4gIC8vIERQSV9QYXJ0aXRpb25pbmdUZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUGFydGl0aW9uaW5nVGV4dCA9ICdxdWVyeVBhcnRpdGlvbmluZ1RleHQnLFxuXG4gIC8vIERQSV9QZGZTdGFydFBhZ2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBQZGZTdGFydFBhZ2UgPSAncGRmU3RhcnRQYWdlJyxcblxuICAvLyBEUElfUGRmRW5kUGFnZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFBkZkVuZFBhZ2UgPSAncGRmRW5kUGFnZScsXG5cbiAgLy8gRFBJX1BvcnRQcm9tcHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBQb3J0UHJvbXB0ID0gJ3BvcnRQcm9tcHQnLFxuXG4gIC8vIERQSV9Qcm9tcHRUZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUHJvbXB0VGV4dCA9ICdwcm9tcHRUZXh0JyxcblxuICAvLyBEUElfUXVlcnlCYW5kaW5nLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUXVlcnlCYW5kaW5nID0gJ3F1ZXJ5QmFuZGluZycsXG5cbiAgLy8gRFBJX1F1ZXJ5VGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFF1ZXJ5VGV4dCA9ICdxdWVyeVRleHQnLFxuXG4gIC8vIERQSV9SZWNvbW1lbmRhdGlvblVVSUQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBSZWNvbW1lbmRhdGlvblVVSUQgPSAncmVjb21tZW5kYXRpb25VdWlkJyxcblxuICAvLyBEUElfU1FMUXVlcnksIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTUUxRdWVyeSA9ICdzcWxRdWVyeScsXG5cbiAgLy8gRFBJX1NjaGVtYUNvbWJvRmFsbGJhY2tUZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU2NoZW1hQ29tYm9GYWxsYmFja1RleHQgPSAnc2NoZW1hQ29tYm9GYWxsYmFja1RleHQnLFxuXG4gIC8vIERQSV9TY2hlbWFMYWJlbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNjaGVtYUxhYmVsID0gJ3NjaGVtYUxhYmVsJyxcblxuICAvLyBEUElfU2NoZW1hTWVtYmVyR2xvYmFsTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNjaGVtYU1lbWJlckdsb2JhbE5hbWUgPSAnc2NoZW1hTWVtYmVyR2xvYmFsTmFtZScsXG5cbiAgLy8gRFBJX1NjaGVtYU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTY2hlbWFOYW1lID0gJ2RhdGFzb3VyY2VTY2hlbWFOYW1lJyxcblxuICAvLyBEUElfU2NyaXB0VGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNjcmlwdFRleHQgPSAnc2NyaXB0VGV4dCcsXG5cbiAgLy8gRFBJX1NlY29uZGFyeVdoaXRlTGlzdCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNlY29uZGFyeVdoaXRlTGlzdCA9ICdzZWNvbmRhcnlXaGl0ZUxpc3QnLFxuXG4gIC8vIERQSV9TZXJ2ZXIsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTZXJ2ZXIgPSAnZGF0YXNvdXJjZVNlcnZlcicsXG5cbiAgLy8gRFBJX1NlcnZlck5hbWVQcm9tcHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTZXJ2ZXJOYW1lUHJvbXB0ID0gJ3NlcnZlck5hbWVQcm9tcHQnLFxuXG4gIC8vIERQSV9TZXJ2aWNlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU2VydmljZSA9ICdkYXRhc291cmNlU2VydmljZScsXG5cbiAgLy8gRFBJX1NlcnZpY2VOYW1lUHJvbXB0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU2VydmljZU5hbWVQcm9tcHQgPSAnc2VydmljZVByb21wdCcsXG5cbiAgLy8gRFBJX1NoZWV0Rm9ybWF0dGluZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNoZWV0Rm9ybWF0dGluZyA9ICdzaGVldEZvcm1hdHRpbmcnLFxuXG4gIC8vIERQSV9TbG93TWV0YWRhdGFTZWFyY2hUZXJtLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU2xvd01ldGFkYXRhU2VhcmNoVGVybSA9ICdzbG93TWV0YWRhdGFTZWFyY2hUZXJtJyxcblxuICAvLyBEUElfU3RhbmRhcmRDb25uZWN0aW9uTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFN0YW5kYXJkQ29ubmVjdGlvbk5hbWUgPSAnZGF0YXNvdXJjZVN0YW5kYXJkQ29ubmVjdGlvbk5hbWUnLFxuXG4gIC8vIERQSV9TdGFuZGFyZENvbm5lY3Rpb25QbGFjZWhvbGRlclRleHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTdGFuZGFyZENvbm5lY3Rpb25QbGFjZWhvbGRlclRleHQgPSAnc3RhbmRhcmRDb25uZWN0aW9uUGxhY2Vob2xkZXJUZXh0JyxcblxuICAvLyBEUElfU3RvcmVkUHJvY2VkdXJlUGFyYW1ldGVyVGl0bGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTdG9yZWRQcm9jZWR1cmVQYXJhbWV0ZXJUaXRsZSA9ICdzdG9yZWRQcm9jZWR1cmVQYXJhbWV0ZXJUaXRsZScsXG5cbiAgLy8gRFBJX1RhYmxlQWxpYXMsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUYWJsZUFsaWFzID0gJ3RhYmxlQWxpYXMnLFxuXG4gIC8vIERQSV9SaWdodFRhYmxlQWxpYXMsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBSaWdodFRhYmxlQWxpYXMgPSAncmlnaHRUYWJsZUFsaWFzJyxcblxuICAvLyBEUElfVGFibGVDYXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVGFibGVDYXB0aW9uID0gJ3RhYmxlQ2FwdGlvbicsXG5cbiAgLy8gRFBJX1RhYmxlQ29sbGVjdGlvbk5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUYWJsZUNvbGxlY3Rpb25OYW1lID0gJ3RhYmxlQ29sbGVjdGlvbk5hbWUnLFxuXG4gIC8vIERQSV9UYWJsZVBsYWNlaG9sZGVyVGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFRhYmxlUGxhY2Vob2xkZXJUZXh0ID0gJ3RhYmxlUGxhY2Vob2xkZXJUZXh0JyxcblxuICAvLyBEUElfVGFibGVSYW5raW5nLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVGFibGVSYW5raW5nID0gJ3RhYmxlUmFua2luZycsXG5cbiAgLy8gRFBJX1RhYmxlU29ydEtleSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFRhYmxlU29ydEtleSA9ICd0YWJsZVNvcnRrZXknLFxuXG4gIC8vIERQSV9UYWJsZVRvb2x0aXAsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUYWJsZVRvb2x0aXAgPSAndGFibGVUb29sdGlwJyxcblxuICAvLyBEUElfVGFibGVUb1JlcGxhY2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUYWJsZVRvUmVwbGFjZSA9ICd0YWJsZVRvUmVwbGFjZScsXG5cbiAgLy8gRFBJX1RhYmxlV2FybmluZ01lc3NhZ2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUYWJsZVdhcm5pbmdNZXNzYWdlID0gJ3RhYmxlV2FybmluZ01lc3NhZ2UnLFxuXG4gIC8vIERQSV9UYWJsZWF1U2VydmVyRGF0YXNvdXJjZURlc2NyaXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVGFibGVhdVNlcnZlckRhdGFzb3VyY2VEZXNjcmlwdGlvbiA9ICd0YWJsZWF1U2VydmVyRGF0YXNvdXJjZURlc2NyaXB0aW9uJyxcblxuICAvLyBEUElfVGFibGVhdVNlcnZlckRhdGFzb3VyY2VMYXN0RXh0cmFjdCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFRhYmxlYXVTZXJ2ZXJEYXRhc291cmNlTGFzdEV4dHJhY3QgPSAndGFibGVhdVNlcnZlckRhdGFzb3VyY2VMYXN0RXh0cmFjdCcsXG5cbiAgLy8gRFBJX1RhYmxlYXVTZXJ2ZXJEYXRhc291cmNlTW9kaWZpZWQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUYWJsZWF1U2VydmVyRGF0YXNvdXJjZU1vZGlmaWVkID0gJ3RhYmxlYXVTZXJ2ZXJEYXRhc291cmNlTW9kaWZpZWQnLFxuXG4gIC8vIERQSV9UYWJsZWF1U2VydmVyRGF0YXNvdXJjZU93bmVyLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVGFibGVhdVNlcnZlckRhdGFzb3VyY2VPd25lciA9ICd0YWJsZWF1U2VydmVyRGF0YXNvdXJjZU93bmVyJyxcblxuICAvLyBEUElfVGFibGVhdVNlcnZlckRhdGFzb3VyY2VQYXRoLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVGFibGVhdVNlcnZlckRhdGFzb3VyY2VQYXRoID0gJ3RhYmxlYXVTZXJ2ZXJEYXRhc291cmNlUGF0aCcsXG5cbiAgLy8gRFBJX1RhYmxlYXVTZXJ2ZXJGZXRjaFNlYXJjaFF1ZXJ5LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVGFibGVhdVNlcnZlckZldGNoU2VhcmNoUXVlcnkgPSAndGFibGVhdVNlcnZlckZldGNoU2VhcmNoUXVlcnknLFxuXG4gIC8vIERQSV9UYWJsZWF1U2VydmVyTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFRhYmxlYXVTZXJ2ZXJOYW1lID0gJ3RhYmxlYXVTZXJ2ZXJOYW1lJyxcblxuICAvLyBEUElfVGFibGVhdVNlcnZlclByb2plY3ROYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVGFibGVhdVNlcnZlclByb2plY3ROYW1lID0gJ3RhYmxlYXVTZXJ2ZXJQcm9qZWN0TmFtZScsXG5cbiAgLy8gRFBJX1RhYmxlYXVTZXJ2ZXJVc2VybmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFRhYmxlYXVTZXJ2ZXJVc2VybmFtZSA9ICd0YWJsZWF1U2VydmVyVXNlcm5hbWUnLFxuXG4gIC8vIERQSV9UcmFuc3BvcnRUeXBlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVHJhbnNwb3J0VHlwZSA9ICd0cmFuc3BvcnRUeXBlJyxcblxuICAvLyBEUElfV2FyZWhvdXNlTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFdhcmVob3VzZU5hbWUgPSAnZGF0YXNvdXJjZVdhcmVob3VzZU5hbWUnLFxuXG4gIC8vIERQSV9Xb3JrZ3JvdXBXb3JrYm9va05hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBXb3JrZ3JvdXBXb3JrYm9va05hbWUgPSAnd29ya2dyb3VwV29ya2Jvb2tOYW1lJyxcblxuICAvLyBEUElfQW5hbHl0aWNzSXRlbVRvb2x0aXAsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBbmFseXRpY3NJdGVtVG9vbHRpcCA9ICdhbmFseXRpY3NJdGVtVG9vbHRpcCcsXG5cbiAgLy8gRFBJX0Rlc2NyaXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRGVzY3JpcHRpb24gPSAnZGVzY3JpcHRpb24nLFxuXG4gIC8vIERQSV9EU0NsYXNzQ2FwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERTQ2xhc3NDYXB0aW9uID0gJ2RzQ2xhc3NDYXB0aW9uJyxcblxuICAvLyBEUElfRm9ybXVsYSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZvcm11bGEgPSAnZm9ybXVsYScsXG5cbiAgLy8gRFBJX01lc3NhZ2VUZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTWVzc2FnZVRleHQgPSAnbWVzc2FnZVRleHQnLFxuXG4gIC8vIERQSV9EYXRhc291cmNlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRGF0YXNvdXJjZSA9ICdkYXRhc291cmNlJyxcblxuICAvLyBEUElfRGF0YXNvdXJjZVNvdXJjZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERhdGFzb3VyY2VTb3VyY2UgPSAnZGF0YXNvdXJjZVNvdXJjZScsXG5cbiAgLy8gRFBJX0RhdGFzb3VyY2VUYXJnZXQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEYXRhc291cmNlVGFyZ2V0ID0gJ2RhdGFzb3VyY2VUYXJnZXQnLFxuXG4gIC8vIERQSV9GaXJzdERhdGFzb3VyY2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGaXJzdERhdGFzb3VyY2UgPSAnZmlyc3REYXRhc291cmNlJyxcblxuICAvLyBEUElfTmV3RGF0YXNvdXJjZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE5ld0RhdGFzb3VyY2UgPSAnbmV3RGF0YXNvdXJjZScsXG5cbiAgLy8gRFBJX1BhcmFtZXRlcnNEYXRhc291cmNlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUGFyYW1ldGVyc0RhdGFzb3VyY2UgPSAncGFyYW1ldGVyc0RhdGFzb3VyY2UnLFxuXG4gIC8vIERQSV9QcmltYXJ5RGF0YXNvdXJjZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFByaW1hcnlEYXRhc291cmNlID0gJ3ByaW1hcnlEYXRhc291cmNlJyxcblxuICAvLyBEUElfQ29ubmVjdGlvbkRhdGFiYXNlcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgQ29ubmVjdGlvbkRhdGFiYXNlcyA9ICdjb25uZWN0aW9uRGF0YWJhc2VzJyxcblxuICAvLyBEUElfQ29ubmVjdGlvblNjaGVtYXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIENvbm5lY3Rpb25TY2hlbWFzID0gJ2Nvbm5lY3Rpb25TY2hlbWFzJyxcblxuICAvLyBEUElfQ29ubmVjdGlvbldhcmVob3VzZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIENvbm5lY3Rpb25XYXJlaG91c2VzID0gJ2Nvbm5lY3Rpb25XYXJlaG91c2VzJyxcblxuICAvLyBEUElfRFNDbGFzc2VzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBEU0NsYXNzZXMgPSAnZHNDbGFzc2VzJyxcblxuICAvLyBEUElfUG9zc2libGVDaG9pY2VzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBQb3NzaWJsZUNob2ljZXMgPSAncG9zc2libGVDaG9pY2VzJyxcblxuICAvLyBEUElfU3RhbmRhcmRDb25uZWN0aW9ucywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgU3RhbmRhcmRDb25uZWN0aW9ucyA9ICdzdGFuZGFyZENvbm5lY3Rpb25zJyxcblxuICAvLyBEUElfU3RyaW5ncywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgU3RyaW5ncyA9ICdzdHJpbmdzJyxcblxuICAvLyBEUElfVGFibGVhdVNlcnZlclByb2plY3ROYW1lcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgVGFibGVhdVNlcnZlclByb2plY3ROYW1lcyA9ICd0YWJsZWF1U2VydmVyUHJvamVjdE5hbWVzJyxcblxuICAvLyBEUElfVGFibGVDYXB0aW9ucywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgVGFibGVDYXB0aW9ucyA9ICd0YWJsZUNhcHRpb25zJyxcblxuICAvLyBEUElfRGF0YVZhbHVlcywgaGF2aW5nIHR5cGUgb2JqZWN0W11cbiAgRGF0YVZhbHVlcyA9ICdkYXRhVmFsdWVzJyxcblxuICAvLyBEUElfUXVlcnlCYW5kRXJyb3JzLCBoYXZpbmcgdHlwZSBvYmplY3RbXVxuICBRdWVyeUJhbmRFcnJvcnMgPSAncXVlcnlCYW5kRXJyb3JzJyxcblxuICAvLyBEUElfUXVlcnlCYW5kUGFyYW1ldGVycywgaGF2aW5nIHR5cGUgb2JqZWN0W11cbiAgUXVlcnlCYW5kUGFyYW1ldGVycyA9ICdxdWVyeUJhbmRQYXJhbWV0ZXJzJyxcblxuICAvLyBEUElfSW5pdGlhbFNRTFBhcmFtZXRlcnMsIGhhdmluZyB0eXBlIG9iamVjdFtdXG4gIEluaXRpYWxTUUxQYXJhbWV0ZXJzID0gJ2luaXRpYWxTcWxQYXJhbWV0ZXJzJyxcblxuICAvLyBEUElfQ29ubmVjdGlvbkF0dHJpYnV0ZXMsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2Ygc3RyaW5nKVxuICBDb25uZWN0aW9uQXR0cmlidXRlcyA9ICdjb25uZWN0aW9uQXR0cnMnLFxuXG4gIC8vIERQSV9Db25uZWN0aW9uUHJvcHMsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2Ygc3RyaW5nKVxuICBDb25uZWN0aW9uUHJvcHMgPSAnY29ubmVjdGlvblByb3BzJyxcblxuICAvLyBEUElfRGlzcGxheU5hbWVNYXAsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2Ygc3RyaW5nKVxuICBEaXNwbGF5TmFtZU1hcCA9ICdkaXNwbGF5TmFtZU1hcCcsXG5cbiAgLy8gRFBJX0xvb2t1cFRhYmxlLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIHN0cmluZylcbiAgTG9va3VwVGFibGUgPSAnbG9va3VwVGFibGUnLFxuXG4gIC8vIERQSV9PQXV0aEF0dHJzLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIHN0cmluZylcbiAgT0F1dGhBdHRycyA9ICdvYXV0aEF0dHJzJyxcblxuICAvLyBEUElfU3RyaW5nTWFwLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIHN0cmluZylcbiAgU3RyaW5nTWFwID0gJ3N0cmluZ01hcCcsXG5cbiAgLy8gRFBJX1RhYmxlUmFua2luZ01hcCwgaGF2aW5nIHR5cGUgRGljdGlvbmFyeShvZiBzdHJpbmcpXG4gIFRhYmxlUmFua2luZ01hcCA9ICd0YWJsZVJhbmtpbmdNYXAnLFxuXG4gIC8vIERQSV9XRENBdHRyaWJ1dGVzLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIHN0cmluZylcbiAgV0RDQXR0cmlidXRlcyA9ICd3ZGNBdHRycycsXG5cbiAgLy8gRFBJX0Nvbm5lY3RvckF0dHJpYnV0ZXMsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2Ygc3RyaW5nKVxuICBDb25uZWN0b3JBdHRyaWJ1dGVzID0gJ2Nvbm5lY3RvckF0dHJzJyxcblxuICAvLyBEUElfVGFibGVSZWxldmFuY2VQYXJhbXMsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2Ygc3RyaW5nKVxuICBUYWJsZVJlbGV2YW5jZVBhcmFtcyA9ICd0YWJsZVJlbGV2YW5jZVBhcmFtcycsXG5cbiAgLy8gRFBJX0FjdHVhbFBhcmFtZXRlclBhcmFtZXRlciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEFjdHVhbFBhcmFtZXRlclBhcmFtZXRlciA9ICdhY3R1YWxQYXJhbWV0ZXJQYXJhbWV0ZXInLFxuXG4gIC8vIERQSV9EYXRhQ29sdW1uTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERhdGFDb2x1bW5OYW1lID0gJ2RhdGFDb2x1bW5OYW1lJyxcblxuICAvLyBEUElfTEhTRGF0YUNvbHVtbk5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBMSFNEYXRhQ29sdW1uTmFtZSA9ICdsaHNEYXRhQ29sdW1uTmFtZScsXG5cbiAgLy8gRFBJX1JIU0RhdGFDb2x1bW5OYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUkhTRGF0YUNvbHVtbk5hbWUgPSAncmhzRGF0YUNvbHVtbk5hbWUnLFxuXG4gIC8vIERQSV9GdWxsQ3ViZU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGdWxsQ3ViZU5hbWUgPSAnZnVsbEN1YmVOYW1lJyxcblxuICAvLyBEUElfRnVsbFZhcmlhYmxlTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZ1bGxWYXJpYWJsZU5hbWUgPSAnZnVsbFZhcmlhYmxlTmFtZScsXG5cbiAgLy8gRFBJX1NlbWFudGljUm9sZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNlbWFudGljUm9sZSA9ICdzZW1hbnRpY1JvbGUnLFxuXG4gIC8vIERQSV9TdG9yZWRQcm9jZWR1cmVOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU3RvcmVkUHJvY2VkdXJlTmFtZSA9ICdzdG9yZWRQcm9jTmFtZScsXG5cbiAgLy8gRFBJX1RhYmxlTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFRhYmxlTmFtZSA9ICd0YWJsZU5hbWUnLFxuXG4gIC8vIERQSV9BZGRlZFRhYmxlTmFtZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIEFkZGVkVGFibGVOYW1lcyA9ICdhZGRlZFRhYmxlTmFtZXMnLFxuXG4gIC8vIERQSV9Db2FsZXNjZUdyb3VwRmllbGRzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBDb2FsZXNjZUdyb3VwRmllbGRzID0gJ2NvYWxlc2NlR3JvdXBGaWVsZHMnLFxuXG4gIC8vIERQSV9GaWVsZE5hbWVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBGaWVsZE5hbWVzID0gJ2ZpZWxkTmFtZXMnLFxuXG4gIC8vIERQSV9Kb2luRmllbGRBbGlhc2VzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBKb2luRmllbGRBbGlhc2VzID0gJ2pvaW5GaWVsZF9hbGlhc2VzJyxcblxuICAvLyBEUElfSm9pbkluZm9GaWVsZHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIEpvaW5JbmZvRmllbGRzID0gJ2pvaW5JbmZvRmllbGRzJyxcblxuICAvLyBEUElfUGl2b3RHcm91cEZpZWxkcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgUGl2b3RHcm91cEZpZWxkcyA9ICdwaXZvdEdyb3VwRmllbGRzJyxcblxuICAvLyBEUElfUmVtb3ZlZFRhYmxlTmFtZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFJlbW92ZWRUYWJsZU5hbWVzID0gJ3JlbW92ZWRUYWJsZU5hbWVzJyxcblxuICAvLyBEUElfU3RvcmVkUHJvY2VkdXJlcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgU3RvcmVkUHJvY2VkdXJlcyA9ICdzdG9yZWRQcm9jZWR1cmVzJyxcblxuICAvLyBEUElfVGFibGVOYW1lcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgVGFibGVOYW1lcyA9ICd0YWJsZU5hbWVzJyxcblxuICAvLyBEUElfQ29sdW1uTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIENvbHVtbk5hbWUgPSAnY29sdW1uTmFtZScsXG5cbiAgLy8gRFBJX0ZpZWxkTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZpZWxkTmFtZSA9ICdmbicsXG5cbiAgLy8gRFBJX0dvb2dsZVNoZWV0VGh1bWJuYWlsSW1hZ2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBHb29nbGVTaGVldFRodW1ibmFpbEltYWdlID0gJ2dvb2dsZVNoZWV0VGh1bWJuYWlsSW1hZ2UnLFxuXG4gIC8vIERQSV9BdHRyTURXUGFzc3dvcmQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBdHRyTURXUGFzc3dvcmQgPSAnd2lkZ2V0QXR0ck1kd1Bhc3N3b3JkJyxcblxuICAvLyBEUElfQXR0clBhc3N3b3JkLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQXR0clBhc3N3b3JkID0gJ3dpZGdldEF0dHJQYXNzd29yZCcsXG5cbiAgLy8gRFBJX0RhdGFzb3VyY2VQYXNzd29yZCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERhdGFzb3VyY2VQYXNzd29yZCA9ICdkYXRhc291cmNlUGFzc3dvcmQnLFxuXG4gIC8vIERQSV9GZWRlcmF0ZWRLZXljaGFpbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZlZGVyYXRlZEtleWNoYWluID0gJ2ZlZGVyYXRlZEtleWNoYWluJyxcblxuICAvLyBEUElfRGF0YVBhcmFtZXRlcklELCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRGF0YVBhcmFtZXRlcklEID0gJ2RhdGFQYXJhbVR5cGUnLFxuXG4gIC8vIERQSV9Db25uZWN0U2VydmVyV2lkZ2V0VHlwZSwgaGF2aW5nIHR5cGUgQ29ubmVjdFNlcnZlcldpZGdldFR5cGVcbiAgQ29ubmVjdFNlcnZlcldpZGdldFR5cGUgPSAnY29ubmVjdFNlcnZlcldpZGdldFR5cGUnLFxuXG4gIC8vIERQSV9BdXRoZW50aWNhdGlvbk1vZGUsIGhhdmluZyB0eXBlIE1vZGVcbiAgQXV0aGVudGljYXRpb25Nb2RlID0gJ2F1dGhNb2RlJyxcblxuICAvLyBEUElfUmVjb25uZWN0QXV0aE1vZGUsIGhhdmluZyB0eXBlIFJlY29ubmVjdE1vZGVcbiAgUmVjb25uZWN0QXV0aE1vZGUgPSAncmVjb25uZWN0QXV0aE1vZGUnLFxuXG4gIC8vIERQSV9DdXJyZW50QXV0aE9wdGlvbiwgaGF2aW5nIHR5cGUgQXV0aE9wdGlvblxuICBDdXJyZW50QXV0aE9wdGlvbiA9ICdjdXJyQXV0aE9wdGlvbicsXG5cbiAgLy8gRFBJX0F1dGhPcHRpb25MaXN0LCBoYXZpbmcgdHlwZSBBdXRoT3B0aW9uW11cbiAgQXV0aE9wdGlvbkxpc3QgPSAnYXV0aE9wdGlvbnMnLFxuXG4gIC8vIERQSV9Db25uZWN0aW9uU3BlY2lmaWNhdGlvblR5cGUsIGhhdmluZyB0eXBlIENvbm5lY3Rpb25TcGVjaWZpY2F0aW9uVHlwZVxuICBDb25uZWN0aW9uU3BlY2lmaWNhdGlvblR5cGUgPSAnY29ubmVjdGlvblNwZWNpZmljYXRpb25UeXBlJyxcblxuICAvLyBEUElfRGF0YVR5cGUsIGhhdmluZyB0eXBlIERhdGFUeXBlXG4gIERhdGFUeXBlID0gJ2RhdGFUeXBlJyxcblxuICAvLyBEUElfTEhTRGF0YVR5cGUsIGhhdmluZyB0eXBlIERhdGFUeXBlXG4gIExIU0RhdGFUeXBlID0gJ2xoc0RhdGFUeXBlJyxcblxuICAvLyBEUElfUkhTRGF0YVR5cGUsIGhhdmluZyB0eXBlIERhdGFUeXBlXG4gIFJIU0RhdGFUeXBlID0gJ3Joc0RhdGFUeXBlJyxcblxuICAvLyBEUElfRGVmYXVsdEZpZWxkUm9sZSwgaGF2aW5nIHR5cGUgRmllbGRSb2xlXG4gIERlZmF1bHRGaWVsZFJvbGUgPSAnZGVmYXVsdEZpZWxkUm9sZScsXG5cbiAgLy8gRFBJX0ZpZWxkUm9sZSwgaGF2aW5nIHR5cGUgRmllbGRSb2xlXG4gIEZpZWxkUm9sZSA9ICdmaWVsZFJvbGUnLFxuXG4gIC8vIERQSV9EZWZhdWx0RmllbGRUeXBlLCBoYXZpbmcgdHlwZSBGaWVsZFR5cGVcbiAgRGVmYXVsdEZpZWxkVHlwZSA9ICdkZWZhdWx0RmllbGRUeXBlJyxcblxuICAvLyBEUElfRmllbGRUeXBlLCBoYXZpbmcgdHlwZSBGaWVsZFR5cGVcbiAgRmllbGRUeXBlID0gJ2ZpZWxkVHlwZScsXG5cbiAgLy8gRFBJX0ZpZWxkVHlwZUxpc3QsIGhhdmluZyB0eXBlIEZpZWxkVHlwZVtdXG4gIEZpZWxkVHlwZUxpc3QgPSAnZmllbGRUeXBlTGlzdCcsXG5cbiAgLy8gRFBJX0ZpZWxkVHlwZUxpc3REZXRhaWwsIGhhdmluZyB0eXBlIEZpZWxkVHlwZVtdXG4gIEZpZWxkVHlwZUxpc3REZXRhaWwgPSAnZmllbGRUeXBlTGlzdERldGFpbCcsXG5cbiAgLy8gRFBJX0FnZ1R5cGUsIGhhdmluZyB0eXBlIEFnZ1R5cGVcbiAgQWdnVHlwZSA9ICdhZ2dyZWdhdGlvbicsXG5cbiAgLy8gRFBJX0RlZmF1bHRBZ2dUeXBlLCBoYXZpbmcgdHlwZSBBZ2dUeXBlXG4gIERlZmF1bHRBZ2dUeXBlID0gJ2RlZmF1bHRBZ2dyZWdhdGlvbicsXG5cbiAgLy8gRFBJX0ZvcmVjYXN0QWdnLCBoYXZpbmcgdHlwZSBBZ2dUeXBlXG4gIEZvcmVjYXN0QWdnID0gJ2ZvcmVjYXN0U3VtbWFyaXplVG8nLFxuXG4gIC8vIERQSV9Gb3JlY2FzdEF1dG9BZ2csIGhhdmluZyB0eXBlIEFnZ1R5cGVcbiAgRm9yZWNhc3RBdXRvQWdnID0gJ2ZvcmVjYXN0QXV0b1N1bW1hcml6ZVRvJyxcblxuICAvLyBEUElfRm9yZWNhc3RBdXRvUmFuZ2VVbml0cywgaGF2aW5nIHR5cGUgQWdnVHlwZVxuICBGb3JlY2FzdEF1dG9SYW5nZVVuaXRzID0gJ2ZvcmVjYXN0QXV0b1JhbmdlVW5pdHMnLFxuXG4gIC8vIERQSV9Gb3JlY2FzdEVuZE9mUmFuZ2VVbml0cywgaGF2aW5nIHR5cGUgQWdnVHlwZVxuICBGb3JlY2FzdEVuZE9mUmFuZ2VVbml0cyA9ICdmb3JlY2FzdEVuZE9mUmFuZ2VVbml0cycsXG5cbiAgLy8gRFBJX0ZvcmVjYXN0TmV4dFJhbmdlVW5pdHMsIGhhdmluZyB0eXBlIEFnZ1R5cGVcbiAgRm9yZWNhc3ROZXh0UmFuZ2VVbml0cyA9ICdmb3JlY2FzdE5leHRSYW5nZVVuaXRzJyxcblxuICAvLyBEUElfU291cmNlQWdnLCBoYXZpbmcgdHlwZSBBZ2dUeXBlXG4gIFNvdXJjZUFnZyA9ICdzb3VyY2VBZ2dyZWdhdGlvbicsXG5cbiAgLy8gRFBJX1RhcmdldEFnZywgaGF2aW5nIHR5cGUgQWdnVHlwZVxuICBUYXJnZXRBZ2cgPSAndGFyZ2V0QWdncmVnYXRpb24nLFxuXG4gIC8vIERQSV9BZ2dyZWdhdGVCeUFnZ1R5cGVzLCBoYXZpbmcgdHlwZSBBZ2dUeXBlW11cbiAgQWdncmVnYXRlQnlBZ2dUeXBlcyA9ICdhZ2dyZWdhdGVCeUFnZ1R5cGVzJyxcblxuICAvLyBEUElfQWdncmVnYXRpb25WYWx1ZXMsIGhhdmluZyB0eXBlIEFnZ1R5cGVbXVxuICBBZ2dyZWdhdGlvblZhbHVlcyA9ICdhZ2dyZWdhdGlvblZhbHVlcycsXG5cbiAgLy8gRFBJX1NvcnRBZ2dWYWx1ZXMsIGhhdmluZyB0eXBlIEFnZ1R5cGVbXVxuICBTb3J0QWdnVmFsdWVzID0gJ3NvcnRBZ2dWYWx1ZXMnLFxuXG4gIC8vIERQSV9Db2x1bW5DbGFzcywgaGF2aW5nIHR5cGUgQ29sdW1uQ2xhc3NcbiAgQ29sdW1uQ2xhc3MgPSAnY29sdW1uQ2xhc3MnLFxuXG4gIC8vIERQSV9Db25uZWN0aW9uV2lkZ2V0VHlwZSwgaGF2aW5nIHR5cGUgQ29ubmVjdGlvbldpZGdldFR5cGVcbiAgQ29ubmVjdGlvbldpZGdldFR5cGUgPSAnY29ubmVjdGlvbldpZGdldFR5cGUnLFxuXG4gIC8vIERQSV9UYWJsZVBpbGxJY29uLCBoYXZpbmcgdHlwZSBUYWJsZVBpbGxJY29uXG4gIFRhYmxlUGlsbEljb24gPSAndGFibGVQaWxsSWNvblR5cGUnLFxuXG4gIC8vIERQSV9FbnVtZXJhdGVkRW50aXR5VHlwZSwgaGF2aW5nIHR5cGUgRW50aXR5VHlwZVxuICBFbnVtZXJhdGVkRW50aXR5VHlwZSA9ICdlbnVtZXJhdGVkRW50aXR5VHlwZScsXG5cbiAgLy8gRFBJX1BpY2tFbnRpdHlTZWFyY2hUeXBlLCBoYXZpbmcgdHlwZSBQaWNrRW50aXR5U2VhcmNoVHlwZVxuICBQaWNrRW50aXR5U2VhcmNoVHlwZSA9ICdlbnRpdHlTZWFyY2hUeXBlJyxcblxuICAvLyBEUElfRXhwcmVzc2lvbk9wLCBoYXZpbmcgdHlwZSBPcFxuICBFeHByZXNzaW9uT3AgPSAnZXhwcmVzc2lvbk9wJyxcblxuICAvLyBEUElfRXhwcmVzc2lvbk9wZXJhdG9yQ2FwdGlvbiwgaGF2aW5nIHR5cGUgRXhwcmVzc2lvbk9wZXJhdG9yQ2FwdGlvblByZXNNb2RlbFxuICBFeHByZXNzaW9uT3BlcmF0b3JDYXB0aW9uID0gJ2V4cHJlc3Npb25PcGVyYXRvckNhcHRpb24nLFxuXG4gIC8vIERQSV9SZWxhdGlvbmFsRXhwZXJlc3Npb25PcHMsIGhhdmluZyB0eXBlIEV4cHJlc3Npb25PcGVyYXRvckNhcHRpb25QcmVzTW9kZWxbXVxuICBSZWxhdGlvbmFsRXhwZXJlc3Npb25PcHMgPSAncmVsYXRpb25hbEV4cHJlc3Npb25PcHMnLFxuXG4gIC8vIERQSV9IaWVyYXJjaHlFeHByZXNzaW9uT3BzLCBoYXZpbmcgdHlwZSBFeHByZXNzaW9uT3BlcmF0b3JDYXB0aW9uUHJlc01vZGVsW11cbiAgSGllcmFyY2h5RXhwcmVzc2lvbk9wcyA9ICdoaWVyYXJjaHlFeHByZXNzaW9uT3BzJyxcblxuICAvLyBEUElfRGVmYXVsdFNvcnREaXJlY3Rpb24sIGhhdmluZyB0eXBlIFNvcnREaXJlY3Rpb25cbiAgRGVmYXVsdFNvcnREaXJlY3Rpb24gPSAnZGVmU29ydE9yZGVyJyxcblxuICAvLyBEUElfU29ydERpcmVjdGlvbiwgaGF2aW5nIHR5cGUgU29ydERpcmVjdGlvblxuICBTb3J0RGlyZWN0aW9uID0gJ3NvcnRPcmRlcicsXG5cbiAgLy8gRFBJX1NvcnREaXJlY3Rpb25WYWx1ZXMsIGhhdmluZyB0eXBlIFNvcnREaXJlY3Rpb25bXVxuICBTb3J0RGlyZWN0aW9uVmFsdWVzID0gJ3NvcnREaXJlY3Rpb25WYWx1ZXMnLFxuXG4gIC8vIERQSV9DdWJlTWV0YWRhdGFDYXRlZ29yeSwgaGF2aW5nIHR5cGUgQ3ViZU1ldGFkYXRhQ2F0ZWdvcnlcbiAgQ3ViZU1ldGFkYXRhQ2F0ZWdvcnkgPSAnY3ViZU1ldGFkYXRhQ2F0ZWdvcnknLFxuXG4gIC8vIERQSV9DdWJlTWV0YWRhdGFDYXRlZ29yaWVzLCBoYXZpbmcgdHlwZSBDdWJlTWV0YWRhdGFDYXRlZ29yeVtdXG4gIEN1YmVNZXRhZGF0YUNhdGVnb3JpZXMgPSAnY3ViZU1ldGFkYXRhQ2F0ZWdvcmllcycsXG5cbiAgLy8gRFBJX0dvb2dsZUJhc2ljSW5mb1R5cGUsIGhhdmluZyB0eXBlIEdvb2dsZUJhc2ljSW5mb1R5cGVcbiAgR29vZ2xlQmFzaWNJbmZvVHlwZSA9ICdnb29nbGVCYXNpY0luZm9UeXBlJyxcblxuICAvLyBEUElfR29vZ2xlQW5hbHl0aWNzRGF0ZVJhbmdlT3B0aW9uVHlwZSwgaGF2aW5nIHR5cGUgRGF0ZVJhbmdlXG4gIEdvb2dsZUFuYWx5dGljc0RhdGVSYW5nZU9wdGlvblR5cGUgPSAnZ29vZ2xlQW5hbHl0aWNzRGF0ZVJhbmdlT3B0aW9uVHlwZScsXG5cbiAgLy8gRFBJX1RhYmxlQ2FsY1R5cGUsIGhhdmluZyB0eXBlIFRhYmxlQ2FsY1R5cGVcbiAgVGFibGVDYWxjVHlwZSA9ICd0YWJsZUNhbGNUeXBlJyxcblxuICAvLyBEUElfVGFibGVDYWxjVHlwZVZhbHVlcywgaGF2aW5nIHR5cGUgVGFibGVDYWxjVHlwZVtdXG4gIFRhYmxlQ2FsY1R5cGVWYWx1ZXMgPSAndGFibGVDYWxjVHlwZVZhbHVlcycsXG5cbiAgLy8gRFBJX1JlbGF0aXZlQWRkcmVzcywgaGF2aW5nIHR5cGUgUmVsYXRpdmVBZGRyZXNzXG4gIFJlbGF0aXZlQWRkcmVzcyA9ICdyZWxhdGl2ZUFkZHJlc3MnLFxuXG4gIC8vIERQSV9SZWxhdGl2ZVZhbHVlcywgaGF2aW5nIHR5cGUgUmVsYXRpdmVBZGRyZXNzW11cbiAgUmVsYXRpdmVWYWx1ZXMgPSAncmVsYXRpdmVWYWx1ZXMnLFxuXG4gIC8vIERQSV9PcmRlcmluZ1R5cGUsIGhhdmluZyB0eXBlIE9yZGVyaW5nVHlwZVxuICBPcmRlcmluZ1R5cGUgPSAnb3JkZXJpbmdUeXBlJyxcblxuICAvLyBEUElfT3JkZXJpbmdUeXBlVmFsdWVzLCBoYXZpbmcgdHlwZSBPcmRlcmluZ1R5cGVbXVxuICBPcmRlcmluZ1R5cGVWYWx1ZXMgPSAnb3JkZXJpbmdUeXBlVmFsdWVzJyxcblxuICAvLyBEUElfQ2F0ZWdvcmljYWxCaW5JdGVtVHlwZSwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxCaW5JdGVtVHlwZVxuICBDYXRlZ29yaWNhbEJpbkl0ZW1UeXBlID0gJ2NhdGVnb3JpY2FsQmluSXRlbVR5cGUnLFxuXG4gIC8vIERQSV9BdXRoZW50aWNhdGlvbkluZm9zLCBoYXZpbmcgdHlwZSBBdXRoZW50aWNhdGlvblNldHRpbmdzUHJlc01vZGVsXG4gIEF1dGhlbnRpY2F0aW9uSW5mb3MgPSAnYXV0aEluZm8nLFxuXG4gIC8vIERQSV9Db25uZWN0aW9uV2lkZ2V0UGFyYW1zLCBoYXZpbmcgdHlwZSBDb25uZWN0aW9uUGFyYW1zUHJlc01vZGVsXG4gIENvbm5lY3Rpb25XaWRnZXRQYXJhbXMgPSAnd2lkZ2V0Q29ubmVjdGlvblBhcmFtcycsXG5cbiAgLy8gRFBJX0Nvbm5lY3Rpb25TZXR0aW5ncywgaGF2aW5nIHR5cGUgQ29ubmVjdGlvblNldHRpbmdzUHJlc01vZGVsXG4gIENvbm5lY3Rpb25TZXR0aW5ncyA9ICdjb25uZWN0aW9uU2V0dGluZ3MnLFxuXG4gIC8vIERQSV9SZWNvbm5lY3RBdXRoZW50aWNhdGlvblNldHRpbmdzLCBoYXZpbmcgdHlwZSBBdXRoZW50aWNhdGlvblNldHRpbmdzUHJlc01vZGVsXG4gIFJlY29ubmVjdEF1dGhlbnRpY2F0aW9uU2V0dGluZ3MgPSAncmVjb25uZWN0QXV0aFNldHRpbmdzJyxcblxuICAvLyBEUElfQ3ViZUNvbm5lY3Rpb25TcGVjaWZpY2F0aW9uT3B0aW9uLCBoYXZpbmcgdHlwZSBDdWJlQ29ubmVjdGlvblNwZWNpZmljYXRpb25PcHRpb25QcmVzTW9kZWxcbiAgQ3ViZUNvbm5lY3Rpb25TcGVjaWZpY2F0aW9uT3B0aW9uID0gJ2N1YmVDb25uZWN0aW9uU3BlY2lmaWNhdGlvbk9wdGlvbicsXG5cbiAgLy8gRFBJX0N1YmVDb25uZWN0aW9uU3BlY2lmaWNhdGlvbk9wdGlvbnMsIGhhdmluZyB0eXBlIEN1YmVDb25uZWN0aW9uU3BlY2lmaWNhdGlvbk9wdGlvblByZXNNb2RlbFtdXG4gIEN1YmVDb25uZWN0aW9uU3BlY2lmaWNhdGlvbk9wdGlvbnMgPSAnY3ViZUNvbm5lY3Rpb25TcGVjaWZpY2F0aW9uT3B0aW9ucycsXG5cbiAgLy8gRFBJX0N1YmVDb25uZWN0aW9uU3BlY2lmaWNhdGlvbiwgaGF2aW5nIHR5cGUgQ3ViZUNvbm5lY3Rpb25TcGVjaWZpY2F0aW9uUHJlc01vZGVsXG4gIEN1YmVDb25uZWN0aW9uU3BlY2lmaWNhdGlvbiA9ICdjdWJlQ29ubmVjdGlvblNwZWNpZmljYXRpb24nLFxuXG4gIC8vIERQSV9Db25uZWN0aW9uU2V0dGluZ3NPcHRpb24sIGhhdmluZyB0eXBlIENvbm5lY3Rpb25TZXR0aW5nc09wdGlvblByZXNNb2RlbFxuICBDb25uZWN0aW9uU2V0dGluZ3NPcHRpb24gPSAnY29ubmVjdGlvblNldHRpbmdzT3B0aW9uJyxcblxuICAvLyBEUElfQ29ubmVjdGlvblNldHRpbmdzT3B0aW9ucywgaGF2aW5nIHR5cGUgQ29ubmVjdGlvblNldHRpbmdzT3B0aW9uUHJlc01vZGVsW11cbiAgQ29ubmVjdGlvblNldHRpbmdzT3B0aW9ucyA9ICdjb25uZWN0aW9uU2V0dGluZ3NPcHRpb25zJyxcblxuICAvLyBEUElfU3RyaW5nQ29sbGF0aW9uLCBoYXZpbmcgdHlwZSBTdHJpbmdDb2xsYXRpb25QcmVzTW9kZWxcbiAgU3RyaW5nQ29sbGF0aW9uID0gJ3N0cmluZ0NvbGxhdGlvbicsXG5cbiAgLy8gRFBJX0RhdGFiYXNlRW51bWVyYXRpb24sIGhhdmluZyB0eXBlIERhdGFiYXNlRW51bWVyYXRpb25QcmVzTW9kZWxcbiAgRGF0YWJhc2VFbnVtZXJhdGlvbiA9ICdkYXRhYmFzZUVudW1lcmF0aW9uJyxcblxuICAvLyBEUElfU2NoZW1hRW51bWVyYXRpb24sIGhhdmluZyB0eXBlIFNjaGVtYUVudW1lcmF0aW9uUHJlc01vZGVsXG4gIFNjaGVtYUVudW1lcmF0aW9uID0gJ3NjaGVtYUVudW1lcmF0aW9uJyxcblxuICAvLyBEUElfU3RhbmRhcmRDb25uZWN0aW9uRW51bWVyYXRpb24sIGhhdmluZyB0eXBlIFN0YW5kYXJkQ29ubmVjdGlvbkVudW1lcmF0aW9uUHJlc01vZGVsXG4gIFN0YW5kYXJkQ29ubmVjdGlvbkVudW1lcmF0aW9uID0gJ3N0YW5kYXJkQ29ubmVjdGlvbkVudW1lcmF0aW9uJyxcblxuICAvLyBEUElfU3RvcmVkUHJvY2VkdXJlRW51bWVyYXRpb24sIGhhdmluZyB0eXBlIFN0b3JlZFByb2NlZHVyZUVudW1lcmF0aW9uUHJlc01vZGVsXG4gIFN0b3JlZFByb2NlZHVyZUVudW1lcmF0aW9uID0gJ3N0b3JlZFByb2NlZHVyZUVudW1lcmF0aW9uJyxcblxuICAvLyBEUElfVGFibGVFbnVtZXJhdGlvbiwgaGF2aW5nIHR5cGUgVGFibGVFbnVtZXJhdGlvblByZXNNb2RlbFxuICBUYWJsZUVudW1lcmF0aW9uID0gJ3RhYmxlRW51bWVyYXRpb24nLFxuXG4gIC8vIERQSV9XYXJlaG91c2VFbnVtZXJhdGlvbiwgaGF2aW5nIHR5cGUgV2FyZWhvdXNlRW51bWVyYXRpb25QcmVzTW9kZWxcbiAgV2FyZWhvdXNlRW51bWVyYXRpb24gPSAnd2FyZWhvdXNlRW51bWVyYXRpb24nLFxuXG4gIC8vIERQSV9TbG93TWV0YWRhdGFTY2hlbWFMaXN0LCBoYXZpbmcgdHlwZSBTbG93TWV0YWRhdGFTY2hlbWFMaXN0UHJlc01vZGVsXG4gIFNsb3dNZXRhZGF0YVNjaGVtYUxpc3QgPSAnc2xvd01ldGFkYXRhU2NoZW1hTGlzdCcsXG5cbiAgLy8gRFBJX1Nsb3dNZXRhZGF0YVRhYmxlTGlzdCwgaGF2aW5nIHR5cGUgU2xvd01ldGFkYXRhVGFibGVMaXN0UHJlc01vZGVsXG4gIFNsb3dNZXRhZGF0YVRhYmxlTGlzdCA9ICdzbG93TWV0YWRhdGFUYWJsZUxpc3QnLFxuXG4gIC8vIERQSV9DdWJlQ2F0YWxvZywgaGF2aW5nIHR5cGUgQ3ViZUNhdGFsb2dQcmVzTW9kZWxcbiAgQ3ViZUNhdGFsb2cgPSAnY3ViZUNhdGFsb2cnLFxuXG4gIC8vIERQSV9DdWJlQ2F0YWxvZ3MsIGhhdmluZyB0eXBlIEN1YmVDYXRhbG9nUHJlc01vZGVsW11cbiAgQ3ViZUNhdGFsb2dzID0gJ2N1YmVDYXRhbG9ncycsXG5cbiAgLy8gRFBJX0N1YmVDYXRhbG9nRW51bWVyYXRpb24sIGhhdmluZyB0eXBlIEN1YmVDYXRhbG9nRW51bWVyYXRpb25QcmVzTW9kZWxcbiAgQ3ViZUNhdGFsb2dFbnVtZXJhdGlvbiA9ICdjdWJlQ2F0YWxvZ0VudW1lcmF0aW9uJyxcblxuICAvLyBEUElfQ3ViZSwgaGF2aW5nIHR5cGUgQ3ViZVByZXNNb2RlbFxuICBDdWJlID0gJ2N1YmUnLFxuXG4gIC8vIERQSV9DdWJlcywgaGF2aW5nIHR5cGUgQ3ViZVByZXNNb2RlbFtdXG4gIEN1YmVzID0gJ2N1YmVzJyxcblxuICAvLyBEUElfQ3ViZUVudW1lcmF0aW9uLCBoYXZpbmcgdHlwZSBDdWJlRW51bWVyYXRpb25QcmVzTW9kZWxcbiAgQ3ViZUVudW1lcmF0aW9uID0gJ2N1YmVFbnVtZXJhdGlvbicsXG5cbiAgLy8gRFBJX0dvb2dsZUFuYWx5dGljc0Jhc2ljSXRlbSwgaGF2aW5nIHR5cGUgR29vZ2xlQW5hbHl0aWNzQmFzaWNJdGVtUHJlc01vZGVsXG4gIEdvb2dsZUFuYWx5dGljc0Jhc2ljSXRlbSA9ICdnb29nbGVBbmFseXRpY3NCYXNpY0l0ZW0nLFxuXG4gIC8vIERQSV9HQU1lYXN1cmVTZXRzLCBoYXZpbmcgdHlwZSBHb29nbGVBbmFseXRpY3NCYXNpY0l0ZW1QcmVzTW9kZWxbXVxuICBHQU1lYXN1cmVTZXRzID0gJ2dhTWVhc3VyZVNldHMnLFxuXG4gIC8vIERQSV9Hb29nbGVBbmFseXRpY3NWaWV3cywgaGF2aW5nIHR5cGUgR29vZ2xlQW5hbHl0aWNzQmFzaWNJdGVtUHJlc01vZGVsW11cbiAgR29vZ2xlQW5hbHl0aWNzVmlld3MgPSAnZ29vZ2xlQW5hbHl0aWNzVmlld3MnLFxuXG4gIC8vIERQSV9Hb29nbGVBbmFseXRpY3NQcm9wZXJ0aWVzLCBoYXZpbmcgdHlwZSBHb29nbGVBbmFseXRpY3NCYXNpY0l0ZW1QcmVzTW9kZWxbXVxuICBHb29nbGVBbmFseXRpY3NQcm9wZXJ0aWVzID0gJ2dvb2dsZUFuYWx5dGljc1Byb3BlcnRpZXMnLFxuXG4gIC8vIERQSV9Hb29nbGVCYXNpY0luZm9JdGVtcywgaGF2aW5nIHR5cGUgR29vZ2xlQW5hbHl0aWNzQmFzaWNJdGVtUHJlc01vZGVsW11cbiAgR29vZ2xlQmFzaWNJbmZvSXRlbXMgPSAnZ29vZ2xlQW5hbHl0aWNzQWNjb3VudHMnLFxuXG4gIC8vIERQSV9Hb29nbGVBbmFseXRpY3NDb21wbGV4SXRlbSwgaGF2aW5nIHR5cGUgR29vZ2xlQW5hbHl0aWNzQ29tcGxleEl0ZW1QcmVzTW9kZWxcbiAgR29vZ2xlQW5hbHl0aWNzQ29tcGxleEl0ZW0gPSAnZ29vZ2xlQW5hbHl0aWNzQ29tcGxleEl0ZW0nLFxuXG4gIC8vIERQSV9Hb29nbGVBbmFseXRpY3NQb3NzaWJsZURpbWVuc2lvbnMsIGhhdmluZyB0eXBlIEdvb2dsZUFuYWx5dGljc0NvbXBsZXhJdGVtUHJlc01vZGVsW11cbiAgR29vZ2xlQW5hbHl0aWNzUG9zc2libGVEaW1lbnNpb25zID0gJ2dvb2dsZUFuYWx5dGljc1Bvc3NpYmxlRGltZW5zaW9ucycsXG5cbiAgLy8gRFBJX0dvb2dsZUFuYWx5dGljc1Bvc3NpYmxlTWVhc3VyZXMsIGhhdmluZyB0eXBlIEdvb2dsZUFuYWx5dGljc0NvbXBsZXhJdGVtUHJlc01vZGVsW11cbiAgR29vZ2xlQW5hbHl0aWNzUG9zc2libGVNZWFzdXJlcyA9ICdnb29nbGVBbmFseXRpY3NQb3NzaWJsZU1lYXN1cmVzJyxcblxuICAvLyBEUElfR29vZ2xlQW5hbHl0aWNzUG9zc2libGVTZWdtZW50cywgaGF2aW5nIHR5cGUgR29vZ2xlQW5hbHl0aWNzQ29tcGxleEl0ZW1QcmVzTW9kZWxbXVxuICBHb29nbGVBbmFseXRpY3NQb3NzaWJsZVNlZ21lbnRzID0gJ2dvb2dsZUFuYWx5dGljc1Bvc3NpYmxlU2VnbWVudHMnLFxuXG4gIC8vIERQSV9Hb29nbGVBbmFseXRpY3NTZWxlY3RlZERpbWVuc2lvbnMsIGhhdmluZyB0eXBlIEdvb2dsZUFuYWx5dGljc0NvbXBsZXhJdGVtUHJlc01vZGVsW11cbiAgR29vZ2xlQW5hbHl0aWNzU2VsZWN0ZWREaW1lbnNpb25zID0gJ2dvb2dsZUFuYWx5dGljc1NlbGVjdGVkRGltZW5zaW9ucycsXG5cbiAgLy8gRFBJX0dvb2dsZUFuYWx5dGljc1NlbGVjdGVkTWVhc3VyZXMsIGhhdmluZyB0eXBlIEdvb2dsZUFuYWx5dGljc0NvbXBsZXhJdGVtUHJlc01vZGVsW11cbiAgR29vZ2xlQW5hbHl0aWNzU2VsZWN0ZWRNZWFzdXJlcyA9ICdnb29nbGVBbmFseXRpY3NTZWxlY3RlZE1lYXN1cmVzJyxcblxuICAvLyBEUElfR29vZ2xlQW5hbHl0aWNzRGF0ZVJhbmdlT3B0aW9uLCBoYXZpbmcgdHlwZSBHb29nbGVBbmFseXRpY3NEYXRlUmFuZ2VPcHRpb25QcmVzTW9kZWxcbiAgR29vZ2xlQW5hbHl0aWNzRGF0ZVJhbmdlT3B0aW9uID0gJ2dvb2dsZUFuYWx5dGljc0RhdGVSYW5nZU9wdGlvbicsXG5cbiAgLy8gRFBJX0dvb2dsZUFuYWx5dGljc0RhdGVSYW5nZU9wdGlvbnMsIGhhdmluZyB0eXBlIEdvb2dsZUFuYWx5dGljc0RhdGVSYW5nZU9wdGlvblByZXNNb2RlbFtdXG4gIEdvb2dsZUFuYWx5dGljc0RhdGVSYW5nZU9wdGlvbnMgPSAnZ29vZ2xlQW5hbHl0aWNzRGF0ZVJhbmdlT3B0aW9ucycsXG5cbiAgLy8gRFBJX0dvb2dsZUFuYWx5dGljc0VuZERhdGUsIGhhdmluZyB0eXBlIEdvb2dsZUFuYWx5dGljc0RhdGVQcmVzTW9kZWxcbiAgR29vZ2xlQW5hbHl0aWNzRW5kRGF0ZSA9ICdnb29nbGVBbmFseXRpY3NFbmREYXRlJyxcblxuICAvLyBEUElfR29vZ2xlQW5hbHl0aWNzU3RhcnREYXRlLCBoYXZpbmcgdHlwZSBHb29nbGVBbmFseXRpY3NEYXRlUHJlc01vZGVsXG4gIEdvb2dsZUFuYWx5dGljc1N0YXJ0RGF0ZSA9ICdnb29nbGVBbmFseXRpY3NTdGFydERhdGUnLFxuXG4gIC8vIERQSV9Hb29nbGVBbmFseXRpY3NEYXRlUmFuZ2UsIGhhdmluZyB0eXBlIEdvb2dsZUFuYWx5dGljc0RhdGVSYW5nZVByZXNNb2RlbFxuICBHb29nbGVBbmFseXRpY3NEYXRlUmFuZ2UgPSAnZ29vZ2xlQW5hbHl0aWNzRGF0ZVJhbmdlJyxcblxuICAvLyBEUElfR29vZ2xlQW5hbHl0aWNzUXVlcnlQYXJ0aXRpb25pbmcsIGhhdmluZyB0eXBlIEdvb2dsZUFuYWx5dGljc1F1ZXJ5UGFydGl0aW9uaW5nUHJlc01vZGVsXG4gIEdvb2dsZUFuYWx5dGljc1F1ZXJ5UGFydGl0aW9uaW5nID0gJ2dvb2dsZUFuYWx5dGljc1F1ZXJ5UGFydGl0aW9uaW5nJyxcblxuICAvLyBEUElfR0FDb25uZWN0aW9uRGVzY3JpcHRpb24sIGhhdmluZyB0eXBlIEdvb2dsZUFuYWx5dGljc0Nvbm5lY3Rpb25EZXNjcmlwdGlvblByZXNNb2RlbFxuICBHQUNvbm5lY3Rpb25EZXNjcmlwdGlvbiA9ICdnYUNvbm5lY3Rpb25EZXNjcmlwdGlvbicsXG5cbiAgLy8gRFBJX0dvb2dsZVNoZWV0SXRlbSwgaGF2aW5nIHR5cGUgR29vZ2xlU2hlZXRJdGVtUHJlc01vZGVsXG4gIEdvb2dsZVNoZWV0SXRlbSA9ICdnb29nbGVTaGVldEl0ZW0nLFxuXG4gIC8vIERQSV9Hb29nbGVTaGVldEl0ZW1zLCBoYXZpbmcgdHlwZSBHb29nbGVTaGVldEl0ZW1QcmVzTW9kZWxbXVxuICBHb29nbGVTaGVldEl0ZW1zID0gJ2dvb2dsZVNoZWV0SXRlbXMnLFxuXG4gIC8vIERQSV9Hb29nbGVTaGVldHNMaXN0UHJlc01vZGVsLCBoYXZpbmcgdHlwZSBHb29nbGVTaGVldHNMaXN0UHJlc01vZGVsXG4gIEdvb2dsZVNoZWV0c0xpc3RQcmVzTW9kZWwgPSAnZ29vZ2xlU2hlZXRzTGlzdCcsXG5cbiAgLy8gRFBJX0dvb2dsZVNoZWV0UGFuZVByZXNNb2RlbCwgaGF2aW5nIHR5cGUgR29vZ2xlU2hlZXRQYW5lUHJlc01vZGVsXG4gIEdvb2dsZVNoZWV0UGFuZVByZXNNb2RlbCA9ICdnb29nbGVTaGVldFBhbmUnLFxuXG4gIC8vIERQSV9UYWJsZWF1U2VydmVyQ29ubmVjdGlvbkRlc2NyaXB0aW9uLCBoYXZpbmcgdHlwZSBUYWJsZWF1U2VydmVyQ29ubmVjdGlvbkRlc2NyaXB0aW9uUHJlc01vZGVsXG4gIFRhYmxlYXVTZXJ2ZXJDb25uZWN0aW9uRGVzY3JpcHRpb24gPSAndGFibGVhdVNlcnZlckNvbm5lY3Rpb25EZXNjcmlwdGlvbicsXG5cbiAgLy8gRFBJX0luaXRpYWxTUUxQcmVzTW9kZWwsIGhhdmluZyB0eXBlIEluaXRpYWxTUUxQcmVzTW9kZWxcbiAgSW5pdGlhbFNRTFByZXNNb2RlbCA9ICdpbml0aWFsU3FsUHJlc01vZGVsJyxcblxuICAvLyBEUElfUXVlcnlCYW5kaW5nUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBRdWVyeUJhbmRpbmdQcmVzTW9kZWxcbiAgUXVlcnlCYW5kaW5nUHJlc01vZGVsID0gJ3F1ZXJ5QmFuZGluZ1ByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX1Nsb3dNZXRhZGF0YSwgaGF2aW5nIHR5cGUgU2xvd01ldGFkYXRhUHJlc01vZGVsXG4gIFNsb3dNZXRhZGF0YSA9ICdzbG93TWV0YWRhdGEnLFxuXG4gIC8vIERQSV9TbG93TWV0YWRhdGFTY2hlbWFTZWFyY2hQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFNsb3dNZXRhZGF0YVNlYXJjaFByZXNNb2RlbFxuICBTbG93TWV0YWRhdGFTY2hlbWFTZWFyY2hQcmVzTW9kZWwgPSAnc2xvd01ldGFkYXRhU2NoZW1hU2VhcmNoJyxcblxuICAvLyBEUElfU2xvd01ldGFkYXRhVGFibGVTZWFyY2hQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFNsb3dNZXRhZGF0YVNlYXJjaFByZXNNb2RlbFxuICBTbG93TWV0YWRhdGFUYWJsZVNlYXJjaFByZXNNb2RlbCA9ICdzbG93TWV0YWRhdGFUYWJsZVNlYXJjaCcsXG5cbiAgLy8gRFBJX1RhYmxlYXVTZXJ2ZXJQcm9qZWN0c1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgVGFibGVhdVNlcnZlclByb2plY3RzUHJlc01vZGVsXG4gIFRhYmxlYXVTZXJ2ZXJQcm9qZWN0c1ByZXNNb2RlbCA9ICd0YWJsZWF1U2VydmVyUHJvamVjdHNQcmVzbW9kZWwnLFxuXG4gIC8vIERQSV9UYWJsZWF1U2VydmVyRGF0YVNvdXJjZVByZXNNb2RlbCwgaGF2aW5nIHR5cGUgVGFibGVhdVNlcnZlckRhdGFTb3VyY2VQcmVzTW9kZWxcbiAgVGFibGVhdVNlcnZlckRhdGFTb3VyY2VQcmVzTW9kZWwgPSAndGFibGVhdVNlcnZlckRhdGFTb3VyY2VQcmVzbW9kZWwnLFxuXG4gIC8vIERQSV9UYWJsZWF1U2VydmVyRGF0YVNvdXJjZVByZXNNb2RlbHMsIGhhdmluZyB0eXBlIFRhYmxlYXVTZXJ2ZXJEYXRhU291cmNlUHJlc01vZGVsW11cbiAgVGFibGVhdVNlcnZlckRhdGFTb3VyY2VQcmVzTW9kZWxzID0gJ3RhYmxlYXVTZXJ2ZXJEYXRhU291cmNlUHJlc21vZGVscycsXG5cbiAgLy8gRFBJX1RhYmxlYXVTZXJ2ZXJEYXRhU291cmNlc1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgVGFibGVhdVNlcnZlckRhdGFTb3VyY2VzUHJlc01vZGVsXG4gIFRhYmxlYXVTZXJ2ZXJEYXRhU291cmNlc1ByZXNNb2RlbCA9ICd0YWJsZWF1U2VydmVyRGF0YVNvdXJjZXNQcmVzbW9kZWwnLFxuXG4gIC8vIERQSV9UYWJsZWF1U2VydmVyRGF0YVByZXNNb2RlbCwgaGF2aW5nIHR5cGUgVGFibGVhdVNlcnZlckRhdGFQcmVzTW9kZWxcbiAgVGFibGVhdVNlcnZlckRhdGFQcmVzTW9kZWwgPSAndGFibGVhdVNlcnZlckRhdGFQcmVzbW9kZWwnLFxuXG4gIC8vIERQSV9TdG9yZWRQcm9jZWR1cmVQYXJhbWV0ZXJQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFN0b3JlZFByb2NlZHVyZVBhcmFtZXRlclByZXNNb2RlbFxuICBTdG9yZWRQcm9jZWR1cmVQYXJhbWV0ZXJQcmVzTW9kZWwgPSAnc3RvcmVkUHJvY2VkdXJlUGFyYW1ldGVyJyxcblxuICAvLyBEUElfU3RvcmVkUHJvY2VkdXJlUGFyYW1ldGVyc1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgU3RvcmVkUHJvY2VkdXJlUGFyYW1ldGVyUHJlc01vZGVsW11cbiAgU3RvcmVkUHJvY2VkdXJlUGFyYW1ldGVyc1ByZXNNb2RlbCA9ICdzdG9yZWRQcm9jZWR1cmVQYXJhbWV0ZXJzJyxcblxuICAvLyBEUElfQ3VzdG9tU1FMSW5mbywgaGF2aW5nIHR5cGUgQ3VzdG9tU1FMSW5mb1ByZXNNb2RlbFxuICBDdXN0b21TUUxJbmZvID0gJ2N1c3RvbVNxbEluZm8nLFxuXG4gIC8vIERQSV9Db25uZWN0aW9uVGFibGVJbmZvLCBoYXZpbmcgdHlwZSBDb25uZWN0aW9uVGFibGVJbmZvUHJlc01vZGVsXG4gIENvbm5lY3Rpb25UYWJsZUluZm8gPSAnY29ubmVjdGlvblRhYmxlSW5mbycsXG5cbiAgLy8gRFBJX1RhYmxlSW5mb3MsIGhhdmluZyB0eXBlIENvbm5lY3Rpb25UYWJsZUluZm9QcmVzTW9kZWxbXVxuICBUYWJsZUluZm9zID0gJ3RhYmxlSW5mb3MnLFxuXG4gIC8vIERQSV9Db25uZWN0aW9uRGVzY3JpcHRpb24sIGhhdmluZyB0eXBlIENvbm5lY3Rpb25EZXNjcmlwdGlvblByZXNNb2RlbFxuICBDb25uZWN0aW9uRGVzY3JpcHRpb24gPSAnY29ubmVjdGlvbkRlc2NyaXB0aW9uJyxcblxuICAvLyBEUElfRGF0YVNvdXJjZVBhcnNlclZhbGlkYXRpb25Nb2RlLCBoYXZpbmcgdHlwZSBEYXRhU291cmNlUGFyc2VyVmFsaWRhdGlvbk1vZGVcbiAgRGF0YVNvdXJjZVBhcnNlclZhbGlkYXRpb25Nb2RlID0gJ2RhdGFTb3VyY2VQYXJzZXJWYWxpZGF0aW9uTW9kZScsXG5cbiAgLy8gRFBJX09BdXRoQ3JlZGVudGlhbFR5cGVJbmZvLCBoYXZpbmcgdHlwZSBPQXV0aENyZWRlbnRpYWxUeXBlSW5mb1ByZXNNb2RlbFxuICBPQXV0aENyZWRlbnRpYWxUeXBlSW5mbyA9ICdvYXV0aENyZWRlbnRpYWxUeXBlSW5mbycsXG5cbiAgLy8gRFBJX09BdXRoQ3JlZGVudGlhbFR5cGVJbmZvcywgaGF2aW5nIHR5cGUgT0F1dGhDcmVkZW50aWFsVHlwZUluZm9QcmVzTW9kZWxbXVxuICBPQXV0aENyZWRlbnRpYWxUeXBlSW5mb3MgPSAnb2F1dGhDcmVkZW50aWFsVHlwZUluZm9zJyxcblxuICAvLyBEUElfT0F1dGhTZXR0aW5ncywgaGF2aW5nIHR5cGUgT0F1dGhTZXR0aW5nc1ByZXNNb2RlbFxuICBPQXV0aFNldHRpbmdzID0gJ29hdXRoU2V0dGluZ3MnLFxuXG4gIC8vIERQSV9DcmVkZW50aWFsVHlwZVByb3BlcnRpZXNGbGFnLCBoYXZpbmcgdHlwZSBDcmVkZW50aWFsVHlwZVByb3BlcnRpZXNGbGFnXG4gIENyZWRlbnRpYWxUeXBlUHJvcGVydGllc0ZsYWcgPSAnY3JlZGVudGlhbFR5cGVQcm9wZXJ0aWVzRmxhZycsXG5cbiAgLy8gRFBJX0NyZWRlbnRpYWxUeXBlUHJvcGVydGllc0ZsYWdzLCBoYXZpbmcgdHlwZSBDcmVkZW50aWFsVHlwZVByb3BlcnRpZXNGbGFnW11cbiAgQ3JlZGVudGlhbFR5cGVQcm9wZXJ0aWVzRmxhZ3MgPSAnY3JlZGVudGlhbFR5cGVQcm9wZXJ0aWVzRmxhZ3MnLFxuXG4gIC8vIERQSV9Db25uZWN0aW9uVHlwZUVudW0sIGhhdmluZyB0eXBlIENvbm5lY3Rpb25UeXBlRW51bVxuICBDb25uZWN0aW9uVHlwZUVudW0gPSAnY29ubmVjdGlvblR5cGVFbnVtJyxcblxuICAvLyBEUElfQ29ubmVjdG9yVHlwZSwgaGF2aW5nIHR5cGUgQ29ubmVjdG9yVHlwZVxuICBDb25uZWN0b3JUeXBlID0gJ2Nvbm5lY3RvclR5cGUnLFxuXG4gIC8vIERQSV9QZGZQYWdlUGlja2VyLCBoYXZpbmcgdHlwZSBQZGZQYWdlUGlja2VyUHJlc01vZGVsXG4gIFBkZlBhZ2VQaWNrZXIgPSAncGRmUGFnZVBpY2tlcicsXG5cbiAgLy8gRFBJX0FjdGl2YXRlTmV3LCBoYXZpbmcgdHlwZSBib29sXG4gIEFjdGl2YXRlTmV3ID0gJ2FjdGl2YXRlTmV3JyxcblxuICAvLyBEUElfQWRkQWN0aW9ucywgaGF2aW5nIHR5cGUgYm9vbFxuICBBZGRBY3Rpb25zID0gJ2FkZEFjdGlvbnMnLFxuXG4gIC8vIERQSV9BZGRBc0Zsb2F0aW5nLCBoYXZpbmcgdHlwZSBib29sXG4gIEFkZEFzRmxvYXRpbmcgPSAnYWRkQXNGbG9hdGluZycsXG5cbiAgLy8gRFBJX0FkZENvbG9yRGljdGlvbmFyeSwgaGF2aW5nIHR5cGUgYm9vbFxuICBBZGRDb2xvckRpY3Rpb25hcnkgPSAnYWRkQ29sb3JEaWN0aW9uYXJ5JyxcblxuICAvLyBEUElfQWRkRHJvcGxpbmVzLCBoYXZpbmcgdHlwZSBib29sXG4gIEFkZERyb3BsaW5lcyA9ICdhZGREcm9wbGluZXMnLFxuXG4gIC8vIERQSV9BZGRIZWFkZXJzLCBoYXZpbmcgdHlwZSBib29sXG4gIEFkZEhlYWRlcnMgPSAnYWRkSGVhZGVycycsXG5cbiAgLy8gRFBJX0FkZEhpZ2hsaWdodGluZywgaGF2aW5nIHR5cGUgYm9vbFxuICBBZGRIaWdobGlnaHRpbmcgPSAnYWRkSGlnaGxpZ2h0aW5nJyxcblxuICAvLyBEUElfQWRkSW1hZ2VEaWN0aW9uYXJ5LCBoYXZpbmcgdHlwZSBib29sXG4gIEFkZEltYWdlRGljdGlvbmFyeSA9ICdhZGRJbWFnZURpY3Rpb25hcnknLFxuXG4gIC8vIERQSV9BZGRNYXJrTGFiZWxzLCBoYXZpbmcgdHlwZSBib29sXG4gIEFkZE1hcmtMYWJlbHMgPSAnYWRkTWFya0xhYmVscycsXG5cbiAgLy8gRFBJX0FkZFBhZ2VzLCBoYXZpbmcgdHlwZSBib29sXG4gIEFkZFBhZ2VzID0gJ2FkZFBhZ2VzJyxcblxuICAvLyBEUElfQWRkU2VsZWN0aW9uLCBoYXZpbmcgdHlwZSBib29sXG4gIEFkZFNlbGVjdGlvbiA9ICdhZGRTZWxlY3Rpb24nLFxuXG4gIC8vIERQSV9BZGRUb0ZvbGRlciwgaGF2aW5nIHR5cGUgYm9vbFxuICBBZGRUb0ZvbGRlciA9ICdhZGRUb0ZvbGRlcicsXG5cbiAgLy8gRFBJX0FkZFZpekRhdGEsIGhhdmluZyB0eXBlIGJvb2xcbiAgQWRkVml6RGF0YSA9ICdhZGRWaXpEYXRhJyxcblxuICAvLyBEUElfQWxlcnRDb25kaXRpb25NZXQsIGhhdmluZyB0eXBlIGJvb2xcbiAgQWxlcnRDb25kaXRpb25NZXQgPSAnYWxlcnRDb25kaXRpb25NZXQnLFxuXG4gIC8vIERQSV9BbGxGaWVsZHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgQWxsRmllbGRzID0gJ2FsbEZpZWxkcycsXG5cbiAgLy8gRFBJX0FsbE9uRW1wdHksIGhhdmluZyB0eXBlIGJvb2xcbiAgQWxsT25FbXB0eSA9ICdhbGxPbkVtcHR5JyxcblxuICAvLyBEUElfQWxsUGFnZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgQWxsUGFnZXMgPSAnaW5jbHVkZUFsbFBhZ2VzJyxcblxuICAvLyBEUElfQWxsb3dQcmV2aWV3U2l6ZUNoYW5nZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBBbGxvd1ByZXZpZXdTaXplQ2hhbmdlID0gJ2FsbG93UHJldmlld1NpemVDaGFuZ2UnLFxuXG4gIC8vIERQSV9BbGxTZWxlY3RlZElzRWZmZWN0aXZlbHlSYW5nZVR5cGVBbGwsIGhhdmluZyB0eXBlIGJvb2xcbiAgQWxsU2VsZWN0ZWRJc0VmZmVjdGl2ZWx5UmFuZ2VUeXBlQWxsID0gJ2FsbFNlbGVjdGVkSXNFZmZlY3RpdmVseVJhbmdlVHlwZUFsbCcsXG5cbiAgLy8gRFBJX0FsbFN0b3J5UG9pbnRzLCBoYXZpbmcgdHlwZSBib29sXG4gIEFsbFN0b3J5UG9pbnRzID0gJ2FsbFN0b3J5cG9pbnRzJyxcblxuICAvLyBEUElfQWxsb3dBbGxSYW5nZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBBbGxvd0FsbFJhbmdlID0gJ2FsbG93QWxsUmFuZ2UnLFxuXG4gIC8vIERQSV9BbGxvd0NyZWF0aW5nTmV3UGFyYW1ldGVycywgaGF2aW5nIHR5cGUgYm9vbFxuICBBbGxvd0NyZWF0aW5nTmV3UGFyYW1ldGVycyA9ICdhbGxvd0NyZWF0aW5nTmV3UGFyYW1ldGVycycsXG5cbiAgLy8gRFBJX0FsbG93RHVwbGljYXRlRmllbGREcm9wT25GaWx0ZXJTaGVsZiwgaGF2aW5nIHR5cGUgYm9vbFxuICBBbGxvd0R1cGxpY2F0ZUZpZWxkRHJvcE9uRmlsdGVyU2hlbGYgPSAnYWxsb3dEdXBsaWNhdGVGaWVsZERyb3BPbkZpbHRlclNoZWxmJyxcblxuICAvLyBEUElfQWxsb3dGaWx0ZXJQcmVzZXQsIGhhdmluZyB0eXBlIGJvb2xcbiAgQWxsb3dGaWx0ZXJQcmVzZXQgPSAnYWxsb3dGaWx0ZXJQcmVzZXQnLFxuXG4gIC8vIERQSV9BbGxvd0hvdmVyQWN0aW9ucywgaGF2aW5nIHR5cGUgYm9vbFxuICBBbGxvd0hvdmVyQWN0aW9ucyA9ICdhbGxvd0hvdmVyQWN0aW9ucycsXG5cbiAgLy8gRFBJX0FsbG93SHlwaGVuYXRpb24sIGhhdmluZyB0eXBlIGJvb2xcbiAgQWxsb3dIeXBoZW5hdGlvbiA9ICdhbGxvd0h5cGhlbmF0aW9uJyxcblxuICAvLyBEUElfQWxsb3dKb2luT25DYWxjLCBoYXZpbmcgdHlwZSBib29sXG4gIEFsbG93Sm9pbk9uQ2FsYyA9ICdhbGxvd0pvaW5PbkNhbGMnLFxuXG4gIC8vIERQSV9BbGxvd01hbnVhbFJhbmdlLCBoYXZpbmcgdHlwZSBib29sXG4gIEFsbG93TWFudWFsUmFuZ2UgPSAnYWxsb3dNYW51YWxSYW5nZScsXG5cbiAgLy8gRFBJX0FsbG93TWFwcGluZywgaGF2aW5nIHR5cGUgYm9vbFxuICBBbGxvd01hcHBpbmcgPSAnYWxsb3dNYXBwaW5nJyxcblxuICAvLyBEUElfQWxsb3dNdWx0aVNlbGVjdCwgaGF2aW5nIHR5cGUgYm9vbFxuICBBbGxvd011bHRpU2VsZWN0ID0gJ2FsbG93TXVsdGlTZWxlY3QnLFxuXG4gIC8vIERQSV9BbGxvd051bGwsIGhhdmluZyB0eXBlIGJvb2xcbiAgQWxsb3dOdWxsID0gJ2FsbG93TnVsbCcsXG5cbiAgLy8gRFBJX0FsbG93UGFuWm9vbSwgaGF2aW5nIHR5cGUgYm9vbFxuICBBbGxvd1Bhblpvb20gPSAnYWxsb3dQYW5ab29tJyxcblxuICAvLyBEUElfQWxsb3dQYXR0ZXJuQmFzZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgQWxsb3dQYXR0ZXJuQmFzZWQgPSAnYWxsb3dQYXR0ZXJuQmFzZWRVbmlvbicsXG5cbiAgLy8gRFBJX0FsbG93UHJvbXB0VGV4dCwgaGF2aW5nIHR5cGUgYm9vbFxuICBBbGxvd1Byb21wdFRleHQgPSAnYWxsb3dQcm9tcHRUZXh0JyxcblxuICAvLyBEUElfQWxsb3dTYXZlRGF0YVNvdXJjZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBBbGxvd1NhdmVEYXRhU291cmNlID0gJ2FsbG93U2F2ZURhdGFTb3VyY2UnLFxuXG4gIC8vIERQSV9BbGxvd1dob2xlRGF0ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBBbGxvd1dob2xlRGF0ZSA9ICdhbGxvd1dob2xlRGF0ZScsXG5cbiAgLy8gRFBJX0FsbG93V29yaywgaGF2aW5nIHR5cGUgYm9vbFxuICBBbGxvd1dvcmsgPSAnYWxsb3dXb3JrJyxcblxuICAvLyBEUElfQWxsb3dXcmFwLCBoYXZpbmcgdHlwZSBib29sXG4gIEFsbG93V3JhcCA9ICdhbGxvd1dyYXAnLFxuXG4gIC8vIERQSV9BcHBJczMyQml0LCBoYXZpbmcgdHlwZSBib29sXG4gIEFwcElzMzJCaXQgPSAnYXBwSXMzMkJpdCcsXG5cbiAgLy8gRFBJX0FwcElzNjRCaXQsIGhhdmluZyB0eXBlIGJvb2xcbiAgQXBwSXM2NEJpdCA9ICdhcHBJczY0Qml0JyxcblxuICAvLyBEUElfQXBwSXNCZXRhLCBoYXZpbmcgdHlwZSBib29sXG4gIEFwcElzQmV0YSA9ICdhcHBJc0JldGEnLFxuXG4gIC8vIERQSV9BcHBJc09FTSwgaGF2aW5nIHR5cGUgYm9vbFxuICBBcHBJc09FTSA9ICdhcHBJc09lbScsXG5cbiAgLy8gRFBJX0FwcGVuZFRkZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBBcHBlbmRUZGUgPSAnYXBwZW5kVGRlJyxcblxuICAvLyBEUElfQXBwbHlDb2xvcnMsIGhhdmluZyB0eXBlIGJvb2xcbiAgQXBwbHlDb2xvcnMgPSAnYXBwbHlDb2xvcnMnLFxuXG4gIC8vIERQSV9BcHBseU5ld1NlbGVjdGlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBBcHBseU5ld1NlbGVjdGlvbiA9ICdhcHBseU5ld1NlbGVjdGlvbicsXG5cbiAgLy8gRFBJX0FyZUNvbmZpZGVuY2VCYW5kc1ZhbGlkLCBoYXZpbmcgdHlwZSBib29sXG4gIEFyZUNvbmZpZGVuY2VCYW5kc1ZhbGlkID0gJ2FyZUNvbmZpZGVuY2VCYW5kc1ZhbGlkJyxcblxuICAvLyBEUElfQXJlRGF0YVNvdXJjZUZpbHRlcnNWaXNpYmxlLCBoYXZpbmcgdHlwZSBib29sXG4gIEFyZURhdGFTb3VyY2VGaWx0ZXJzVmlzaWJsZSA9ICdhcmVEYXRhU291cmNlRmlsdGVyc1Zpc2libGUnLFxuXG4gIC8vIERQSV9BcmVFeHRyYWN0RmlsdGVyc0VuYWJsZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgQXJlRXh0cmFjdEZpbHRlcnNFbmFibGVkID0gJ2FyZUV4dHJhY3RGaWx0ZXJzRW5hYmxlZCcsXG5cbiAgLy8gRFBJX0FyZVRvdGFsc1VzZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgQXJlVG90YWxzVXNlZCA9ICdhcmVUb3RhbHNVc2VkJyxcblxuICAvLyBEUElfQXRUaGVMZXZlbEZpZWxkSXNJbnZhbGlkLCBoYXZpbmcgdHlwZSBib29sXG4gIEF0VGhlTGV2ZWxGaWVsZElzSW52YWxpZCA9ICdhdFRoZUxldmVsRmllbGRJc0ludmFsaWQnLFxuXG4gIC8vIERQSV9BdXRvVVJMLCBoYXZpbmcgdHlwZSBib29sXG4gIEF1dG9VUkwgPSAnYXV0b1VybCcsXG5cbiAgLy8gRFBJX0F1dG9VcGRhdGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgQXV0b1VwZGF0ZSA9ICdhdXRvVXBkYXRlJyxcblxuICAvLyBEUElfQmFja2luZ1NoZWV0SXNEYXNoYm9hcmQsIGhhdmluZyB0eXBlIGJvb2xcbiAgQmFja2luZ1NoZWV0SXNEYXNoYm9hcmQgPSAnaXNCYWNraW5nU2hlZXREYXNoYm9hcmQnLFxuXG4gIC8vIERQSV9CZWdpbkRhdGFTb3VyY2VQcmVzTW9kZWxVcGRhdGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgQmVnaW5EYXRhU291cmNlUHJlc01vZGVsVXBkYXRlID0gJ2JlZ2luRGF0YVNvdXJjZVByZXNNb2RlbFVwZGF0ZScsXG5cbiAgLy8gRFBJX0FnZ3JlZ2F0ZURyaWxsVXAsIGhhdmluZyB0eXBlIGJvb2xcbiAgQWdncmVnYXRlRHJpbGxVcCA9ICdib29sQWdncmVnYXRlRHJpbGxVcCcsXG5cbiAgLy8gRFBJX0JveHBsb3RNYXJrRXhjbHVzaW9uLCBoYXZpbmcgdHlwZSBib29sXG4gIEJveHBsb3RNYXJrRXhjbHVzaW9uID0gJ2JveHBsb3RNYXJrRXhjbHVzaW9uJyxcblxuICAvLyBEUElfQnJlYWtQYWdlT25QYW5lLCBoYXZpbmcgdHlwZSBib29sXG4gIEJyZWFrUGFnZU9uUGFuZSA9ICdicmVha1BhZ2VPblBhbmUnLFxuXG4gIC8vIERQSV9CcnVzaExlZ2VuZHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgQnJ1c2hMZWdlbmRzID0gJ2JydXNoTGVnZW5kcycsXG5cbiAgLy8gRFBJX0NhY2hlUHJlc01vZGVscywgaGF2aW5nIHR5cGUgYm9vbFxuICBDYWNoZVByZXNNb2RlbHMgPSAnY2FjaGVQcmVzTW9kZWxzJyxcblxuICAvLyBEUElfQ2FuQWRkQ29ubmVjdGlvbnMsIGhhdmluZyB0eXBlIGJvb2xcbiAgQ2FuQWRkQ29ubmVjdGlvbnMgPSAnY2FuQWRkQ29ubmVjdGlvbnMnLFxuXG4gIC8vIERQSV9Tb3J0UGlsbENhbkJlRHJhZ2dlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBTb3J0UGlsbENhbkJlRHJhZ2dlZCA9ICdzb3J0UGlsbENhbkJlRHJhZ2dlZCcsXG5cbiAgLy8gRFBJX0NhbkFkZFRhYmxlLCBoYXZpbmcgdHlwZSBib29sXG4gIENhbkFkZFRhYmxlID0gJ2NhbkFkZFRhYmxlJyxcblxuICAvLyBEUElfQ2FuQW5hbHl6ZURhdGEsIGhhdmluZyB0eXBlIGJvb2xcbiAgQ2FuQW5hbHl6ZURhdGEgPSAnY2FuQW5hbHl6ZURhdGEnLFxuXG4gIC8vIERQSV9DYW5DaGFuZ2VEYXRhVHlwZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBDYW5DaGFuZ2VEYXRhVHlwZSA9ICdjYW5DaGFuZ2VEYXRhVHlwZScsXG5cbiAgLy8gRFBJX0NhbkNoYW5nZVNlbWFudGljUm9sZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBDYW5DaGFuZ2VTZW1hbnRpY1JvbGUgPSAnY2FuQ2hhbmdlU2VtYW50aWNSb2xlJyxcblxuICAvLyBEUElfQ2FuRGVyaXZlLCBoYXZpbmcgdHlwZSBib29sXG4gIENhbkRlcml2ZSA9ICdjYW5EZXJpdmUnLFxuXG4gIC8vIERQSV9DYW5Ecm9wLCBoYXZpbmcgdHlwZSBib29sXG4gIENhbkRyb3AgPSAnY2FuRHJvcCcsXG5cbiAgLy8gRFBJX0NhbkVkaXQsIGhhdmluZyB0eXBlIGJvb2xcbiAgQ2FuRWRpdCA9ICdjYW5FZGl0JyxcblxuICAvLyBEUElfQ2FuRWRpdExlZ2VuZENvbG9yLCBoYXZpbmcgdHlwZSBib29sXG4gIENhbkVkaXRMZWdlbmRDb2xvciA9ICdjYW5FZGl0TGVnZW5kQ29sb3InLFxuXG4gIC8vIERQSV9DYW5FbmFibGVDZW50ZXIsIGhhdmluZyB0eXBlIGJvb2xcbiAgQ2FuRW5hYmxlQ2VudGVyID0gJ2NhbkVuYWJsZUNlbnRlcicsXG5cbiAgLy8gRFBJX0NhblNob3dBZHZhbmNlZFNldHRpbmdzLCBoYXZpbmcgdHlwZSBib29sXG4gIENhblNob3dBZHZhbmNlZFNldHRpbmdzID0gJ2NhblNob3dBZHZhbmNlZFNldHRpbmdzJyxcblxuICAvLyBEUElfQ2FuRW5hYmxlRmlsdGVyU3RhdGVCdXR0b24sIGhhdmluZyB0eXBlIGJvb2xcbiAgQ2FuRW5hYmxlRmlsdGVyU3RhdGVCdXR0b24gPSAnY2FuRW5hYmxlRmlsdGVyU3RhdGVCdXR0b24nLFxuXG4gIC8vIERQSV9DYW5GbG9hdCwgaGF2aW5nIHR5cGUgYm9vbFxuICBDYW5GbG9hdCA9ICdjYW5GbG9hdCcsXG5cbiAgLy8gRFBJX0NhbkhhdmVUaXRsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBDYW5IYXZlVGl0bGUgPSAnY2FuSGF2ZVRpdGxlJyxcblxuICAvLyBEUElfQ2FuSWdub3JlVXBkYXRlLCBoYXZpbmcgdHlwZSBib29sXG4gIENhbklnbm9yZVVwZGF0ZSA9ICdjYW5JZ25vcmVVcGRhdGUnLFxuXG4gIC8vIERQSV9DYW5OYXZpZ2F0ZUJhY2ssIGhhdmluZyB0eXBlIGJvb2xcbiAgQ2FuTmF2aWdhdGVCYWNrID0gJ2Nhbk5hdmlnYXRlQmFjaycsXG5cbiAgLy8gRFBJX0Nhbk5hdmlnYXRlRm9yd2FyZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBDYW5OYXZpZ2F0ZUZvcndhcmQgPSAnY2FuTmF2aWdhdGVGb3J3YXJkJyxcblxuICAvLyBEUElfQ2FuU2Nyb2xsWCwgaGF2aW5nIHR5cGUgYm9vbFxuICBDYW5TY3JvbGxYID0gJ2NhblNjcm9sbFgnLFxuXG4gIC8vIERQSV9DYW5TY3JvbGxZLCBoYXZpbmcgdHlwZSBib29sXG4gIENhblNjcm9sbFkgPSAnY2FuU2Nyb2xsWScsXG5cbiAgLy8gRFBJX0NhblNldERvbWFpbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBDYW5TZXREb21haW4gPSAnY2FuU2V0RG9tYWluJyxcblxuICAvLyBEUElfQ2FuU2V0TWFwVW5pdCwgaGF2aW5nIHR5cGUgYm9vbFxuICBDYW5TZXRNYXBVbml0ID0gJ2NhblNldE1hcFVuaXQnLFxuXG4gIC8vIERQSV9DYW5TaG93QXBwbHlCdXR0b24sIGhhdmluZyB0eXBlIGJvb2xcbiAgQ2FuU2hvd0FwcGx5QnV0dG9uID0gJ2NhblNob3dBcHBseUJ1dHRvbicsXG5cbiAgLy8gRFBJX0NhblNob3dGaWx0ZXJTdGF0ZUJ1dHRvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBDYW5TaG93RmlsdGVyU3RhdGVCdXR0b24gPSAnY2FuU2hvd0ZpbHRlclN0YXRlQnV0dG9uJyxcblxuICAvLyBEUElfQ2FuU2hvd01vcmVGZXdlckJ1dHRvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBDYW5TaG93TW9yZUZld2VyQnV0dG9uID0gJ2NhblNob3dNb3JlRmV3ZXJCdXR0b24nLFxuXG4gIC8vIERQSV9DYW5TaG93U3luY0NsaWVudE9wdGlvbnMsIGhhdmluZyB0eXBlIGJvb2xcbiAgQ2FuU2hvd1N5bmNDbGllbnRPcHRpb25zID0gJ2NhblNob3dTeW5jQ2xpZW50T3B0aW9ucycsXG5cbiAgLy8gRFBJX0NhblNvcnQsIGhhdmluZyB0eXBlIGJvb2xcbiAgQ2FuU29ydCA9ICdjYW5Tb3J0JyxcblxuICAvLyBEUElfQ2FuU29ydE9yZGluYWxseSwgaGF2aW5nIHR5cGUgYm9vbFxuICBDYW5Tb3J0T3JkaW5hbGx5ID0gJ2NhblNvcnRPcmRpbmFsJyxcblxuICAvLyBEUElfQ2FuVG9nZ2xlQXV0b21hdGljRHJpbGwsIGhhdmluZyB0eXBlIGJvb2xcbiAgQ2FuVG9nZ2xlQXV0b21hdGljRHJpbGwgPSAnY2FuVG9nZ2xlQXV0b21hdGljRHJpbGwnLFxuXG4gIC8vIERQSV9DYW5Ub2dnbGVHZW9ncmFwaGljU2VhcmNoLCBoYXZpbmcgdHlwZSBib29sXG4gIENhblRvZ2dsZUdlb2dyYXBoaWNTZWFyY2ggPSAnY2FuVG9nZ2xlR2VvZ3JhcGhpY1NlYXJjaCcsXG5cbiAgLy8gRFBJX0NhblRvZ2dsZU1hcFNjYWxlLCBoYXZpbmcgdHlwZSBib29sXG4gIENhblRvZ2dsZU1hcFNjYWxlID0gJ2NhblRvZ2dsZU1hcFNjYWxlJyxcblxuICAvLyBEUElfQ2FuVXNlRnVsbENvbG9yUmFuZ2UsIGhhdmluZyB0eXBlIGJvb2xcbiAgQ2FuVXNlRnVsbENvbG9yUmFuZ2UgPSAnY2FuVXNlRnVsbENvbG9yUmFuZ2UnLFxuXG4gIC8vIERQSV9DYW5BZGRUb0RyaWxsUGF0aCwgaGF2aW5nIHR5cGUgYm9vbFxuICBDYW5BZGRUb0RyaWxsUGF0aCA9ICdjYW5BZGRUb0RyaWxsUGF0aCcsXG5cbiAgLy8gRFBJX0NlbnRlckhvcml6b250YWxseSwgaGF2aW5nIHR5cGUgYm9vbFxuICBDZW50ZXJIb3Jpem9udGFsbHkgPSAnY2VudGVySG9yaXpvbnRhbGx5JyxcblxuICAvLyBEUElfQ2VudGVyVmVydGljYWxseSwgaGF2aW5nIHR5cGUgYm9vbFxuICBDZW50ZXJWZXJ0aWNhbGx5ID0gJ2NlbnRlclZlcnRpY2FsbHknLFxuXG4gIC8vIERQSV9DaGFuZ2VBbGxGaWVsZHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgQ2hhbmdlQWxsRmllbGRzID0gJ2NoYW5nZUFsbEZpZWxkcycsXG5cbiAgLy8gRFBJX0NoYW5nZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgQ2hhbmdlZCA9ICdjaGFuZ2VkJyxcblxuICAvLyBEUElfQ2xlYXJCcnVzaGluZywgaGF2aW5nIHR5cGUgYm9vbFxuICBDbGVhckJydXNoaW5nID0gJ2NsZWFyQnJ1c2hpbmcnLFxuXG4gIC8vIERQSV9DbGVhclNvcnQsIGhhdmluZyB0eXBlIGJvb2xcbiAgQ2xlYXJTb3J0ID0gJ2NsZWFyU29ydCcsXG5cbiAgLy8gRFBJX0NsZWFyVmlldywgaGF2aW5nIHR5cGUgYm9vbFxuICBDbGVhclZpZXcgPSAnY2xlYXJWaWV3JyxcblxuICAvLyBEUElfQ29sbGFwc2VkLCBoYXZpbmcgdHlwZSBib29sXG4gIENvbGxhcHNlZCA9ICdjb2xsYXBzZWQnLFxuXG4gIC8vIERQSV9Db25zb2xpZGF0ZUluQ29tbWl0LCBoYXZpbmcgdHlwZSBib29sXG4gIENvbnNvbGlkYXRlSW5Db21taXQgPSAnY29uc29saWRhdGVJbkNvbW1pdCcsXG5cbiAgLy8gRFBJX0NsdXN0ZXJFbmFibGVTY2FsZWRDaGVja2JveCwgaGF2aW5nIHR5cGUgYm9vbFxuICBDbHVzdGVyRW5hYmxlU2NhbGVkQ2hlY2tib3ggPSAnY2x1c3RlckVuYWJsZVNjYWxlZENoZWNrYm94JyxcblxuICAvLyBEUElfQ29tbWl0UGlsbEZpbmlzaGVkLCBoYXZpbmcgdHlwZSBib29sXG4gIENvbW1pdFBpbGxGaW5pc2hlZCA9ICdjb21taXRQaWxsRmluaXNoZWQnLFxuXG4gIC8vIERQSV9Db21wcmVzc0FycmF5cywgaGF2aW5nIHR5cGUgYm9vbFxuICBDb21wcmVzc0FycmF5cyA9ICdjb21wcmVzc0FycmF5cycsXG5cbiAgLy8gRFBJX0NvbXB1dGVDb21wb3VuZGVkUmF0ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBDb21wdXRlQ29tcG91bmRlZFJhdGUgPSAnY29tcHV0ZUNvbXBvdW5kZWRSYXRlJyxcblxuICAvLyBEUElfQ29uZmlkZW5jZUludGVydmFsQWxsb3dlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBDb25maWRlbmNlSW50ZXJ2YWxBbGxvd2VkID0gJ2NvbmZpZGVuY2VJbnRlcnZhbEFsbG93ZWQnLFxuXG4gIC8vIERQSV9Db25maWdJc0Rlc2t0b3BTdGFuZGFyZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBDb25maWdJc0Rlc2t0b3BTdGFuZGFyZCA9ICdjb25maWdJc0Rlc2t0b3BTdGFuZGFyZCcsXG5cbiAgLy8gRFBJX0NvbmZpZ0lzSW50ZXJhY3RvciwgaGF2aW5nIHR5cGUgYm9vbFxuICBDb25maWdJc0ludGVyYWN0b3IgPSAnY29uZmlnSXNJbnRlcmFjdG9yJyxcblxuICAvLyBEUElfQ29uZmlnSXNQdWJsaWMsIGhhdmluZyB0eXBlIGJvb2xcbiAgQ29uZmlnSXNQdWJsaWMgPSAnY29uZmlnSXNQdWJsaWMnLFxuXG4gIC8vIERQSV9Db25maWdJc1JlYWRlciwgaGF2aW5nIHR5cGUgYm9vbFxuICBDb25maWdJc1JlYWRlciA9ICdjb25maWdJc1JlYWRlcicsXG5cbiAgLy8gRFBJX0NvbnRhaW5zUXVhbnQsIGhhdmluZyB0eXBlIGJvb2xcbiAgQ29udGFpbnNRdWFudCA9ICdjb250YWluc1F1YW50JyxcblxuICAvLyBEUElfQ29udGFpbnNWYWxpZERhdGFzb3VyY2VzLCBoYXZpbmcgdHlwZSBib29sXG4gIENvbnRhaW5zVmFsaWREYXRhc291cmNlcyA9ICdjb250YWluc1ZhbGlkRGF0YXNvdXJjZXMnLFxuXG4gIC8vIERQSV9Db250cm9sbGVyTWlzc2luZywgaGF2aW5nIHR5cGUgYm9vbFxuICBDb250cm9sbGVyTWlzc2luZyA9ICdjb250cm9sbGVyTWlzc2luZycsXG5cbiAgLy8gRFBJX0NyZWF0ZUV4dHJhY3RGb3JQdWJsaXNoLCBoYXZpbmcgdHlwZSBib29sXG4gIENyZWF0ZUV4dHJhY3RGb3JQdWJsaXNoID0gJ2NyZWF0ZUV4dHJhY3RGb3JQdWJsaXNoJyxcblxuICAvLyBEUElfQ3Jvc3NUYWIsIGhhdmluZyB0eXBlIGJvb2xcbiAgQ3Jvc3NUYWIgPSAnY3Jvc3NUYWInLFxuXG4gIC8vIERQSV9DdWxsTGFiZWxzLCBoYXZpbmcgdHlwZSBib29sXG4gIEN1bGxMYWJlbHMgPSAnY3VsbExhYmVscycsXG5cbiAgLy8gRFBJX0N1cnJlbnRDdXN0Vmlld0lkRmxhZywgaGF2aW5nIHR5cGUgYm9vbFxuICBDdXJyZW50Q3VzdFZpZXdJZEZsYWcgPSAnaXNDdXJyZW50Q3VzdFZpZXdJZFZhbGlkJyxcblxuICAvLyBEUElfRGFzaGJvYXJkRW5hYmxlU25hcCwgaGF2aW5nIHR5cGUgYm9vbFxuICBEYXNoYm9hcmRFbmFibGVTbmFwID0gJ2Rhc2hib2FyZEVuYWJsZVNuYXAnLFxuXG4gIC8vIERQSV9EYXNoYm9hcmRTaG93R3JpZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBEYXNoYm9hcmRTaG93R3JpZCA9ICdkYXNoYm9hcmRTaG93R3JpZCcsXG5cbiAgLy8gRFBJX0RhdGFHcmlkU29ydE9yZGVyLCBoYXZpbmcgdHlwZSBib29sXG4gIERhdGFHcmlkU29ydE9yZGVyID0gJ2RhdGFncmlkU29ydE9yZGVyJyxcblxuICAvLyBEUElfRGVsZXRlRXh0cmFjdCwgaGF2aW5nIHR5cGUgYm9vbFxuICBEZWxldGVFeHRyYWN0ID0gJ2RlbGV0ZUV4dHJhY3QnLFxuXG4gIC8vIERQSV9EZWxldGVPbmx5U3BlY2lmaWVkU2VsZWN0aW9uLCBoYXZpbmcgdHlwZSBib29sXG4gIERlbGV0ZU9ubHlTcGVjaWZpZWRTZWxlY3Rpb24gPSAnZGVsZXRlT25seVNwZWNpZmllZFNlbGVjdGlvbicsXG5cbiAgLy8gRFBJX0RlbGV0ZU9ycGhhbnMsIGhhdmluZyB0eXBlIGJvb2xcbiAgRGVsZXRlT3JwaGFucyA9ICdkZWxldGVPcnBoYW5zJyxcblxuICAvLyBEUElfRGlzYWJsZWREYXRhQ29ubmVjdGlvbkNsYXNzTmFtZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgRGlzYWJsZWREYXRhQ29ubmVjdGlvbkNsYXNzTmFtZXMgPSAnZGlzYWJsZWREYXRhQ29ubmVjdGlvbkNsYXNzTmFtZXMnLFxuXG4gIC8vIERQSV9EaXNhYmxlUHJlc01vZGVsSGFuZGxlciwgaGF2aW5nIHR5cGUgYm9vbFxuICBEaXNhYmxlUHJlc01vZGVsSGFuZGxlciA9ICdkaXNhYmxlUHJlc01vZGVsSGFuZGxlcicsXG5cbiAgLy8gRFBJX0Rpc3BsYXlEYXRlLCBoYXZpbmcgdHlwZSBib29sXG4gIERpc3BsYXlEYXRlID0gJ2Rpc3BsYXlEYXRlJyxcblxuICAvLyBEUElfRGlzcGxheVRpbWUsIGhhdmluZyB0eXBlIGJvb2xcbiAgRGlzcGxheVRpbWUgPSAnZGlzcGxheVRpbWUnLFxuXG4gIC8vIERQSV9Eb0Ryb3BVSUFjdGlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBEb0Ryb3BVSUFjdGlvbiA9ICdkb0Ryb3BVaUFjdGlvbicsXG5cbiAgLy8gRFBJX0RvTWVyZ2UsIGhhdmluZyB0eXBlIGJvb2xcbiAgRG9NZXJnZSA9ICdkb01lcmdlJyxcblxuICAvLyBEUElfRG9QcmVEcm9wVUlBY3Rpb24sIGhhdmluZyB0eXBlIGJvb2xcbiAgRG9QcmVEcm9wVUlBY3Rpb24gPSAnZG9QcmVEcm9wVWlBY3Rpb24nLFxuXG4gIC8vIERQSV9Eb1F1ZXJ5LCBoYXZpbmcgdHlwZSBib29sXG4gIERvUXVlcnkgPSAnZG9RdWVyeScsXG5cbiAgLy8gRFBJX0RyYWdIb3J6LCBoYXZpbmcgdHlwZSBib29sXG4gIERyYWdIb3J6ID0gJ2RyYWdIb3J6JyxcblxuICAvLyBEUElfRHJpbGxEb3duLCBoYXZpbmcgdHlwZSBib29sXG4gIERyaWxsRG93biA9ICdkcmlsbERvd24nLFxuXG4gIC8vIERQSV9Ecm9wVG9YQXhpcywgaGF2aW5nIHR5cGUgYm9vbFxuICBEcm9wVG9YQXhpcyA9ICdkcm9wVG9YQXhpcycsXG5cbiAgLy8gRFBJX0Ryb3BUb1lBeGlzLCBoYXZpbmcgdHlwZSBib29sXG4gIERyb3BUb1lBeGlzID0gJ2Ryb3BUb1lBeGlzJyxcblxuICAvLyBEUElfRHJvcFVubmFtZWRGaWVsZHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgRHJvcFVubmFtZWRGaWVsZHMgPSAnZHJvcFVubmFtZWRGaWVsZHMnLFxuXG4gIC8vIERQSV9FZGl0RXhpc3RpbmcsIGhhdmluZyB0eXBlIGJvb2xcbiAgRWRpdEV4aXN0aW5nID0gJ2VkaXRFeGlzdGluZycsXG5cbiAgLy8gRFBJX0VkaXRpbmdDb25uZWN0aW9uLCBoYXZpbmcgdHlwZSBib29sXG4gIEVkaXRpbmdDb25uZWN0aW9uID0gJ2VkaXRpbmdDb25uZWN0aW9uJyxcblxuICAvLyBEUElfRW1iZWRDcmVkZW50aWFscywgaGF2aW5nIHR5cGUgYm9vbFxuICBFbWJlZENyZWRlbnRpYWxzID0gJ2VtYmVkQ3JlZGVudGlhbHMnLFxuXG4gIC8vIERQSV9FbWJlZE9BdXRoQ3JlZGVudGlhbCwgaGF2aW5nIHR5cGUgYm9vbFxuICBFbWJlZE9BdXRoQ3JlZGVudGlhbCA9ICdlbWJlZE9hdXRoQ3JlZGVudGlhbHMnLFxuXG4gIC8vIERQSV9FbXB0eUhpZ2hsaWdodEZvZ0FsbCwgaGF2aW5nIHR5cGUgYm9vbFxuICBFbXB0eUhpZ2hsaWdodEZvZ0FsbCA9ICdlbXB0eUhpZ2hsaWdodEZvZ0FsbCcsXG5cbiAgLy8gRFBJX0VuYWJsZUFscGhhYmV0aWNTb3J0LCBoYXZpbmcgdHlwZSBib29sXG4gIEVuYWJsZUFscGhhYmV0aWNTb3J0ID0gJ2VuYWJsZUFscGhhYmV0aWNTb3J0JyxcblxuICAvLyBEUElfRW5hYmxlQXV0b21hdGljRHJpbGwsIGhhdmluZyB0eXBlIGJvb2xcbiAgRW5hYmxlQXV0b21hdGljRHJpbGwgPSAnZW5hYmxlQXV0b21hdGljRHJpbGwnLFxuXG4gIC8vIERQSV9FbmFibGVDb25maWRlbmNlQmFuZHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgRW5hYmxlQ29uZmlkZW5jZUJhbmRzID0gJ2VuYWJsZUNvbmZpZGVuY2VCYW5kcycsXG5cbiAgLy8gRFBJX0VuYWJsZURhdGFPcmRlclNvcnQsIGhhdmluZyB0eXBlIGJvb2xcbiAgRW5hYmxlRGF0YU9yZGVyU29ydCA9ICdlbmFibGVEYXRhT3JkZXJTb3J0JyxcblxuICAvLyBEUElfRW5hYmxlRmllbGRTb3J0LCBoYXZpbmcgdHlwZSBib29sXG4gIEVuYWJsZUZpZWxkU29ydCA9ICdlbmFibGVGaWVsZFNvcnQnLFxuXG4gIC8vIERQSV9FbmFibGVJbnN0YW50QW5hbHl0aWNzLCBoYXZpbmcgdHlwZSBib29sXG4gIEVuYWJsZUluc3RhbnRBbmFseXRpY3MgPSAnZW5hYmxlSW5zdGFudEFuYWx5dGljcycsXG5cbiAgLy8gRFBJX0VuYWJsZUxpbmVzLCBoYXZpbmcgdHlwZSBib29sXG4gIEVuYWJsZUxpbmVzID0gJ2VuYWJsZUxpbmVzJyxcblxuICAvLyBEUElfRW5hYmxlTWFudWFsU29ydCwgaGF2aW5nIHR5cGUgYm9vbFxuICBFbmFibGVNYW51YWxTb3J0ID0gJ2VuYWJsZU1hbnVhbFNvcnQnLFxuXG4gIC8vIERQSV9FbmFibGVNYXJrcywgaGF2aW5nIHR5cGUgYm9vbFxuICBFbmFibGVNYXJrcyA9ICdlbmFibGVNYXJrcycsXG5cbiAgLy8gRFBJX0VuYWJsZU11bHRpcGxlU2VsZWN0aW9uLCBoYXZpbmcgdHlwZSBib29sXG4gIEVuYWJsZU11bHRpcGxlU2VsZWN0aW9uID0gJ2VuYWJsZU11bHRpcGxlU2VsZWN0aW9uJyxcblxuICAvLyBEUElfRW5hYmxlUHJlZmV0Y2hpbmcsIGhhdmluZyB0eXBlIGJvb2xcbiAgRW5hYmxlUHJlZmV0Y2hpbmcgPSAnZW5hYmxlUHJlZmV0Y2hpbmcnLFxuXG4gIC8vIERQSV9FbmFibGVUYWJsZUNhbGNEZW5zaWZpY2F0aW9uLCBoYXZpbmcgdHlwZSBib29sXG4gIEVuYWJsZVRhYmxlQ2FsY0RlbnNpZmljYXRpb24gPSAnZW5hYmxlVGFibGVDYWxjRGVuc2lmaWNhdGlvbicsXG5cbiAgLy8gRFBJX0VuYWJsZVRvb2x0aXBzLCBoYXZpbmcgdHlwZSBib29sXG4gIEVuYWJsZVRvb2x0aXBzID0gJ2VuYWJsZVRvb2x0aXBzJyxcblxuICAvLyBEUElfRW5kRGF0YVNvdXJjZVByZXNNb2RlbFVwZGF0ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBFbmREYXRhU291cmNlUHJlc01vZGVsVXBkYXRlID0gJ2VuZERhdGFTb3VyY2VQcmVzTW9kZWxVcGRhdGUnLFxuXG4gIC8vIERQSV9Fc3RpbWF0ZU51bGxzLCBoYXZpbmcgdHlwZSBib29sXG4gIEVzdGltYXRlTnVsbHMgPSAnZXN0aW1hdGVOdWxscycsXG5cbiAgLy8gRFBJX0V4Y2x1ZGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgRXhjbHVkZSA9ICdleGNsdWRlJyxcblxuICAvLyBEUElfRXhjbHVkZUNvbG9yLCBoYXZpbmcgdHlwZSBib29sXG4gIEV4Y2x1ZGVDb2xvciA9ICdleGNsdWRlQ29sb3InLFxuXG4gIC8vIERQSV9FeGNsdWRlQ3ViZURlbm9ybSwgaGF2aW5nIHR5cGUgYm9vbFxuICBFeGNsdWRlQ3ViZURlbm9ybSA9ICdleGNsdWRlQ3ViZURlbm9ybScsXG5cbiAgLy8gRFBJX0V4Y2x1ZGVJbnRlcmNlcHRFbmFibGVkLCBoYXZpbmcgdHlwZSBib29sXG4gIEV4Y2x1ZGVJbnRlcmNlcHRFbmFibGVkID0gJ2V4Y2x1ZGVJbnRlcmNlcHRFbmFibGVkJyxcblxuICAvLyBEUElfRXhjbHVkZUxvY2FsRnVuY3Rpb25zLCBoYXZpbmcgdHlwZSBib29sXG4gIEV4Y2x1ZGVMb2NhbEZ1bmN0aW9ucyA9ICdleGNsdWRlTG9jYWxGdW5jdGlvbnMnLFxuXG4gIC8vIERQSV9FeHBvcnREYXNoYm9hcmRJbWFnZUZyb21TaGVldCwgaGF2aW5nIHR5cGUgYm9vbFxuICBFeHBvcnREYXNoYm9hcmRJbWFnZUZyb21TaGVldCA9ICdleHBvcnRJbWFnZVNoZWV0QXNEYXNoYm9hcmQnLFxuXG4gIC8vIERQSV9FeHRTdmNDb25maWdJc0F1dGhFbmFibGVkLCBoYXZpbmcgdHlwZSBib29sXG4gIEV4dFN2Y0NvbmZpZ0lzQXV0aEVuYWJsZWQgPSAnZXh0U3ZjQ29uZmlnSXNBdXRoRW5hYmxlZCcsXG5cbiAgLy8gRFBJX0V4dHJhY3RGdWxsUmVmcmVzaCwgaGF2aW5nIHR5cGUgYm9vbFxuICBFeHRyYWN0RnVsbFJlZnJlc2ggPSAnZXh0cmFjdEZ1bGxSZWZyZXNoJyxcblxuICAvLyBEUElfRXh0cmFjdE5lZWRzUmVmcmVzaCwgaGF2aW5nIHR5cGUgYm9vbFxuICBFeHRyYWN0TmVlZHNSZWZyZXNoID0gJ2V4dHJhY3ROZWVkc1JlZnJlc2gnLFxuXG4gIC8vIERQSV9FeHRyYWN0UGVuZGluZywgaGF2aW5nIHR5cGUgYm9vbFxuICBFeHRyYWN0UGVuZGluZyA9ICdleHRyYWN0UGVuZGluZycsXG5cbiAgLy8gRFBJX0V4dHJhY3RTZWxlY3RlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBFeHRyYWN0U2VsZWN0ZWQgPSAnZXh0cmFjdFNlbGVjdGVkJyxcblxuICAvLyBEUElfRmVkZXJhdGFibGVPbmx5LCBoYXZpbmcgdHlwZSBib29sXG4gIEZlZGVyYXRhYmxlT25seSA9ICdmZWRlcmF0YWJsZU9ubHknLFxuXG4gIC8vIERQSV9GaWVsZFNvcnRPcmRlciwgaGF2aW5nIHR5cGUgYm9vbFxuICBGaWVsZFNvcnRPcmRlciA9ICdmaWVsZFNvcnRPcmRlcicsXG5cbiAgLy8gRFBJX0ZpZWxkU3VwcG9ydHNDb250YWlucywgaGF2aW5nIHR5cGUgYm9vbFxuICBGaWVsZFN1cHBvcnRzQ29udGFpbnMgPSAnZmllbGRTdXBwb3J0c0NvbnRhaW5zJyxcblxuICAvLyBEUElfRmllbGRTdXBwb3J0c0VuZHNXaXRoLCBoYXZpbmcgdHlwZSBib29sXG4gIEZpZWxkU3VwcG9ydHNFbmRzV2l0aCA9ICdmaWVsZFN1cHBvcnRzRW5kc1dpdGgnLFxuXG4gIC8vIERQSV9GaWVsZFN1cHBvcnRzU3RhcnRzV2l0aCwgaGF2aW5nIHR5cGUgYm9vbFxuICBGaWVsZFN1cHBvcnRzU3RhcnRzV2l0aCA9ICdmaWVsZFN1cHBvcnRzU3RhcnRzV2l0aCcsXG5cbiAgLy8gRFBJX0ZpbGxBYm92ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBGaWxsQWJvdmUgPSAnZmlsbEFib3ZlJyxcblxuICAvLyBEUElfRmlsbEJlbG93LCBoYXZpbmcgdHlwZSBib29sXG4gIEZpbGxCZWxvdyA9ICdmaWxsQmVsb3cnLFxuXG4gIC8vIERQSV9GaWxsV2l0aFplcm9lcywgaGF2aW5nIHR5cGUgYm9vbFxuICBGaWxsV2l0aFplcm9lcyA9ICdmaWxsWmVyb2VzJyxcblxuICAvLyBEUElfRmlsdGVySXNOYW1lZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBGaWx0ZXJJc05hbWVkID0gJ2ZpbHRlcklzTmFtZWQnLFxuXG4gIC8vIERQSV9Gb2N1cywgaGF2aW5nIHR5cGUgYm9vbFxuICBGb2N1cyA9ICdmb2N1cycsXG5cbiAgLy8gRFBJX0ZvckludGVybmFsVXNlLCBoYXZpbmcgdHlwZSBib29sXG4gIEZvckludGVybmFsVXNlID0gJ2ludGVybmFsVXNlJyxcblxuICAvLyBEUElfRm9yY2VCcm93c2VyUmVuZGVyaW5nLCBoYXZpbmcgdHlwZSBib29sXG4gIEZvcmNlQnJvd3NlclJlbmRlcmluZyA9ICdmb3JjZUJyb3dzZXJSZW5kZXJpbmcnLFxuXG4gIC8vIERQSV9Gb3JjZUNhY2hlLCBoYXZpbmcgdHlwZSBib29sXG4gIEZvcmNlQ2FjaGUgPSAnZm9yY2VDYWNoZScsXG5cbiAgLy8gRFBJX0ZvcmNlQ29sb3JGcm9tQXBwLCBoYXZpbmcgdHlwZSBib29sXG4gIEZvcmNlQ29sb3JGcm9tQXBwID0gJ2ZvcmNlQ29sb3JGcm9tQXBwJyxcblxuICAvLyBEUElfRm9yY2VDb25uZWN0aW9uQXR0ZW1wdCwgaGF2aW5nIHR5cGUgYm9vbFxuICBGb3JjZUNvbm5lY3Rpb25BdHRlbXB0ID0gJ2ZvcmNlQ29ubmVjdGlvbkF0dGVtcHQnLFxuXG4gIC8vIERQSV9Gb3JjZUNvbnNvbGlkYXRlSW5Db21taXQsIGhhdmluZyB0eXBlIGJvb2xcbiAgRm9yY2VDb25zb2xpZGF0ZUluQ29tbWl0ID0gJ2ZvcmNlQ29uc29saWRhdGVJbkNvbW1pdCcsXG5cbiAgLy8gRFBJX0ZvcmNlRXh0cmFjdFJlZnJlc2gsIGhhdmluZyB0eXBlIGJvb2xcbiAgRm9yY2VFeHRyYWN0UmVmcmVzaCA9ICdleHRyYWN0Rm9yY2VSZWZyZXNoJyxcblxuICAvLyBEUElfRm9yY2VJbnRlcmNlcHRaZXJvLCBoYXZpbmcgdHlwZSBib29sXG4gIEZvcmNlSW50ZXJjZXB0WmVybyA9ICdmb3JjZUludGVyY2VwdFplcm8nLFxuXG4gIC8vIERQSV9Gb3JjZU9sZENvbm5lY3RFeHBlcmllbmNlLCBoYXZpbmcgdHlwZSBib29sXG4gIEZvcmNlT2xkQ29ubmVjdEV4cGVyaWVuY2UgPSAnZm9yY2VPbGRDb25uZWN0RXhwZXJpZW5jZScsXG5cbiAgLy8gRFBJX0ZvcmNlVG9nZ2xlSGlnaGxpZ2h0U3RhdGVPbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBGb3JjZVRvZ2dsZUhpZ2hsaWdodFN0YXRlT24gPSAnZm9yY2VIaWdobGlnaHRPbicsXG5cbiAgLy8gRFBJX0ZvcmNlV2hvbGVEYXRlLCBoYXZpbmcgdHlwZSBib29sXG4gIEZvcmNlV2hvbGVEYXRlID0gJ2ZvcmNlV2hvbGVEYXRlJyxcblxuICAvLyBEUElfRm9yZWNhc3RTZWxlY3RlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBGb3JlY2FzdFNlbGVjdGVkID0gJ2ZvcmVjYXN0U2VsZWN0ZWQnLFxuXG4gIC8vIERQSV9Gb3JlY2FzdFVzZUF1dG9BZ2csIGhhdmluZyB0eXBlIGJvb2xcbiAgRm9yZWNhc3RVc2VBdXRvQWdnID0gJ2ZvcmVjYXN0VXNlQXV0b1N1bW1hcml6ZScsXG5cbiAgLy8gRFBJX0ZvckpvaW4sIGhhdmluZyB0eXBlIGJvb2xcbiAgRm9ySm9pbiA9ICdmb3JKb2luJyxcblxuICAvLyBEUElfRm9ybWF0RGF0YVZhbHVlTG9jYWxseSwgaGF2aW5nIHR5cGUgYm9vbFxuICBGb3JtYXREYXRhVmFsdWVMb2NhbGx5ID0gJ2Zvcm1hdERhdGFWYWx1ZUxvY2FsbHknLFxuXG4gIC8vIERQSV9Gb3JtYXRJZkNvbHVtbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBGb3JtYXRJZkNvbHVtbiA9ICdmb3JtYXRJZkNvbHVtbicsXG5cbiAgLy8gRFBJX0Zvcm1hdElmUGFyYW1ldGVyLCBoYXZpbmcgdHlwZSBib29sXG4gIEZvcm1hdElmUGFyYW1ldGVyID0gJ2Zvcm1hdElmUGFyYW1ldGVyJyxcblxuICAvLyBEUElfR2VvZ3JhcGhpY1NlYXJjaElzRGF0YUxvYWRlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBHZW9ncmFwaGljU2VhcmNoSXNEYXRhTG9hZGVkID0gJ2dlb2dyYXBoaWNTZWFyY2hEYXRhTG9hZGVkJyxcblxuICAvLyBEUElfR2VvZ3JhcGhpY1NlYXJjaExvYWREYXRhQXN5bmMsIGhhdmluZyB0eXBlIGJvb2xcbiAgR2VvZ3JhcGhpY1NlYXJjaExvYWREYXRhQXN5bmMgPSAnZ2VvZ3JhcGhpY1NlYXJjaExvYWREYXRhQXN5bmMnLFxuXG4gIC8vIERQSV9Hcm91cEJ5QWxsLCBoYXZpbmcgdHlwZSBib29sXG4gIEdyb3VwQnlBbGwgPSAnZ3JvdXBCeUFsbCcsXG5cbiAgLy8gRFBJX0hhc0FsaWFzLCBoYXZpbmcgdHlwZSBib29sXG4gIEhhc0FsaWFzID0gJ2hhc0FsaWFzJyxcblxuICAvLyBEUElfSGFzQWxsTWVtYmVyLCBoYXZpbmcgdHlwZSBib29sXG4gIEhhc0FsbE1lbWJlciA9ICdoYXNBbGxNZW1iZXInLFxuXG4gIC8vIERQSV9IYXNBcHBseSwgaGF2aW5nIHR5cGUgYm9vbFxuICBIYXNBcHBseSA9ICdoYXNBcHBseScsXG5cbiAgLy8gRFBJX0hhc0JhY2tncm91bmRJbWFnZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBIYXNCYWNrZ3JvdW5kSW1hZ2UgPSAnaGFzQmFja2dyb3VuZEltYWdlJyxcblxuICAvLyBEUElfSGFzQmVlbkRpc21pc3NlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBIYXNCZWVuRGlzbWlzc2VkID0gJ2hhc0JlZW5EaXNtaXNzZWQnLFxuXG4gIC8vIERQSV9IYXNDYXB0aW9uLCBoYXZpbmcgdHlwZSBib29sXG4gIEhhc0NhcHRpb24gPSAnaGFzQ2FwdGlvbicsXG5cbiAgLy8gRFBJX0hhc0NvbmRpdGlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBIYXNDb25kaXRpb24gPSAnaGFzQ29uZGl0aW9uJyxcblxuICAvLyBEUElfSGFzQ29ubmVjdFBlcm1pc3Npb25zLCBoYXZpbmcgdHlwZSBib29sXG4gIEhhc0Nvbm5lY3RQZXJtaXNzaW9ucyA9ICdoYXNDb25uZWN0UGVybWlzc2lvbnMnLFxuXG4gIC8vIERQSV9IYXNEYXNoYm9hcmQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzRGFzaGJvYXJkID0gJ2hhc0Rhc2hib2FyZCcsXG5cbiAgLy8gRFBJX0hhc0Rvd25sb2FkUGVybWlzc2lvbnMsIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzRG93bmxvYWRQZXJtaXNzaW9ucyA9ICdoYXNEb3dubG9hZFBlcm1pc3Npb25zJyxcblxuICAvLyBEUElfSGFzRHJpbGwsIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzRHJpbGwgPSAnaGFzRHJpbGwnLFxuXG4gIC8vIERQSV9IYXNFeGNsdWRlLCBoYXZpbmcgdHlwZSBib29sXG4gIEhhc0V4Y2x1ZGUgPSAnaGFzRXhjbHVkZScsXG5cbiAgLy8gRFBJX0hhc0ZpbGwsIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzRmlsbCA9ICdoYXNGaWxsJyxcblxuICAvLyBEUElfSGFzTGFiZWxzLCBoYXZpbmcgdHlwZSBib29sXG4gIEhhc0xhYmVscyA9ICdoYXNMYWJlbHMnLFxuXG4gIC8vIERQSV9IYXNMaW1pdCwgaGF2aW5nIHR5cGUgYm9vbFxuICBIYXNMaW1pdCA9ICdoYXNMaW1pdCcsXG5cbiAgLy8gRFBJX0hhc0xpbmUsIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzTGluZSA9ICdoYXNMaW5lJyxcblxuICAvLyBEUElfSGFzTW9kaWZpZWRBeGVzLCBoYXZpbmcgdHlwZSBib29sXG4gIEhhc01vZGlmaWVkQXhlcyA9ICdoYXNNb2RpZmllZEF4ZXMnLFxuXG4gIC8vIERQSV9IYXNOb25Sb290Q2FsY3VsYXRpb25zLCBoYXZpbmcgdHlwZSBib29sXG4gIEhhc05vblJvb3RDYWxjdWxhdGlvbnMgPSAnaGFzTm9uUm9vdENhbGN1bGF0aW9ucycsXG5cbiAgLy8gRFBJX0hhc1BhdHRlcm4sIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzUGF0dGVybiA9ICdoYXNQYXR0ZXJuJyxcblxuICAvLyBEUElfSGFzUHVibGlzaEd1aWRhbmNlUmVzdWx0cywgaGF2aW5nIHR5cGUgYm9vbFxuICBIYXNQdWJsaXNoR3VpZGFuY2VSZXN1bHRzID0gJ2hhc1B1Ymxpc2hHdWlkYW5jZVJlc3VsdHMnLFxuXG4gIC8vIERQSV9IYXNTZWxlY3Rpb24sIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzU2VsZWN0aW9uID0gJ2hhc1NlbGVjdGlvbicsXG5cbiAgLy8gRFBJX0hhc1NlcnZlckNyZWRlbnRpYWxzLCBoYXZpbmcgdHlwZSBib29sXG4gIEhhc1NlcnZlckNyZWRlbnRpYWxzID0gJ2hhc1NlcnZlckNyZWRlbnRpYWxzJyxcblxuICAvLyBEUElfSGFzU3BhY2UsIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzU3BhY2UgPSAnaGFzU3BhY2UnLFxuXG4gIC8vIERQSV9IYXNTdG9yZWRQcm9jZWR1cmUsIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzU3RvcmVkUHJvY2VkdXJlID0gJ2hhc1N0b3JlZFByb2NlZHVyZScsXG5cbiAgLy8gRFBJX0hhc1N0cmluZ0NhbGN1bGF0ZWRNZWFzdXJlcywgaGF2aW5nIHR5cGUgYm9vbFxuICBIYXNTdHJpbmdDYWxjdWxhdGVkTWVhc3VyZXMgPSAnaGFzU3RyaW5nQ2FsY3VsYXRlZE1lYXN1cmVzJyxcblxuICAvLyBEUElfSGFzVGFibGVDYWxjRGF0YSwgaGF2aW5nIHR5cGUgYm9vbFxuICBIYXNUYWJsZUNhbGNEYXRhID0gJ2hhc1RhYmxlQ2FsY0RhdGEnLFxuXG4gIC8vIERQSV9IYXNUaXRsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBIYXNUaXRsZSA9ICdoYXNUaXRsZScsXG5cbiAgLy8gRFBJX0hhc1VzZXJTcGVjaWZpY0NvbnRlbnQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzVXNlclNwZWNpZmljQ29udGVudCA9ICdoYXNVc2VyU3BlY2lmaWNDb250ZW50JyxcblxuICAvLyBEUElfSGFzVW5qb2luZWRUYWJsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBIYXNVbmpvaW5lZFRhYmxlID0gJ2hhc1Vuam9pbmVkVGFibGUnLFxuXG4gIC8vIERQSV9IYXNWYXJBcmdzLCBoYXZpbmcgdHlwZSBib29sXG4gIEhhc1ZhckFyZ3MgPSAnaGFzVmFyQXJncycsXG5cbiAgLy8gRFBJX0hhc1Zpc2l0ZWRXRENQYWdlLCBoYXZpbmcgdHlwZSBib29sXG4gIEhhc1Zpc2l0ZWRXRENQYWdlID0gJ2hhc1Zpc2l0ZWRXZGNQYWdlJyxcblxuICAvLyBEUElfSWdub3JlQWxpYXNlcywgaGF2aW5nIHR5cGUgYm9vbFxuICBJZ25vcmVBbGlhc2VzID0gJ2lnbm9yZUFsaWFzZXMnLFxuXG4gIC8vIERQSV9JZ25vcmVEb21haW4sIGhhdmluZyB0eXBlIGJvb2xcbiAgSWdub3JlRG9tYWluID0gJ2lnbm9yZURvbWFpbicsXG5cbiAgLy8gRFBJX0lnbm9yZVNlbGVjdGlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBJZ25vcmVTZWxlY3Rpb24gPSAnaWdub3JlU2VsZWN0aW9uJyxcblxuICAvLyBEUElfSW5jbHVkZUFsbENvbHVtbnMsIGhhdmluZyB0eXBlIGJvb2xcbiAgSW5jbHVkZUFsbENvbHVtbnMgPSAnaW5jbHVkZUFsbENvbHVtbnMnLFxuXG4gIC8vIERQSV9JbmNsdWRlQ29udGV4dCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJbmNsdWRlQ29udGV4dCA9ICdpbmNsdWRlQ29udGV4dCcsXG5cbiAgLy8gRFBJX0luY2x1ZGVEYXNoYm9hcmRQcmVzTW9kZWxzLCBoYXZpbmcgdHlwZSBib29sXG4gIEluY2x1ZGVEYXNoYm9hcmRQcmVzTW9kZWxzID0gJ2luY2x1ZGVEYXNoYm9hcmRQcmVzTW9kZWxzJyxcblxuICAvLyBEUElfSW5jbHVkZUl0ZW1TZXQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSW5jbHVkZUl0ZW1TZXQgPSAnaW5jbHVkZUl0ZW1TZXQnLFxuXG4gIC8vIERQSV9JbmNsdWRlTG9jYWxGaWxlcywgaGF2aW5nIHR5cGUgYm9vbFxuICBJbmNsdWRlTG9jYWxGaWxlcyA9ICdpbmNsdWRlTG9jYWxGaWxlcycsXG5cbiAgLy8gRFBJX0luY2x1ZGVPdGhlclNlbGVjdGVkLCBoYXZpbmcgdHlwZSBib29sXG4gIEluY2x1ZGVPdGhlclNlbGVjdGVkID0gJ2luY2x1ZGVPdGhlclNlbGVjdGVkJyxcblxuICAvLyBEUElfSW5jbHVkZU51bGxzLCBoYXZpbmcgdHlwZSBib29sXG4gIEluY2x1ZGVOdWxscyA9ICdpbmNsdWRlTnVsbHMnLFxuXG4gIC8vIERQSV9JbmNsdWRlUGFyZW50LCBoYXZpbmcgdHlwZSBib29sXG4gIEluY2x1ZGVQYXJlbnQgPSAnaW5jbHVkZVBhcmVudCcsXG5cbiAgLy8gRFBJX0luY2x1ZGVTZWxlY3Rpb25zLCBoYXZpbmcgdHlwZSBib29sXG4gIEluY2x1ZGVTZWxlY3Rpb25zID0gJ2luY2x1ZGVTZWxlY3Rpb25zJyxcblxuICAvLyBEUElfSW5jbHVkZVNpYmxpbmdzLCBoYXZpbmcgdHlwZSBib29sXG4gIEluY2x1ZGVTaWJsaW5ncyA9ICdpbmNsdWRlU2libGluZ3MnLFxuXG4gIC8vIERQSV9JbmNsdWRlU3RvcmllcywgaGF2aW5nIHR5cGUgYm9vbFxuICBJbmNsdWRlU3RvcmllcyA9ICdpbmNsdWRlU3RvcmllcycsXG5cbiAgLy8gRFBJX0luY2x1ZGVTdWJmb2xkZXJzLCBoYXZpbmcgdHlwZSBib29sXG4gIEluY2x1ZGVTdWJmb2xkZXJzID0gJ2luY2x1ZGVTdWJmb2xkZXJzJyxcblxuICAvLyBEUElfSW5jbHVkZVZvbGF0aWxlUHJvcHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgSW5jbHVkZVZvbGF0aWxlUHJvcHMgPSAnaW5jbHVkZVZvbGF0aWxlUHJvcHMnLFxuXG4gIC8vIERQSV9JbmNsdWRlc1RhZywgaGF2aW5nIHR5cGUgYm9vbFxuICBJbmNsdWRlc1RhZyA9ICdpbmNsdWRlc1RhZycsXG5cbiAgLy8gRFBJX0luc2VydEFmdGVyLCBoYXZpbmcgdHlwZSBib29sXG4gIEluc2VydEFmdGVyID0gJ2luc2VydEFmdGVyJyxcblxuICAvLyBEUElfSW5zZXJ0QXRFbmQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSW5zZXJ0QXRFbmQgPSAnaW5zZXJ0QXRFbmQnLFxuXG4gIC8vIERQSV9JbnN0YW50QW5hbHl0aWNzQWxsb3dlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJbnN0YW50QW5hbHl0aWNzQWxsb3dlZCA9ICdpbnN0YW50QW5hbHl0aWNzQWxsb3dlZCcsXG5cbiAgLy8gRFBJX0ludGVnZXJDb29yZGluYXRlcywgaGF2aW5nIHR5cGUgYm9vbFxuICBJbnRlZ2VyQ29vcmRpbmF0ZXMgPSAnaW50Q29vcmRzJyxcblxuICAvLyBEUElfSW52YWxpZGF0ZWRMYXlvdXQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSW52YWxpZGF0ZWRMYXlvdXQgPSAnaW52YWxpZGF0ZWRMYXlvdXQnLFxuXG4gIC8vIERQSV9Jc0FjdGl2ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0FjdGl2ZSA9ICdpc0FjdGl2ZScsXG5cbiAgLy8gRFBJX0lzQWRkVG9GaWx0ZXIsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNBZGRUb0ZpbHRlciA9ICdpc0FkZFRvRmlsdGVyQnV0dG9uQ2hlY2tlZCcsXG5cbiAgLy8gRFBJX0lzQWxsQnV0dG9uVmlzaWJsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0FsbEJ1dHRvblZpc2libGUgPSAnaXNBbGxCdXR0b25WaXNpYmxlJyxcblxuICAvLyBEUElfSXNBbGxvd2VkSW5DYWxjcywgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0FsbG93ZWRJbkNhbGNzID0gJ2lzQWxsb3dlZEluQ2FsY3MnLFxuXG4gIC8vIERQSV9Jc0FwcE1hcFNvdXJjZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0FwcE1hcFNvdXJjZSA9ICdpc0FwcE1hcFNvdXJjZScsXG5cbiAgLy8gRFBJX0lzQXJjaGl2ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0FyY2hpdmUgPSAnaXNBcmNoaXZlJyxcblxuICAvLyBEUElfSXNBdXRob3JpbmdNb2RlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzQXV0aG9yaW5nTW9kZSA9ICdpc0F1dGhvcmluZ01vZGUnLFxuXG4gIC8vIERQSV9Jc0F1dG8sIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNBdXRvID0gJ2lzQXV0bycsXG5cbiAgLy8gRFBJX0lzQXV0b0NsZWFyLCBoYXZpbmcgdHlwZSBib29sXG4gIElzQXV0b0NsZWFyID0gJ2lzQXV0b0NsZWFyJyxcblxuICAvLyBEUElfSXNBdXRvQ29sdW1uLCBoYXZpbmcgdHlwZSBib29sXG4gIElzQXV0b0NvbHVtbiA9ICdpc0F1dG9Db2x1bW4nLFxuXG4gIC8vIERQSV9Jc0F1dG9IaWRkZW4sIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNBdXRvSGlkZGVuID0gJ2lzQXV0b0hpZGRlbicsXG5cbiAgLy8gRFBJX0lzQXV0b1NlbGVjdCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0F1dG9TZWxlY3QgPSAnaXNBdXRvU2VsZWN0JyxcblxuICAvLyBEUElfSXNCb2xkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzQm9sZCA9ICdpc0JvbGQnLFxuXG4gIC8vIERQSV9Jc0JvcmRlclZpc2libGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNCb3JkZXJWaXNpYmxlID0gJ2lzQm9yZGVyVmlzaWJsZScsXG5cbiAgLy8gRFBJX0lzQm94cGxvdCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0JveHBsb3QgPSAnaXNCb3hwbG90JyxcblxuICAvLyBEUElfSXNDYXBhYmxlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzQ2FwYWJsZSA9ICdpc0NhcGFibGUnLFxuXG4gIC8vIERQSV9Jc0NhcHR1cmVkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzQ2FwdHVyZWQgPSAnaXNDYXB0dXJlZCcsXG5cbiAgLy8gRFBJX0lzQ2VudGVyZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNDZW50ZXJlZCA9ICdpc0NlbnRlcmVkJyxcblxuICAvLyBEUElfSXNDaGVja2VkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzQ2hlY2tlZCA9ICdpc0NoZWNrZWQnLFxuXG4gIC8vIERQSV9Jc0NvbG9yRGl2ZXJnaW5nLCBoYXZpbmcgdHlwZSBib29sXG4gIElzQ29sb3JEaXZlcmdpbmcgPSAnaXNDb2xvckRpdmVyZ2luZycsXG5cbiAgLy8gRFBJX0lzQ29sb3JTdGVwcGVkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzQ29sb3JTdGVwcGVkID0gJ2lzQ29sb3JTdGVwcGVkJyxcblxuICAvLyBEUElfSXNDb21iaW5lZEZpZWxkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzQ29tYmluZWRGaWVsZCA9ICdpc0NvbWJpbmVkRmllbGQnLFxuXG4gIC8vIERQSV9Jc0Nvbm5lY3RlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0Nvbm5lY3RlZCA9ICdpc0Nvbm5lY3RlZCcsXG5cbiAgLy8gRFBJX0lzQ29udGV4dE1lbnVBbGxvd2VkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzQ29udGV4dE1lbnVBbGxvd2VkID0gJ2lzQ29udGV4dE1lbnVBbGxvd2VkJyxcblxuICAvLyBEUElfSXNDb250aW51b3VzLCBoYXZpbmcgdHlwZSBib29sXG4gIElzQ29udGludW91cyA9ICdpc0NvbnRpbnVvdXMnLFxuXG4gIC8vIERQSV9Jc0NvcHksIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNDb3B5ID0gJ2lzQ29weScsXG5cbiAgLy8gRFBJX0lzQ3VzdG9tUGFsZXR0ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0N1c3RvbVBhbGV0dGUgPSAnaXNDdXN0b21QYWxldHRlJyxcblxuICAvLyBEUElfSXNDdXN0b21TUUwsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNDdXN0b21TUUwgPSAnaXNDdXN0b21TcWwnLFxuXG4gIC8vIERQSV9Jc0N1c3RvbVZhbHVlRW5hYmxlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0N1c3RvbVZhbHVlRW5hYmxlZCA9ICdpc0N1c3RvbVZhbHVlRW5hYmxlZCcsXG5cbiAgLy8gRFBJX0lzRGF0YUFsZXJ0Q29uZGl0aW9uTWV0LCBoYXZpbmcgdHlwZSBib29sXG4gIElzRGF0YUFsZXJ0Q29uZGl0aW9uTWV0ID0gJ2lzRGF0YUFsZXJ0Q29uZGl0aW9uTWV0JyxcblxuICAvLyBEUElfSXNEYXRhQWxlcnREaWFsb2dWaXNpYmxlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzRGF0YUFsZXJ0RGlhbG9nVmlzaWJsZSA9ICdpc0RhdGFBbGVydERpYWxvZ1Zpc2libGUnLFxuXG4gIC8vIERQSV9Jc0RhdGFCaW4sIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNEYXRhQmluID0gJ2lzRGF0YUJpbicsXG5cbiAgLy8gRFBJX0lzRGF0YUdyaWRWaXNpYmxlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzRGF0YUdyaWRWaXNpYmxlID0gJ2lzRGF0YUdyaWRWaXNpYmxlJyxcblxuICAvLyBEUElfSXNEYXRhYmFzZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0RhdGFiYXNlID0gJ2lzRGF0YWJhc2UnLFxuXG4gIC8vIERQSV9Jc0RhdGFiYXNlRmlsdGVySW5jbHVzaXZlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzRGF0YWJhc2VGaWx0ZXJJbmNsdXNpdmUgPSAnaXNEYkZpbHRlckluY2x1c2l2ZScsXG5cbiAgLy8gRFBJX0lzV2ViRGF0YVRhYlZpZXdTdXBwb3J0ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNXZWJEYXRhVGFiVmlld1N1cHBvcnRlZCA9ICdpc1dlYkRhdGFUYWJWaWV3U3VwcG9ydGVkJyxcblxuICAvLyBEUElfSXNQdWJsaXNoZWREYXRhc291cmNlUmVwbGFjZW1lbnQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNQdWJsaXNoZWREYXRhc291cmNlUmVwbGFjZW1lbnQgPSAnaXNQdWJsaXNoZWREYXRhc291cmNlUmVwbGFjZW1lbnQnLFxuXG4gIC8vIERQSV9Jc0RlYWREcm9wLCBoYXZpbmcgdHlwZSBib29sXG4gIElzRGVhZERyb3AgPSAnaXNEZWFkRHJvcCcsXG5cbiAgLy8gRFBJX0lzRGVmYXVsdCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0RlZmF1bHQgPSAnaXNEZWZhdWx0JyxcblxuICAvLyBEUElfSXNEZWxldGVDYWxjQ29uZmlybSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0RlbGV0ZUNhbGNDb25maXJtID0gJ2lzRGVsZXRlQ2FsY0NvbmZpcm1lZCcsXG5cbiAgLy8gRFBJX0lzRGltZW5zaW9uLCBoYXZpbmcgdHlwZSBib29sXG4gIElzRGltZW5zaW9uID0gJ2lzRGltZW5zaW9uJyxcblxuICAvLyBEUElfSXNEaXZpZGVyLCBoYXZpbmcgdHlwZSBib29sXG4gIElzRGl2aWRlciA9ICdpc0RpdmlkZXInLFxuXG4gIC8vIERQSV9Jc0Ryb3Bkb3duRW5hYmxlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0Ryb3Bkb3duRW5hYmxlZCA9ICdpc0Ryb3Bkb3duRW5hYmxlZCcsXG5cbiAgLy8gRFBJX0lzRWRpdGluZywgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0VkaXRpbmcgPSAnaXNFZGl0aW5nJyxcblxuICAvLyBEUElfSXNFbWJlZGRlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0VtYmVkZGVkID0gJ2lzRW1iZWRkZWQnLFxuXG4gIC8vIERQSV9Jc0VtcHR5LCBoYXZpbmcgdHlwZSBib29sXG4gIElzRW1wdHkgPSAnaXNFbXB0eScsXG5cbiAgLy8gRFBJX0lzQWRkSW5FbmFibGVkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzQWRkSW5FbmFibGVkID0gJ2lzQWRkSW5FbmFibGVkJyxcblxuICAvLyBEUElfSXNJbkRyaWxsUGF0aCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0luRHJpbGxQYXRoID0gJ2lzSW5EcmlsbFBhdGgnLFxuXG4gIC8vIERQSV9BZGRJbkpTRGVidWdnaW5nRW5hYmxlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBBZGRJbkpTRGVidWdnaW5nRW5hYmxlZCA9ICdhZGRJbkpzRGVidWdnaW5FbmFibGVkJyxcblxuICAvLyBEUElfQWRkSW5QYXVzZUJlZm9yZUxvYWRpbmcsIGhhdmluZyB0eXBlIGJvb2xcbiAgQWRkSW5QYXVzZUJlZm9yZUxvYWRpbmcgPSAnYWRkSW5QYXVzZUJlZm9yZUxvYWRpbmcnLFxuXG4gIC8vIERQSV9Jc0RTSGllcmFyY2hpY2FsLCBoYXZpbmcgdHlwZSBib29sXG4gIElzRFNIaWVyYXJjaGljYWwgPSAnaXNEc0hpZXJhcmNoaWNhbCcsXG5cbiAgLy8gRFBJX0lzRW5kUHRNb3ZlYWJsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0VuZFB0TW92ZWFibGUgPSAnaXNFbmRwb2ludE1vdmFibGUnLFxuXG4gIC8vIERQSV9Jc0V4Y2x1ZGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNFeGNsdWRlID0gJ2lzRXhjbHVkZUJ1dHRvbkNoZWNrZWQnLFxuXG4gIC8vIERQSV9Jc0V4aXN0aW5nQ29ubmVjdGlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0V4aXN0aW5nQ29ubmVjdGlvbiA9ICdpc0V4aXN0aW5nQ29ubmVjdGlvbicsXG5cbiAgLy8gRFBJX0lzRXhpc3RpbmdPYmplY3QsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNFeGlzdGluZ09iamVjdCA9ICdpc0V4aXN0aW5nT2JqZWN0JyxcblxuICAvLyBEUElfSXNFeHRyYWN0LCBoYXZpbmcgdHlwZSBib29sXG4gIElzRXh0cmFjdCA9ICdpc0V4dHJhY3QnLFxuXG4gIC8vIERQSV9Jc0V4dHJhY3RPbmx5Q29ubmVjdGlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0V4dHJhY3RPbmx5Q29ubmVjdGlvbiA9ICdpc0V4dHJhY3RPbmx5Q29ubmVjdGlvbicsXG5cbiAgLy8gRFBJX0lzRXh0cmFjdFNlbGVjdGlvblZpc2libGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNFeHRyYWN0U2VsZWN0aW9uVmlzaWJsZSA9ICdpc0V4dHJhY3RTZWxlY3Rpb25WaXNpYmxlJyxcblxuICAvLyBEUElfSXNGZWRlcmF0YWJsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0ZlZGVyYXRhYmxlID0gJ2lzRmVkZXJhdGFibGUnLFxuXG4gIC8vIERQSV9Jc0ZpZWxkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzRmllbGQgPSAnaXNGaWVsZCcsXG5cbiAgLy8gRFBJX0lzRmllbGRQYXJhbWV0ZXIsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNGaWVsZFBhcmFtZXRlciA9ICdpc0ZpZWxkUGFyYW1ldGVyJyxcblxuICAvLyBEUElfSXNGaWx0ZXJBY3Rpb25GaWVsZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0ZpbHRlckFjdGlvbkZpZWxkID0gJ2lzRmlsdGVyQWN0aW9uRmllbGQnLFxuXG4gIC8vIERQSV9Jc0ZpcnN0Q2xhc3NDb25uZWN0b3IsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNGaXJzdENsYXNzQ29ubmVjdG9yID0gJ2lzRmlyc3RDbGFzc0Nvbm5lY3RvcicsXG5cbiAgLy8gRFBJX0lzRmxvYXRpbmcsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNGbG9hdGluZyA9ICdpc0Zsb2F0aW5nJyxcblxuICAvLyBEUElfSXNGb2xkZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNGb2xkZWQgPSAnaXNGb2xkZWQnLFxuXG4gIC8vIERQSV9Jc0ZvcklucHV0LCBoYXZpbmcgdHlwZSBib29sXG4gIElzRm9ySW5wdXQgPSAnaXNGb3JJbnB1dCcsXG5cbiAgLy8gRFBJX0lzRm9yZWNhc3RFbmFibGVkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzRm9yZWNhc3RFbmFibGVkID0gJ2lzRm9yZWNhc3RFbmFibGVkJyxcblxuICAvLyBEUElfSXNGb3JjZURpcnR5LCBoYXZpbmcgdHlwZSBib29sXG4gIElzRm9yY2VEaXJ0eSA9ICdpc0ZvcmNlRGlydHknLFxuXG4gIC8vIERQSV9Jc0Z1bGxTY2FuLCBoYXZpbmcgdHlwZSBib29sXG4gIElzRnVsbFNjYW4gPSAnaXNGdWxsU2NhbicsXG5cbiAgLy8gRFBJX0lzRnVsbFN0eWxpbmcsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNGdWxsU3R5bGluZyA9ICdpc0Z1bGxTdHlsaW5nJyxcblxuICAvLyBEUElfSXNHZW5lcmF0ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNHZW5lcmF0ZWQgPSAnaXNHZW5lcmF0ZWQnLFxuXG4gIC8vIERQSV9Jc0dsb2JhbE5hbWVzLCBoYXZpbmcgdHlwZSBib29sXG4gIElzR2xvYmFsTmFtZXMgPSAnaXNHbG9iYWxOYW1lcycsXG5cbiAgLy8gRFBJX0lzR3JheWVkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzR3JheWVkID0gJ2lzR3JheWVkJyxcblxuICAvLyBEUElfSXNHcmF5c2NhbGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNHcmF5c2NhbGUgPSAnaXNHcmF5c2NhbGUnLFxuXG4gIC8vIERQSV9Jc0dyb3VwLCBoYXZpbmcgdHlwZSBib29sXG4gIElzR3JvdXAgPSAnaXNHcm91cCcsXG5cbiAgLy8gRFBJX0lzSGlkZWFibGVGaWVsZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0hpZGVhYmxlRmllbGQgPSAnaXNIaWRlYWJsZUZpZWxkJyxcblxuICAvLyBEUElfSXNIaWVyYXJjaHksIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNIaWVyYXJjaHkgPSAnaXNIaWVyYXJjaHknLFxuXG4gIC8vIERQSV9Jc0hpZXJhcmNoeVNpbmdsZVNlbGVjdCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0hpZXJhcmNoeVNpbmdsZVNlbGVjdCA9ICdpc0hpZXJhcmNoeVNpbmdsZVNlbGVjdCcsXG5cbiAgLy8gRFBJX0lzSGlnaGxpZ2h0QWxsb3dlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0hpZ2hsaWdodEFsbG93ZWQgPSAnaXNIaWdobGlnaHRBbGxvd2VkJyxcblxuICAvLyBEUElfSXNIaWdobGlnaHRFbmFibGVkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzSGlnaGxpZ2h0RW5hYmxlZCA9ICdpc0hpZ2hsaWdodEVuYWJsZWQnLFxuXG4gIC8vIERQSV9Jc0hpZ2hsaWdodEZpZWxkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzSGlnaGxpZ2h0RmllbGQgPSAnaXNIaWdobGlnaHRGaWVsZCcsXG5cbiAgLy8gRFBJX0lzSG9yaXpvbnRhbCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0hvcml6b250YWwgPSAnaXNIb3Jpem9udGFsJyxcblxuICAvLyBEUElfSXNJbWFnZUVuYWJsZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNJbWFnZUVuYWJsZWQgPSAnaXNJbWFnZUVuYWJsZWQnLFxuXG4gIC8vIERQSV9Jc0luRGVmYXVsdCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0luRGVmYXVsdCA9ICdpc0luRGVmYXVsdCcsXG5cbiAgLy8gRFBJX0lzSW5QcmltYXJ5RGF0YVNvdXJjZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0luUHJpbWFyeURhdGFTb3VyY2UgPSAnaXNJblByaW1hcnlEYXRhU291cmNlJyxcblxuICAvLyBEUElfSXNJbm5lciwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0lubmVyID0gJ2lzSW5uZXInLFxuXG4gIC8vIERQSV9Jc0luaXRpYWwsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNJbml0aWFsID0gJ2lzSW5pdGlhbCcsXG5cbiAgLy8gRFBJX0lzSW5zdGFuY2UsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNJbnN0YW5jZSA9ICdpc0luc3RhbmNlJyxcblxuICAvLyBEUElfSXNJbnZhbGlkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzSW52YWxpZCA9ICdpc0ludmFsaWQnLFxuXG4gIC8vIERQSV9Jc0ludmFsaWRDYWxjT25ERywgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0ludmFsaWRDYWxjT25ERyA9ICdpc0ludmFsaWREZ0NhbGMnLFxuXG4gIC8vIERQSV9Jc0l0YWxpY3MsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNJdGFsaWNzID0gJ2lzSXRhbGljcycsXG5cbiAgLy8gRFBJX0lzSm9pbkFyZWFWaXNpYmxlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzSm9pbkFyZWFWaXNpYmxlID0gJ2lzSm9pbkFyZWFWaXNpYmxlJyxcblxuICAvLyBEUElfSXNMYWJlbHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNMYWJlbHMgPSAnaXNMYWJlbHMnLFxuXG4gIC8vIERQSV9Jc0xheWVyZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNMYXllcmVkID0gJ2lzTGF5ZXJlZCcsXG5cbiAgLy8gRFBJX0lzTGVmdCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0xlZnQgPSAnaXNMZWZ0JyxcblxuICAvLyBEUElfSXNMZWdhY3ksIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNMZWdhY3kgPSAnaXNMZWdhY3knLFxuXG4gIC8vIERQSV9Jc0xldmVsLCBoYXZpbmcgdHlwZSBib29sXG4gIElzTGV2ZWwgPSAnaXNMZXZlbCcsXG5cbiAgLy8gRFBJX0lzTGV2ZWxPckxldmVsSWRlbnRpdHksIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNMZXZlbE9yTGV2ZWxJZGVudGl0eSA9ICdpc0xldmVsT3JMZXZlbElkZW50aXR5JyxcblxuICAvLyBEUElfSXNMaWNlbnNlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0xpY2Vuc2VkID0gJ2lzTGljZW5zZWQnLFxuXG4gIC8vIERQSV9Jc0xpbmssIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNMaW5rID0gJ2lzTGluaycsXG5cbiAgLy8gRFBJX0lzTWFwLCBoYXZpbmcgdHlwZSBib29sXG4gIElzTWFwID0gJ2lzTWFwJyxcblxuICAvLyBEUElfSXNNZWFzdXJlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzTWVhc3VyZSA9ICdpc01lYXN1cmUnLFxuXG4gIC8vIERQSV9Jc01lcmdlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzTWVyZ2UgPSAnaXNNZXJnZScsXG5cbiAgLy8gRFBJX0lzTWVzc2FnZVNvdXJjZVJlbW90ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc01lc3NhZ2VTb3VyY2VSZW1vdGUgPSAnaXNNZXNzYWdlU291cmNlUmVtb3RlJyxcblxuICAvLyBEUElfSXNNaXNzaW5nRnJvbUV4dHJhY3QsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNNaXNzaW5nRnJvbUV4dHJhY3QgPSAnaXNNaXNzaW5nRnJvbUV4dHJhY3QnLFxuXG4gIC8vIERQSV9Jc01vYmlsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc01vYmlsZSA9ICdpc01vYmlsZScsXG5cbiAgLy8gRFBJX0lzTW9kaWZpZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNNb2RpZmllZCA9ICdpc01vZGlmaWVkJyxcblxuICAvLyBEUElfSXNOZXcsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNOZXcgPSAnaXNOZXcnLFxuXG4gIC8vIERQSV9Jc05ld0Nsb3VkRmlsZURhdGFTb3VyY2UsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNOZXdDbG91ZEZpbGVEYXRhU291cmNlID0gJ2lzTmV3Q2xvdWRGaWxlRGF0YVNvdXJjZScsXG5cbiAgLy8gRFBJX0lzTmV3Wm9uZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc05ld1pvbmUgPSAnaXNOZXdab25lJyxcblxuICAvLyBEUElfSXNOb25lLCBoYXZpbmcgdHlwZSBib29sXG4gIElzTm9uZSA9ICdpc05vbmUnLFxuXG4gIC8vIERQSV9Jc09mZmxpbmVNb2RlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzT2ZmbGluZU1vZGUgPSAnaXNPZmZsaW5lTW9kZScsXG5cbiAgLy8gRFBJX0lzUHJlQXFsQmluLCBoYXZpbmcgdHlwZSBib29sXG4gIElzUHJlQXFsQmluID0gJ2lzUHJlQXFsQmluJyxcblxuICAvLyBEUElfSXNPTWVhc3VyZXNBbmRSZWxhdGlvbmFsLCBoYXZpbmcgdHlwZSBib29sXG4gIElzT01lYXN1cmVzQW5kUmVsYXRpb25hbCA9ICdpc09tZWFzdXJlc0FuZFJlbGF0aW9uYWwnLFxuXG4gIC8vIERQSV9Jc09wYXF1ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc09wYXF1ZSA9ICdpc09wYXF1ZScsXG5cbiAgLy8gRFBJX0lzT3JwaGFuZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNPcnBoYW5lZCA9ICdpc09ycGhhbmVkJyxcblxuICAvLyBEUElfSXNPdmVybGF5LCBoYXZpbmcgdHlwZSBib29sXG4gIElzT3ZlcmxheSA9ICdpc092ZXJsYXknLFxuXG4gIC8vIERQSV9Jc092ZXJyaWRlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzT3ZlcnJpZGUgPSAnaXNPdmVycmlkZScsXG5cbiAgLy8gRFBJX0lzUGFnZUxvYWRpbmcsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNQYWdlTG9hZGluZyA9ICdpc1BhZ2VMb2FkaW5nJyxcblxuICAvLyBEUElfSXNQYXJhbWV0ZXJTZWxlY3RlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1BhcmFtZXRlclNlbGVjdGVkID0gJ2lzUGFyYW1ldGVyU2VsZWN0ZWQnLFxuXG4gIC8vIERQSV9Jc1BhcmFtZXRlclNlbGVjdGVkT25Gcm9tLCBoYXZpbmcgdHlwZSBib29sXG4gIElzUGFyYW1ldGVyU2VsZWN0ZWRPbkZyb20gPSAnaXNQYXJhbWV0ZXJTZWxlY3RlZE9uRnJvbScsXG5cbiAgLy8gRFBJX0lzUGFyYW1ldGVyU2VsZWN0ZWRPblRvLCBoYXZpbmcgdHlwZSBib29sXG4gIElzUGFyYW1ldGVyU2VsZWN0ZWRPblRvID0gJ2lzUGFyYW1ldGVyU2VsZWN0ZWRPblRvJyxcblxuICAvLyBEUElfSXNQYXR0ZXJuQmFzZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNQYXR0ZXJuQmFzZWQgPSAnaXNQYXR0ZXJuQmFzZWQnLFxuXG4gIC8vIERQSV9Jc1Bpbm5lZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1Bpbm5lZCA9ICdpc1Bpbm5lZCcsXG5cbiAgLy8gRFBJX0lzUHJlc2VudGF0aW9uTW9kZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1ByZXNlbnRhdGlvbk1vZGUgPSAnaXNQcmVzZW50YXRpb25Nb2RlRG9jJyxcblxuICAvLyBEUElfSXNQdWJsaXNoQWxsb3dlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1B1Ymxpc2hBbGxvd2VkID0gJ2lzUHVibGlzaEFsbG93ZWQnLFxuXG4gIC8vIERQSV9Jc011c3REb3duZ3JhZGVUb1B1Ymxpc2gsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNNdXN0RG93bmdyYWRlVG9QdWJsaXNoID0gJ2lzRG93bmdyYWRlVG9QdWJsaXNoUmVxdWlyZWQnLFxuXG4gIC8vIERQSV9Jc1B1Ymxpc2hlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1B1Ymxpc2hlZCA9ICdpc1B1Ymxpc2hlZCcsXG5cbiAgLy8gRFBJX0lzUXVpY2tUYWJsZUNhbGMsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNRdWlja1RhYmxlQ2FsYyA9ICdpc1F1aWNrVGFibGVDYWxjJyxcblxuICAvLyBEUElfSXNSYWRpb09uLCBoYXZpbmcgdHlwZSBib29sXG4gIElzUmFkaW9PbiA9ICdpc1JhZGlvT24nLFxuXG4gIC8vIERQSV9Jc1JlY29ubmVjdCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1JlY29ubmVjdCA9ICdpc1JlY29ubmVjdCcsXG5cbiAgLy8gRFBJX0lzUmVjdXJzaXZlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzUmVjdXJzaXZlID0gJ2lzUmVjdXJzaXZlJyxcblxuICAvLyBEUElfSXNSZWZlcmVuY2VkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzUmVmZXJlbmNlZCA9ICdpc1JlZmVyZW5jZWQnLFxuXG4gIC8vIERQSV9Jc1JlbW92YWxBbGxvd2VkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzUmVtb3ZhbEFsbG93ZWQgPSAnaXNSb3dSZW1vdmFsQWxsb3dlZCcsXG5cbiAgLy8gRFBJX0lzUmVuZGVyQ2FwYWJsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1JlbmRlckNhcGFibGUgPSAnaXNSZW5kZXJDYXBhYmxlJyxcblxuICAvLyBEUElfSXNSZXF1aXJlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1JlcXVpcmVkID0gJ2lzUmVxdWlyZWQnLFxuXG4gIC8vIERQSV9Jc1JldmVyc2VkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzUmV2ZXJzZWQgPSAnaXNSZXZlcnNlZCcsXG5cbiAgLy8gRFBJX0lzUmlnaHREcmFnLCBoYXZpbmcgdHlwZSBib29sXG4gIElzUmlnaHREcmFnID0gJ2lzUmlnaHREcmFnJyxcblxuICAvLyBEUElfSXNSb3dMYWJlbHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNSb3dMYWJlbHMgPSAnaXNSb3dMYWJlbHMnLFxuXG4gIC8vIERQSV9Jc1BlcmNlbnRhZ2UsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNQZXJjZW50YWdlID0gJ2lzUGVyY2VudGFnZScsXG5cbiAgLy8gRFBJX0lzU2FsZXNmb3JjZUluQ29ubmVjdGlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1NhbGVzZm9yY2VJbkNvbm5lY3Rpb24gPSAnaXNTYWxlc2ZvcmNlSW5Db25uZWN0aW9uJyxcblxuICAvLyBEUElfSXNTY2FsZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNTY2FsZWQgPSAnaXNTY2FsZWQnLFxuXG4gIC8vIERQSV9Jc1NlbGVjdGVkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzU2VsZWN0ZWQgPSAnaXNTZWxlY3RlZCcsXG5cbiAgLy8gRFBJX0lzU2VsZWN0ZWRJdGVtLCBoYXZpbmcgdHlwZSBib29sXG4gIElzU2VsZWN0ZWRJdGVtID0gJ2lzU2VsZWN0ZWRJdGVtJyxcblxuICAvLyBEUElfSXNTZWxlY3Rpb25EaXNhYmxlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1NlbGVjdGlvbkRpc2FibGVkID0gJ2lzU2VsZWN0aW9uRGlzYWJsZWQnLFxuXG4gIC8vIERQSV9Jc1NoaWZ0RHJhZywgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1NoaWZ0RHJhZyA9ICdpc1NoaWZ0RHJhZycsXG5cbiAgLy8gRFBJX0lzU2luZ2xlTGFiZWwsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNTaW5nbGVMYWJlbCA9ICdpc1NpbmdsZUxhYmVsJyxcblxuICAvLyBEUElfSXNTaW5nbGVTZWxlY3QsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNTaW5nbGVTZWxlY3QgPSAnaXNTaW5nbGVTZWxlY3QnLFxuXG4gIC8vIERQSV9Jc1NpbmdsZVNlbGVjdE1vZGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNTaW5nbGVTZWxlY3RNb2RlID0gJ2lzU2luZ2xlU2VsZWN0TW9kZScsXG5cbiAgLy8gRFBJX0lzU2luZ2xlU2VsZWN0aW9uLCBoYXZpbmcgdHlwZSBib29sXG4gIElzU2luZ2xlU2VsZWN0aW9uID0gJ2lzU2luZ2xlU2VsZWN0aW9uJyxcblxuICAvLyBEUElfSXNTb3J0ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNTb3J0ZWQgPSAnaXNTb3J0ZWQnLFxuXG4gIC8vIERQSV9Jc1NvcnRQaWxsLCBoYXZpbmcgdHlwZSBib29sXG4gIElzU29ydFBpbGwgPSAnaXNTb3J0UGlsbCcsXG5cbiAgLy8gRFBJX0lzU3BlY2lhbCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1NwZWNpYWwgPSAnaXNTcGVjaWFsJyxcblxuICAvLyBEUElfSXNTcGxhc2hTY3JlZW4sIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNTcGxhc2hTY3JlZW4gPSAnaXNTcGxhc2hTY3JlZW4nLFxuXG4gIC8vIERQSV9Jc1N0b3J5RW1wdHksIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNTdG9yeUVtcHR5ID0gJ2lzU3RvcnlFbXB0eScsXG5cbiAgLy8gRFBJX0lzU3RyaWtlVGhyb3VnaCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1N0cmlrZVRocm91Z2ggPSAnaXNTdHJpa2VUaHJvdWdoJyxcblxuICAvLyBEUElfSXNUYWJsZUNhbGMsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNUYWJsZUNhbGMgPSAnaXNUYWJsZUNhbGMnLFxuXG4gIC8vIERQSV9Jc1RhYmxlQ2xlYW5pbmdTdWJ0YWJsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1RhYmxlQ2xlYW5pbmdTdWJ0YWJsZSA9ICdpc1RhYmxlQ2xlYW5pbmdTdWJ0YWJsZScsXG5cbiAgLy8gRFBJX0lzVGFibGVGaWx0ZXJJbmNsdXNpdmUsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNUYWJsZUZpbHRlckluY2x1c2l2ZSA9ICdpc1RhYmxlRmlsdGVySW5jbHVzaXZlJyxcblxuICAvLyBEUElfSXNUYWJsZVJhbmtlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1RhYmxlUmFua2VkID0gJ2lzVGFibGVSYW5rZWQnLFxuXG4gIC8vIERQSV9Jc1RlbXBvcmFyeSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1RlbXBvcmFyeSA9ICdpc1RlbXBvcmFyeScsXG5cbiAgLy8gRFBJX0lzVGl0bGVWaXNpYmxlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzVGl0bGVWaXNpYmxlID0gJ2lzVGl0bGVWaXNpYmxlJyxcblxuICAvLyBEUElfSXNUb3BMZXZlbCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1RvcExldmVsID0gJ2lzVG9wTGV2ZWwnLFxuXG4gIC8vIERQSV9Jc1R3b1ZhbHVlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1R3b1ZhbHVlZCA9ICdpc1R3b1ZhbHVlZCcsXG5cbiAgLy8gRFBJX0lzVHlwZUluRmluaXNoZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNUeXBlSW5GaW5pc2hlZCA9ICdpc1R5cGVpbkZpbmlzaGVkJyxcblxuICAvLyBEUElfSXNUeXBlSW5QaWxsLCBoYXZpbmcgdHlwZSBib29sXG4gIElzVHlwZUluUGlsbCA9ICdpc1R5cGVJblBpbGwnLFxuXG4gIC8vIERQSV9Jc1VSTEFjdGlvbkZpZWxkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzVVJMQWN0aW9uRmllbGQgPSAnaXNVcmxBY3Rpb25GaWVsZCcsXG5cbiAgLy8gRFBJX0lzVW5kZXJsaW5lZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1VuZGVybGluZWQgPSAnaXNVbmRlcmxpbmVkJyxcblxuICAvLyBEUElfSXNVbmlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1VuaW9uID0gJ2lzVW5pb24nLFxuXG4gIC8vIERQSV9Jc1VuaW9uUmVwbGFjZW1lbnQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNVbmlvblJlcGxhY2VtZW50ID0gJ2lzVW5pb25SZXBsYWNlbWVudCcsXG5cbiAgLy8gRFBJX0lzVW5uYW1lZENhbGMsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNVbm5hbWVkQ2FsYyA9ICdpc1VubmFtZWQnLFxuXG4gIC8vIERQSV9Jc1VzZXJEZWZpbmVkQXR0cmlidXRlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzVXNlckRlZmluZWRBdHRyaWJ1dGUgPSAnaXNVc2VyRGVmaW5lZEF0dHJpYnV0ZScsXG5cbiAgLy8gRFBJX0lzVXNlckVkaXRhYmxlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzVXNlckVkaXRhYmxlID0gJ2lzVXNlckVkaXRhYmxlJyxcblxuICAvLyBEUElfSXNVc2VyUHJvbXB0ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNVc2VyUHJvbXB0ZWQgPSAnaXNVc2VyUHJvbXB0ZWQnLFxuXG4gIC8vIERQSV9Jc1VzZXJSZXNwb25kZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNVc2VyUmVzcG9uZGVkID0gJ2lzVXNlclJlc3BvbmRlZCcsXG5cbiAgLy8gRFBJX0lzVmFsaWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNWYWxpZCA9ICdpc1ZhbGlkJyxcblxuICAvLyBEUElfSXNWYWxpZFdEQ1BhZ2UsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNWYWxpZFdEQ1BhZ2UgPSAnaXNWYWxpZFdkY1BhZ2UnLFxuXG4gIC8vIERQSV9Jc1ZhcnlpbmdBdHRyaWJ1dGVEaW1lbnNpb24sIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNWYXJ5aW5nQXR0cmlidXRlRGltZW5zaW9uID0gJ2lzVmFyeWluZ0F0dHJpYnV0ZURpbWVuc2lvbicsXG5cbiAgLy8gRFBJX0lzVmVydGljYWwsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNWZXJ0aWNhbCA9ICdpc1ZlcnRpY2FsJyxcblxuICAvLyBEUElfSXNWaWV3TW9kaWZpZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNWaWV3TW9kaWZpZWQgPSAnaXNWaWV3TW9kaWZpZWQnLFxuXG4gIC8vIERQSV9Jc1Zpc3VhbGx5Q2F0ZWdvcmljYWwsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNWaXN1YWxseUNhdGVnb3JpY2FsID0gJ2lzVmlzdWFsbHlDYXQnLFxuXG4gIC8vIERQSV9Jc1ZpekluVG9vbHRpcCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1ZpekluVG9vbHRpcCA9ICdpc1ZpekluVG9vbHRpcCcsXG5cbiAgLy8gRFBJX0lzV2ViLCBoYXZpbmcgdHlwZSBib29sXG4gIElzV2ViID0gJ2lzV2ViJyxcblxuICAvLyBEUElfSXNXaGl0ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1doaXRlID0gJ2lzV2hpdGUnLFxuXG4gIC8vIERQSV9Jc1dvcmxkTmV3LCBoYXZpbmcgdHlwZSBib29sXG4gIElzV29ybGROZXcgPSAnaXNXb3JsZE5ldycsXG5cbiAgLy8gRFBJX0lzWEF4aXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNYQXhpcyA9ICdpc1hBeGlzJyxcblxuICAvLyBEUElfS2VlcEFzcGVjdFJhdGlvLCBoYXZpbmcgdHlwZSBib29sXG4gIEtlZXBBc3BlY3RSYXRpbyA9ICdrZWVwQXNwZWN0UmF0aW8nLFxuXG4gIC8vIERQSV9MYWJlbExpbmVFbmRGaXJzdCwgaGF2aW5nIHR5cGUgYm9vbFxuICBMYWJlbExpbmVFbmRGaXJzdCA9ICdsYWJlbExpbmVFbmRGaXJzdCcsXG5cbiAgLy8gRFBJX0xhYmVsTGluZUVuZExhc3QsIGhhdmluZyB0eXBlIGJvb2xcbiAgTGFiZWxMaW5lRW5kTGFzdCA9ICdsYWJlbExpbmVFbmRMYXN0JyxcblxuICAvLyBEUElfTGFiZWxNYXJrTWF4LCBoYXZpbmcgdHlwZSBib29sXG4gIExhYmVsTWFya01heCA9ICdsYWJlbE1hcmtNYXgnLFxuXG4gIC8vIERQSV9MYWJlbE1hcmtNaW4sIGhhdmluZyB0eXBlIGJvb2xcbiAgTGFiZWxNYXJrTWluID0gJ2xhYmVsTWFya01pbicsXG5cbiAgLy8gRFBJX0xvY2tBc3BlY3RSYXRpbywgaGF2aW5nIHR5cGUgYm9vbFxuICBMb2NrQXNwZWN0UmF0aW8gPSAnbG9ja0FzcGVjdFJhdGlvJyxcblxuICAvLyBEUElfTG9vcFBsYXliYWNrLCBoYXZpbmcgdHlwZSBib29sXG4gIExvb3BQbGF5YmFjayA9ICdsb29wUGxheWJhY2snLFxuXG4gIC8vIERQSV9Mb3NzeUltYWdlcywgaGF2aW5nIHR5cGUgYm9vbFxuICBMb3NzeUltYWdlcyA9ICdsb3NzeUltYWdlcycsXG5cbiAgLy8gRFBJX01ha2VHbG9iYWwsIGhhdmluZyB0eXBlIGJvb2xcbiAgTWFrZUdsb2JhbCA9ICdpc01ha2VHbG9iYWwnLFxuXG4gIC8vIERQSV9NYW51YWxTb3J0T25seSwgaGF2aW5nIHR5cGUgYm9vbFxuICBNYW51YWxTb3J0T25seSA9ICdtYW51YWxTb3J0T25seScsXG5cbiAgLy8gRFBJX01hcEJveERlZmF1bHRTdHlsZVNlbGVjdGVkLCBoYXZpbmcgdHlwZSBib29sXG4gIE1hcEJveERlZmF1bHRTdHlsZVNlbGVjdGVkID0gJ21hcGJveERlZmF1bHRTdHlsZVNlbGVjdGVkJyxcblxuICAvLyBEUElfTWFwQm94VVJMUGFyc2VTdWNjZXNzZnVsLCBoYXZpbmcgdHlwZSBib29sXG4gIE1hcEJveFVSTFBhcnNlU3VjY2Vzc2Z1bCA9ICdtYXBib3hVcmxQYXJzZVN1Y2Nlc3NmdWwnLFxuXG4gIC8vIERQSV9NYXBDbGllbnRSZXF1ZXN0c01hcFRpbGVzLCBoYXZpbmcgdHlwZSBib29sXG4gIE1hcENsaWVudFJlcXVlc3RzTWFwVGlsZXMgPSAnY2xpZW50UmVxdWVzdHNNYXBUaWxlcycsXG5cbiAgLy8gRFBJX01hcEhhc1ZhbGlkTGF5ZXIsIGhhdmluZyB0eXBlIGJvb2xcbiAgTWFwSGFzVmFsaWRMYXllciA9ICdtYXBIYXNWYWxpZExheWVyJyxcblxuICAvLyBEUElfTWFwU2hvd0F0dHJpYnV0aW9uLCBoYXZpbmcgdHlwZSBib29sXG4gIE1hcFNob3dBdHRyaWJ1dGlvbiA9ICdzaG93QXR0cmlidXRpb24nLFxuXG4gIC8vIERQSV9NYXJrTGFiZWxzVmlzaWJpbGl0eUNoYW5nZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgTWFya0xhYmVsc1Zpc2liaWxpdHlDaGFuZ2VkID0gJ21hcmtMYWJlbHNWaXNpYmlsaXR5Q2hhbmdlZCcsXG5cbiAgLy8gRFBJX01lbWJlcnNMb2FkZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgTWVtYmVyc0xvYWRlZCA9ICdtZW1iZXJzTG9hZGVkJyxcblxuICAvLyBEUElfTWluaW1pemVOYW1lcywgaGF2aW5nIHR5cGUgYm9vbFxuICBNaW5pbWl6ZU5hbWVzID0gJ3VzZU1pbk5hbWVzJyxcblxuICAvLyBEUElfTW92ZVJlZmVyZWNlTGluZVVwLCBoYXZpbmcgdHlwZSBib29sXG4gIE1vdmVSZWZlcmVjZUxpbmVVcCA9ICdtb3ZlUmVmZXJlbmNlTGluZVVwJyxcblxuICAvLyBEUElfTXVsdGlEYXRhU291cmNlcywgaGF2aW5nIHR5cGUgYm9vbFxuICBNdWx0aURhdGFTb3VyY2VzID0gJ211bHRpRGF0YVNvdXJjZXMnLFxuXG4gIC8vIERQSV9OYXZBcnJvd3NWaXNpYmxlLCBoYXZpbmcgdHlwZSBib29sXG4gIE5hdkFycm93c1Zpc2libGUgPSAnbmF2QXJyb3dzVmlzaWJsZScsXG5cbiAgLy8gRFBJX09FTUhhc1NwbGFzaFNjcmVlbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBPRU1IYXNTcGxhc2hTY3JlZW4gPSAnb2VtSGFzU3BsYXNoU2NyZWVuJyxcblxuICAvLyBEUElfT25lV2F5QnJ1c2hpbmcsIGhhdmluZyB0eXBlIGJvb2xcbiAgT25lV2F5QnJ1c2hpbmcgPSAnb25lV2F5QnJ1c2hpbmcnLFxuXG4gIC8vIERQSV9Pbmx5QWdncmVnYXRpb25zLCBoYXZpbmcgdHlwZSBib29sXG4gIE9ubHlBZ2dyZWdhdGlvbnMgPSAnb25seUFnZ3JlZ2F0aW9ucycsXG5cbiAgLy8gRFBJX092ZXJyaWRlQWxsb3dlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBPdmVycmlkZUFsbG93ZWQgPSAnb3ZlcnJpZGVBbGxvd2VkJyxcblxuICAvLyBEUElfT3ZlcnJpZGVTdGFja0R1bXBlciwgaGF2aW5nIHR5cGUgYm9vbFxuICBPdmVycmlkZVN0YWNrRHVtcGVyID0gJ292ZXJyaWRlU3RhY2tEdW1wZXInLFxuXG4gIC8vIERQSV9QYWdlQXV0b0NvbG9yTGluZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgUGFnZUF1dG9Db2xvckxpbmVzID0gJ2F1dG9Db2xvckxpbmVzJyxcblxuICAvLyBEUElfUGFnZUF1dG9Db2xvck1hcmtzLCBoYXZpbmcgdHlwZSBib29sXG4gIFBhZ2VBdXRvQ29sb3JNYXJrcyA9ICdhdXRvQ29sb3JNYXJrcycsXG5cbiAgLy8gRFBJX1BhZ2VIaXN0b3J5RmFkZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBQYWdlSGlzdG9yeUZhZGUgPSAnaGlzdG9yeUZhZGUnLFxuXG4gIC8vIERQSV9QZXJjZW50YWdlQmFuZHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgUGVyY2VudGFnZUJhbmRzID0gJ3BlcmNlbnRhZ2VCYW5kcycsXG5cbiAgLy8gRFBJX1BlcmNlbnRpbGVzQWxsb3dlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBQZXJjZW50aWxlc0FsbG93ZWQgPSAncGVyY2VudGlsZXNBbGxvd2VkJyxcblxuICAvLyBEUElfUHVibGlzaFdpdGhSZW1vdGVRdWVyeUFnZW50LCBoYXZpbmcgdHlwZSBib29sXG4gIFB1Ymxpc2hXaXRoUmVtb3RlUXVlcnlBZ2VudCA9ICdwdWJsaXNoV2l0aFJlbW90ZVF1ZXJ5QWdlbnQnLFxuXG4gIC8vIERQSV9QcmV2aW91c1NoZWV0LCBoYXZpbmcgdHlwZSBib29sXG4gIFByZXZpb3VzU2hlZXQgPSAncHJldmlvdXNTaGVldCcsXG5cbiAgLy8gRFBJX1Byb21wdERlbGV0ZVNoZWV0c1dpdGhWaXpJblRvb2x0aXAsIGhhdmluZyB0eXBlIGJvb2xcbiAgUHJvbXB0RGVsZXRlU2hlZXRzV2l0aFZpekluVG9vbHRpcCA9ICdwcm9tcHREZWxldGVTaGVldHNXaXRoVml6SW5Ub29sdGlwJyxcblxuICAvLyBEUElfUXVhbnRpbGVzQWxsb3dlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBRdWFudGlsZXNBbGxvd2VkID0gJ3F1YW50aWxlc0FsbG93ZWQnLFxuXG4gIC8vIERQSV9SYWRpYWxEaXN0YW5jZUhpdFRlc3QsIGhhdmluZyB0eXBlIGJvb2xcbiAgUmFkaWFsRGlzdGFuY2VIaXRUZXN0ID0gJ3JhZGlhbERpc3RhbmNlSGl0VGVzdCcsXG5cbiAgLy8gRFBJX1JlZkxpbmVTZWxlY3RlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBSZWZMaW5lU2VsZWN0ZWQgPSAncmVmTGluZVNlbGVjdGVkJyxcblxuICAvLyBEUElfUmVtb3ZlZFNoZWV0cywgaGF2aW5nIHR5cGUgYm9vbFxuICBSZW1vdmVkU2hlZXRzID0gJ3JlbW92ZWRTaGVldHMnLFxuXG4gIC8vIERQSV9SZW5kZXJJbWFnZXNBc1VybHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgUmVuZGVySW1hZ2VzQXNVcmxzID0gJ2ltYWdlc0FzVXJscycsXG5cbiAgLy8gRFBJX1JlbmRlck9uVG9wLCBoYXZpbmcgdHlwZSBib29sXG4gIFJlbmRlck9uVG9wID0gJ3JlbmRlck9uVG9wJyxcblxuICAvLyBEUElfUmVwZWF0SGVhZGVyc0xlZ2VuZHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgUmVwZWF0SGVhZGVyc0xlZ2VuZHMgPSAncmVwZWF0SGVhZGVyc0xlZ2VuZHMnLFxuXG4gIC8vIERQSV9SZXBsYWNlQWN0aXZlQ29uZmlnLCBoYXZpbmcgdHlwZSBib29sXG4gIFJlcGxhY2VBY3RpdmVDb25maWcgPSAncmVwbGFjZUFjdGl2ZUNvbmZpZycsXG5cbiAgLy8gRFBJX1JlcGxhY2VEYXRhc291cmNlQWZ0ZXJQdWJsaXNoLCBoYXZpbmcgdHlwZSBib29sXG4gIFJlcGxhY2VEYXRhc291cmNlQWZ0ZXJQdWJsaXNoID0gJ3JlcGxhY2VEYXRhc291cmNlQWZ0ZXJQdWJsaXNoJyxcblxuICAvLyBEUElfUmVwbGFjZURhdGFzb3VyY2VGYWlsZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgUmVwbGFjZURhdGFzb3VyY2VGYWlsZWQgPSAncmVwbGFjZURhdGFzb3VyY2VGYWlsZWQnLFxuXG4gIC8vIERQSV9SZXBsYWNlVGRlLCBoYXZpbmcgdHlwZSBib29sXG4gIFJlcGxhY2VUZGUgPSAncmVwbGFjZVRkZScsXG5cbiAgLy8gRFBJX1JlcXVpcmVTZWxlY3Rpb24sIGhhdmluZyB0eXBlIGJvb2xcbiAgUmVxdWlyZVNlbGVjdGlvbiA9ICdyZXF1aXJlU2VsZWN0aW9uJyxcblxuICAvLyBEUElfUmVxdWlyZXNEQlZhcmlhYmxlcywgaGF2aW5nIHR5cGUgYm9vbFxuICBSZXF1aXJlc0RCVmFyaWFibGVzID0gJ3JlcXVpcmVzRGJWYXJpYWJsZXMnLFxuXG4gIC8vIERQSV9SZXF1aXJlc0ZpZWxkTGlzdCwgaGF2aW5nIHR5cGUgYm9vbFxuICBSZXF1aXJlc0ZpZWxkTGlzdCA9ICdyZXF1aXJlc0ZpZWxkTGlzdCcsXG5cbiAgLy8gRFBJX1Jlc3RhcnRFdmVyeUZpZWxkSXNJbnZhbGlkLCBoYXZpbmcgdHlwZSBib29sXG4gIFJlc3RhcnRFdmVyeUZpZWxkSXNJbnZhbGlkID0gJ3Jlc3RhcnRFdmVyeUZpZWxkSXNJbnZhbGlkJyxcblxuICAvLyBEUElfUmlnaHRKdXN0aWZ5LCBoYXZpbmcgdHlwZSBib29sXG4gIFJpZ2h0SnVzdGlmeSA9ICdyaWdodEp1c3RpZnknLFxuXG4gIC8vIERQSV9TYXZlRW5hYmxlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBTYXZlRW5hYmxlZCA9ICdzYXZlRW5hYmxlZCcsXG5cbiAgLy8gRFBJX1NhdmVQYXNzd29yZEFsbG93ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2F2ZVBhc3N3b3JkQWxsb3dlZCA9ICdzYXZlUGFzc3dvcmRBbGxvd2VkJyxcblxuICAvLyBEUElfU2NvcGVJc29sYXRpb24sIGhhdmluZyB0eXBlIGJvb2xcbiAgU2NvcGVJc29sYXRpb24gPSAnc2NvcGVJc29sYXRpb24nLFxuXG4gIC8vIERQSV9TZWxlY3Rpb25SZXF1aXJlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBTZWxlY3Rpb25SZXF1aXJlZCA9ICdzZWxlY3Rpb25SZXF1aXJlZCcsXG5cbiAgLy8gRFBJX1NlbmROb3RpZmljYXRpb25zLCBoYXZpbmcgdHlwZSBib29sXG4gIFNlbmROb3RpZmljYXRpb25zID0gJ3NlbmROb3RpZmljYXRpb25zJyxcblxuICAvLyBEUElfU2V0QWN0aXZlLCBoYXZpbmcgdHlwZSBib29sXG4gIFNldEFjdGl2ZSA9ICdzZXRBY3RpdmUnLFxuXG4gIC8vIERQSV9TZXREZWZhdWx0U29ydCwgaGF2aW5nIHR5cGUgYm9vbFxuICBTZXREZWZhdWx0U29ydCA9ICdzZXREZWZhdWx0JyxcblxuICAvLyBEUElfU2hlZXRJc0Rhc2hib2FyZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBTaGVldElzRGFzaGJvYXJkID0gJ2lzRGFzaGJvYXJkJyxcblxuICAvLyBEUElfU2hlZXRJc1N0b3J5Ym9hcmQsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hlZXRJc1N0b3J5Ym9hcmQgPSAnaXNTdG9yeScsXG5cbiAgLy8gRFBJX1Nob3VsZEFsd2F5c0Rpc3BsYXlBbGlhcywgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG91bGRBbHdheXNEaXNwbGF5QWxpYXMgPSAnc2hvdWxkQWx3YXlzRGlzcGxheUFsaWFzJyxcblxuICAvLyBEUElfU2hvdWxkQXV0b0NhcHR1cmUsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvdWxkQXV0b0NhcHR1cmUgPSAnc2hvdWxkQXV0b0NhcHR1cmUnLFxuXG4gIC8vIERQSV9TaG91bGRBdXRvUmV2ZXJ0LCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3VsZEF1dG9SZXZlcnQgPSAnc2hvdWxkQXV0b1JldmVydCcsXG5cbiAgLy8gRFBJX1Nob3VsZENoYW5nZVVJTW9kZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG91bGRDaGFuZ2VVSU1vZGUgPSAnc2hvdWxkQ2hhbmdlVWlNb2RlJyxcblxuICAvLyBEUElfU2hvdWxkRGlzcGxheSwgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG91bGREaXNwbGF5ID0gJ3Nob3VsZERpc3BsYXknLFxuXG4gIC8vIERQSV9TaG91bGREcmlsbCwgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG91bGREcmlsbCA9ICdzaG91bGREcmlsbCcsXG5cbiAgLy8gRFBJX1Nob3VsZEZvcmNlQ29ubmVjdGlvbkF0dGVtcHQsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvdWxkRm9yY2VDb25uZWN0aW9uQXR0ZW1wdCA9ICdzaG91bGRGb3JjZUNvbm5lY3Rpb25BdHRlbXB0JyxcblxuICAvLyBEUElfU2hvdWxkUmVmcmVzaERTLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3VsZFJlZnJlc2hEUyA9ICdzaG91bGRSZWZyZXNoRHMnLFxuXG4gIC8vIERQSV9TaG91bGRTY2FsZU1hcmtzSW5BeGlzVW5pdHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvdWxkU2NhbGVNYXJrc0luQXhpc1VuaXRzID0gJ3Nob3VsZFNjYWxlTWFya3NJbkF4aXNVbml0cycsXG5cbiAgLy8gRFBJX1Nob3VsZFNlZWRDcmVkZW50aWFscywgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG91bGRTZWVkQ3JlZGVudGlhbHMgPSAnc2hvdWxkU2VlZENyZWRlbnRpYWxzJyxcblxuICAvLyBEUElfU2hvdWxkU2hvd0RhdGFTb3VyY2VDb25uZWN0aW9uRXJyb3IsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvdWxkU2hvd0RhdGFTb3VyY2VDb25uZWN0aW9uRXJyb3IgPSAnc2hvdWxkU2hvd0RhdGFTb3VyY2VDb25uZWN0aW9uRXJyb3InLFxuXG4gIC8vIERQSV9TaG91bGRTaG93RGlzdGFuY2UsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvdWxkU2hvd0Rpc3RhbmNlID0gJ3Nob3VsZFNob3dEaXN0YW5jZScsXG5cbiAgLy8gRFBJX1Nob3VsZFNob3dIaWRkZW5GaWVsZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG91bGRTaG93SGlkZGVuRmllbGQgPSAnc2hvdWxkU2hvd0hpZGRlbkZpZWxkJyxcblxuICAvLyBEUElfU2hvdWxkU2hvd01hcFNjYWxlLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3VsZFNob3dNYXBTY2FsZSA9ICdzaG91bGRTaG93TWFwU2NhbGUnLFxuXG4gIC8vIERQSV9TaG91bGRVUkxFc2NhcGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvdWxkVVJMRXNjYXBlID0gJ3Nob3VsZFVybEVzY2FwZScsXG5cbiAgLy8gRFBJX1Nob3VsZFVwZGF0ZURvbWFpbkluZm8sIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvdWxkVXBkYXRlRG9tYWluSW5mbyA9ICdzaG91bGRVcGRhdGVEb21JbmZvJyxcblxuICAvLyBEUElfU2hvd0FkZFRvRmlsdGVyLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dBZGRUb0ZpbHRlciA9ICdzaG93QWRkVG9GaWx0ZXJCdXR0b24nLFxuXG4gIC8vIERQSV9TaG93QWxpYXNlcywgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93QWxpYXNlcyA9ICdzaG93QWxpYXNlcycsXG5cbiAgLy8gRFBJX1Nob3dBbGxQYWdlcywgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93QWxsUGFnZXMgPSAnc2hvd0FsbFBhZ2VzJyxcblxuICAvLyBEUElfU2hvd0FwcGx5LCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dBcHBseSA9ICdzaG93QXBwbHlCdXR0b24nLFxuXG4gIC8vIERQSV9TaG93QXBwbHlBbmRDYW5jZWxCdXR0b25zLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dBcHBseUFuZENhbmNlbEJ1dHRvbnMgPSAnc2hvd0FwcGx5QW5kQ2FuY2VsQnV0dG9ucycsXG5cbiAgLy8gRFBJX1Nob3dBdXRoZW50aWNhdGlvbk9wdGlvbnMsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd0F1dGhlbnRpY2F0aW9uT3B0aW9ucyA9ICdzaG93QXV0aGVudGljYXRpb25PcHRpb25zJyxcblxuICAvLyBEUElfU2hvd0F1dGhlbnRpY2F0aW9uU2V0dGluZywgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93QXV0aGVudGljYXRpb25TZXR0aW5nID0gJ3Nob3dBdXRoZW50aWNhdGlvblNldHRpbmcnLFxuXG4gIC8vIERQSV9TaG93QXV0bywgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93QXV0byA9ICdzaG93QXV0bycsXG5cbiAgLy8gRFBJX1Nob3dCb2xkLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dCb2xkID0gJ3Nob3dCb2xkT3B0aW9uJyxcblxuICAvLyBEUElfU2hvd0J1dHRvbnMsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd0J1dHRvbnMgPSAnc2hvd0J1dHRvbnMnLFxuXG4gIC8vIERQSV9TaG93Q2FwdGlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93Q2FwdGlvbiA9ICdzaG93Q2FwdGlvbicsXG5cbiAgLy8gRFBJX1Nob3dDb2xvckxlZ2VuZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93Q29sb3JMZWdlbmQgPSAnc2hvd0NvbG9yTGVnZW5kJyxcblxuICAvLyBEUElfU2hvd0RhdGFHcmlkSW5saW5lUmVuYW1lLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dEYXRhR3JpZElubGluZVJlbmFtZSA9ICdzaG93RGF0YUdyaWRJbmxpbmVSZW5hbWUnLFxuXG4gIC8vIERQSV9TaG93RGV0YWlsTWVzc2FnZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd0RldGFpbE1lc3NhZ2VzID0gJ3Nob3dEZXRhaWxNZXNzYWdlcycsXG5cbiAgLy8gRFBJX1Nob3dEYXRlLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dEYXRlID0gJ3Nob3dEYXRlJyxcblxuICAvLyBEUElfU2hvd0RyYWdMYWJlbCwgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93RHJhZ0xhYmVsID0gJ3Nob3dEcmFnTGFiZWwnLFxuXG4gIC8vIERQSV9TaG93RHJvcE1lYXN1cmVzLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dEcm9wTWVhc3VyZXMgPSAnc2hvd0Ryb3BNZWFzdXJlcycsXG5cbiAgLy8gRFBJX1Nob3dFbWJlZEFsbCwgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93RW1iZWRBbGwgPSAnc2hvd0VtYmVkQWxsJyxcblxuICAvLyBEUElfU2hvd0VudGlyZUltYWdlLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dFbnRpcmVJbWFnZSA9ICdzaG93RW50aXJlSW1hZ2UnLFxuXG4gIC8vIERQSV9TaG93RXhjbHVkZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93RXhjbHVkZSA9ICdzaG93RXhjbHVkZUJ1dHRvbicsXG5cbiAgLy8gRFBJX1Nob3dGbG9hdGluZ1pvb21Ub29sYmFyLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dGbG9hdGluZ1pvb21Ub29sYmFyID0gJ3Nob3dGbG9hdGluZ1pvb21Ub29sYmFyJyxcblxuICAvLyBEUElfU2hvd0Zvcm1hdHRlciwgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93Rm9ybWF0dGVyID0gJ3Nob3dGb3JtYXR0ZXInLFxuXG4gIC8vIERQSV9TaG93RnVsbFNjaGVkdWxlcywgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93RnVsbFNjaGVkdWxlcyA9ICdzaG93RnVsbFNjaGVkdWxlcycsXG5cbiAgLy8gRFBJX1Nob3dHZW9ncmFwaGljU2VhcmNoLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dHZW9ncmFwaGljU2VhcmNoID0gJ3Nob3dHZW9ncmFwaGljU2VhcmNoJyxcblxuICAvLyBEUElfU2hvd0hpZGRlbkZpZWxkcywgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93SGlkZGVuRmllbGRzID0gJ3Nob3dIaWRkZW5GaWVsZHMnLFxuXG4gIC8vIERQSV9TaG93SGlzdG9yeUNvbnRyb2xzLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dIaXN0b3J5Q29udHJvbHMgPSAnc2hvd0hpc3RvcnlDb250cm9scycsXG5cbiAgLy8gRFBJX1Nob3dJbmNsdWRlTG9jYWxGaWxlcywgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93SW5jbHVkZUxvY2FsRmlsZXMgPSAnc2hvd0luY2x1ZGVMb2NhbEZpbGVzJyxcblxuICAvLyBEUElfU2hvd0luY2x1ZGVPdGhlck9wdGlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93SW5jbHVkZU90aGVyT3B0aW9uID0gJ3Nob3dJbmNsdWRlT3RoZXJPcHRpb24nLFxuXG4gIC8vIERQSV9TaG93SW5jbHVkZVNlbGVjdGlvbnMsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd0luY2x1ZGVTZWxlY3Rpb25zID0gJ3Nob3dJbmNsdWRlU2VsZWN0aW9ucycsXG5cbiAgLy8gRFBJX1Nob3dJbmNyU2NoZWR1bGVzLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dJbmNyU2NoZWR1bGVzID0gJ3Nob3dJbmNyU2NoZWR1bGVzJyxcblxuICAvLyBEUElfU2hvd0lubmVyTW9zdExldmVsLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dJbm5lck1vc3RMZXZlbCA9ICdzaG93SW5uZXJtb3N0TGV2ZWwnLFxuXG4gIC8vIERQSV9TaG93SXRhbGljcywgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93SXRhbGljcyA9ICdzaG93SXRhbGljc09wdGlvbicsXG5cbiAgLy8gRFBJX1Nob3dMZWdlbmQsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd0xlZ2VuZCA9ICdzaG93TGVnZW5kJyxcblxuICAvLyBEUElfU2hvd0xvY2tlZFBlcm1pc3Npb25zSWNvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93TG9ja2VkUGVybWlzc2lvbnNJY29uID0gJ3Nob3dMb2NrZWRQZXJtaXNzaW9uc0ljb24nLFxuXG4gIC8vIERQSV9TaG93TWFuYWdlRGF0YXNvdXJjZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd01hbmFnZURhdGFzb3VyY2VzID0gJ3Nob3dNYW5hZ2VEYXRhc291cmNlcycsXG5cbiAgLy8gRFBJX1Nob3dNYXBMZWdlbmQsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd01hcExlZ2VuZCA9ICdzaG93TWFwTGVnZW5kJyxcblxuICAvLyBEUElfU2hvd01hcFNjYWxlLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dNYXBTY2FsZSA9ICdzaG93TWFwU2NhbGUnLFxuXG4gIC8vIERQSV9TaG93TWFwcGVkRmlsdGVyQ29scywgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93TWFwcGVkRmlsdGVyQ29scyA9ICdzaG93TWFwcGVkRmlsdGVyQ29sdW1ucycsXG5cbiAgLy8gRFBJX1Nob3dOYW1lLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dOYW1lID0gJ3Nob3dOYW1lJyxcblxuICAvLyBEUElfU2hvd05vbmUsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd05vbmUgPSAnc2hvd05vbmUnLFxuXG4gIC8vIERQSV9TaG93UGFnZVBsYXliYWNrLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dQYWdlUGxheWJhY2sgPSAnc2hvd1BhZ2VQbGF5YmFjaycsXG5cbiAgLy8gRFBJX1Nob3dQYWdlUmVhZG91dCwgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93UGFnZVJlYWRvdXQgPSAnc2hvd1BhZ2VSZWFkb3V0JyxcblxuICAvLyBEUElfU2hvd1BhZ2VTbGlkZXIsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd1BhZ2VTbGlkZXIgPSAnc2hvd1BhZ2VTbGlkZXInLFxuXG4gIC8vIERQSV9TaG93UGFyZW50LCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dQYXJlbnQgPSAnc2hvd1BhcmVudCcsXG5cbiAgLy8gRFBJX1Nob3dQZXJjZW50YWdlcywgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93UGVyY2VudGFnZXMgPSAnc2hvd1BlcmNlbnRhZ2VzJyxcblxuICAvLyBEUElfU2hvd1ByZWRpY3Rpb25JbnRlcnZhbHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd1ByZWRpY3Rpb25JbnRlcnZhbHMgPSAnc2hvd1ByZWRpY3Rpb25JbnRlcnZhbHMnLFxuXG4gIC8vIERQSV9TaG93UHVibGlzaGVkRGF0YXNvdXJjZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd1B1Ymxpc2hlZERhdGFzb3VyY2VzID0gJ3Nob3dQdWJsaXNoZWREYXRhc291cmNlcycsXG5cbiAgLy8gRFBJX1Nob3dSZWxEYXRlUGlja2VyLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dSZWxEYXRlUGlja2VyID0gJ3Nob3dSZWxEYXRlUGlja2VyJyxcblxuICAvLyBEUElfU2hvd1JlcGxhY2VEYXRhc291cmNlLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dSZXBsYWNlRGF0YXNvdXJjZSA9ICdzaG93UmVwbGFjZURhdGFzb3VyY2UnLFxuXG4gIC8vIERQSV9TaG93U2VwYXJhdG9yLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dTZXBhcmF0b3IgPSAnc2hvd1NlcGFyYXRvcicsXG5cbiAgLy8gRFBJX1Nob3dTaGFwZUxlZ2VuZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93U2hhcGVMZWdlbmQgPSAnc2hvd1NoYXBlTGVnZW5kJyxcblxuICAvLyBEUElfU2hvd1NpemVMZWdlbmQsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd1NpemVMZWdlbmQgPSAnc2hvd1NpemVMZWdlbmQnLFxuXG4gIC8vIERQSV9TaG93U2hlbGYsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd1NoZWxmID0gJ3Nob3dTaGVsZicsXG5cbiAgLy8gRFBJX1Nob3dTdHJ1Y3R1cmUsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd1N0cnVjdHVyZSA9ICdzaG93U3RydWN0dXJlJyxcblxuICAvLyBEUElfU2hvd1N5bmNDbGllbnRPcHRpb25zLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dTeW5jQ2xpZW50T3B0aW9ucyA9ICdzaG93U3luY0NsaWVudE9wdGlvbnMnLFxuXG4gIC8vIERQSV9TaG93VGFic0FsbG93ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd1RhYnNBbGxvd2VkID0gJ3Nob3dUYWJzQWxsb3dlZCcsXG5cbiAgLy8gRFBJX1Nob3dUaW1lLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dUaW1lID0gJ3Nob3dUaW1lJyxcblxuICAvLyBEUElfU2hvd1RpdGxlLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dUaXRsZSA9ICdzaG93VGl0bGUnLFxuXG4gIC8vIERQSV9TaG93VHJhbnNTbGlkZXIsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd1RyYW5zU2xpZGVyID0gJ3Nob3dUcmFuc3BhcmVuY3lTbGlkZXInLFxuXG4gIC8vIERQSV9TaG93VW5kZXJsaW5lLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dVbmRlcmxpbmUgPSAnc2hvd1VuZGVybGluZU9wdGlvbicsXG5cbiAgLy8gRFBJX1Nob3dVc2VyVGh1bWJuYWlsT3B0aW9ucywgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93VXNlclRodW1ibmFpbE9wdGlvbnMgPSAnc2hvd1VzZXJUaHVtYm5haWxPcHRpb25zJyxcblxuICAvLyBEUElfU2hvd1ZpZXcsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd1ZpZXcgPSAnc2hvd1ZpZXcnLFxuXG4gIC8vIERQSV9TaG93Vmlld3MsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd1ZpZXdzID0gJ3Nob3dWaWV3cycsXG5cbiAgLy8gRFBJX1Nob3dpbmdQYWdlTG9hZEVycm9yLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dpbmdQYWdlTG9hZEVycm9yID0gJ3Nob3dpbmdQYWdlTG9hZEVycm9yJyxcblxuICAvLyBEUElfU3VwcmVzc0FsaWFzZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgU3VwcmVzc0FsaWFzZXMgPSAnc3VzcHJlc3NBbGlhc2VzJyxcblxuICAvLyBEUElfU3VwcmVzc1Rob3VzYW5kc1NlcGFyYXRvciwgaGF2aW5nIHR5cGUgYm9vbFxuICBTdXByZXNzVGhvdXNhbmRzU2VwYXJhdG9yID0gJ3N1cHJlc3NUaG91c2FuZHNTZXBhcmF0b3InLFxuXG4gIC8vIERQSV9TaW5nbGVTZWxlY3RPbmx5LCBoYXZpbmcgdHlwZSBib29sXG4gIFNpbmdsZVNlbGVjdE9ubHkgPSAnc2luZ2xlU2VsZWN0T25seScsXG5cbiAgLy8gRFBJX1NraXBJZkFjdGl2ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBTa2lwSWZBY3RpdmUgPSAnc2tpcElmQWN0aXZlJyxcblxuICAvLyBEUElfU2tpcFJlZnJlc2gsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2tpcFJlZnJlc2ggPSAnc2tpcFJlZnJlc2gnLFxuXG4gIC8vIERQSV9Ta2lwVmFsaWRhdGlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBTa2lwVmFsaWRhdGlvbiA9ICdza2lwVmFsaWRhdGlvbicsXG5cbiAgLy8gRFBJX1NraXBwZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2tpcHBlZCA9ICdza2lwcGVkJyxcblxuICAvLyBEUElfU29ydEZpZWxkSXNJbnZhbGlkLCBoYXZpbmcgdHlwZSBib29sXG4gIFNvcnRGaWVsZElzSW52YWxpZCA9ICdzb3J0RmllbGRJc0ludmFsaWQnLFxuXG4gIC8vIERQSV9Tb3J0TW9kZUlzQXV0bywgaGF2aW5nIHR5cGUgYm9vbFxuICBTb3J0TW9kZUlzQXV0byA9ICdzb3J0TW9kZUlzQXV0bycsXG5cbiAgLy8gRFBJX1NwbGl0T25FZGdlU25hcCwgaGF2aW5nIHR5cGUgYm9vbFxuICBTcGxpdE9uRWRnZVNuYXAgPSAnc3BsaXRPbkVkZ2VTbmFwJyxcblxuICAvLyBEUElfU3RhbmRhcmREZXZpYXRpb25BbGxvd2VkLCBoYXZpbmcgdHlwZSBib29sXG4gIFN0YW5kYXJkRGV2aWF0aW9uQWxsb3dlZCA9ICdzdGFuZGFyZERldmlhdGlvbkFsbG93ZWQnLFxuXG4gIC8vIERQSV9TdGF0ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBTdGF0ZSA9ICdzdGF0ZScsXG5cbiAgLy8gRFBJX1N0b3JlZFByb2NEaXNhYmxlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBTdG9yZWRQcm9jRGlzYWJsZWQgPSAnc3RvcmVkUHJvY0Rpc2FibGVkJyxcblxuICAvLyBEUElfU3RvcmVkUHJvY3NEcm9wYWJsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBTdG9yZWRQcm9jc0Ryb3BhYmxlID0gJ3N0b3JlZFByb2NzRHJvcGFibGUnLFxuXG4gIC8vIERQSV9TdG9yeUlzRW1wdHksIGhhdmluZyB0eXBlIGJvb2xcbiAgU3RvcnlJc0VtcHR5ID0gJ3N0b3J5SXNFbXB0eScsXG5cbiAgLy8gRFBJX1N0b3J5UG9pbnRJc0VtcHR5LCBoYXZpbmcgdHlwZSBib29sXG4gIFN0b3J5UG9pbnRJc0VtcHR5ID0gJ3N0b3J5UG9pbnRJc0VtcHR5JyxcblxuICAvLyBEUElfU3VjY2Vzc2Z1bFNhdmUsIGhhdmluZyB0eXBlIGJvb2xcbiAgU3VjY2Vzc2Z1bFNhdmUgPSAnc3VjY2Vzc2Z1bFNhdmUnLFxuXG4gIC8vIERQSV9TdXBwb3J0WEF4aXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgU3VwcG9ydFhBeGlzID0gJ3N1cHBvcnRYQXhpcycsXG5cbiAgLy8gRFBJX1N1cHBvcnRZQXhpcywgaGF2aW5nIHR5cGUgYm9vbFxuICBTdXBwb3J0WUF4aXMgPSAnc3VwcG9ydFlBeGlzJyxcblxuICAvLyBEUElfU3VwcG9ydHNDZW50ZXJBbGlnbm1lbnQsIGhhdmluZyB0eXBlIGJvb2xcbiAgU3VwcG9ydHNDZW50ZXJBbGlnbm1lbnQgPSAnc3VwcG9ydHNDZW50ZXJBbGlnbm1lbnQnLFxuXG4gIC8vIERQSV9TdXBwb3J0c0RCRmlsdGVycywgaGF2aW5nIHR5cGUgYm9vbFxuICBTdXBwb3J0c0RCRmlsdGVycyA9ICdzdXBwb3J0c0RhdGFiYXNlRmlsdGVycycsXG5cbiAgLy8gRFBJX1N1cHBvcnRzTXVsdGlwbGVWYWx1ZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgU3VwcG9ydHNNdWx0aXBsZVZhbHVlcyA9ICdzdXBwb3J0c011bHRpcGxlVmFsdWVzJyxcblxuICAvLyBEUElfU3VwcG9ydHNSaWdodEFsaWdubWVudCwgaGF2aW5nIHR5cGUgYm9vbFxuICBTdXBwb3J0c1JpZ2h0QWxpZ25tZW50ID0gJ3N1cHBvcnRzUmlnaHRBbGlnbm1lbnQnLFxuXG4gIC8vIERQSV9TdXBwb3J0c1RhYmxlRmlsdGVycywgaGF2aW5nIHR5cGUgYm9vbFxuICBTdXBwb3J0c1RhYmxlRmlsdGVycyA9ICdzdXBwb3J0c1RhYmxlRmlsdGVycycsXG5cbiAgLy8gRFBJX1N5bW1ldHJpYywgaGF2aW5nIHR5cGUgYm9vbFxuICBTeW1tZXRyaWMgPSAnc3ltbWV0cmljJyxcblxuICAvLyBEUElfU3luY0F1dG9tYXRpY0RyaWxsLCBoYXZpbmcgdHlwZSBib29sXG4gIFN5bmNBdXRvbWF0aWNEcmlsbCA9ICdzeW5jQXV0b21hdGljRHJpbGwnLFxuXG4gIC8vIERQSV9UYWJzQWxsb3dlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBUYWJzQWxsb3dlZCA9ICd0YWJzQWxsb3dlZCcsXG5cbiAgLy8gRFBJX1RleHREcm9wZG93blN0YXRlLCBoYXZpbmcgdHlwZSBib29sXG4gIFRleHREcm9wZG93blN0YXRlID0gJ3RvZ2dsZVN0YXRlJyxcblxuICAvLyBEUElfVGl0bGVJbmxpbmUsIGhhdmluZyB0eXBlIGJvb2xcbiAgVGl0bGVJbmxpbmUgPSAndGl0bGVJbmxpbmUnLFxuXG4gIC8vIERQSV9Ub2dnbGVIaWdobGlnaHRTdGF0ZUNoYW5nZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgVG9nZ2xlSGlnaGxpZ2h0U3RhdGVDaGFuZ2VkID0gJ3RvZ2dsZUhpZ2hsaWdodCcsXG5cbiAgLy8gRFBJX1RyYW5zZm9ybWVkODBGb3JtYXQsIGhhdmluZyB0eXBlIGJvb2xcbiAgVHJhbnNmb3JtZWQ4MEZvcm1hdCA9ICdvbGRGb3JtYXQnLFxuXG4gIC8vIERQSV9UcmVuZExpbmVTZWxlY3RlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBUcmVuZExpbmVTZWxlY3RlZCA9ICd0cmVuZExpbmVTZWxlY3RlZCcsXG5cbiAgLy8gRFBJX1RydW5jRGF0ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBUcnVuY0RhdGUgPSAndHJ1bmNEYXRlJyxcblxuICAvLyBEUElfVHVwbGVTZWxlY3RlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBUdXBsZVNlbGVjdGVkID0gJ3R1cGxlU2VsZWN0ZWQnLFxuXG4gIC8vIERQSV9VSUF1dG9tYXRpb25EaWRQYWdlTG9hZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBVSUF1dG9tYXRpb25EaWRQYWdlTG9hZCA9ICd1aUF1dG9tYXRpb25EaWRQYWdlTG9hZCcsXG5cbiAgLy8gRFBJX1VJQXV0b21hdGlvbklzQ2hlY2tlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBVSUF1dG9tYXRpb25Jc0NoZWNrZWQgPSAndWlBdXRvbWF0aW9uSXNDaGVja2VkJyxcblxuICAvLyBEUElfVUlBdXRvbWF0aW9uSXNFbmFibGVkLCBoYXZpbmcgdHlwZSBib29sXG4gIFVJQXV0b21hdGlvbklzRW5hYmxlZCA9ICd1aUF1dG9tYXRpb25Jc0VuYWJsZWQnLFxuXG4gIC8vIERQSV9VSUF1dG9tYXRpb25Jc0V2ZW50UHJvY2Vzc2VkLCBoYXZpbmcgdHlwZSBib29sXG4gIFVJQXV0b21hdGlvbklzRXZlbnRQcm9jZXNzZWQgPSAndWlBdXRvbWF0aW9uSXNFdmVudFByb2Nlc3NlZCcsXG5cbiAgLy8gRFBJX1VJQXV0b21hdGlvbklzRm9jdXNlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBVSUF1dG9tYXRpb25Jc0ZvY3VzZWQgPSAndWlBdXRvbWF0aW9uSXNGb2N1c2VkJyxcblxuICAvLyBEUElfVUlBdXRvbWF0aW9uSXNGb3VuZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBVSUF1dG9tYXRpb25Jc0ZvdW5kID0gJ3VpQXV0b21hdGlvbklzRm91bmQnLFxuXG4gIC8vIERQSV9VSUF1dG9tYXRpb25Jc1JlYWRvbmx5LCBoYXZpbmcgdHlwZSBib29sXG4gIFVJQXV0b21hdGlvbklzUmVhZG9ubHkgPSAndWlBdXRvbWF0aW9uSXNSZWFkb25seScsXG5cbiAgLy8gRFBJX1VJQXV0b21hdGlvbklzU2VsZWN0ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgVUlBdXRvbWF0aW9uSXNTZWxlY3RlZCA9ICd1aUF1dG9tYXRpb25Jc1NlbGVjdGVkJyxcblxuICAvLyBEUElfVXBkYXRlQWxsUGFuZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgVXBkYXRlQWxsUGFuZXMgPSAndXBkYXRlQWxsUGFuZXMnLFxuXG4gIC8vIERQSV9VcGRhdGVEU0NhcHRpb25Pbmx5LCBoYXZpbmcgdHlwZSBib29sXG4gIFVwZGF0ZURTQ2FwdGlvbk9ubHkgPSAndXBkYXRlRHNDYXB0aW9uT25seScsXG5cbiAgLy8gRFBJX1VwZGF0ZU1vZGVsRnJvbVBhcmFtcywgaGF2aW5nIHR5cGUgYm9vbFxuICBVcGRhdGVNb2RlbEZyb21QYXJhbXMgPSAndXBkYXRlTW9kZWxGcm9tUGFyYW1zJyxcblxuICAvLyBEUElfVXBkYXRlU2hlbHZlcywgaGF2aW5nIHR5cGUgYm9vbFxuICBVcGRhdGVTaGVsdmVzID0gJ3VwZGF0ZVNoZWx2ZXMnLFxuXG4gIC8vIERQSV9VcGRhdGVzVXNlQ29udGV4dCwgaGF2aW5nIHR5cGUgYm9vbFxuICBVcGRhdGVzVXNlQ29udGV4dCA9ICd1cGRhdGVzVXNlQ29udGV4dCcsXG5cbiAgLy8gRFBJX1VwZ3JhZGVEb2N1bWVudFZlcnNpb24sIGhhdmluZyB0eXBlIGJvb2xcbiAgVXBncmFkZURvY3VtZW50VmVyc2lvbiA9ICd1cGdyYWRlRG9jdW1lbnRWZXJzaW9uJyxcblxuICAvLyBEUElfVXNlQWxpYXNlcywgaGF2aW5nIHR5cGUgYm9vbFxuICBVc2VBbGlhc2VzID0gJ3VzZUFsaWFzZXMnLFxuXG4gIC8vIERQSV9Vc2VCbGFua0Zvck51bGwsIGhhdmluZyB0eXBlIGJvb2xcbiAgVXNlQmxhbmtGb3JOdWxsID0gJ3VzZUJsYW5rRm9yTnVsbCcsXG5cbiAgLy8gRFBJX1VzZUNhbGN1bGF0aW9uRWRpdG9yLCBoYXZpbmcgdHlwZSBib29sXG4gIFVzZUNhbGN1bGF0aW9uRWRpdG9yID0gJ3VzZUNhbGN1bGF0aW9uRWRpdG9yJyxcblxuICAvLyBEUElfVXNlQ2VudGVyVmFsdWUsIGhhdmluZyB0eXBlIGJvb2xcbiAgVXNlQ2VudGVyVmFsdWUgPSAndXNlQ2VudGVyVmFsdWUnLFxuXG4gIC8vIERQSV9Vc2VDb2xvciwgaGF2aW5nIHR5cGUgYm9vbFxuICBVc2VDb2xvciA9ICd1c2VDb2xvcicsXG5cbiAgLy8gRFBJX1VzZUN1c3RvbU1hcmtTaXplLCBoYXZpbmcgdHlwZSBib29sXG4gIFVzZUN1c3RvbU1hcmtTaXplID0gJ3VzZUN1c3RvbU1hcmtTaXplJyxcblxuICAvLyBEUElfVXNlRGFya0ljb25zLCBoYXZpbmcgdHlwZSBib29sXG4gIFVzZURhcmtJY29ucyA9ICd1c2VEYXJrSWNvbnMnLFxuXG4gIC8vIERQSV9Vc2VEYXRhU3RvcmVNaW5maWVkTmFtZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgVXNlRGF0YVN0b3JlTWluZmllZE5hbWVzID0gJ3VzZURhdGFzdG9yZU1pbk5hbWVzJyxcblxuICAvLyBEUElfVXNlSW5pdGlhbERvbWFpblR5cGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgVXNlSW5pdGlhbERvbWFpblR5cGUgPSAndXNlSW5pdGlhbERvbWFpblR5cGUnLFxuXG4gIC8vIERQSV9Vc2VFbmRWYWx1ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBVc2VFbmRWYWx1ZSA9ICd1c2VFbmRWYWx1ZScsXG5cbiAgLy8gRFBJX1VzZUZvck92ZXJsYXlIaXRUZXN0LCBoYXZpbmcgdHlwZSBib29sXG4gIFVzZUZvck92ZXJsYXlIaXRUZXN0ID0gJ3VzZUZvck92ZXJsYXlIaXRUZXN0JyxcblxuICAvLyBEUElfVXNlRnVsbENvbG9yUmFuZ2UsIGhhdmluZyB0eXBlIGJvb2xcbiAgVXNlRnVsbENvbG9yUmFuZ2UgPSAndXNlRnVsbENvbG9yUmFuZ2UnLFxuXG4gIC8vIERQSV9Vc2VGdWxsRG9tYWluLCBoYXZpbmcgdHlwZSBib29sXG4gIFVzZUZ1bGxEb21haW4gPSAndXNlRnVsbERvbWFpbicsXG5cbiAgLy8gRFBJX1VzZUlubGluZUltYWdlcywgaGF2aW5nIHR5cGUgYm9vbFxuICBVc2VJbmxpbmVJbWFnZXMgPSAndXNlSW5saW5lSW1hZ2VzJyxcblxuICAvLyBEUElfVXNlTWVhc3VyZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgVXNlTWVhc3VyZXMgPSAndXNlTWVhc3VyZXMnLFxuXG4gIC8vIERQSV9Vc2VOZXdRdWlja0ZpbHRlcnMsIGhhdmluZyB0eXBlIGJvb2xcbiAgVXNlTmV3UXVpY2tGaWx0ZXJzID0gJ3VzZU5ld1F1aWNrRmlsdGVycycsXG5cbiAgLy8gRFBJX1VzZU5vdGlmaWNhdGlvblJldHVybiwgaGF2aW5nIHR5cGUgYm9vbFxuICBVc2VOb3RpZmljYXRpb25SZXR1cm4gPSAndXNlTm90aWZpY2F0aW9uUmV0dXJuJyxcblxuICAvLyBEUElfVXNlUGFyYW1ldGVycywgaGF2aW5nIHR5cGUgYm9vbFxuICBVc2VQYXJhbWV0ZXJzID0gJ3VzZVBhcmFtZXRlcnMnLFxuXG4gIC8vIERQSV9Vc2VTZWxlY3RvciwgaGF2aW5nIHR5cGUgYm9vbFxuICBVc2VTZWxlY3RvciA9ICd1c2VTZWxlY3RvcicsXG5cbiAgLy8gRFBJX1VzZVNpZ25pZmljYW50RGlnaXRzLCBoYXZpbmcgdHlwZSBib29sXG4gIFVzZVNpZ25pZmljYW50RGlnaXRzID0gJ3VzZVNpZ25pZmljYW50RGlnaXRzJyxcblxuICAvLyBEUElfVXNlU3BlY2lhbFN0cmluZ3MsIGhhdmluZyB0eXBlIGJvb2xcbiAgVXNlU3BlY2lhbFN0cmluZ3MgPSAndXNlU3BlY2lhbFN0cmluZ3MnLFxuXG4gIC8vIERQSV9Vc2VTdGFydFZhbHVlLCBoYXZpbmcgdHlwZSBib29sXG4gIFVzZVN0YXJ0VmFsdWUgPSAndXNlU3RhcnRWYWx1ZScsXG5cbiAgLy8gRFBJX1VzZVRhYnMsIGhhdmluZyB0eXBlIGJvb2xcbiAgVXNlVGFicyA9ICd1c2VUYWJzJyxcblxuICAvLyBEUElfVXNlVGFibGV0QXNEZWZhdWx0UHJldmlldywgaGF2aW5nIHR5cGUgYm9vbFxuICBVc2VUYWJsZXRBc0RlZmF1bHRQcmV2aWV3ID0gJ3VzZVRhYmxldEFzRGVmYXVsdFByZXZpZXcnLFxuXG4gIC8vIERQSV9Vc2VUYXJnZXRQdCwgaGF2aW5nIHR5cGUgYm9vbFxuICBVc2VUYXJnZXRQdCA9ICd1c2VUYXJnZXRQb2ludCcsXG5cbiAgLy8gRFBJX1VzZVVTTG9jYWxlLCBoYXZpbmcgdHlwZSBib29sXG4gIFVzZVVTTG9jYWxlID0gJ3VzZVVzTG9jYWxlJyxcblxuICAvLyBEUElfVXNlWUF4aXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgVXNlWUF4aXMgPSAndXNlWUF4aXMnLFxuXG4gIC8vIERQSV9WYWxpZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBWYWxpZCA9ICd2YWxpZCcsXG5cbiAgLy8gRFBJX1ZpekRhdGFWODIsIGhhdmluZyB0eXBlIGJvb2xcbiAgVml6RGF0YVY4MiA9ICd2aXpEYXRhODInLFxuXG4gIC8vIERQSV9XTVNDb25uZWN0aW9uU3VjY2Vzc2Z1bCwgaGF2aW5nIHR5cGUgYm9vbFxuICBXTVNDb25uZWN0aW9uU3VjY2Vzc2Z1bCA9ICd3bXNDb25uZWN0aW9uU3VjY2Vzc2Z1bCcsXG5cbiAgLy8gRFBJX1dNU1Nob3VsZFVzZVRpbGVzLCBoYXZpbmcgdHlwZSBib29sXG4gIFdNU1Nob3VsZFVzZVRpbGVzID0gJ3dtc1Nob3VsZFVzZVRpbGVzJyxcblxuICAvLyBEUElfV2FudERvbWFpbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBXYW50RG9tYWluID0gJ3dhbnREb21haW4nLFxuXG4gIC8vIERQSV9Xb3JrYm9va01vZGlmaWVkLCBoYXZpbmcgdHlwZSBib29sXG4gIFdvcmtib29rTW9kaWZpZWQgPSAnd29ya2Jvb2tNb2RpZmllZCcsXG5cbiAgLy8gRFBJX1pvb21JbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBab29tSW4gPSAnem9vbUluJyxcblxuICAvLyBEUElfU2hvd01hcmtMYWJlbHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd01hcmtMYWJlbHMgPSAnc2hvd01hcmtMYWJlbHMnLFxuXG4gIC8vIERQSV9IYXNEdXBsaWNhdGVzLCBoYXZpbmcgdHlwZSBib29sXG4gIEhhc0R1cGxpY2F0ZXMgPSAnaGFzRHVwbGljYXRlcycsXG5cbiAgLy8gRFBJX0hhc1VzZXJEZWZpbmVkSW5jcmVtZW50LCBoYXZpbmcgdHlwZSBib29sXG4gIEhhc1VzZXJEZWZpbmVkSW5jcmVtZW50ID0gJ2hhc1VzZXJEZWZpbmVkSW5jcmVtZW50JyxcblxuICAvLyBEUElfSGFzVXNlckRlZmluZWRNYXgsIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzVXNlckRlZmluZWRNYXggPSAnaGFzVXNlckRlZmluZWRNYXgnLFxuXG4gIC8vIERQSV9IYXNVc2VyRGVmaW5lZE1pbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBIYXNVc2VyRGVmaW5lZE1pbiA9ICdoYXNVc2VyRGVmaW5lZE1pbicsXG5cbiAgLy8gRFBJX0lzRHVwbGljYXRlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzRHVwbGljYXRlID0gJ2lzRHVwbGljYXRlJyxcblxuICAvLyBEUElfSXNFZGl0aW5nVmFsdWUsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNFZGl0aW5nVmFsdWUgPSAnaXNFZGl0aW5nVmFsdWUnLFxuXG4gIC8vIERQSV9TaG91bGRSZXN0cmljdERhdGFUeXBlLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3VsZFJlc3RyaWN0RGF0YVR5cGUgPSAncmVzdHJpY3REYXRhVHlwZScsXG5cbiAgLy8gRFBJX0VuYWJsZUluY2x1ZGVaZXJvLCBoYXZpbmcgdHlwZSBib29sXG4gIEVuYWJsZUluY2x1ZGVaZXJvID0gJ2VuYWJsZUluY2x1ZGVaZXJvJyxcblxuICAvLyBEUElfRW5hYmxlU3luY0R1YWxBeGVzLCBoYXZpbmcgdHlwZSBib29sXG4gIEVuYWJsZVN5bmNEdWFsQXhlcyA9ICdlbmFibGVTeW5jaHJvbml6ZUR1YWxBeGVzJyxcblxuICAvLyBEUElfRW5hYmxlU2hvd1RpbWVzLCBoYXZpbmcgdHlwZSBib29sXG4gIEVuYWJsZVNob3dUaW1lcyA9ICdlbmFibGVTaG93VGltZXMnLFxuXG4gIC8vIERQSV9FbmFibGVUaWNrTWFya3NUYWIsIGhhdmluZyB0eXBlIGJvb2xcbiAgRW5hYmxlVGlja01hcmtzVGFiID0gJ2VuYWJsZVRpY2tNYXJrc1RhYicsXG5cbiAgLy8gRFBJX0lzVGVtcG9yYWwsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNUZW1wb3JhbCA9ICdpc1RlbXBvcmFsJyxcblxuICAvLyBEUElfU2hvdWxkSW5jbHVkZVplcm8sIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvdWxkSW5jbHVkZVplcm8gPSAnc2hvdWxkSW5jbHVkZVplcm8nLFxuXG4gIC8vIERQSV9TaG91bGRSZXZlcnNlQXhpcywgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG91bGRSZXZlcnNlQXhpcyA9ICdzaG91bGRSZXZlcnNlQXhpcycsXG5cbiAgLy8gRFBJX1Nob3VsZFNob3dUaW1lcywgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG91bGRTaG93VGltZXMgPSAnc2hvdWxkU2hvd1RpbWVzJyxcblxuICAvLyBEUElfVXNlQXV0b21hdGljQXhpc1N1YnRpdGxlLCBoYXZpbmcgdHlwZSBib29sXG4gIFVzZUF1dG9tYXRpY0F4aXNTdWJ0aXRsZSA9ICd1c2VBdXRvbWF0aWNTdWJ0aXRsZScsXG5cbiAgLy8gRFBJX1VzZUF1dG9tYXRpY0F4aXNUaXRsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBVc2VBdXRvbWF0aWNBeGlzVGl0bGUgPSAndXNlQXV0b21hdGljVGl0bGUnLFxuXG4gIC8vIERQSV9BbGxTZWxlY3RlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBBbGxTZWxlY3RlZCA9ICdhbGxTZWxlY3RlZCcsXG5cbiAgLy8gRFBJX0F1dG9Db21taXQsIGhhdmluZyB0eXBlIGJvb2xcbiAgQXV0b0NvbW1pdCA9ICdhdXRvQ29tbWl0JyxcblxuICAvLyBEUElfQ2FjaGVPbmx5LCBoYXZpbmcgdHlwZSBib29sXG4gIENhY2hlT25seSA9ICdjYWNoZU9ubHknLFxuXG4gIC8vIERQSV9JbmNsdWRlRGF0YSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJbmNsdWRlRGF0YSA9ICdpbmNsdWRlRGF0YScsXG5cbiAgLy8gRFBJX0lzUGF0dGVybkV4Y2x1c2l2ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1BhdHRlcm5FeGNsdXNpdmUgPSAnaXNQYXR0ZXJuRXhjbHVzaXZlJyxcblxuICAvLyBEUElfSXNTZWFyY2hhYmxlLCBoYXZpbmcgdHlwZSBib29sXG4gIElzU2VhcmNoYWJsZSA9ICdpc1NlYXJjaGFibGUnLFxuXG4gIC8vIERQSV9Jc1NlbGVjdGlvbkV4Y2x1c2l2ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1NlbGVjdGlvbkV4Y2x1c2l2ZSA9ICdpc1NlbGVjdGlvbkV4Y2x1c2l2ZScsXG5cbiAgLy8gRFBJX1Jlc2V0TmV3RmlsdGVyLCBoYXZpbmcgdHlwZSBib29sXG4gIFJlc2V0TmV3RmlsdGVyID0gJ3Jlc2V0TmV3RmlsdGVyJyxcblxuICAvLyBEUElfVXNlQWxsV2hlbk1hbnVhbEVtcHR5LCBoYXZpbmcgdHlwZSBib29sXG4gIFVzZUFsbFdoZW5NYW51YWxFbXB0eSA9ICd1c2VBbGxXaGVuTWFudWFsRW1wdHknLFxuXG4gIC8vIERQSV9Vc2VBbGxXaGVuUGF0dGVybkVtcHR5LCBoYXZpbmcgdHlwZSBib29sXG4gIFVzZUFsbFdoZW5QYXR0ZXJuRW1wdHkgPSAndXNlQWxsV2hlblBhdHRlcm5FbXB0eScsXG5cbiAgLy8gRFBJX0dyb3VwQnlEcmlsbERvd24sIGhhdmluZyB0eXBlIGJvb2xcbiAgR3JvdXBCeURyaWxsRG93biA9ICdncm91cEJ5RHJpbGxEb3duJyxcblxuICAvLyBEUElfR3JvdXBCeVRhYmxlLCBoYXZpbmcgdHlwZSBib29sXG4gIEdyb3VwQnlUYWJsZSA9ICdncm91cEJ5VGFibGUnLFxuXG4gIC8vIERQSV9JbmNsdWRlR3JvdXBzLCBoYXZpbmcgdHlwZSBib29sXG4gIEluY2x1ZGVHcm91cHMgPSAnaW5jbHVkZUdyb3VwcycsXG5cbiAgLy8gRFBJX0luY2x1ZGVQZW5kaW5nU3RhdGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgSW5jbHVkZVBlbmRpbmdTdGF0ZSA9ICdpbmNsdWRlUGVuZGluZ1N0YXRlJyxcblxuICAvLyBEUElfSW5jbHVkZUZpZWxkTWVudXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgSW5jbHVkZUZpZWxkTWVudXMgPSAnaW5jbHVkZUZpZWxkTWVudXMnLFxuXG4gIC8vIERQSV9JbmNsdWRlRm9ybWF0dGVkVmFsdWVzLCBoYXZpbmcgdHlwZSBib29sXG4gIEluY2x1ZGVGb3JtYXR0ZWRWYWx1ZXMgPSAnaW5jbHVkZUZvcm1hdHRlZFZhbHVlcycsXG5cbiAgLy8gRFBJX0luY2x1ZGVDb2x1bW5JbnN0YW5jZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgSW5jbHVkZUNvbHVtbkluc3RhbmNlcyA9ICdpbmNsdWRlQ29sdW1uSW5zdGFuY2VzJyxcblxuICAvLyBEUElfSW5jbHVkZUFkSG9jQ2FsY3MsIGhhdmluZyB0eXBlIGJvb2xcbiAgSW5jbHVkZUFkSG9jQ2FsY3MgPSAnaW5jbHVkZUFkaG9jQ2FsY3MnLFxuXG4gIC8vIERQSV9JbmNsdWRlSGlkZGVuSW52YWxpZEZpZWxkcywgaGF2aW5nIHR5cGUgYm9vbFxuICBJbmNsdWRlSGlkZGVuSW52YWxpZEZpZWxkcyA9ICdpbmNsdWRlSGlkZGVuSW52YWxpZEZpZWxkcycsXG5cbiAgLy8gRFBJX0luY2x1ZGVOb25FeHRyYWN0ZWRDb2x1bW5zLCBoYXZpbmcgdHlwZSBib29sXG4gIEluY2x1ZGVOb25FeHRyYWN0ZWRDb2x1bW5zID0gJ2luY2x1ZGVOb25FeHRyYWN0ZWRDb2x1bW5zJyxcblxuICAvLyBEUElfSW5jbHVkZUNhbGN1bGF0ZWRGaWVsZEZvcm11bGFzLCBoYXZpbmcgdHlwZSBib29sXG4gIEluY2x1ZGVDYWxjdWxhdGVkRmllbGRGb3JtdWxhcyA9ICdpbmNsdWRlQ2FsY3VsYXRlZEZpZWxkRm9ybXVsYXMnLFxuXG4gIC8vIERQSV9TZXREYXRhUHJldmlld0N1c3RvbUZpZWxkT3JkZXIsIGhhdmluZyB0eXBlIGJvb2xcbiAgU2V0RGF0YVByZXZpZXdDdXN0b21GaWVsZE9yZGVyID0gJ3NldERhdGFQcmV2aWV3Q3VzdG9tRmllbGRPcmRlcicsXG5cbiAgLy8gRFBJX0N1c3RvbVNwbGl0QWxsb3dTcGxpdEZyb21SaWdodCwgaGF2aW5nIHR5cGUgYm9vbFxuICBDdXN0b21TcGxpdEFsbG93U3BsaXRGcm9tUmlnaHQgPSAnY3VzdG9tU3BsaXRBbGxvd1NwbGl0RnJvbVJpZ2h0JyxcblxuICAvLyBEUElfSXNDaGFuZ2VkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzQ2hhbmdlZCA9ICdpc0NoYW5nZWQnLFxuXG4gIC8vIERQSV9TaG93Rm9udENvbG9yUGlja2VyLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dGb250Q29sb3JQaWNrZXIgPSAnc2hvd0ZvbnRDb2xvclBpY2tlcicsXG5cbiAgLy8gRFBJX1Nob3dGb250RmFtaWx5UGlja2VyLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dGb250RmFtaWx5UGlja2VyID0gJ3Nob3dGb250RmFtaWx5UGlja2VyJyxcblxuICAvLyBEUElfU2hvd0ZvbnRTaXplUGlja2VyLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dGb250U2l6ZVBpY2tlciA9ICdzaG93Rm9udFNpemVQaWNrZXInLFxuXG4gIC8vIERQSV9TaG93Rm9udFN0eWxlQnV0dG9ucywgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93Rm9udFN0eWxlQnV0dG9ucyA9ICdzaG93Rm9udFN0eWxlQnV0dG9ucycsXG5cbiAgLy8gRFBJX1Nob3dMaW5lRm9yQWxsLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dMaW5lRm9yQWxsID0gJ3Nob3dMaW5lRm9yQWxsJyxcblxuICAvLyBEUElfU2hvd0xpbmVGb3JDb2x1bW4sIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd0xpbmVGb3JDb2x1bW4gPSAnc2hvd0xpbmVGb3JDb2x1bW4nLFxuXG4gIC8vIERQSV9TaG93TGluZUZvclJvdywgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93TGluZUZvclJvdyA9ICdzaG93TGluZUZvclJvdycsXG5cbiAgLy8gRFBJX1Nob3dMaW5lUGF0dGVyblBpY2tlciwgaGF2aW5nIHR5cGUgYm9vbFxuICBTaG93TGluZVBhdHRlcm5QaWNrZXIgPSAnc2hvd0xpbmVQYXR0ZXJuUGlja2VyJyxcblxuICAvLyBEUElfU2hvd0xpbmVUcmFuc3BhcmVuY3ksIGhhdmluZyB0eXBlIGJvb2xcbiAgU2hvd0xpbmVUcmFuc3BhcmVuY3kgPSAnc2hvd0xpbmVUcmFuc3BhcmVuY3knLFxuXG4gIC8vIERQSV9TaG93TGluZVdpZHRoUGlja2VyLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dMaW5lV2lkdGhQaWNrZXIgPSAnc2hvd0xpbmVXaWR0aFBpY2tlcicsXG5cbiAgLy8gRFBJX0NhbkJlQXV0bywgaGF2aW5nIHR5cGUgYm9vbFxuICBDYW5CZUF1dG8gPSAnY2FuQmVBdXRvJyxcblxuICAvLyBEUElfQ2FuQmVOb25lLCBoYXZpbmcgdHlwZSBib29sXG4gIENhbkJlTm9uZSA9ICdjYW5CZU5vbmUnLFxuXG4gIC8vIERQSV9DYW5NYXRjaE1hcmtDb2xvciwgaGF2aW5nIHR5cGUgYm9vbFxuICBDYW5NYXRjaE1hcmtDb2xvciA9ICdjYW5NYXRjaE1hcmtDb2xvcicsXG5cbiAgLy8gRFBJX0hhc09wYWNpdHksIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzT3BhY2l0eSA9ICdoYXNPcGFjaXR5JyxcblxuICAvLyBEUElfSW5jbHVkZUFsbEhpZGRlbiwgaGF2aW5nIHR5cGUgYm9vbFxuICBJbmNsdWRlQWxsSGlkZGVuID0gJ2luY2x1ZGVBbGxIaWRkZW4nLFxuXG4gIC8vIERQSV9JbmNsdWRlQ3VycmVudCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJbmNsdWRlQ3VycmVudCA9ICdpbmNsdWRlQ3VycmVudCcsXG5cbiAgLy8gRFBJX0lzSW5jbHVkZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNJbmNsdWRlZCA9ICdpc0luY2x1ZGVkJyxcblxuICAvLyBEUElfSXNSZWxhdGl2ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1JlbGF0aXZlID0gJ2lzUmVsYXRpdmUnLFxuXG4gIC8vIERQSV9Jc1NlY29uZGFyeUFsbG93ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNTZWNvbmRhcnlBbGxvd2VkID0gJ2lzU2Vjb25kYXJ5QWxsb3dlZCcsXG5cbiAgLy8gRFBJX051bGxJZkluY29tcGxldGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgTnVsbElmSW5jb21wbGV0ZSA9ICdudWxsSWZJbmNvbXBsZXRlJyxcblxuICAvLyBEUElfSXNDYWxjQXNzaXN0YW5jZUVuYWJsZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNDYWxjQXNzaXN0YW5jZUVuYWJsZWQgPSAnaXNDYWxjQXNzaXN0YW5jZUVuYWJsZWQnLFxuXG4gIC8vIERQSV9Vc2VTZWNvbmRhcnlDYWxjLCBoYXZpbmcgdHlwZSBib29sXG4gIFVzZVNlY29uZGFyeUNhbGMgPSAndXNlU2Vjb25kYXJ5Q2FsYycsXG5cbiAgLy8gRFBJX0NhbkxvYWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgQ2FuTG9hZCA9ICdjYW5Mb2FkJyxcblxuICAvLyBEUElfRGVzY3JpcHRpb25Pbmx5LCBoYXZpbmcgdHlwZSBib29sXG4gIERlc2NyaXB0aW9uT25seSA9ICdkZXNjcmlwdGlvbk9ubHknLFxuXG4gIC8vIERQSV9BcmVBbGlhc2VzU3VwcG9ydGVkLCBoYXZpbmcgdHlwZSBib29sXG4gIEFyZUFsaWFzZXNTdXBwb3J0ZWQgPSAnYXJlQWxpYXNlc1N1cHBvcnRlZCcsXG5cbiAgLy8gRFBJX0FyZVJlZkNvbHVtbnNTdXBwb3J0ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgQXJlUmVmQ29sdW1uc1N1cHBvcnRlZCA9ICdhcmVSZWZDb2x1bW5zU3VwcG9ydGVkJyxcblxuICAvLyBEUElfSXNBZ2dyZWdhdGVkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzQWdncmVnYXRlZCA9ICdpc0FnZ3JlZ2F0ZWQnLFxuXG4gIC8vIERQSV9Jc0V4cG9ydFN1cHBvcnRlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0V4cG9ydFN1cHBvcnRlZCA9ICdpc0V4cG9ydFN1cHBvcnRlZCcsXG5cbiAgLy8gRFBJX0lzTWVhc3VyZU5hbWVzLCBoYXZpbmcgdHlwZSBib29sXG4gIElzTWVhc3VyZU5hbWVzID0gJ2lzTWVhc3VyZU5hbWVzJyxcblxuICAvLyBEUElfSXNTdW1tYXJ5U3VwcG9ydGVkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzU3VtbWFyeVN1cHBvcnRlZCA9ICdpc1N1bW1hcnlTdXBwb3J0ZWQnLFxuXG4gIC8vIERQSV9Jc1RvcE5TdXBwb3J0ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNUb3BOU3VwcG9ydGVkID0gJ2lzVG9wTlN1cHBvcnRlZCcsXG5cbiAgLy8gRFBJX0lzVW5kZXJseWluZ1N1cHBvcnRlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc1VuZGVybHlpbmdTdXBwb3J0ZWQgPSAnaXNVbmRlcmx5aW5nU3VwcG9ydGVkJyxcblxuICAvLyBEUElfT25seUV4cG9ydFN1bW1hcnksIGhhdmluZyB0eXBlIGJvb2xcbiAgT25seUV4cG9ydFN1bW1hcnkgPSAnb25seUV4cG9ydFN1bW1hcnknLFxuXG4gIC8vIERQSV9TaG93QWxsRmllbGRzLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dBbGxGaWVsZHMgPSAnc2hvd0FsbEZpZWxkcycsXG5cbiAgLy8gRFBJX1VzZVRhYmxlUHRycywgaGF2aW5nIHR5cGUgYm9vbFxuICBVc2VUYWJsZVB0cnMgPSAndXNlVGFibGVQdHJzJyxcblxuICAvLyBEUElfT25seUZldGNoU3VtbWFyeSwgaGF2aW5nIHR5cGUgYm9vbFxuICBPbmx5RmV0Y2hTdW1tYXJ5ID0gJ29ubHlGZXRjaFN1bW1hcnknLFxuXG4gIC8vIERQSV9Jc0RldmljZUxheW91dEN1c3RvbWl6ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNEZXZpY2VMYXlvdXRDdXN0b21pemVkID0gJ2lzRGV2aWNlTGF5b3V0Q3VzdG9taXplZCcsXG5cbiAgLy8gRFBJX0lzRGV2aWNlU2l6ZUN1c3RvbWl6ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNEZXZpY2VTaXplQ3VzdG9taXplZCA9ICdpc0RldmljZVNpemVDdXN0b21pemVkJyxcblxuICAvLyBEUElfSXNEZXZpY2VTdXBwb3J0ZWRCeU1vYmlsZUFwcCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0RldmljZVN1cHBvcnRlZEJ5TW9iaWxlQXBwID0gJ2lzRGV2aWNlU3VwcG9ydGVkQnlNb2JpbGVBcHAnLFxuXG4gIC8vIERQSV9Jc1BvcnRyYWl0LCBoYXZpbmcgdHlwZSBib29sXG4gIElzUG9ydHJhaXQgPSAnaXNQb3J0cmFpdCcsXG5cbiAgLy8gRFBJX0lzUG9ydHJhaXRCeURlZmF1bHQsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNQb3J0cmFpdEJ5RGVmYXVsdCA9ICdpc1BvcnRyYWl0QnlEZWZhdWx0JyxcblxuICAvLyBEUElfSXNVc2VyQ3VzdG9tRm9ybWF0LCBoYXZpbmcgdHlwZSBib29sXG4gIElzVXNlckN1c3RvbUZvcm1hdCA9ICdpc1VzZXJDdXN0b21Gb3JtYXQnLFxuXG4gIC8vIERQSV9TaG91bGREaXNwbGF5UmVidWlsZEV4dHJhY3RNZXNzYWdlLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3VsZERpc3BsYXlSZWJ1aWxkRXh0cmFjdE1lc3NhZ2UgPSAnc2hvdWxkRGlzcGxheVJlYnVpbGRFeHRyYWN0TWVzc2FnZScsXG5cbiAgLy8gRFBJX1N1cHBvcnRzQ3VzdG9tU3RhcnRPZldlZWssIGhhdmluZyB0eXBlIGJvb2xcbiAgU3VwcG9ydHNDdXN0b21TdGFydE9mV2VlayA9ICdzdXBwb3J0c0N1c3RvbVN0YXJ0T2ZXZWVrJyxcblxuICAvLyBEUElfTmVlZHNDb25uZWN0UHJvbXB0LCBoYXZpbmcgdHlwZSBib29sXG4gIE5lZWRzQ29ubmVjdFByb21wdCA9ICduZWVkc0Nvbm5lY3RQcm9tcHQnLFxuXG4gIC8vIERQSV9OZWVkc0Nsb3NlRGF0YVNvdXJjZUVycm9yUHJvbXB0LCBoYXZpbmcgdHlwZSBib29sXG4gIE5lZWRzQ2xvc2VEYXRhU291cmNlRXJyb3JQcm9tcHQgPSAnbmVlZHNDbG9zZURzRXJyb3JQcm9tcHQnLFxuXG4gIC8vIERQSV9DbGVhckN1cnJlbnRTZWxlY3Rpb24sIGhhdmluZyB0eXBlIGJvb2xcbiAgQ2xlYXJDdXJyZW50U2VsZWN0aW9uID0gJ2NsZWFyQ3VycmVudFNlbGVjdGlvbicsXG5cbiAgLy8gRFBJX0hhc0NvbnRhaW5zLCBoYXZpbmcgdHlwZSBib29sXG4gIEhhc0NvbnRhaW5zID0gJ2hhc0NvbnRhaW5zJyxcblxuICAvLyBEUElfSGFzRW5kc1dpdGgsIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzRW5kc1dpdGggPSAnaGFzRW5kc1dpdGgnLFxuXG4gIC8vIERQSV9IYXNSZXBsYWNlU2VsZWN0aW9uLCBoYXZpbmcgdHlwZSBib29sXG4gIEhhc1JlcGxhY2VTZWxlY3Rpb24gPSAnaGFzUmVwbGFjZVNlbGVjdGlvbicsXG5cbiAgLy8gRFBJX0hhc1N0YXJ0c1dpdGgsIGhhdmluZyB0eXBlIGJvb2xcbiAgSGFzU3RhcnRzV2l0aCA9ICdoYXNTdGFydHNXaXRoJyxcblxuICAvLyBEUElfSXNMZWFmU2VsZWN0aW9uT25seSwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0xlYWZTZWxlY3Rpb25Pbmx5ID0gJ2lzTGVhZlNlbGVjdGlvbk9ubHknLFxuXG4gIC8vIERQSV9SZXBsYWNlU2VsZWN0aW9uLCBoYXZpbmcgdHlwZSBib29sXG4gIFJlcGxhY2VTZWxlY3Rpb24gPSAncmVwbGFjZVNlbGVjdGlvbicsXG5cbiAgLy8gRFBJX0lzQ29sb3JQYWxldHRlQ3VzdG9taXplZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0NvbG9yUGFsZXR0ZUN1c3RvbWl6ZWQgPSAnaXNDb2xvclBhbGV0dGVDdXN0b21pemVkJyxcblxuICAvLyBEUElfUmV2ZXJzZVBhbGV0dGVPcmRlciwgaGF2aW5nIHR5cGUgYm9vbFxuICBSZXZlcnNlUGFsZXR0ZU9yZGVyID0gJ3JldmVyc2VQYWxldHRlT3JkZXInLFxuXG4gIC8vIERQSV9UcmllZFRvQ29ubmVjdCwgaGF2aW5nIHR5cGUgYm9vbFxuICBUcmllZFRvQ29ubmVjdCA9ICd0cmllZFRvQ29ubmVjdCcsXG5cbiAgLy8gRFBJX1NjYWxlTWFya3NJbkF4aXNVbml0cywgaGF2aW5nIHR5cGUgYm9vbFxuICBTY2FsZU1hcmtzSW5BeGlzVW5pdHMgPSAnc2NhbGVNYXJrc0luQXhpc1VuaXRzJyxcblxuICAvLyBEUElfU2hvd01hcmtTaXppbmdPcHRpb25zLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dNYXJrU2l6aW5nT3B0aW9ucyA9ICdzaG93TWFya1NpemluZ09wdGlvbnMnLFxuXG4gIC8vIERQSV9Vc2VTaXplRmllbGRDYXB0aW9uLCBoYXZpbmcgdHlwZSBib29sXG4gIFVzZVNpemVGaWVsZENhcHRpb24gPSAndXNlU2l6ZUZpZWxkQ2FwdGlvbicsXG5cbiAgLy8gRFBJX0lzTGljZW5zZWRBbmRSZWdpc3RlcmVkLCBoYXZpbmcgdHlwZSBib29sXG4gIElzTGljZW5zZWRBbmRSZWdpc3RlcmVkID0gJ2lzTGljZW5zZWRBbmRSZWdpc3RlcmVkJyxcblxuICAvLyBEUElfU2V0TmV3RGF0YXNvdXJjZUFjdGl2ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICBTZXROZXdEYXRhc291cmNlQWN0aXZlID0gJ3NldE5ld0RhdGFzb3VyY2VBY3RpdmUnLFxuXG4gIC8vIERQSV9BbGxvd0N1c3RvbUxhYmVsLCBoYXZpbmcgdHlwZSBib29sXG4gIEFsbG93Q3VzdG9tTGFiZWwgPSAnYWxsb3dDdXN0b21MYWJlbCcsXG5cbiAgLy8gRFBJX0lzTW9zdFJlY2VudE1vZGVWYWxpZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc01vc3RSZWNlbnRNb2RlVmFsaWQgPSAnaXNNb3N0UmVjZW50TW9kZVZhbGlkJyxcblxuICAvLyBEUElfTXVzdFNob3dMYWJlbHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgTXVzdFNob3dMYWJlbHMgPSAnbXVzdFNob3dMYWJlbHMnLFxuXG4gIC8vIERQSV9TaG93UnVubmluZ09yZGVyTGFiZWxzLCBoYXZpbmcgdHlwZSBib29sXG4gIFNob3dSdW5uaW5nT3JkZXJMYWJlbHMgPSAnc2hvd1J1bm5pbmdPcmRlckxhYmVscycsXG5cbiAgLy8gRFBJX0lzRHJvcHBlZEZpbGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgSXNEcm9wcGVkRmlsZSA9ICdpc0Ryb3BwZWRGaWxlJyxcblxuICAvLyBEUElfSXNJbml0aWFsaXplZCwgaGF2aW5nIHR5cGUgYm9vbFxuICBJc0luaXRpYWxpemVkID0gJ2lzSW5pdGlhbGl6ZWQnLFxuXG4gIC8vIERQSV9JbmNsdWRlRGFzaGJvYXJkLCBoYXZpbmcgdHlwZSBib29sXG4gIEluY2x1ZGVEYXNoYm9hcmQgPSAnaW5jbHVkZURhc2hib2FyZCcsXG5cbiAgLy8gRFBJX0NoaWxkcmVuQ2FuUmVzaXplLCBoYXZpbmcgdHlwZSBib29sXG4gIENoaWxkcmVuQ2FuUmVzaXplID0gJ2NoaWxkcmVuQ2FuUmVzaXplJyxcblxuICAvLyBEUElfQm9vbE1hcCwgaGF2aW5nIHR5cGUgRGljdGlvbmFyeShvZiBib29sKVxuICBCb29sTWFwID0gJ2Jvb2xNYXAnLFxuXG4gIC8vIERQSV9DaGVja2VkTWVudUl0ZW1zLCBoYXZpbmcgdHlwZSBib29sW11cbiAgQ2hlY2tlZE1lbnVJdGVtcyA9ICdjaGVja2VkTWVudUl0ZW1zJyxcblxuICAvLyBEUElfSW5jbHVkZWRTaGVldFZhbHVlcywgaGF2aW5nIHR5cGUgYm9vbFtdXG4gIEluY2x1ZGVkU2hlZXRWYWx1ZXMgPSAnaW5jbHVkZWRTaGVldFZhbHVlcycsXG5cbiAgLy8gRFBJX1NvcnRPcmRlclZlY3RvciwgaGF2aW5nIHR5cGUgYm9vbFtdXG4gIFNvcnRPcmRlclZlY3RvciA9ICdzb3J0T3JkZXJWZWN0b3InLFxuXG4gIC8vIERQSV9BY3Rpb25OYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQWN0aW9uTmFtZSA9ICdhY3Rpb25OYW1lJyxcblxuICAvLyBEUElfQWN0aW9uU291cmNlVGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEFjdGlvblNvdXJjZVRleHQgPSAnYWN0aW9uU291cmNlVGV4dCcsXG5cbiAgLy8gRFBJX0FjdGlvblR5cGVBc1N0cmluZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEFjdGlvblR5cGVBc1N0cmluZyA9ICdhY3Rpb25UeXBlQXNTdHJpbmcnLFxuXG4gIC8vIERQSV9BY3RpdmVUYWIsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBY3RpdmVUYWIgPSAnYWN0aXZlX3RhYicsXG5cbiAgLy8gRFBJX0FkZEluRmVhdHVyZU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBZGRJbkZlYXR1cmVOYW1lID0gJ2FkZEluRmVhdHVyZU5hbWUnLFxuXG4gIC8vIERQSV9BZGRJbklkLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQWRkSW5JZCA9ICdhZGRJbklkJyxcblxuICAvLyBEUElfQWRkSW5zdGFuY2VJZCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEFkZEluc3RhbmNlSWQgPSAnYWRkSW5JbnN0YW5jZUlkJyxcblxuICAvLyBEUElfQWRkSW5OYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQWRkSW5OYW1lID0gJ2FkZEluTmFtZScsXG5cbiAgLy8gRFBJX0FkZEluTG9jYWxlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQWRkSW5Mb2NhbGUgPSAnYWRkSW5Mb2NhbGUnLFxuXG4gIC8vIERQSV9BZGRJbkxhbmd1YWdlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQWRkSW5MYW5ndWFnZSA9ICdhZGRJbkxhbmd1YWdlJyxcblxuICAvLyBEUElfQVBJVmVyc2lvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEFQSVZlcnNpb24gPSAnYXBpVmVyc2lvbicsXG5cbiAgLy8gRFBJX0FsaWFzLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQWxpYXMgPSAnYWxpYXMnLFxuXG4gIC8vIERQSV9BbmNob3JEYXRlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQW5jaG9yRGF0ZSA9ICdhbmNob3JEYXRlJyxcblxuICAvLyBEUElfQW5ub3RhdGlvblJlcywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEFubm90YXRpb25SZXMgPSAnYW5ub3RhdGlvblJlcycsXG5cbiAgLy8gRFBJX1JlYWRJZCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFJlYWRJZCA9ICdyZWFkSWQnLFxuXG4gIC8vIERQSV9Bbm5vdGF0aW9uVGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEFubm90YXRpb25UZXh0ID0gJ2Fubm90YXRpb25UZXh0JyxcblxuICAvLyBEUElfQXJjaGl2ZURpcmVjdG9yeSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEFyY2hpdmVEaXJlY3RvcnkgPSAnYXJjaGl2ZURpcmVjdG9yeScsXG5cbiAgLy8gRFBJX0FyY2hpdmVGdWxsUGF0aCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEFyY2hpdmVGdWxsUGF0aCA9ICdhcmNoaXZlRnVsbFBhdGgnLFxuXG4gIC8vIERQSV9BdFRoZUxldmVsSW52YWxpZEZpZWxkQ2FwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF0VGhlTGV2ZWxJbnZhbGlkRmllbGRDYXB0aW9uID0gJ2F0VGhlTGV2ZWxJbnZhbGlkRmllbGRDYXB0aW9uJyxcblxuICAvLyBEUElfQXV0b0NvbXBsZXRlU3Vic3RyaW5nLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQXV0b0NvbXBsZXRlU3Vic3RyaW5nID0gJ2FjU3Vic3RyaW5nJyxcblxuICAvLyBEUElfQXV0b3NhdmVGaWxlSWQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBdXRvc2F2ZUZpbGVJZCA9ICdhdXRvc2F2ZUZpbGVJZCcsXG5cbiAgLy8gRFBJX0F1dG9zYXZlVGltZXJJbnRlcnZhbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF1dG9zYXZlVGltZXJJbnRlcnZhbCA9ICdhdXRvc2F2ZVRpbWVySW50ZXJ2YWwnLFxuXG4gIC8vIERQSV9CYXNlQ29sdW1uQ2FwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEJhc2VDb2x1bW5DYXB0aW9uID0gJ2Jhc2VDb2x1bW5DYXB0aW9uJyxcblxuICAvLyBEUElfQ2xlYXJCdXR0b25UZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ2xlYXJCdXR0b25UZXh0ID0gJ2NsZWFyQnV0dG9uVGV4dCcsXG5cbiAgLy8gRFBJX0NvbG9yUGFsZXR0ZUlkLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ29sb3JQYWxldHRlSWQgPSAnY29sb3JQYWxldHRlSWQnLFxuXG4gIC8vIERQSV9Db2xvclBhbGV0dGVOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ29sb3JQYWxldHRlTmFtZSA9ICdjb2xvclBhbGV0dGVOYW1lJyxcblxuICAvLyBEUElfQ29sb3JTd2F0Y2gsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDb2xvclN3YXRjaCA9ICdjb2xvclN3YXRjaCcsXG5cbiAgLy8gRFBJX0NvbW1hbmROYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ29tbWFuZE5hbWUgPSAnY29tbWFuZE5hbWUnLFxuXG4gIC8vIERQSV9Db25maWRlbmNlTGV2ZWxWYWx1ZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIENvbmZpZGVuY2VMZXZlbFZhbHVlID0gJ2NvbmZpZGVuY2VMZXZlbFZhbHVlJyxcblxuICAvLyBEUElfQ291bnREaXN0aW5jdFN0ciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIENvdW50RGlzdGluY3RTdHIgPSAnY291bnREaXN0aW5jdFN0cicsXG5cbiAgLy8gRFBJX0Nyb3NzVGFiRmlsZXBhdGgsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDcm9zc1RhYkZpbGVwYXRoID0gJ2Nyb3NzVGFiRmlsZXBhdGgnLFxuXG4gIC8vIERQSV9DU1NNYXJnaW4sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDU1NNYXJnaW4gPSAnY3NzTWFyZ2luJyxcblxuICAvLyBEUElfQ1NTV2hpdGVzcGFjZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIENTU1doaXRlc3BhY2UgPSAnY3NzV2hpdGVzcGFjZScsXG5cbiAgLy8gRFBJX0RCUGFzc3dvcmQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEQlBhc3N3b3JkID0gJ2RiUGFzc3dvcmQnLFxuXG4gIC8vIERQSV9EQlVzZXJuYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgREJVc2VybmFtZSA9ICdkYlVzZXJuYW1lJyxcblxuICAvLyBEUElfRGF0YUFsZXJ0Q29uZGl0aW9uVGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERhdGFBbGVydENvbmRpdGlvblRleHQgPSAnZGF0YUFsZXJ0Q29uZGl0aW9uVGV4dCcsXG5cbiAgLy8gRFBJX0RhdGFBbGVydE1lYXN1cmVUZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRGF0YUFsZXJ0TWVhc3VyZVRleHQgPSAnZGF0YUFsZXJ0TWVhc3VyZVRleHQnLFxuXG4gIC8vIERQSV9EYXRhQWxlcnRTcGVjU2VyaWFsaXplZFRleHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEYXRhQWxlcnRTcGVjU2VyaWFsaXplZFRleHQgPSAnZGF0YUFsZXJ0U3BlY1NlcmlhbGl6ZWRUZXh0JyxcblxuICAvLyBEUElfRGF0YUFsZXJ0RGVmYXVsdFN1YmplY3QsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEYXRhQWxlcnREZWZhdWx0U3ViamVjdCA9ICdkYXRhQWxlcnREZWZhdWx0U3ViamVjdCcsXG5cbiAgLy8gRFBJX0RhdGFBbGVydFRocmVzaG9sZFRleHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEYXRhQWxlcnRUaHJlc2hvbGRUZXh0ID0gJ2RhdGFBbGVydFRocmVzaG9sZFRleHQnLFxuXG4gIC8vIERQSV9EYXRhR3JpZFNvcnRDb2x1bW5OYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRGF0YUdyaWRTb3J0Q29sdW1uTmFtZSA9ICdkYXRhZ3JpZFNvcnRDb2x1bW5OYW1lJyxcblxuICAvLyBEUElfRGF0YVNlcnZlckNvbm5lY3Rpb25FcnJvciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERhdGFTZXJ2ZXJDb25uZWN0aW9uRXJyb3IgPSAnZGF0YVNlcnZlckNvbm5lY3Rpb25FcnJvcicsXG5cbiAgLy8gRFBJX0RhdGFiYXNlRmlsdGVyLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRGF0YWJhc2VGaWx0ZXIgPSAnZGF0YWJhc2VGaWx0ZXInLFxuXG4gIC8vIERQSV9EYXRhYmFzZUZpbHRlclByb21wdCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERhdGFiYXNlRmlsdGVyUHJvbXB0ID0gJ2RhdGFiYXNlRmlsdGVyUHJvbXB0JyxcblxuICAvLyBEUElfRGF0YXNvdXJjZVJhbmtpbmcsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEYXRhc291cmNlUmFua2luZyA9ICdkYXRhc291cmNlUmFua2luZycsXG5cbiAgLy8gRFBJX0RhdGFzb3VyY2VVcmwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEYXRhc291cmNlVXJsID0gJ2RhdGFzb3VyY2VVcmwnLFxuXG4gIC8vIERQSV9EYXRhc291cmNlVXNlcm5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEYXRhc291cmNlVXNlcm5hbWUgPSAnZGF0YXNvdXJjZVVzZXJuYW1lJyxcblxuICAvLyBEUElfRGF0ZUZvcm1hdCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERhdGVGb3JtYXQgPSAnZGF0ZUZvcm1hdCcsXG5cbiAgLy8gRFBJX0RhdGVQYXJ0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRGF0ZVBhcnQgPSAnZGF0ZVBhcnQnLFxuXG4gIC8vIERQSV9EYXRlUGFydEFiYnJldiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERhdGVQYXJ0QWJicmV2ID0gJ2RhdGVQYXJ0QWJicmV2JyxcblxuICAvLyBEUElfRGVmYXVsdEhpZXJhcmNoeU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEZWZhdWx0SGllcmFyY2h5TmFtZSA9ICdkZWZhdWx0SGllcmFyY2h5TmFtZScsXG5cbiAgLy8gRFBJX0RlZmF1bHRNZW51SXRlbUtleSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERlZmF1bHRNZW51SXRlbUtleSA9ICdkZWZhdWx0TWVudUl0ZW1LZXknLFxuXG4gIC8vIERQSV9EZWxpbWl0ZXIsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEZWxpbWl0ZXIgPSAnZGVsaW1pdGVyJyxcblxuICAvLyBEUElfRGV2aWNlTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERldmljZU5hbWUgPSAnZGV2aWNlTmFtZScsXG5cbiAgLy8gRFBJX0RldmljZVR5cGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEZXZpY2VUeXBlID0gJ2RldmljZVR5cGUnLFxuXG4gIC8vIERQSV9EaXNwbGF5UGF0aCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERpc3BsYXlQYXRoID0gJ2Rpc3BsYXlQYXRoJyxcblxuICAvLyBEUElfRGlzdHJpYnV0aW9uVmFsdWVTdHJpbmcsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEaXN0cmlidXRpb25WYWx1ZVN0cmluZyA9ICdkaXN0cmlidXRpb25WYWx1ZVN0cmluZycsXG5cbiAgLy8gRFBJX0RyaWxsUGF0aE5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEcmlsbFBhdGhOYW1lID0gJ2RyaWxsUGF0aE5hbWUnLFxuXG4gIC8vIERQSV9FbWJlZGRlZFRpdGxlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRW1iZWRkZWRUaXRsZSA9ICdlbWJlZGRlZFRpdGxlJyxcblxuICAvLyBEUElfRW50ZXJWYWx1ZVRleHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBFbnRlclZhbHVlVGV4dCA9ICdlbnRlclZhbHVlVGV4dCcsXG5cbiAgLy8gRFBJX0VzY2FwZVN0cmluZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEVzY2FwZVN0cmluZyA9ICdlc2NhcGVTdHJpbmcnLFxuXG4gIC8vIERQSV9FeHRTdmNDb25maWdIb3N0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRXh0U3ZjQ29uZmlnSG9zdCA9ICdleHRTdmNDb25maWdIb3N0JyxcblxuICAvLyBEUElfRXh0U3ZjQ29uZmlnUGFzc3dvcmQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBFeHRTdmNDb25maWdQYXNzd29yZCA9ICdleHRTdmNDb25maWdQYXNzd29yZCcsXG5cbiAgLy8gRFBJX0V4dFN2Y0NvbmZpZ1BvcnQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBFeHRTdmNDb25maWdQb3J0ID0gJ2V4dFN2Y0NvbmZpZ1BvcnQnLFxuXG4gIC8vIERQSV9FeHRTdmNDb25maWdDb25uZWN0VGltZW91dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEV4dFN2Y0NvbmZpZ0Nvbm5lY3RUaW1lb3V0ID0gJ2V4dFN2Y0Nvbm5lY3RUaW1lb3V0JyxcblxuICAvLyBEUElfRXh0U3ZjQ29uZmlnUHJldkhvc3QsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBFeHRTdmNDb25maWdQcmV2SG9zdCA9ICdleHRTdmNDb25maWdQcmV2SG9zdCcsXG5cbiAgLy8gRFBJX0V4dFN2Y0NvbmZpZ1VzZXJuYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRXh0U3ZjQ29uZmlnVXNlcm5hbWUgPSAnZXh0U3ZjQ29uZmlnVXNlcm5hbWUnLFxuXG4gIC8vIERQSV9FeHRyYWN0VXBkYXRlVGltZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEV4dHJhY3RVcGRhdGVUaW1lID0gJ2V4dHJhY3RVcGRhdGVUaW1lJyxcblxuICAvLyBEUElfRmllbGRGb2xkZXJOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRmllbGRGb2xkZXJOYW1lID0gJ2ZpZWxkRm9sZGVyTmFtZScsXG5cbiAgLy8gRFBJX0ZpZWxkTmFtZVN0cmluZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZpZWxkTmFtZVN0cmluZyA9ICdmaWVsZE5hbWUnLFxuXG4gIC8vIERQSV9GaWx0ZXJTZWFyY2hEb21haW4sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGaWx0ZXJTZWFyY2hEb21haW4gPSAnZmlsdGVyU2VhcmNoRG9tYWluJyxcblxuICAvLyBEUElfRmlsdGVyU3BlYywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZpbHRlclNwZWMgPSAnZmlsdGVyU3BlYycsXG5cbiAgLy8gRFBJX0ZpcnN0VmFsdWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGaXJzdFZhbHVlID0gJ2ZpcnN0VmFsdWUnLFxuXG4gIC8vIERQSV9Gb2xkZXJOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRm9sZGVyTmFtZSA9ICdmb2xkZXJOYW1lJyxcblxuICAvLyBEUElfRm9udE5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGb250TmFtZSA9ICdmb250TmFtZScsXG5cbiAgLy8gRFBJX0Zvcm1hdFN0cmluZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZvcm1hdFN0cmluZyA9ICdmb3JtYXRTdHJpbmcnLFxuXG4gIC8vIERQSV9Gb3JtYXR0ZWREaXNwbGF5U3RyaW5nLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRm9ybWF0dGVkRGlzcGxheVN0cmluZyA9ICdmb3JtYXR0ZWREaXNwbGF5U3RyaW5nJyxcblxuICAvLyBEUElfRm9ybWF0dGVkSW5jcmVtZW50VmFsdWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGb3JtYXR0ZWRJbmNyZW1lbnRWYWx1ZSA9ICdmb3JtYXR0ZWRJbmNyZW1lbnQnLFxuXG4gIC8vIERQSV9Gb3JtYXR0ZWRNYXhWYWx1ZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZvcm1hdHRlZE1heFZhbHVlID0gJ2Zvcm1hdHRlZE1heCcsXG5cbiAgLy8gRFBJX0Zvcm1hdHRlZE1pblZhbHVlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRm9ybWF0dGVkTWluVmFsdWUgPSAnZm9ybWF0dGVkTWluJyxcblxuICAvLyBEUElfRm9ybWF0dGVkVmFsdWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGb3JtYXR0ZWRWYWx1ZSA9ICdmb3JtYXR0ZWRWYWx1ZScsXG5cbiAgLy8gRFBJX0Zvcm1hdHRlZENlbnRlclZhbHVlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRm9ybWF0dGVkQ2VudGVyVmFsdWUgPSAnZm9ybWF0dGVkQ2VudGVyJyxcblxuICAvLyBEUElfRm9ybWF0dGVkRW5kVmFsdWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGb3JtYXR0ZWRFbmRWYWx1ZSA9ICdmb3JtYXR0ZWRFbmQnLFxuXG4gIC8vIERQSV9Gb3JtYXR0ZWRTdGFydFZhbHVlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRm9ybWF0dGVkU3RhcnRWYWx1ZSA9ICdmb3JtYXR0ZWRTdGFydCcsXG5cbiAgLy8gRFBJX1BhaXJlZEZvcm1hdHRlZFZhbHVlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUGFpcmVkRm9ybWF0dGVkVmFsdWUgPSAncGFpcmVkRm9ybWF0dGVkVmFsdWUnLFxuXG4gIC8vIERQSV9GcmFtZUF0dHJpYnV0ZXMsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGcmFtZUF0dHJpYnV0ZXMgPSAnZnJhbWVBdHRyJyxcblxuICAvLyBEUElfR1VJRCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEdVSUQgPSAnZ3VpZCcsXG5cbiAgLy8gRFBJX0dlb2dyYXBoaWNTZWFyY2hDYW5kaWRhdGVEaXNwbGF5TmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEdlb2dyYXBoaWNTZWFyY2hDYW5kaWRhdGVEaXNwbGF5TmFtZSA9ICdnZW9ncmFwaGljU2VhcmNoQ2FuZGlkYXRlRGlzcGxheU5hbWUnLFxuXG4gIC8vIERQSV9HZW9ncmFwaGljU2VhcmNoQ2FuZGlkYXRlUGFyZW50TmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEdlb2dyYXBoaWNTZWFyY2hDYW5kaWRhdGVQYXJlbnROYW1lID0gJ2dlb2dyYXBoaWNTZWFyY2hDYW5kaWRhdGVQYXJlbnROYW1lJyxcblxuICAvLyBEUElfR2VvZ3JhcGhpY1NlYXJjaENhbmRpZGF0ZVR5cGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBHZW9ncmFwaGljU2VhcmNoQ2FuZGlkYXRlVHlwZSA9ICdnZW9ncmFwaGljU2VhcmNoQ2FuZGlkYXRlVHlwZScsXG5cbiAgLy8gRFBJX0dlb2dyYXBoaWNTZWFyY2hMb2NhbGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBHZW9ncmFwaGljU2VhcmNoTG9jYWxlID0gJ2dlb2dyYXBoaWNTZWFyY2hMb2NhbGUnLFxuXG4gIC8vIERQSV9HZW9ncmFwaGljU2VhcmNoUXVlcnlTdHJpbmcsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBHZW9ncmFwaGljU2VhcmNoUXVlcnlTdHJpbmcgPSAnZ2VvZ3JhcGhpY1NlYXJjaFNlYXJjaFN0cmluZycsXG5cbiAgLy8gRFBJX0dlb2dyYXBoaWNTZWFyY2hVSUxvY2FsZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEdlb2dyYXBoaWNTZWFyY2hVSUxvY2FsZSA9ICdnZW9ncmFwaGljU2VhcmNoVWlsb2NhbGUnLFxuXG4gIC8vIERQSV9JY29uUmVzLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgSWNvblJlcyA9ICdpY29uUmVzJyxcblxuICAvLyBEUElfSW1hZ2VIYXNoLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgSW1hZ2VIYXNoID0gJ2ltYWdlSGFzaCcsXG5cbiAgLy8gRFBJX0ltYWdlTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEltYWdlTmFtZSA9ICdpbWFnZU5hbWUnLFxuXG4gIC8vIERQSV9JbWFnZVJlcywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEltYWdlUmVzID0gJ2ltYWdlUmVzJyxcblxuICAvLyBEUElfSW5jbHVkZXNTaWJsaW5nc1Byb21wdCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEluY2x1ZGVzU2libGluZ3NQcm9tcHQgPSAnaW5jbHVkZXNTaWJsaW5nc1Byb21wdCcsXG5cbiAgLy8gRFBJX0luY2x1ZGVzU3ViZm9sZGVyc1Byb21wdCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEluY2x1ZGVzU3ViZm9sZGVyc1Byb21wdCA9ICdpbmNsdWRlc1N1YmZvbGRlcnNQcm9tcHQnLFxuXG4gIC8vIERQSV9JbmNyZW1lbnRhbFNjaGVkdWxlSURzLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgSW5jcmVtZW50YWxTY2hlZHVsZUlEcyA9ICdpbmNyZW1lbnRhbFNjaGVkdWxlSWRzJyxcblxuICAvLyBEUElfSW52YXJpYW50S2V5d29yZCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEludmFyaWFudEtleXdvcmQgPSAnaW52YXJpYW50S2V5d29yZCcsXG5cbiAgLy8gRFBJX0pvaW5PcGVyYXRvciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEpvaW5PcGVyYXRvciA9ICdqb2luT3BlcmF0b3InLFxuXG4gIC8vIERQSV9Kb2luRXhwcmVzc2lvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEpvaW5FeHByZXNzaW9uID0gJ2pvaW5FeHByZXNzaW9uJyxcblxuICAvLyBEUElfS2V5LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgS2V5ID0gJ2tleUlkJyxcblxuICAvLyBEUElfTGFiZWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBMYWJlbCA9ICdsYWJlbCcsXG5cbiAgLy8gRFBJX1BhaXJlZExhYmVsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUGFpcmVkTGFiZWwgPSAncGFpcmVkTGFiZWwnLFxuXG4gIC8vIERQSV9MYXlvdXRJRCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIExheW91dElEID0gJ2xheW91dElkJyxcblxuICAvLyBEUElfTGVmdEpvaW5FeHByZXNzaW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTGVmdEpvaW5FeHByZXNzaW9uID0gJ2xlZnRKb2luRXhwcmVzc2lvbicsXG5cbiAgLy8gRFBJX0xpbWl0Q291bnRFeHByZXNzaW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTGltaXRDb3VudEV4cHJlc3Npb24gPSAnbGltaXRDb3VudEV4cHJlc3Npb24nLFxuXG4gIC8vIERQSV9MaW5rVGFyZ2V0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTGlua1RhcmdldCA9ICdsaW5rVGFyZ2V0JyxcblxuICAvLyBEUElfTG9jYWxlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTG9jYWxlID0gJ2xvY2FsZScsXG5cbiAgLy8gRFBJX0xvY2FsaXplZEtleXdvcmQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBMb2NhbGl6ZWRLZXl3b3JkID0gJ2xvY2FsaXplZEtleXdvcmQnLFxuXG4gIC8vIERQSV9NYXBCb3hHTFN0eWxlSWQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBNYXBCb3hHTFN0eWxlSWQgPSAnbWFwYm94R2xTdHlsZUlkJyxcblxuICAvLyBEUElfTWFwQm94U3R5bGVVcmwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBNYXBCb3hTdHlsZVVybCA9ICdtYXBib3hTdHlsZVVybCcsXG5cbiAgLy8gRFBJX01hcEJveFVzZXJuYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTWFwQm94VXNlcm5hbWUgPSAnbWFwYm94VXNlcm5hbWUnLFxuXG4gIC8vIERQSV9NYXBTY2FsZVJlYWRvdXRTdHJpbmcsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBNYXBTY2FsZVJlYWRvdXRTdHJpbmcgPSAnbWFwU2NhbGVSZWFkb3V0U3RyaW5nJyxcblxuICAvLyBEUElfTWFwU2NhbGVUb29sdGlwU3RyaW5nLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTWFwU2NhbGVUb29sdGlwU3RyaW5nID0gJ21hcFNjYWxlVG9vbHRpcFN0cmluZycsXG5cbiAgLy8gRFBJX01hcFNvdXJjZU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBNYXBTb3VyY2VOYW1lID0gJ21hcFNvdXJjZU5hbWUnLFxuXG4gIC8vIERQSV9NYXhMYWJlbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE1heExhYmVsID0gJ21heExhYmVsJyxcblxuICAvLyBEUElfTWluTGFiZWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBNaW5MYWJlbCA9ICdtaW5MYWJlbCcsXG5cbiAgLy8gRFBJX01vZGVsRGVzY3JpcHRpb25QYXJhZ3JhcGgsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBNb2RlbERlc2NyaXB0aW9uUGFyYWdyYXBoID0gJ21vZGVsRGVzY3JpcHRpb25QYXJhZ3JhcGgnLFxuXG4gIC8vIERQSV9OYW1lVGVtcGxhdGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBOYW1lVGVtcGxhdGUgPSAnbmFtZVRlbXBsYXRlJyxcblxuICAvLyBEUElfTmV3RHJpbGxQYXRoLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTmV3RHJpbGxQYXRoID0gJ25ld0RyaWxsUGF0aCcsXG5cbiAgLy8gRFBJX05ld0ZpZWxkRm9sZGVyTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE5ld0ZpZWxkRm9sZGVyTmFtZSA9ICduZXdGaWVsZEZvbGRlck5hbWUnLFxuXG4gIC8vIERQSV9OZXdUYWJsZUFsaWFzLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTmV3VGFibGVBbGlhcyA9ICduZXdUYWJsZUFsaWFzJyxcblxuICAvLyBEUElfTm9uRm9ybWF0dGVkVmFsdWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBOb25Gb3JtYXR0ZWRWYWx1ZSA9ICd1bmZvcm1hdHRlZFZhbHVlJyxcblxuICAvLyBEUElfT0F1dGhVc2VyTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE9BdXRoVXNlck5hbWUgPSAnb2F1dGhVc2VybmFtZScsXG5cbiAgLy8gRFBJX09iamVjdE5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBPYmplY3ROYW1lID0gJ29iamVjdE5hbWUnLFxuXG4gIC8vIERQSV9PYmplY3RPdmVycmlkZU1lc3NhZ2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBPYmplY3RPdmVycmlkZU1lc3NhZ2UgPSAnb2JqZWN0T3ZlcnJpZGVNZXNzYWdlJyxcblxuICAvLyBEUElfT2xkVGFibGVBbGlhcywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE9sZFRhYmxlQWxpYXMgPSAnb2xkVGFibGVBbGlhcycsXG5cbiAgLy8gRFBJX09wZXJhdGluZ1N5c3RlbSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE9wZXJhdGluZ1N5c3RlbSA9ICdvcGVyYXRpbmdTeXN0ZW0nLFxuXG4gIC8vIERQSV9PcmlnaW5hbEZpbGVQYXRoLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgT3JpZ2luYWxGaWxlUGF0aCA9ICdvcmlnaW5hbEZpbGVQYXRoJyxcblxuICAvLyBEUElfT3JpZ2luYWxGaWxlVmVyc2lvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE9yaWdpbmFsRmlsZVZlcnNpb24gPSAnb3JpZ2luYWxGaWxlVmVyc2lvbicsXG5cbiAgLy8gRFBJX1BhbmVEZXNjcmlwdG9yS2V5LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUGFuZURlc2NyaXB0b3JLZXkgPSAncGFuZURlc2NyS2V5JyxcblxuICAvLyBEUElfUGFyZW50TmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFBhcmVudE5hbWUgPSAncGFyZW50TmFtZScsXG5cbiAgLy8gRFBJX1BhcmVudFRhYmxlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUGFyZW50VGFibGUgPSAncGFyZW50VGFibGUnLFxuXG4gIC8vIERQSV9QYXR0ZXJuRmlsdGVyU3RyaW5nLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUGF0dGVybkZpbHRlclN0cmluZyA9ICdwYXR0ZXJuRmlsdGVyU3RyaW5nJyxcblxuICAvLyBEUElfUGVuZGluZ0NhbGNOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUGVuZGluZ0NhbGNOYW1lID0gJ3BlbmRpbmdDYWxjTmFtZScsXG5cbiAgLy8gRFBJX1BlcmNlbnRpbGVzU3RyaW5nLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUGVyY2VudGlsZXNTdHJpbmcgPSAncGVyY2VudGlsZXNTdHJpbmcnLFxuXG4gIC8vIERQSV9Qcm9qZWN0TmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFByb2plY3ROYW1lID0gJ3Byb2plY3ROYW1lJyxcblxuICAvLyBEUElfUHJvcGVydHlOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUHJvcGVydHlOYW1lID0gJ3Byb3BlcnR5TmFtZScsXG5cbiAgLy8gRFBJX1F1aWNrRmlsdGVyVGl0bGVDYXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUXVpY2tGaWx0ZXJUaXRsZUNhcHRpb24gPSAncXVpY2tGaWx0ZXJUaXRsZUNhcHRpb24nLFxuXG4gIC8vIERQSV9SYW5nZURpZmZTdHIsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBSYW5nZURpZmZTdHIgPSAnZGlmZlZhbHVlJyxcblxuICAvLyBEUElfUmFuZ2VNYXhTdHIsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBSYW5nZU1heFN0ciA9ICdtYXhWYWx1ZScsXG5cbiAgLy8gRFBJX1JhbmdlTWluU3RyLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUmFuZ2VNaW5TdHIgPSAnbWluVmFsdWUnLFxuXG4gIC8vIERQSV9SZWNvdmVyZWRGaWxlUGF0aCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFJlY292ZXJlZEZpbGVQYXRoID0gJ3JlY292ZXJlZEZpbGVQYXRoJyxcblxuICAvLyBEUElfUmVmZXJlbmNlTGluZVNwZWNpZmljYXRpb25JZCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFJlZmVyZW5jZUxpbmVTcGVjaWZpY2F0aW9uSWQgPSAncmVmZXJlbmNlTGluZUlkJyxcblxuICAvLyBEUElfUmVwbGFjZUZpZWxkUHJvbXB0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUmVwbGFjZUZpZWxkUHJvbXB0ID0gJ3JlcGxhY2VGaWVsZFByb21wdCcsXG5cbiAgLy8gRFBJX1JpZ2h0Sm9pbkV4cHJlc3Npb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBSaWdodEpvaW5FeHByZXNzaW9uID0gJ3JpZ2h0Sm9pbkV4cHJlc3Npb24nLFxuXG4gIC8vIERQSV9Sb290UGF0aCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFJvb3RQYXRoID0gJ3Jvb3RQYXRoJyxcblxuICAvLyBEUElfUnVudGltZUZpbmFsRGF0YXN0b3JlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUnVudGltZUZpbmFsRGF0YXN0b3JlID0gJ3J1bnRpbWVGaW5hbERhdGFzdG9yZScsXG5cbiAgLy8gRFBJX1J1bnRpbWVJbml0aWFsRGF0YXN0b3JlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUnVudGltZUluaXRpYWxEYXRhc3RvcmUgPSAncnVudGltZUluaXRpYWxEYXRhc3RvcmUnLFxuXG4gIC8vIERQSV9SdW50aW1lVlRMLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUnVudGltZVZUTCA9ICdydW50aW1lVnRsJyxcblxuICAvLyBEUElfU2FtcGxlRGF0YVN0cmluZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNhbXBsZURhdGFTdHJpbmcgPSAnc2FtcGxlRGF0YScsXG5cbiAgLy8gRFBJX1NjaGVkdWxlSURzLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU2NoZWR1bGVJRHMgPSAnc2NoZWR1bGVJZHMnLFxuXG4gIC8vIERQSV9TY2hlbWFGaWVsZEljb25SZXNvdXJjZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNjaGVtYUZpZWxkSWNvblJlc291cmNlID0gJ2ZpZWxkSWNvblJlcycsXG5cbiAgLy8gRFBJX1NjcmVlbk5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTY3JlZW5OYW1lID0gJ3NjcmVlbk5hbWUnLFxuXG4gIC8vIERQSV9TY3JpcHRDb21tYW5kLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU2NyaXB0Q29tbWFuZCA9ICdjb21tYW5kJyxcblxuICAvLyBEUElfU2Vjb25kVmFsdWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTZWNvbmRWYWx1ZSA9ICdzZWNvbmRWYWx1ZScsXG5cbiAgLy8gRFBJX1NlbGVjdGVkVmFsdWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTZWxlY3RlZFZhbHVlID0gJ3NlbGVjdGVkVmFsdWUnLFxuXG4gIC8vIERQSV9TaGFwZU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTaGFwZU5hbWUgPSAnc2hhcGVOYW1lJyxcblxuICAvLyBEUElfU2hlZXRJZCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNoZWV0SWQgPSAnc2hlZXRJZCcsXG5cbiAgLy8gRFBJX1Nob3dEYXRhVGFibGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTaG93RGF0YVRhYmxlID0gJ3Nob3dEYXRhVGFibGUnLFxuXG4gIC8vIERQSV9TaW1wbGVDb21tYW5kLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU2ltcGxlQ29tbWFuZCA9ICdzaW1wbGVDb21tYW5kJyxcblxuICAvLyBEUElfU29ydE1vZGVDYXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU29ydE1vZGVDYXB0aW9uID0gJ3NvcnRNb2RlQ2FwdGlvbicsXG5cbiAgLy8gRFBJX1NvdXJjZU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTb3VyY2VOYW1lID0gJ3NvdXJjZU5hbWUnLFxuXG4gIC8vIERQSV9Tb3VyY2VUZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU291cmNlVGV4dCA9ICdzb3VyY2VUZXh0JyxcblxuICAvLyBEUElfU3BlY2lhbFZhbHVlVGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNwZWNpYWxWYWx1ZVRleHQgPSAnc3BlY2lhbFZhbHVlVGV4dCcsXG5cbiAgLy8gRFBJX1N0YXRpY0ltYWdlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU3RhdGljSW1hZ2UgPSAnc3RhdGljSW1hZ2UnLFxuXG4gIC8vIERQSV9TdG9yeVBvaW50QmFzZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFN0b3J5UG9pbnRCYXNlID0gJ3N0b3J5UG9pbnRCYXNlJyxcblxuICAvLyBEUElfU3RvcnlQb2ludENhcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTdG9yeVBvaW50Q2FwdGlvbiA9ICdzdG9yeVBvaW50Q2FwdGlvbicsXG5cbiAgLy8gRFBJX1N0b3J5Ym9hcmQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTdG9yeWJvYXJkID0gJ3N0b3J5Ym9hcmQnLFxuXG4gIC8vIERQSV9TdHlsZWRMYWJlbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFN0eWxlZExhYmVsID0gJ3N0eWxlZExhYmVsJyxcblxuICAvLyBEUElfU3VtbWFyeUNhcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTdW1tYXJ5Q2FwdGlvbiA9ICdzdW1tYXJ5Q2FwdGlvbicsXG5cbiAgLy8gRFBJX1N1bW1hcnlGaWVsZCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFN1bW1hcnlGaWVsZCA9ICdzdW1tYXJ5RmllbGQnLFxuXG4gIC8vIERQSV9UYWJsZWF1VmVyc2lvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFRhYmxlYXVWZXJzaW9uID0gJ3RhYmxlYXVWZXJzaW9uJyxcblxuICAvLyBEUElfVGFibGVGaWx0ZXIsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUYWJsZUZpbHRlciA9ICd0YWJsZUZpbHRlcicsXG5cbiAgLy8gRFBJX1RhYmxlRmlsdGVyUHJvbXB0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVGFibGVGaWx0ZXJQcm9tcHQgPSAndGFibGVGaWx0ZXJQcm9tcHQnLFxuXG4gIC8vIERQSV9UYWdzTGFiZWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUYWdzTGFiZWwgPSAndGFnc0xhYmVsJyxcblxuICAvLyBEUElfVGFyZ2V0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVGFyZ2V0ID0gJ3RhcmdldCcsXG5cbiAgLy8gRFBJX1RodW1ibmFpbEdyb3VwLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVGh1bWJuYWlsR3JvdXAgPSAndGh1bWJuYWlsR3JvdXAnLFxuXG4gIC8vIERQSV9UaHVtYm5haWxVc2VyLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVGh1bWJuYWlsVXNlciA9ICd0aHVtYm5haWxVc2VyJyxcblxuICAvLyBEUElfVGltZUZvcm1hdCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFRpbWVGb3JtYXQgPSAndGltZUZvcm1hdCcsXG5cbiAgLy8gRFBJX1RyZW5kTGluZUVycm9yU3RyaW5nLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVHJlbmRMaW5lRXJyb3JTdHJpbmcgPSAndHJlbmRMaW5lRXJyb3JTdHJpbmcnLFxuXG4gIC8vIERQSV9UcmVuZExpbmVNb2RlbEZvcm11bGEsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUcmVuZExpbmVNb2RlbEZvcm11bGEgPSAndHJlbmRMaW5lTW9kZWxGb3JtdWxhJyxcblxuICAvLyBEUElfVVJMU3RyaW5nLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVVJMU3RyaW5nID0gJ3VybFN0cmluZycsXG5cbiAgLy8gRFBJX1VSTFRlc3QsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBVUkxUZXN0ID0gJ3VybFRlc3QnLFxuXG4gIC8vIERQSV9WYWxpZGF0aW9uTWVzc2FnZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFZhbGlkYXRpb25NZXNzYWdlID0gJ3ZhbGlkYXRpb25NZXNzYWdlJyxcblxuICAvLyBEUElfVmFsdWVTdHIsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBWYWx1ZVN0ciA9ICd2YWx1ZVN0cmluZycsXG5cbiAgLy8gRFBJX1ZlcmlmaWVkTm9uRm9ybWF0dGVkVmFsdWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBWZXJpZmllZE5vbkZvcm1hdHRlZFZhbHVlID0gJ3ZlcmlmaWVkVW5mb3JtYXR0ZWRWYWx1ZScsXG5cbiAgLy8gRFBJX1dvcmtib29rRnVsbFBhdGgsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBXb3JrYm9va0Z1bGxQYXRoID0gJ3dvcmtib29rRnVsbFBhdGgnLFxuXG4gIC8vIERQSV9XaW5kb3dUaXRsZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFdpbmRvd1RpdGxlID0gJ3dpbmRvd1RpdGxlJyxcblxuICAvLyBEUElfWm9uZU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBab25lTmFtZSA9ICd6b25lTmFtZScsXG5cbiAgLy8gRFBJX1pvbmVQYXJhbSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFpvbmVQYXJhbSA9ICd6b25lUGFyYW0nLFxuXG4gIC8vIERQSV9EYXRhQWxlcnRFcnJvclRleHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEYXRhQWxlcnRFcnJvclRleHQgPSAnZGF0YUFsZXJ0RXJyb3JUZXh0JyxcblxuICAvLyBEUElfRXh0cmFjdFRlbXBEaXJlY3RvcnksIGhhdmluZyB0eXBlIHN0cmluZ1xuICBFeHRyYWN0VGVtcERpcmVjdG9yeSA9ICdleHRyYWN0VGVtcERpcicsXG5cbiAgLy8gRFBJX0RTU3ViQ2xhc3MsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEU1N1YkNsYXNzID0gJ2RzU3ViQ2xhc3MnLFxuXG4gIC8vIERQSV9EYmdDb21tYW5kTGluZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERiZ0NvbW1hbmRMaW5lID0gJ2RlYnVnQ29tbWFuZExpbmUnLFxuXG4gIC8vIERQSV9EYmdMb2dQYXRoLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRGJnTG9nUGF0aCA9ICdkZWJ1Z0xvZ1BhdGgnLFxuXG4gIC8vIERQSV9EYmdPU1ZlcnNpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEYmdPU1ZlcnNpb24gPSAnZGVidWdPc1ZlcnNpb24nLFxuXG4gIC8vIERQSV9EYmdVc2VyTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERiZ1VzZXJOYW1lID0gJ2RlYnVnVXNlcm5hbWUnLFxuXG4gIC8vIERQSV9FcnJvck1zZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEVycm9yTXNnID0gJ2Vycm9yTWVzc2FnZScsXG5cbiAgLy8gRFBJX0Vycm9yU3RhY2tUcmFjZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEVycm9yU3RhY2tUcmFjZSA9ICdlcnJvclN0YWNrVHJhY2UnLFxuXG4gIC8vIERQSV9FcnJvclN0ciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEVycm9yU3RyID0gJ2Vycm9yU3RyaW5nJyxcblxuICAvLyBEUElfRXZlbnRNZXNzYWdlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRXZlbnRNZXNzYWdlID0gJ2V2ZW50TWVzc2FnZScsXG5cbiAgLy8gRFBJX0V2ZW50VGltZXN0YW1wLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRXZlbnRUaW1lc3RhbXAgPSAnZXZlbnRUaW1lc3RhbXAnLFxuXG4gIC8vIERQSV9FeHRyYWN0RGVsdGFQYXRoLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRXh0cmFjdERlbHRhUGF0aCA9ICdleHRyYWN0RGVsdGFQYXRoJyxcblxuICAvLyBEUElfRXh0cmFjdFBhdGgsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBFeHRyYWN0UGF0aCA9ICdleHRyYWN0UGF0aCcsXG5cbiAgLy8gRFBJX0V4dHJhY3RTdWdnZXN0ZWRQYXRoLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRXh0cmFjdFN1Z2dlc3RlZFBhdGggPSAnc3VnZ2VzdGVkRXh0cmFjdFBhdGgnLFxuXG4gIC8vIERQSV9FeHRyYWN0VGFza1N1bW1hcnksIGhhdmluZyB0eXBlIHN0cmluZ1xuICBFeHRyYWN0VGFza1N1bW1hcnkgPSAnZXh0cmFjdFRhc2tTdW1tYXJ5JyxcblxuICAvLyBEUElfRmFjdG9yc1N0cmluZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZhY3RvcnNTdHJpbmcgPSAnZmFjdG9yc1N0cicsXG5cbiAgLy8gRFBJX0Zvcm1hdHRlZEZhbWlseU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGb3JtYXR0ZWRGYW1pbHlOYW1lID0gJ2Zvcm1hdHRlZEZhbWlseU5hbWUnLFxuXG4gIC8vIERQSV9GdW5jdGlvblNpZ25hdHVyZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZ1bmN0aW9uU2lnbmF0dXJlID0gJ2Z1bmNTaWcnLFxuXG4gIC8vIERQSV9GdW5jdGlvblRvb2x0aXAsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGdW5jdGlvblRvb2x0aXAgPSAnZnVuY1Rvb2x0aXAnLFxuXG4gIC8vIERQSV9IZWxwQ29udGVudHMsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBIZWxwQ29udGVudHMgPSAnaGVscENvbnRlbnRzJyxcblxuICAvLyBEUElfTWFwQXR0cmlidXRpb25UZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTWFwQXR0cmlidXRpb25UZXh0ID0gJ21hcEF0dHJpYnV0aW9uVGV4dCcsXG5cbiAgLy8gRFBJX01hcEF0dHJpYnV0aW9uVGV4dFNpemUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBNYXBBdHRyaWJ1dGlvblRleHRTaXplID0gJ21hcEF0dHJpYnV0aW9uVGV4dFNpemUnLFxuXG4gIC8vIERQSV9NYXBBdHRyaWJ1dGlvblVybCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE1hcEF0dHJpYnV0aW9uVXJsID0gJ21hcEF0dHJpYnV0aW9uVXJsJyxcblxuICAvLyBEUElfTWFwQm94RXJyb3JNZXNzYWdlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTWFwQm94RXJyb3JNZXNzYWdlID0gJ21hcGJveEVycm9yTWVzc2FnZScsXG5cbiAgLy8gRFBJX01hcEJveE9sZFN0eWxlTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE1hcEJveE9sZFN0eWxlTmFtZSA9ICdtYXBib3hPbGRTdHlsZU5hbWUnLFxuXG4gIC8vIERQSV9NYXBCb3hTZWxlY3RlZFN0eWxlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTWFwQm94U2VsZWN0ZWRTdHlsZSA9ICdtYXBib3hTZWxlY3RlZFN0eWxlJyxcblxuICAvLyBEUElfTWFwQm94U3R5bGVOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTWFwQm94U3R5bGVOYW1lID0gJ21hcGJveFN0eWxlTmFtZScsXG5cbiAgLy8gRFBJX01hcExheWVyUmVxdWVzdCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE1hcExheWVyUmVxdWVzdCA9ICdtYXBMYXllclJlcXVlc3QnLFxuXG4gIC8vIERQSV9NYXBTZXJ2ZXJLZXksIGhhdmluZyB0eXBlIHN0cmluZ1xuICBNYXBTZXJ2ZXJLZXkgPSAnbWFwU2VydmVyS2V5JyxcblxuICAvLyBEUElfTWFwVGlsZVNlcnZlciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE1hcFRpbGVTZXJ2ZXIgPSAnbWFwVGlsZVNlcnZlcicsXG5cbiAgLy8gRFBJX01hcFRpbGVVcmwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBNYXBUaWxlVXJsID0gJ21hcFRpbGVVcmwnLFxuXG4gIC8vIERQSV9QZXJjZW50YWdlc1N0cmluZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFBlcmNlbnRhZ2VzU3RyaW5nID0gJ3BlcmNlbnRhZ2VzU3RyJyxcblxuICAvLyBEUElfUHVibGlzaEVycm9yTWVzc2FnZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFB1Ymxpc2hFcnJvck1lc3NhZ2UgPSAncHVibGlzaEVycm9yTWVzc2FnZScsXG5cbiAgLy8gRFBJX1RkZVBhdGgsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUZGVQYXRoID0gJ3RkZVBhdGgnLFxuXG4gIC8vIERQSV9VSUF1dG9tYXRpb25Db21wb25lbnROYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVUlBdXRvbWF0aW9uQ29tcG9uZW50TmFtZSA9ICd1aUF1dG9tYXRpb25Db21wb25lbnROYW1lJyxcblxuICAvLyBEUElfVUlBdXRvbWF0aW9uRW5kVGltZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFVJQXV0b21hdGlvbkVuZFRpbWUgPSAndWlBdXRvbWF0aW9uRW5kVGltZScsXG5cbiAgLy8gRFBJX1VJQXV0b21hdGlvbk5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBVSUF1dG9tYXRpb25OYW1lID0gJ3VpQXV0b21hdGlvbk5hbWUnLFxuXG4gIC8vIERQSV9VSUF1dG9tYXRpb25TdGFydFRpbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBVSUF1dG9tYXRpb25TdGFydFRpbWUgPSAndWlBdXRvbWF0aW9uU3RhcnRUaW1lJyxcblxuICAvLyBEUElfVUlBdXRvbWF0aW9uVmFsdWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBVSUF1dG9tYXRpb25WYWx1ZSA9ICd1aUF1dG9tYXRpb25WYWx1ZScsXG5cbiAgLy8gRFBJX1dNU0Nvbm5lY3Rpb25OYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgV01TQ29ubmVjdGlvbk5hbWUgPSAnd21zQ29ubmVjdGlvbk5hbWUnLFxuXG4gIC8vIERQSV9XTVNPbGRDb25uZWN0aW9uTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFdNU09sZENvbm5lY3Rpb25OYW1lID0gJ3dtc09sZENvbm5lY3Rpb25OYW1lJyxcblxuICAvLyBEUElfV01TU2VydmVyVXJsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgV01TU2VydmVyVXJsID0gJ3dtc1NlcnZlclVybCcsXG5cbiAgLy8gRFBJX0Fib3V0QnVpbGRWZXJzaW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQWJvdXRCdWlsZFZlcnNpb24gPSAnYWJvdXRCdWlsZFZlcnNpb24nLFxuXG4gIC8vIERQSV9BY3Rpb25GaWVsZHMsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBY3Rpb25GaWVsZHMgPSAnYWN0aW9uRmllbGRzJyxcblxuICAvLyBEUElfQWRkVmFyaWFibGVMYWJlbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEFkZFZhcmlhYmxlTGFiZWwgPSAnYWRkVmFyaWFibGVMYWJlbCcsXG5cbiAgLy8gRFBJX0FkZFZhcmlhYmxlVG9vbHRpcCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEFkZFZhcmlhYmxlVG9vbHRpcCA9ICdhZGRWYXJpYWJsZVRvb2x0aXAnLFxuXG4gIC8vIERQSV9BbGxvd2VkRGF0YVNvdXJjZXNCeU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBbGxvd2VkRGF0YVNvdXJjZXNCeU5hbWUgPSAnYWxsb3dlZERhdGFTb3VyY2VzQnlOYW1lJyxcblxuICAvLyBEUElfQXBwQWJvdXRWZXJzaW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQXBwQWJvdXRWZXJzaW9uID0gJ2FwcEFib3V0VmVyc2lvbicsXG5cbiAgLy8gRFBJX0FwcEJ1aWxkQnJhbmNoTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEFwcEJ1aWxkQnJhbmNoTmFtZSA9ICdhcHBCdWlsZEJyYW5jaE5hbWUnLFxuXG4gIC8vIERQSV9BcHBCdWlsZFZlcnNpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBcHBCdWlsZFZlcnNpb24gPSAnYXBwQnVpbGRWZXJzaW9uJyxcblxuICAvLyBEUElfQXBwRXh0ZXJuYWxWZXJzaW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQXBwRXh0ZXJuYWxWZXJzaW9uID0gJ2FwcEV4dGVybmFsVmVyc2lvbicsXG5cbiAgLy8gRFBJX0FwcE5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBcHBOYW1lID0gJ2FwcE5hbWUnLFxuXG4gIC8vIERQSV9BcHBQcm9kdWN0VmVyc2lvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEFwcFByb2R1Y3RWZXJzaW9uID0gJ2FwcFByb2R1Y3RWZXJzaW9uJyxcblxuICAvLyBEUElfT3JpZ2luYWxWZXJzaW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgT3JpZ2luYWxWZXJzaW9uID0gJ29yaWdpbmFsVmVyc2lvbicsXG5cbiAgLy8gRFBJX0F0VGhlTGV2ZWxTcGVjaWFsQ2FwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF0VGhlTGV2ZWxTcGVjaWFsQ2FwdGlvbiA9ICdhdFRoZUxldmVsU3BlY2lhbENhcHRpb24nLFxuXG4gIC8vIERQSV9BdXRvQ29tcGxldGVDYWxjLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQXV0b0NvbXBsZXRlQ2FsYyA9ICdhY0NhbGMnLFxuXG4gIC8vIERQSV9DU1ZQYXRoLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ1NWUGF0aCA9ICdjc3ZQYXRoJyxcblxuICAvLyBEUElfQ29tbWFuZE5hbWVzcGFjZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIENvbW1hbmROYW1lc3BhY2UgPSAnY29tbWFuZE5hbWVzcGFjZScsXG5cbiAgLy8gRFBJX0NvbmRpdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIENvbmRpdGlvbiA9ICdjb25kaXRpb24nLFxuXG4gIC8vIERQSV9Db25kaXRpb25TdW1tYXJ5LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ29uZGl0aW9uU3VtbWFyeSA9ICdjb25kaXRpb25TdW1tYXJ5JyxcblxuICAvLyBEUElfQ29uZmlybWF0aW9uTXNnLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ29uZmlybWF0aW9uTXNnID0gJ2NvbmZpcm1hdGlvbk1zZycsXG5cbiAgLy8gRFBJX0Rhc2hib2FyZFR5cGVUZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRGFzaGJvYXJkVHlwZVRleHQgPSAnZGFzaGJvYXJkVHlwZScsXG5cbiAgLy8gRFBJX0RhdGFzZXJ2ZXJQdWJsaWNBZGRyZXNzLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRGF0YXNlcnZlclB1YmxpY0FkZHJlc3MgPSAnZGF0YXNlcnZlclB1YmxpY0FkZHJlc3MnLFxuXG4gIC8vIERQSV9EYXRhc291cmNlRmlsZU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEYXRhc291cmNlRmlsZU5hbWUgPSAnZGF0YXNvdXJjZUZpbGVOYW1lJyxcblxuICAvLyBEUElfRGVjaW1hbE1hcmssIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEZWNpbWFsTWFyayA9ICdkZWNpbWFsTWFyaycsXG5cbiAgLy8gRFBJX0RlbGV0ZVZhcmlhYmxlVG9vbHRpcCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERlbGV0ZVZhcmlhYmxlVG9vbHRpcCA9ICdkZWxldGVWYXJpYWJsZVRvb2x0aXAnLFxuXG4gIC8vIERQSV9EaWFsb2dUaXRsZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERpYWxvZ1RpdGxlID0gJ2RpYWxvZ1RpdGxlJyxcblxuICAvLyBEUElfRGlzcGxheVZhbHVlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRGlzcGxheVZhbHVlID0gJ2Rpc3BsYXlWYWx1ZScsXG5cbiAgLy8gRFBJX1Rvb2x0aXBWYWx1ZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFRvb2x0aXBWYWx1ZSA9ICd0b29sdGlwVmFsdWUnLFxuXG4gIC8vIERQSV9Ec3RQYXRoLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRHN0UGF0aCA9ICdkc3RQYXRoJyxcblxuICAvLyBEUElfRWRpdFdpZGdldEhlYWRlciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEVkaXRXaWRnZXRIZWFkZXIgPSAnZWRpdFdpZGdldEhlYWRlcicsXG5cbiAgLy8gRFBJX0VkaXRXaWRnZXRJbnN0cnVjdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEVkaXRXaWRnZXRJbnN0cnVjdGlvbiA9ICdlZGl0V2lkZ2V0SW5zdHJ1Y3Rpb24nLFxuXG4gIC8vIERQSV9FbmRTZWxlY3Rpb25DYXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRW5kU2VsZWN0aW9uQ2FwdGlvbiA9ICdlbmRTZWxlY3Rpb25DYXB0aW9uJyxcblxuICAvLyBEUElfRXJyb3JEaWFsb2dUaXRsZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEVycm9yRGlhbG9nVGl0bGUgPSAnZXJyb3JEaWFsb2dUaXRsZScsXG5cbiAgLy8gRFBJX0Vycm9ySGVscExpbmssIGhhdmluZyB0eXBlIHN0cmluZ1xuICBFcnJvckhlbHBMaW5rID0gJ2Vycm9ySGVscExpbmsnLFxuXG4gIC8vIERQSV9FcnJvclNob3J0TWVzc2FnZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEVycm9yU2hvcnRNZXNzYWdlID0gJ2Vycm9yU2hvcnRNZXNzYWdlJyxcblxuICAvLyBEUElfRmlsdGVyU2VhcmNoUXVlcnksIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGaWx0ZXJTZWFyY2hRdWVyeSA9ICdmaWx0ZXJTZWFyY2hRdWVyeScsXG5cbiAgLy8gRFBJX0Zyb21MYWJlbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZyb21MYWJlbCA9ICdmcm9tTGFiZWwnLFxuXG4gIC8vIERQSV9GdW5jdGlvbkhlbHAsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGdW5jdGlvbkhlbHAgPSAnZnVuY3Rpb25IZWxwJyxcblxuICAvLyBEUElfSW5zdHJ1Y3Rpb25zLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgSW5zdHJ1Y3Rpb25zID0gJ2luc3RydWN0aW9ucycsXG5cbiAgLy8gRFBJX0xhcmdlVW5pdERpc3BsYXksIGhhdmluZyB0eXBlIHN0cmluZ1xuICBMYXJnZVVuaXREaXNwbGF5ID0gJ2xhcmdlVW5pdERpc3BsYXknLFxuXG4gIC8vIERQSV9MaW1pdCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIExpbWl0ID0gJ2xpbWl0JyxcblxuICAvLyBEUElfTGlzdFZpZXdOYW1lTGFiZWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBMaXN0Vmlld05hbWVMYWJlbCA9ICdsaXN0Vmlld05hbWVMYWJlbCcsXG5cbiAgLy8gRFBJX0xpc3RWaWV3VmFsdWVMYWJlbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIExpc3RWaWV3VmFsdWVMYWJlbCA9ICdsaXN0Vmlld1ZhbHVlTGFiZWwnLFxuXG4gIC8vIERQSV9NYXBTY2FsZVJlYWRvdXRVbml0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTWFwU2NhbGVSZWFkb3V0VW5pdCA9ICdtYXBTY2FsZVJlYWRvdXRVbml0JyxcblxuICAvLyBEUElfTWVhc3VyZURpbWVuc2lvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE1lYXN1cmVEaW1lbnNpb24gPSAnbWVhc3VyZXNEaW1lbnNpb24nLFxuXG4gIC8vIERQSV9NaW1lVHlwZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE1pbWVUeXBlID0gJ21pbWVUeXBlJyxcblxuICAvLyBEUElfTWluaW1pemVkTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE1pbmltaXplZE5hbWUgPSAnbWluTmFtZScsXG5cbiAgLy8gRFBJX05vdGlmaWNhdGlvbk1zZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE5vdGlmaWNhdGlvbk1zZyA9ICdub3RpZmljYXRpb25Nc2cnLFxuXG4gIC8vIERQSV9PcGVyYXRpb25OYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgT3BlcmF0aW9uTmFtZSA9ICdvcGVyYXRpb25OYW1lJyxcblxuICAvLyBEUElfUGFnZVRpdGxlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUGFnZVRpdGxlID0gJ3BhZ2VUaXRsZScsXG5cbiAgLy8gRFBJX1BhdHRlcm5TdW1tYXJ5LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUGF0dGVyblN1bW1hcnkgPSAncGF0dGVyblN1bW1hcnknLFxuXG4gIC8vIERQSV9SZWZlcmVuY2VMaW5lSWQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBSZWZlcmVuY2VMaW5lSWQgPSAncmVmTGluZUlkJyxcblxuICAvLyBEUElfUmVmZXJlbmNlTGluZVBhaXJlZElkLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUmVmZXJlbmNlTGluZVBhaXJlZElkID0gJ3JlZkxpbmVQYWlyZWRJZCcsXG5cbiAgLy8gRFBJX1JlcGxhY2VUZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUmVwbGFjZVRleHQgPSAncmVwbGFjZVRleHQnLFxuXG4gIC8vIERQSV9SZXF1aXJlZFZhcmlhYmxlTWVzc2FnZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFJlcXVpcmVkVmFyaWFibGVNZXNzYWdlID0gJ3JlcXVpcmVkVmFyaWFibGVNZXNzYWdlJyxcblxuICAvLyBEUElfUmVzdGFydEV2ZXJ5U3BlY2lhbENhcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBSZXN0YXJ0RXZlcnlTcGVjaWFsQ2FwdGlvbiA9ICdyZXN0YXJ0RXZlcnlTcGVjaWFsQ2FwdGlvbicsXG5cbiAgLy8gRFBJX1Jvb3QsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBSb290ID0gJ3Jvb3QnLFxuXG4gIC8vIERQSV9TZWxlY3Rpb25TdW1tYXJ5LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU2VsZWN0aW9uU3VtbWFyeSA9ICdzZWxlY3Rpb25TdW1tYXJ5JyxcblxuICAvLyBEUElfU2Vzc2lvbkF0dHJpYnV0ZUtleSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNlc3Npb25BdHRyaWJ1dGVLZXkgPSAnc2Vzc2lvbkF0dHJpYnV0ZUtleScsXG5cbiAgLy8gRFBJX1Nlc3Npb25BdHRyaWJ1dGVWYWx1ZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNlc3Npb25BdHRyaWJ1dGVWYWx1ZSA9ICdzZXNzaW9uQXR0cmlidXRlVmFsdWUnLFxuXG4gIC8vIERQSV9TaGVldEF0dHJpYnV0ZUtleSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNoZWV0QXR0cmlidXRlS2V5ID0gJ2Jhc2VTaGVldEF0dHJpYnV0ZUtleScsXG5cbiAgLy8gRFBJX1NoZWV0QXR0cmlidXRlVmFsdWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTaGVldEF0dHJpYnV0ZVZhbHVlID0gJ2Jhc2VTaGVldEF0dHJpYnV0ZVZhbHVlJyxcblxuICAvLyBEUElfU21hbGxVbml0RGlzcGxheSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNtYWxsVW5pdERpc3BsYXkgPSAnc21hbGxVbml0RGlzcGxheScsXG5cbiAgLy8gRFBJX1NvdXJjZUNhcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTb3VyY2VDYXB0aW9uID0gJ3NvdXJjZUNhcHRpb24nLFxuXG4gIC8vIERQSV9TcmNQYXRoLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU3JjUGF0aCA9ICdzcmNQYXRoJyxcblxuICAvLyBEUElfU3RhcnRTZWxlY3Rpb25DYXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU3RhcnRTZWxlY3Rpb25DYXB0aW9uID0gJ3N0YXJ0U2VsZWN0aW9uQ2FwdGlvbicsXG5cbiAgLy8gRFBJX1N1YnRpdGxlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU3VidGl0bGUgPSAnc3VidGl0bGUnLFxuXG4gIC8vIERQSV9UYWJsZWF1U2VydmVyU2l0ZU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUYWJsZWF1U2VydmVyU2l0ZU5hbWUgPSAndGFibGVhdVNlcnZlclNpdGVOYW1lJyxcblxuICAvLyBEUElfVGFyZ2V0Q2FwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFRhcmdldENhcHRpb24gPSAndGFyZ2V0Q2FwdGlvbicsXG5cbiAgLy8gRFBJX1RodW1ibmFpbFBhdGgsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUaHVtYm5haWxQYXRoID0gJ3RodW1ibmFpbFBhdGgnLFxuXG4gIC8vIERQSV9Ub0xhYmVsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVG9MYWJlbCA9ICd0b0xhYmVsJyxcblxuICAvLyBEUElfVVJMQWRkcmVzcywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFVSTEFkZHJlc3MgPSAndXJsQWRkcmVzcycsXG5cbiAgLy8gRFBJX1ZhbHVlc1RhYmxlSGVhZGVyLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVmFsdWVzVGFibGVIZWFkZXIgPSAndmFsdWVzVGFibGVIZWFkZXInLFxuXG4gIC8vIERQSV9WYWx1ZXNUYWJsZUhlYWRlcjIsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBWYWx1ZXNUYWJsZUhlYWRlcjIgPSAndmFsdWVzVGFibGVIZWFkZXIyJyxcblxuICAvLyBEUElfVmFyaWFibGVEZXNjcmlwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFZhcmlhYmxlRGVzY3JpcHRpb24gPSAndmFyaWFibGVEZXNjcmlwdGlvbicsXG5cbiAgLy8gRFBJX1ZhcmlhYmxlRGlzcGxheU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBWYXJpYWJsZURpc3BsYXlOYW1lID0gJ3ZhcmlhYmxlRGlzcGxheU5hbWUnLFxuXG4gIC8vIERQSV9WYXJpYWJsZUdVSUQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBWYXJpYWJsZUdVSUQgPSAndmFyaWFibGVHdWlkJyxcblxuICAvLyBEUElfVmVyYm9zZU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBWZXJib3NlTmFtZSA9ICd2ZXJib3NlTmFtZScsXG5cbiAgLy8gRFBJX1ZpZXdJZCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFZpZXdJZCA9ICd2aWV3SWQnLFxuXG4gIC8vIERQSV9XYXJuaW5nMSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFdhcm5pbmcxID0gJ3dhcm5pbmcxJyxcblxuICAvLyBEUElfV2FybmluZzIsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBXYXJuaW5nMiA9ICd3YXJuaW5nMicsXG5cbiAgLy8gRFBJX1JlZnJlc2hUb2tlbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFJlZnJlc2hUb2tlbiA9ICdyZWZyZXNoX3Rva2VuJyxcblxuICAvLyBEUElfVG9rZW5UeXBlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVG9rZW5UeXBlID0gJ3Rva2VuX3R5cGUnLFxuXG4gIC8vIERQSV9YU1JGVG9rZW4sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBYU1JGVG9rZW4gPSAneHNyZl90b2tlbicsXG5cbiAgLy8gRFBJX0F4aXNTdWJ0aXRsZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEF4aXNTdWJ0aXRsZSA9ICdheGlzU3VidGl0bGUnLFxuXG4gIC8vIERQSV9BeGlzVGl0bGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBeGlzVGl0bGUgPSAnYXhpc1RpdGxlJyxcblxuICAvLyBEUElfVGlja01hcmtPcmlnaW5EYXRhVmFsdWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUaWNrTWFya09yaWdpbkRhdGFWYWx1ZSA9ICd0aWNrTWFya09yaWdpbkRhdGFWYWx1ZScsXG5cbiAgLy8gRFBJX1RpY2tNYXJrT3JpZ2luRGF0YVZhbHVlTm9UaW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVGlja01hcmtPcmlnaW5EYXRhVmFsdWVOb1RpbWUgPSAndGlja01hcmtPcmlnaW5EYXRhVmFsdWVOb1RpbWUnLFxuXG4gIC8vIERQSV9UaWNrTWFya1NwYWNpbmdEYXRhVmFsdWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUaWNrTWFya1NwYWNpbmdEYXRhVmFsdWUgPSAndGlja01hcmtTcGFjaW5nRGF0YVZhbHVlJyxcblxuICAvLyBEUElfRXh0cmFjdEFjdGlvbkxvY2FsaXplZCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEV4dHJhY3RBY3Rpb25Mb2NhbGl6ZWQgPSAnZXh0cmFjdEFjdGlvbkxvY2FsaXplZCcsXG5cbiAgLy8gRFBJX0V4dHJhY3RTb3VyY2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBFeHRyYWN0U291cmNlID0gJ2V4dHJhY3RTb3VyY2UnLFxuXG4gIC8vIERQSV9GaWxlQ29udGVudHMsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGaWxlQ29udGVudHMgPSAnZmlsZUNvbnRlbnRzJyxcblxuICAvLyBEUElfU2F2ZUltYWdlUGF0aCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNhdmVJbWFnZVBhdGggPSAnc2F2ZUltYWdlUGF0aCcsXG5cbiAgLy8gRFBJX1dpZGdldFVJRCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFdpZGdldFVJRCA9ICd3aWRnZXRVbmlxdWVJZCcsXG5cbiAgLy8gRFBJX0RhdGVQcm9wZXJ0aWVzRGlzcGxheVRleHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEYXRlUHJvcGVydGllc0Rpc3BsYXlUZXh0ID0gJ2RhdGVQcm9wZXJ0aWVzRGlzcGxheVRleHQnLFxuXG4gIC8vIERQSV9EYXRlUHJvcGVydGllc0hlbHBlclRleHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEYXRlUHJvcGVydGllc0hlbHBlclRleHQgPSAnZGF0ZVByb3BlcnRpZXNIZWxwZXJUZXh0JyxcblxuICAvLyBEUElfRXZlbnROYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRXZlbnROYW1lID0gJ2V2ZW50TmFtZScsXG5cbiAgLy8gRFBJX0V4Y2VwdGlvblR5cGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBFeGNlcHRpb25UeXBlID0gJ2V4Y2VwdGlvblR5cGUnLFxuXG4gIC8vIERQSV9TZWFyY2hQbGFjZWhvbGRlciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNlYXJjaFBsYWNlaG9sZGVyID0gJ3NlYXJjaFBsYWNlaG9sZGVyJyxcblxuICAvLyBEUElfVGFyZ2V0VmVyc2lvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFRhcmdldFZlcnNpb24gPSAndGFyZ2V0VmVyc2lvbicsXG5cbiAgLy8gRFBJX0RhdGFWYWx1ZURpc3BsYXlTdHJpbmcsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEYXRhVmFsdWVEaXNwbGF5U3RyaW5nID0gJ2RhdGFWYWx1ZURpc3BsYXlTdHJpbmcnLFxuXG4gIC8vIERQSV9Eb21haW5TdHJpbmcsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEb21haW5TdHJpbmcgPSAnZG9tYWluU3RyaW5nJyxcblxuICAvLyBEUElfUmF3RGF0YVZhbHVlU3RyaW5nLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUmF3RGF0YVZhbHVlU3RyaW5nID0gJ3Jhd0RhdGFWYWx1ZVN0cmluZycsXG5cbiAgLy8gRFBJX1JpY2hUZXh0RGlhbG9nVGl0bGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBSaWNoVGV4dERpYWxvZ1RpdGxlID0gJ3JpY2hUZXh0RGlhbG9nVGl0bGUnLFxuXG4gIC8vIERQSV9SaWNoVGV4dENvbnRlbnQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBSaWNoVGV4dENvbnRlbnQgPSAncmljaFRleHRDb250ZW50JyxcblxuICAvLyBEUElfTWFya1NpemVBc1N0cmluZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE1hcmtTaXplQXNTdHJpbmcgPSAnbWFya1NpemVBc1N0cmluZycsXG5cbiAgLy8gRFBJX1VuaXRzTGFiZWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBVbml0c0xhYmVsID0gJ3VuaXRzTGFiZWwnLFxuXG4gIC8vIERQSV9FbWFpbEFkZHJlc3MsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBFbWFpbEFkZHJlc3MgPSAnZW1haWxBZGRyZXNzJyxcblxuICAvLyBEUElfRmlyc3ROYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRmlyc3ROYW1lID0gJ2ZpcnN0TmFtZScsXG5cbiAgLy8gRFBJX0xhc3ROYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTGFzdE5hbWUgPSAnbGFzdE5hbWUnLFxuXG4gIC8vIERQSV9TdW1tYXJ5Q2FyZEF2ZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFN1bW1hcnlDYXJkQXZnID0gJ3N1bW1hcnlDYXJkQXZnJyxcblxuICAvLyBEUElfU3VtbWFyeUNhcmRDYXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU3VtbWFyeUNhcmRDYXB0aW9uID0gJ3N1bW1hcnlDYXJkQ2FwdGlvbicsXG5cbiAgLy8gRFBJX1N1bW1hcnlDYXJkQ291bnQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTdW1tYXJ5Q2FyZENvdW50ID0gJ3N1bW1hcnlDYXJkQ291bnQnLFxuXG4gIC8vIERQSV9TdW1tYXJ5Q2FyZEt1cnRvc2lzLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU3VtbWFyeUNhcmRLdXJ0b3NpcyA9ICdzdW1tYXJ5Q2FyZEt1cnRvc2lzJyxcblxuICAvLyBEUElfU3VtbWFyeUNhcmRNYXgsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTdW1tYXJ5Q2FyZE1heCA9ICdzdW1tYXJ5Q2FyZE1heCcsXG5cbiAgLy8gRFBJX1N1bW1hcnlDYXJkTWVkaWFuLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU3VtbWFyeUNhcmRNZWRpYW4gPSAnc3VtbWFyeUNhcmRNZWRpYW4nLFxuXG4gIC8vIERQSV9TdW1tYXJ5Q2FyZE1pbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFN1bW1hcnlDYXJkTWluID0gJ3N1bW1hcnlDYXJkTWluJyxcblxuICAvLyBEUElfU3VtbWFyeUNhcmRRdWFydDEsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTdW1tYXJ5Q2FyZFF1YXJ0MSA9ICdzdW1tYXJ5Q2FyZFF1YXJ0MScsXG5cbiAgLy8gRFBJX1N1bW1hcnlDYXJkUXVhcnQzLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU3VtbWFyeUNhcmRRdWFydDMgPSAnc3VtbWFyeUNhcmRRdWFydDMnLFxuXG4gIC8vIERQSV9TdW1tYXJ5Q2FyZFNrZXduZXNzLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU3VtbWFyeUNhcmRTa2V3bmVzcyA9ICdzdW1tYXJ5Q2FyZFNrZXduZXNzJyxcblxuICAvLyBEUElfU3VtbWFyeUNhcmRTdGRldiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFN1bW1hcnlDYXJkU3RkZXYgPSAnc3VtbWFyeUNhcmRTdGRldicsXG5cbiAgLy8gRFBJX1N1bW1hcnlDYXJkU3VtLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU3VtbWFyeUNhcmRTdW0gPSAnc3VtbWFyeUNhcmRTdW0nLFxuXG4gIC8vIERQSV9WYWx1ZUNsYXNzQXR0ciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFZhbHVlQ2xhc3NBdHRyID0gJ3ZhbHVlQ2xhc3NBdHRyJyxcblxuICAvLyBEUElfVHJlbmRMaW5lRGlhbG9nVGl0bGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUcmVuZExpbmVEaWFsb2dUaXRsZSA9ICd0cmVuZExpbmVEaWFsb2dUaXRsZScsXG5cbiAgLy8gRFBJX0xpbmVhckZpdFR5cGVMYWJlbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIExpbmVhckZpdFR5cGVMYWJlbCA9ICdsaW5lYXJGaXRUeXBlTGFiZWwnLFxuXG4gIC8vIERQSV9Mb2dGaXRUeXBlTGFiZWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBMb2dGaXRUeXBlTGFiZWwgPSAnbG9nRml0VHlwZUxhYmVsJyxcblxuICAvLyBEUElfRXhwRml0VHlwZUxhYmVsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRXhwRml0VHlwZUxhYmVsID0gJ2V4cEZpdFR5cGVMYWJlbCcsXG5cbiAgLy8gRFBJX1Bvd2VyRml0VHlwZUxhYmVsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUG93ZXJGaXRUeXBlTGFiZWwgPSAncG93ZXJGaXRUeXBlTGFiZWwnLFxuXG4gIC8vIERQSV9Qb2x5bm9taWFsRml0VHlwZUxhYmVsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUG9seW5vbWlhbEZpdFR5cGVMYWJlbCA9ICdwb2x5bm9taWFsRml0VHlwZUxhYmVsJyxcblxuICAvLyBEUElfRXhjbHVkZUNvbG9yTGFiZWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBFeGNsdWRlQ29sb3JMYWJlbCA9ICdleGNsdWRlQ29sb3JMYWJlbCcsXG5cbiAgLy8gRFBJX0VuYWJsZUNvbmZpZGVuY2VCYW5kc0xhYmVsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRW5hYmxlQ29uZmlkZW5jZUJhbmRzTGFiZWwgPSAnZW5hYmxlQ29uZmlkZW5jZUJhbmRzTGFiZWwnLFxuXG4gIC8vIERQSV9Gb3JjZUludGVyY2VwdFplcm9MYWJlbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZvcmNlSW50ZXJjZXB0WmVyb0xhYmVsID0gJ2ZvcmNlSW50ZXJjZXB0WmVybyBsYWJlbCcsXG5cbiAgLy8gRFBJX0VuYWJsZUluc3RhbnRBbmFseXRpY3NMYWJlbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEVuYWJsZUluc3RhbnRBbmFseXRpY3NMYWJlbCA9ICdlbmFibGVJbnN0YW50QW5hbHl0aWNzTGFiZWwnLFxuXG4gIC8vIERQSV9FbmFibGVUb29sdGlwc0xhYmVsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRW5hYmxlVG9vbHRpcHNMYWJlbCA9ICdlbmFibGVUb29sdGlwTGFiZWwnLFxuXG4gIC8vIERQSV9BdXRoZW50aWNhdGlvblN1bW1hcnksIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBdXRoZW50aWNhdGlvblN1bW1hcnkgPSAnYXV0aGVudGljYXRpb25TdW1tYXJ5JyxcblxuICAvLyBEUElfQnRuQ2FuY2VsVGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEJ0bkNhbmNlbFRleHQgPSAnYnRuQ2FuY2VsVGV4dCcsXG5cbiAgLy8gRFBJX0J0bk9rVGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEJ0bk9rVGV4dCA9ICdidG5Pa1RleHQnLFxuXG4gIC8vIERQSV9CdXR0b25UZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQnV0dG9uVGV4dCA9ICdidXR0b25UZXh0JyxcblxuICAvLyBEUElfQ2FsY3VsYXRpb25DYXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ2FsY3VsYXRpb25DYXB0aW9uID0gJ2NhbGN1bGF0aW9uQ2FwdGlvbicsXG5cbiAgLy8gRFBJX0NhbGN1bGF0aW9uRGVwZW5kZW5jaWVzLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ2FsY3VsYXRpb25EZXBlbmRlbmNpZXMgPSAnY2FsY3VsYXRpb25EZXBlbmRlbmNpZXMnLFxuXG4gIC8vIERQSV9DYWxjdWxhdGlvbkZvcm11bGEsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDYWxjdWxhdGlvbkZvcm11bGEgPSAnY2FsY3VsYXRpb25Gb3JtdWxhJyxcblxuICAvLyBEUElfQ2hlY2tQdWJsaXNoTWVzc2FnZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIENoZWNrUHVibGlzaE1lc3NhZ2UgPSAnY2hlY2tQdWJsaXNoU3VtbWFyeScsXG5cbiAgLy8gRFBJX0NsdXN0ZXJNb2RlbFRleHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDbHVzdGVyTW9kZWxUZXh0ID0gJ2NsdXN0ZXJNb2RlbFRleHQnLFxuXG4gIC8vIERQSV9DbHVzdGVyU3VtbWFyeVNjYWxlZFRleHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDbHVzdGVyU3VtbWFyeVNjYWxlZFRleHQgPSAnY2x1c3RlclN1bW1hcnlTY2FsZWRUZXh0JyxcblxuICAvLyBEUElfQ2x1c3RlclN1bW1hcnlUZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ2x1c3RlclN1bW1hcnlUZXh0ID0gJ2NsdXN0ZXJTdW1tYXJ5VGV4dCcsXG5cbiAgLy8gRFBJX0NvbHVtbkNhcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDb2x1bW5DYXB0aW9uID0gJ2NvbHVtbkNhcHRpb24nLFxuXG4gIC8vIERQSV9EYXRhc291cmNlQ2FwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERhdGFzb3VyY2VDYXB0aW9uID0gJ2RhdGFzb3VyY2VDYXB0aW9uJyxcblxuICAvLyBEUElfRGVmYXVsdENhcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEZWZhdWx0Q2FwdGlvbiA9ICdkZWZhdWx0Q2FwdGlvbicsXG5cbiAgLy8gRFBJX0Rpc3BsYXlTdHJpbmcsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEaXNwbGF5U3RyaW5nID0gJ2Rpc3BsYXlUZXh0JyxcblxuICAvLyBEUElfRHJhZ0Rlc2NyaXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRHJhZ0Rlc2NyaXB0aW9uID0gJ2RyYWdEZXNjcmlwdGlvbicsXG5cbiAgLy8gRFBJX0V4Y2VwdGlvbk1lc3NhZ2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBFeGNlcHRpb25NZXNzYWdlID0gJ2V4Y2VwdGlvbk1lc3NhZ2UnLFxuXG4gIC8vIERQSV9FeHBsYW5hdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEV4cGxhbmF0aW9uID0gJ2V4cGxhbmF0aW9uJyxcblxuICAvLyBEUElfRmllbGRDYXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRmllbGRDYXB0aW9uID0gJ2ZpZWxkQ2FwdGlvbicsXG5cbiAgLy8gRFBJX0ZpZWxkU3VtbWFyeSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZpZWxkU3VtbWFyeSA9ICdmaWVsZFN1bW1hcnknLFxuXG4gIC8vIERQSV9GaWVsZFN1bW1hcnlMYWJlbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZpZWxkU3VtbWFyeUxhYmVsID0gJ2ZpZWxkU3VtbWFyeUxhYmVsJyxcblxuICAvLyBEUElfRmlsdGVyRGVzY3JpcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGaWx0ZXJEZXNjcmlwdGlvbiA9ICdmaWx0ZXJEZXNjcmlwdGlvbicsXG5cbiAgLy8gRFBJX0ZpbHRlck5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGaWx0ZXJOYW1lID0gJ2ZpbHRlck5hbWUnLFxuXG4gIC8vIERQSV9Gb3JlY2FzdE1vZGVsVGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZvcmVjYXN0TW9kZWxUZXh0ID0gJ2ZvcmVjYXN0TW9kZWxUZXh0JyxcblxuICAvLyBEUElfRm9yZWNhc3RTdW1tYXJ5UGN0VGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZvcmVjYXN0U3VtbWFyeVBjdFRleHQgPSAnZm9yZWNhc3RTdW1tYXJ5UGN0VGV4dCcsXG5cbiAgLy8gRFBJX0ZvcmVjYXN0U3VtbWFyeVRleHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGb3JlY2FzdFN1bW1hcnlUZXh0ID0gJ2ZvcmVjYXN0U3VtbWFyeVRleHQnLFxuXG4gIC8vIERQSV9IYXNBY3RpdmVFeHRyYWN0VGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEhhc0FjdGl2ZUV4dHJhY3RUZXh0ID0gJ2hhc0FjdGl2ZUV4dHJhY3RUZXh0JyxcblxuICAvLyBEUElfSHRtbENvbG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgSHRtbENvbG9yID0gJ2h0bWxDb2xvcicsXG5cbiAgLy8gRFBJX0luY2x1ZGVMb2NhbEZpbGVzQ2hlY2tlZFdhcm5pbmcsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBJbmNsdWRlTG9jYWxGaWxlc0NoZWNrZWRXYXJuaW5nID0gJ2luY2x1ZGVMb2NhbEZpbGVzQ2hlY2tlZFdhcm5pbmcnLFxuXG4gIC8vIERQSV9JbmNsdWRlTG9jYWxGaWxlc1dhcm5pbmcsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBJbmNsdWRlTG9jYWxGaWxlc1dhcm5pbmcgPSAnaW5jbHVkZUxvY2FsRmlsZXNXYXJuaW5nJyxcblxuICAvLyBEUElfSW52YWxpZEZpZWxkQ2FwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEludmFsaWRGaWVsZENhcHRpb24gPSAnaW52YWxpZEZpZWxkQ2FwdGlvbicsXG5cbiAgLy8gRFBJX0xpbWl0U3VtbWFyeSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIExpbWl0U3VtbWFyeSA9ICdsaW1pdFN1bW1hcnknLFxuXG4gIC8vIERQSV9Mb2FkZWRFeGlzdGluZ09iamVjdFdhcm5pbmcsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBMb2FkZWRFeGlzdGluZ09iamVjdFdhcm5pbmcgPSAnbG9hZGVkRXhpc3RpbmdPYmplY3RXYXJuaW5nJyxcblxuICAvLyBEUElfTWFuYWdlRGF0YXNvdXJjZXNTdW1tYXJ5LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTWFuYWdlRGF0YXNvdXJjZXNTdW1tYXJ5ID0gJ21hbmFnZURhdGFzb3VyY2VzU3VtbWFyeScsXG5cbiAgLy8gRFBJX01vZGFsRGlhbG9nLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTW9kYWxEaWFsb2cgPSAnbW9kYWxEaWFsb2cnLFxuXG4gIC8vIERQSV9OZXdEYXRhc291cmNlQ2FwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE5ld0RhdGFzb3VyY2VDYXB0aW9uID0gJ25ld0RhdGFzb3VyY2VDYXB0aW9uJyxcblxuICAvLyBEUElfUGVybWlzc2lvbnNCdXR0b25MYWJlbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFBlcm1pc3Npb25zQnV0dG9uTGFiZWwgPSAncGVybWlzc2lvbnNCdXR0b25MYWJlbCcsXG5cbiAgLy8gRFBJX1Blcm1pc3Npb25zRWRpdG9yUm9sZUlkLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUGVybWlzc2lvbnNFZGl0b3JSb2xlSWQgPSAncGVybWlzc2lvbnNFZGl0b3JSb2xlSWQnLFxuXG4gIC8vIERQSV9QZXJtaXNzaW9uc0xhYmVsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUGVybWlzc2lvbnNMYWJlbCA9ICdwZXJtaXNzaW9uc0xhYmVsJyxcblxuICAvLyBEUElfUGVyc3BlY3RpdmVDYXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUGVyc3BlY3RpdmVDYXB0aW9uID0gJ3BlcnNwZWN0aXZlQ2FwdGlvbicsXG5cbiAgLy8gRFBJX1B1Ymxpc2hCdXR0b25MYWJlbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFB1Ymxpc2hCdXR0b25MYWJlbCA9ICdwdWJsaXNoQnV0dG9uTGFiZWwnLFxuXG4gIC8vIERQSV9QdWJsaXNoQ2hvaWNlTGFiZWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBQdWJsaXNoQ2hvaWNlTGFiZWwgPSAncHVibGlzaENob2ljZUxhYmVsJyxcblxuICAvLyBEUElfUHVibGlzaE9iamVjdFZpZXdzU3VtbWFyeSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFB1Ymxpc2hPYmplY3RWaWV3c1N1bW1hcnkgPSAncHVibGlzaE9iamVjdFZpZXdzU3VtbWFyeScsXG5cbiAgLy8gRFBJX1F1YWxpZmllZEZpZWxkQ2FwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFF1YWxpZmllZEZpZWxkQ2FwdGlvbiA9ICdxdWFsaWZpZWRGaWVsZENhcHRpb24nLFxuXG4gIC8vIERQSV9SZWxhdGlvbnNoaXBUb29sdGlwVGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFJlbGF0aW9uc2hpcFRvb2x0aXBUZXh0ID0gJ3JlbGF0aW9uc2hpcFRvb2x0aXBUZXh0JyxcblxuICAvLyBEUElfUmVzZXRPYmplY3RBdHRyaWJ1dGVzV2FybmluZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFJlc2V0T2JqZWN0QXR0cmlidXRlc1dhcm5pbmcgPSAncmVzZXRPYmplY3RBdHRyaWJ1dGVzV2FybmluZycsXG5cbiAgLy8gRFBJX1Jvd0NvdW50Q2FwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFJvd0NvdW50Q2FwdGlvbiA9ICdyb3dDb3VudENhcHRpb24nLFxuXG4gIC8vIERQSV9TZXJ2ZXJDYXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU2VydmVyQ2FwdGlvbiA9ICdzZXJ2ZXJDYXB0aW9uJyxcblxuICAvLyBEUElfU2l6ZU1vZGVOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU2l6ZU1vZGVOYW1lID0gJ3NpemVNb2RlTmFtZScsXG5cbiAgLy8gRFBJX1N1bW1hcnlUZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU3VtbWFyeVRleHQgPSAnc3VtbWFyeVRleHQnLFxuXG4gIC8vIERQSV9TeW5jQ2xpZW50VXNlRXh0cmFjdExhYmVsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU3luY0NsaWVudFVzZUV4dHJhY3RMYWJlbCA9ICdzeW5jQ2xpZW50VXNlRXh0cmFjdExhYmVsJyxcblxuICAvLyBEUElfVGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFRleHQgPSAndGV4dCcsXG5cbiAgLy8gRFBJX1RleHREcm9wZG93bkNvbnRyb2xMYWJlbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFRleHREcm9wZG93bkNvbnRyb2xMYWJlbCA9ICdjb250cm9sTGFiZWwnLFxuXG4gIC8vIERQSV9UaHVtYm5haWxVc2VyTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFRodW1ibmFpbFVzZXJOYW1lID0gJ3RodW1ibmFpbFVzZXJOYW1lJyxcblxuICAvLyBEUElfVGl0bGVTdHJpbmcsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUaXRsZVN0cmluZyA9ICd0aXRsZVN0cmluZycsXG5cbiAgLy8gRFBJX1Rvb2x0aXBUZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVG9vbHRpcFRleHQgPSAndG9vbHRpcFRleHQnLFxuXG4gIC8vIERQSV9VcGRhdGVkQ2FsY0NhcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBVcGRhdGVkQ2FsY0NhcHRpb24gPSAndXBkYXRlZENhbGN1bGF0aW9uQ2FwdGlvbicsXG5cbiAgLy8gRFBJX1VwZGF0ZWRDYWxjRm9ybXVsYSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFVwZGF0ZWRDYWxjRm9ybXVsYSA9ICd1cGRhdGVkQ2FsY3VsYXRpb25Gb3JtdWxhJyxcblxuICAvLyBEUElfVXNlckNhcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBVc2VyQ2FwdGlvbiA9ICd1c2VyQ2FwdGlvbicsXG5cbiAgLy8gRFBJX1dhcm5pbmdUb29sdGlwVGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFdhcm5pbmdUb29sdGlwVGV4dCA9ICd3YXJuaW5nVG9vbHRpcFRleHQnLFxuXG4gIC8vIERQSV9EYXRhc291cmNlRmlsZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERhdGFzb3VyY2VGaWxlID0gJ2RhdGFzb3VyY2VGaWxlJyxcblxuICAvLyBEUElfRmlsZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZpbGUgPSAnZmlsZScsXG5cbiAgLy8gRFBJX0ZpbGVOYW1lQmFzZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZpbGVOYW1lQmFzZSA9ICdmaWxlbmFtZUJhc2UnLFxuXG4gIC8vIERQSV9OZXdGaWxlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTmV3RmlsZSA9ICduZXdGaWxlJyxcblxuICAvLyBEUElfT3JpZ2luYWxGaWxlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgT3JpZ2luYWxGaWxlID0gJ29yaWdpbmFsRmlsZScsXG5cbiAgLy8gRFBJX091dHB1dEZpbGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBPdXRwdXRGaWxlID0gJ291dHB1dEZpbGUnLFxuXG4gIC8vIERQSV9TYW1wbGVGaWxlTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNhbXBsZUZpbGVOYW1lID0gJ3NhbXBsZUZpbGVuYW1lJyxcblxuICAvLyBEUElfV29ya2Jvb2tGaWxlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgV29ya2Jvb2tGaWxlID0gJ3dvcmtib29rRmlsZScsXG5cbiAgLy8gRFBJX0ltYWdlS2V5LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgSW1hZ2VLZXkgPSAnaW1hZ2VLZXknLFxuXG4gIC8vIERQSV9PdmVybGF5SW1hZ2VLZXksIGhhdmluZyB0eXBlIHN0cmluZ1xuICBPdmVybGF5SW1hZ2VLZXkgPSAnb3ZlcmxheUltYWdlS2V5JyxcblxuICAvLyBEUElfVGVtcEZpbGVLZXksIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUZW1wRmlsZUtleSA9ICd0ZW1wZmlsZUtleScsXG5cbiAgLy8gRFBJX0NhcHR1cmVkU2hlZXQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDYXB0dXJlZFNoZWV0ID0gJ2NhcHR1cmVkU2hlZXQnLFxuXG4gIC8vIERQSV9DdXJyZW50U2hlZXQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDdXJyZW50U2hlZXQgPSAnY3VycmVudFNoZWV0JyxcblxuICAvLyBEUElfRGFzaGJvYXJkLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRGFzaGJvYXJkID0gJ2Rhc2hib2FyZCcsXG5cbiAgLy8gRFBJX0Vuc3VyZVNoZWV0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRW5zdXJlU2hlZXQgPSAnZW5zdXJlU2hlZXROYW1lJyxcblxuICAvLyBEUElfTmV3U2hlZXQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBOZXdTaGVldCA9ICduZXdTaGVldCcsXG5cbiAgLy8gRFBJX1NoZWV0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU2hlZXQgPSAnc2hlZXQnLFxuXG4gIC8vIERQSV9TaGVldE5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTaGVldE5hbWUgPSAnc2hlZXROYW1lJyxcblxuICAvLyBEUElfU291cmNlRGFzaGJvYXJkLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU291cmNlRGFzaGJvYXJkID0gJ3NvdXJjZURhc2hib2FyZCcsXG5cbiAgLy8gRFBJX1NvdXJjZVNoZWV0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU291cmNlU2hlZXQgPSAnc291cmNlU2hlZXQnLFxuXG4gIC8vIERQSV9UYXJnZXRTaGVldCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFRhcmdldFNoZWV0ID0gJ3RhcmdldFNoZWV0JyxcblxuICAvLyBEUElfV29ya2Jvb2tOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgV29ya2Jvb2tOYW1lID0gJ3dvcmtib29rTmFtZScsXG5cbiAgLy8gRFBJX1dvcmtzaGVldCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFdvcmtzaGVldCA9ICd3b3Jrc2hlZXQnLFxuXG4gIC8vIERQSV9CYXNlVmlld1RodW1iTGluaywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEJhc2VWaWV3VGh1bWJMaW5rID0gJ2Jhc2VWaWV3VGh1bWJMaW5rJyxcblxuICAvLyBEUElfQmxvZ0xpbmssIGhhdmluZyB0eXBlIHN0cmluZ1xuICBCbG9nTGluayA9ICdibG9nTGluaycsXG5cbiAgLy8gRFBJX0NhY2hlVXJsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ2FjaGVVcmwgPSAnY2FjaGVVcmwnLFxuXG4gIC8vIERQSV9Eb3dubG9hZExpbmssIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEb3dubG9hZExpbmsgPSAnZG93bmxvYWRMaW5rJyxcblxuICAvLyBEUElfUmVwb3NpdG9yeVVybCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFJlcG9zaXRvcnlVcmwgPSAncmVwb3NpdG9yeVVybCcsXG5cbiAgLy8gRFBJX1NoYXJlTGluaywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNoYXJlTGluayA9ICdzaGFyZUxpbmsnLFxuXG4gIC8vIERQSV9VUkwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBVUkwgPSAndXJsJyxcblxuICAvLyBEUElfQ2x1c3Rlck1vZGVsSHRtbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIENsdXN0ZXJNb2RlbEh0bWwgPSAnY2x1c3Rlck1vZGVsSHRtbCcsXG5cbiAgLy8gRFBJX0NsdXN0ZXJTdW1tYXJ5SHRtbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIENsdXN0ZXJTdW1tYXJ5SHRtbCA9ICdjbHVzdGVyU3VtbWFyeUh0bWwnLFxuXG4gIC8vIERQSV9DbHVzdGVyU3VtbWFyeVNjYWxlZEh0bWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDbHVzdGVyU3VtbWFyeVNjYWxlZEh0bWwgPSAnY2x1c3RlclN1bW1hcnlTY2FsZWRIdG1sJyxcblxuICAvLyBEUElfRmllbGREZXNjcmlwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZpZWxkRGVzY3JpcHRpb24gPSAnZmllbGREZXNjcmlwdGlvbicsXG5cbiAgLy8gRFBJX0ZvcmVjYXN0TW9kZWxIdG1sLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRm9yZWNhc3RNb2RlbEh0bWwgPSAnZm9yZWNhc3RNb2RlbEh0bWwnLFxuXG4gIC8vIERQSV9Gb3JlY2FzdFN1bW1hcnlIdG1sLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRm9yZWNhc3RTdW1tYXJ5SHRtbCA9ICdmb3JlY2FzdFN1bW1hcnlIdG1sJyxcblxuICAvLyBEUElfRm9yZWNhc3RTdW1tYXJ5UGN0SHRtbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZvcmVjYXN0U3VtbWFyeVBjdEh0bWwgPSAnZm9yZWNhc3RTdW1tYXJ5UGN0SHRtbCcsXG5cbiAgLy8gRFBJX0h0bWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBIdG1sID0gJ2h0bWwnLFxuXG4gIC8vIERQSV9IdG1sU2VsZWN0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgSHRtbFNlbGVjdGlvbiA9ICdodG1sU2VsZWN0aW9uJyxcblxuICAvLyBEUElfSHRtbFRvb2x0aXAsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBIdG1sVG9vbHRpcCA9ICdodG1sVG9vbHRpcCcsXG5cbiAgLy8gRFBJX0h0bWxUb29sdGlwTW9kaWZpZWQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBIdG1sVG9vbHRpcE1vZGlmaWVkID0gJ2h0bWxUb29sdGlwTW9kaWZpZWQnLFxuXG4gIC8vIERQSV9UaXRsZUh0bWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUaXRsZUh0bWwgPSAndGl0bGVIdG1sJyxcblxuICAvLyBEUElfQ2FjaGVVcmxJbmZvSnNvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIENhY2hlVXJsSW5mb0pzb24gPSAnY2FjaGVVcmxJbmZvSnNvbicsXG5cbiAgLy8gRFBJX0ZpbHRlclNlYXJjaEpzb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGaWx0ZXJTZWFyY2hKc29uID0gJ2ZpbHRlclNlYXJjaEpzb24nLFxuXG4gIC8vIERQSV9GaWx0ZXJTZWFyY2hXaXRoSW5kZXhKc29uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRmlsdGVyU2VhcmNoV2l0aEluZGV4SnNvbiA9ICdmaWx0ZXJTZWFyY2hXaXRoSW5kZXhKc29uJyxcblxuICAvLyBEUElfRmlsdGVyU2hvd0NoaWxkcmVuSnNvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZpbHRlclNob3dDaGlsZHJlbkpzb24gPSAnZmlsdGVyU2hvd0NoaWxkcmVuSnNvbicsXG5cbiAgLy8gRFBJX0ZpbHRlcnNKc29uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRmlsdGVyc0pzb24gPSAnZmlsdGVyc0pzb24nLFxuXG4gIC8vIERQSV9GcmFtZUpzb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGcmFtZUpzb24gPSAnZnJhbWVKc29uJyxcblxuICAvLyBEUElfR2VvbWV0cnlKc29uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgR2VvbWV0cnlKc29uID0gJ2dlb21ldHJ5SnNvbicsXG5cbiAgLy8gRFBJX0dldEZpbHRlckl0ZW1zSnNvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEdldEZpbHRlckl0ZW1zSnNvbiA9ICdnZXRGaWx0ZXJJdGVtc0pzb24nLFxuXG4gIC8vIERQSV9LZWVwT25seVJlc3BvbnNlSnNvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEtlZXBPbmx5UmVzcG9uc2VKc29uID0gJ2tlZXBPbmx5UmVzcG9uc2VKc29uJyxcblxuICAvLyBEUElfTWVudUNvbW1hbmRzSnNvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE1lbnVDb21tYW5kc0pzb24gPSAnbWVudUNvbW1hbmRzSnNvbicsXG5cbiAgLy8gRFBJX01vZGlmaWVkU2hlZXRzSnNvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE1vZGlmaWVkU2hlZXRzSnNvbiA9ICdtb2RpZmllZFNoZWV0c0pzb24nLFxuXG4gIC8vIERQSV9QYXJhbWV0ZXJDdHJsSnNvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFBhcmFtZXRlckN0cmxKc29uID0gJ3BhcmFtZXRlckN0cmxKc29uJyxcblxuICAvLyBEUElfVmlld0pzb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBWaWV3SnNvbiA9ICd2aWV3SnNvbicsXG5cbiAgLy8gRFBJX0N1c3RvbWl6ZWRWaWV3WE1MLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ3VzdG9taXplZFZpZXdYTUwgPSAnY3VzdG9taXplZFZpZXdYbWwnLFxuXG4gIC8vIERQSV9EYXRhc291cmNlRGVsdGFYTUwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBEYXRhc291cmNlRGVsdGFYTUwgPSAnZGF0YXNvdXJjZURlbHRhWG1sJyxcblxuICAvLyBEUElfRGF0YXNvdXJjZVhNTCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERhdGFzb3VyY2VYTUwgPSAnZGF0YXNvdXJjZVhtbCcsXG5cbiAgLy8gRFBJX0tleWNoYWluWE1MLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgS2V5Y2hhaW5YTUwgPSAna2V5Y2hhaW5YbWwnLFxuXG4gIC8vIERQSV9QZXJtaXNzaW9uc01vZGVsWE1MLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUGVybWlzc2lvbnNNb2RlbFhNTCA9ICdwZXJtaXNzaW9uc01vZGVsWG1sJyxcblxuICAvLyBEUElfU2hhcmVkVmlld3NYTUwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTaGFyZWRWaWV3c1hNTCA9ICdzaGFyZWRWaWV3c1htbCcsXG5cbiAgLy8gRFBJX1RhcmdldFVSTCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFRhcmdldFVSTCA9ICd0YXJnZXRVcmwnLFxuXG4gIC8vIERQSV9BbmNob3IsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBbmNob3IgPSAnYW5jaG9yJyxcblxuICAvLyBEUElfQ2VudGVyVmFsdWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDZW50ZXJWYWx1ZSA9ICdjZW50ZXJWYWx1ZScsXG5cbiAgLy8gRFBJX0NvbXB1dGVkQmluU2l6ZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIENvbXB1dGVkQmluU2l6ZSA9ICdjb21wdXRlZEJpblNpemUnLFxuXG4gIC8vIERQSV9Db25zdGFudFZhbHVlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQ29uc3RhbnRWYWx1ZSA9ICdjb25zdGFudFZhbHVlJyxcblxuICAvLyBEUElfUGFpcmVkQ29uc3RhbnRWYWx1ZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFBhaXJlZENvbnN0YW50VmFsdWUgPSAncGFpcmVkQ29uc3RhbnRWYWx1ZScsXG5cbiAgLy8gRFBJX0NvdW50RGlzdGluY3QsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDb3VudERpc3RpbmN0ID0gJ2NvdW50RGlzdGluY3QnLFxuXG4gIC8vIERQSV9EYXRhTWF4LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRGF0YU1heCA9ICdkYXRhTWF4JyxcblxuICAvLyBEUElfRGF0YU1pbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERhdGFNaW4gPSAnZGF0YU1pbicsXG5cbiAgLy8gRFBJX0RhdGFWYWx1ZVN0cmluZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERhdGFWYWx1ZVN0cmluZyA9ICdkYXRhVmFsdWVTdHInLFxuXG4gIC8vIERQSV9FbmRWYWx1ZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEVuZFZhbHVlID0gJ2VuZFZhbHVlJyxcblxuICAvLyBEUElfUmFuZ2VNYXgsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBSYW5nZU1heCA9ICdyYW5nZU1heCcsXG5cbiAgLy8gRFBJX1JhbmdlTWluLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUmFuZ2VNaW4gPSAncmFuZ2VNaW4nLFxuXG4gIC8vIERQSV9SYW5nZVN0ZXBTaXplLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUmFuZ2VTdGVwU2l6ZSA9ICdyYW5nZVN0ZXBTaXplJyxcblxuICAvLyBEUElfU3RhcnRWYWx1ZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFN0YXJ0VmFsdWUgPSAnc3RhcnRWYWx1ZScsXG5cbiAgLy8gRFBJX1RhcmdldFZhbHVlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVGFyZ2V0VmFsdWUgPSAndGFyZ2V0VmFsdWUnLFxuXG4gIC8vIERQSV9WYWx1ZUluYywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFZhbHVlSW5jID0gJ3ZhbHVlSW5jJyxcblxuICAvLyBEUElfVmFsdWVNYXgsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBWYWx1ZU1heCA9ICd2YWx1ZU1heCcsXG5cbiAgLy8gRFBJX1ZhbHVlTWluLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVmFsdWVNaW4gPSAndmFsdWVNaW4nLFxuXG4gIC8vIERQSV9RdWFudGlsZXNWYWx1ZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFF1YW50aWxlc1ZhbHVlID0gJ3F1YW50aWxlc1ZhbHVlJyxcblxuICAvLyBEUElfVXNlcklucHV0QmluU2l6ZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFVzZXJJbnB1dEJpblNpemUgPSAndXNlckJpblNpemUnLFxuXG4gIC8vIERQSV9BZGRlZERhdGFTb3VyY2VzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBBZGRlZERhdGFTb3VyY2VzID0gJ2FkZGVkRGF0YVNvdXJjZU5hbWVzJyxcblxuICAvLyBEUElfQWRkcmVzc2luZ0NhcHRpb25zLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBBZGRyZXNzaW5nQ2FwdGlvbnMgPSAnYWRkcmVzc2luZ0NhcHRpb25zJyxcblxuICAvLyBEUElfQWdncmVnYXRpb25DYXB0aW9ucywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgQWdncmVnYXRpb25DYXB0aW9ucyA9ICdhZ2dyZWdhdGlvbkNhcHRpb25zJyxcblxuICAvLyBEUElfQXRUaGVMZXZlbENhcHRpb25zLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBBdFRoZUxldmVsQ2FwdGlvbnMgPSAnYXRUaGVMZXZlbENhcHRpb25zJyxcblxuICAvLyBEUElfQXV0aGVudGljYXRpb25TZXR0aW5nTGFiZWxzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBBdXRoZW50aWNhdGlvblNldHRpbmdMYWJlbHMgPSAnYXV0aGVudGljYXRpb25TZXR0aW5nTGFiZWxzJyxcblxuICAvLyBEUElfQXV0b3NhdmVGaWxlSWRzVmVjdG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBBdXRvc2F2ZUZpbGVJZHNWZWN0b3IgPSAnYXV0b3NhdmVGaWxlSWRzVmVjdG9yJyxcblxuICAvLyBEUElfQ2hhbmdlZFR1cGxlcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgQ2hhbmdlZFR1cGxlcyA9ICdjaGFuZ2VkVHVwbGVzJyxcblxuICAvLyBEUElfQ2hhcnNldHNBdmFpbGFibGUsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIENoYXJzZXRzQXZhaWxhYmxlID0gJ2NoYXJzZXRzQXZhaWxhYmxlJyxcblxuICAvLyBEUElfQ2hhcnNldERpc3BsYXlOYW1lcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgQ2hhcnNldERpc3BsYXlOYW1lcyA9ICdjaGFyc2V0RGlzcGxheU5hbWVzJyxcblxuICAvLyBEUElfQ29sb3JGYWN0b3JzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBDb2xvckZhY3RvcnMgPSAnY29sb3JGYWN0b3JzJyxcblxuICAvLyBEUElfQ29sdW1uRnVsbE5hbWVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBDb2x1bW5GdWxsTmFtZXMgPSAnY29sdW1uRnVsbE5hbWVzJyxcblxuICAvLyBEUElfQ29ubmVjdGlvbk5hbWVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBDb25uZWN0aW9uTmFtZXMgPSAnY29ubmVjdGlvbk5hbWVzJyxcblxuICAvLyBEUElfQ29ubmVjdGlvbkNhcHRpb25zLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBDb25uZWN0aW9uQ2FwdGlvbnMgPSAnY29ubmVjdGlvbkNhcHRpb25zJyxcblxuICAvLyBEUElfQ29ubmVjdGlvbkJpZ1F1ZXJ5TGVnYWN5U1FMQ2hlY2tCb3gsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIENvbm5lY3Rpb25CaWdRdWVyeUxlZ2FjeVNRTENoZWNrQm94ID0gJ2Nvbm5lY3Rpb25CaWdxdWVyeUxlZ2FjeVNxbENoZWNrYm94JyxcblxuICAvLyBEUElfQ3VzdG9tRmllbGRPcmRlciwgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgQ3VzdG9tRmllbGRPcmRlciA9ICdjdXN0b21GaWVsZE9yZGVyJyxcblxuICAvLyBEUElfRGF0YVNvdXJjZUNsYXNzZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIERhdGFTb3VyY2VDbGFzc2VzID0gJ2RhdGFTb3VyY2VDbGFzc2VzJyxcblxuICAvLyBEUElfRGF0YVNvdXJjZU5hbWVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBEYXRhU291cmNlTmFtZXMgPSAnZGF0YVNvdXJjZU5hbWVzJyxcblxuICAvLyBEUElfRGF0YVNvdXJjZU5hbWVzMiwgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgRGF0YVNvdXJjZU5hbWVzMiA9ICdkYXRhU291cmNlTmFtZXMyJyxcblxuICAvLyBEUElfRGF0YVNvdXJjZXNXaXRoRW1wdHlSZWxhdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgRGF0YVNvdXJjZXNXaXRoRW1wdHlSZWxhdGlvbiA9ICdkYXRhU291cmNlc1dpdGhFbXB0eVJlbGF0aW9uJyxcblxuICAvLyBEUElfRGF0ZUZvcm1hdHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIERhdGVGb3JtYXRzID0gJ2RhdGVGb3JtYXRzJyxcblxuICAvLyBEUElfRGF5TmFtZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIERheU5hbWVzID0gJ2RheU5hbWVzJyxcblxuICAvLyBEUElfRHJpbGxQYXRoVmVjdG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBEcmlsbFBhdGhWZWN0b3IgPSAnZHJpbGxwYXRoVmVjdG9yJyxcblxuICAvLyBEUElfRXJyb3JEZXRhaWxzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBFcnJvckRldGFpbHMgPSAnZXJyb3JEZXRhaWxzJyxcblxuICAvLyBEUElfRXhjZXB0aW9uTWVzc2FnZVBhcmFtcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgRXhjZXB0aW9uTWVzc2FnZVBhcmFtcyA9ICdleGNlcHRpb25NZXNzYWdlUGFyYW1zJyxcblxuICAvLyBEUElfRXhjbHVkZWRTaGVldHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIEV4Y2x1ZGVkU2hlZXRzID0gJ2V4Y2x1ZGVTaGVldHMnLFxuXG4gIC8vIERQSV9GaWVsZERpc3BsYXlOYW1lcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgRmllbGREaXNwbGF5TmFtZXMgPSAnZmllbGREaXNwbGF5TmFtZXMnLFxuXG4gIC8vIERQSV9GaWVsZEZvbGRlclZlY3RvciwgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgRmllbGRGb2xkZXJWZWN0b3IgPSAnZmllbGRGb2xkZXJWZWN0b3InLFxuXG4gIC8vIERQSV9GaWxlSWRzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBGaWxlSWRzID0gJ2ZpbGVJZHMnLFxuXG4gIC8vIERQSV9GaWxlUGF0aHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIEZpbGVQYXRocyA9ICdmaWxlUGF0aHMnLFxuXG4gIC8vIERQSV9GaWxlTmFtZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIEZpbGVOYW1lcyA9ICdmaWxlTmFtZXMnLFxuXG4gIC8vIERQSV9GaWx0ZXJBZGQsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIEZpbHRlckFkZCA9ICdmaWx0ZXJBZGQnLFxuXG4gIC8vIERQSV9GaWx0ZXJBbGlhc2VzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBGaWx0ZXJBbGlhc2VzID0gJ2ZpbHRlclZhbHVlcycsXG5cbiAgLy8gRFBJX0ZpbHRlclJlbW92ZSwgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgRmlsdGVyUmVtb3ZlID0gJ2ZpbHRlclJlbW92ZScsXG5cbiAgLy8gRFBJX0ZpeGVkQ2FwdGlvbnMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIEZpeGVkQ2FwdGlvbnMgPSAnZml4ZWRDYXB0aW9ucycsXG5cbiAgLy8gRFBJX0ZvbnRGYW1pbGllcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgRm9udEZhbWlsaWVzID0gJ2ZvbnRGYW1pbGllcycsXG5cbiAgLy8gRFBJX0Zvcm1hdFN0cmluZ3MsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIEZvcm1hdFN0cmluZ3MgPSAnZm9ybWF0U3RyaW5ncycsXG5cbiAgLy8gRFBJX0Zvcm1hdHRlZFZhbHVlcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgRm9ybWF0dGVkVmFsdWVzID0gJ2Zvcm1hdHRlZFZhbHVlcycsXG5cbiAgLy8gRFBJX0ZvdW5kVHVwbGVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBGb3VuZFR1cGxlcyA9ICdmb3VuZFR1cGxlcycsXG5cbiAgLy8gRFBJX0Z1bGxTY2hlZHVsZXNMYWJlbHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIEZ1bGxTY2hlZHVsZXNMYWJlbHMgPSAnZnVsbFNjaGVkdWxlc0xhYmVscycsXG5cbiAgLy8gRFBJX0ltYWdlUmVzb3VyY2VMaXN0LCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBJbWFnZVJlc291cmNlTGlzdCA9ICdpbWFnZVJlc291cmNlcycsXG5cbiAgLy8gRFBJX0luY2x1ZGVMaXN0LCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBJbmNsdWRlTGlzdCA9ICdpbmNsdWRlTGlzdCcsXG5cbiAgLy8gRFBJX0luY3JTY2hlZHVsZXNMYWJlbHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIEluY3JTY2hlZHVsZXNMYWJlbHMgPSAnaW5jclNjaGVkdWxlc0xhYmVscycsXG5cbiAgLy8gRFBJX0ludmFsaWREYXRlcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgSW52YWxpZERhdGVzID0gJ2ludmFsaWREYXRlcycsXG5cbiAgLy8gRFBJX0ludmFsaWRWYWx1ZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIEludmFsaWRWYWx1ZXMgPSAnaW52YWxpZFZhbHVlcycsXG5cbiAgLy8gRFBJX0l0ZW1WYWx1ZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIEl0ZW1WYWx1ZXMgPSAnaXRlbVZhbHVlcycsXG5cbiAgLy8gRFBJX0pvaW5FZGl0YWJsZVByb3BzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBKb2luRWRpdGFibGVQcm9wcyA9ICdqb2luRWRpdGFibGVQcm9wcycsXG5cbiAgLy8gRFBJX0pvaW5GaWVsZENhcHRpb25zLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBKb2luRmllbGRDYXB0aW9ucyA9ICdqb2luRmllbGRDYXB0aW9ucycsXG5cbiAgLy8gRFBJX0xvY2FsZU9wdGlvbnMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIExvY2FsZU9wdGlvbnMgPSAnbG9jYWxlT3B0aW9ucycsXG5cbiAgLy8gRFBJX0xvY2FsZURpc3BsYXlOYW1lcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgTG9jYWxlRGlzcGxheU5hbWVzID0gJ2xvY2FsZURpc3BsYXlOYW1lcycsXG5cbiAgLy8gRFBJX01hcEJveFN0eWxlTWFwcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgTWFwQm94U3R5bGVNYXBzID0gJ21hcGJveFN0eWxlTWFwcycsXG5cbiAgLy8gRFBJX01hcENvbm5lY3Rpb25FcnJvckRldGFpbHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIE1hcENvbm5lY3Rpb25FcnJvckRldGFpbHMgPSAnbWFwQ29ubmVjdGlvbkVycm9yRGV0YWlscycsXG5cbiAgLy8gRFBJX1NoZWV0TmFtZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFNoZWV0TmFtZXMgPSAnc2hlZXROYW1lcycsXG5cbiAgLy8gRFBJX01hcFNvdXJjZU5hbWVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBNYXBTb3VyY2VOYW1lcyA9ICdtYXBTb3VyY2VOYW1lcycsXG5cbiAgLy8gRFBJX01hcmtHZW9tZXRyaWVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBNYXJrR2VvbWV0cmllcyA9ICdtYXJrR2VvbWV0cmllcycsXG5cbiAgLy8gRFBJX01lbnVJdGVtcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgTWVudUl0ZW1zID0gJ21lbnVJdGVtcycsXG5cbiAgLy8gRFBJX01vZGVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBNb2RlcyA9ICdtb2RlcycsXG5cbiAgLy8gRFBJX01vbnRoTmFtZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIE1vbnRoTmFtZXMgPSAnbW9udGhOYW1lcycsXG5cbiAgLy8gRFBJX051bWJlckZvcm1hdHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIE51bWJlckZvcm1hdHMgPSAnbnVtYmVyRm9ybWF0cycsXG5cbiAgLy8gRFBJX09iamVjdFRleHRJRHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIE9iamVjdFRleHRJRHMgPSAnb2JqZWN0VGV4dElkcycsXG5cbiAgLy8gRFBJX09sZEV4dHJhY3RzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBPbGRFeHRyYWN0cyA9ICdvbGRFeHRyYWN0cycsXG5cbiAgLy8gRFBJX09yZGVyaW5nVHlwZUNhcHRpb25zLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBPcmRlcmluZ1R5cGVDYXB0aW9ucyA9ICdvcmRlcmluZ1R5cGVDYXB0aW9ucycsXG5cbiAgLy8gRFBJX1BhZ2VOYW1lcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgUGFnZU5hbWVzID0gJ3BhZ2VOYW1lcycsXG5cbiAgLy8gRFBJX1BhbmVEZXNjcmlwdG9yS2V5cywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgUGFuZURlc2NyaXB0b3JLZXlzID0gJ3BhbmVEZXNjcmlwdG9yS2V5cycsXG5cbiAgLy8gRFBJX1BhcmFtQ2FwdGlvbnMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFBhcmFtQ2FwdGlvbnMgPSAncGFyYW1DYXB0aW9ucycsXG5cbiAgLy8gRFBJX1ByZWNhbm5lZERhdGFWYWx1ZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFByZWNhbm5lZERhdGFWYWx1ZXMgPSAncHJlY2FubmVkRGF0YVZhbHVlcycsXG5cbiAgLy8gRFBJX1B1Ymxpc2hDaG9pY2VMYWJlbHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFB1Ymxpc2hDaG9pY2VMYWJlbHMgPSAncHVibGlzaENob2ljZUxhYmVscycsXG5cbiAgLy8gRFBJX1JhbmtUeXBlQ2FwdGlvbnMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFJhbmtUeXBlQ2FwdGlvbnMgPSAncmFua1R5cGVDYXB0aW9ucycsXG5cbiAgLy8gRFBJX1JlY2VudFRhZ3MsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFJlY2VudFRhZ3MgPSAncmVjZW50VGFncycsXG5cbiAgLy8gRFBJX1JlbGF0aXZlQ2FwdGlvbnMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFJlbGF0aXZlQ2FwdGlvbnMgPSAncmVsYXRpdmVDYXB0aW9ucycsXG5cbiAgLy8gRFBJX1JlbW92ZWREYXRhU291cmNlcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgUmVtb3ZlZERhdGFTb3VyY2VzID0gJ3JlbW92ZWREYXRhU291cmNlTmFtZXMnLFxuXG4gIC8vIERQSV9SZXByZXNlbnRhdGl2ZVR1cGxlLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBSZXByZXNlbnRhdGl2ZVR1cGxlID0gJ3JlcHJlc2VudGF0aXZlVHVwbGUnLFxuXG4gIC8vIERQSV9SZXN0YXJ0RXZlcnlDYXB0aW9ucywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgUmVzdGFydEV2ZXJ5Q2FwdGlvbnMgPSAncmVzdGFydEV2ZXJ5Q2FwdGlvbnMnLFxuXG4gIC8vIERQSV9TY2hlbWFNZW1iZXJHbG9iYWxOYW1lcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgU2NoZW1hTWVtYmVyR2xvYmFsTmFtZXMgPSAnc2NoZW1hTWVtYmVyR2xvYmFsTmFtZXMnLFxuXG4gIC8vIERQSV9TZWxlY3RWYWx1ZXNMaXN0LCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBTZWxlY3RWYWx1ZXNMaXN0ID0gJ3NlbGVjdFZhbHVlcycsXG5cbiAgLy8gRFBJX1NlbGVjdGlvblZhbHVlTGlzdCwgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgU2VsZWN0aW9uVmFsdWVMaXN0ID0gJ3NlbGVjdGlvblZhbHVlTGlzdCcsXG5cbiAgLy8gRFBJX1NvcnRBZ2dDYXB0aW9ucywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgU29ydEFnZ0NhcHRpb25zID0gJ3NvcnRBZ2dDYXB0aW9ucycsXG5cbiAgLy8gRFBJX1NvcnREaXJlY3Rpb25DYXB0aW9ucywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgU29ydERpcmVjdGlvbkNhcHRpb25zID0gJ3NvcnREaXJlY3Rpb25DYXB0aW9ucycsXG5cbiAgLy8gRFBJX1NvcnRGaWVsZENhcHRpb25zLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBTb3J0RmllbGRDYXB0aW9ucyA9ICdzb3J0RmllbGRDYXB0aW9ucycsXG5cbiAgLy8gRFBJX1NvcnRGaWVsZE5hbWVWZWN0b3IsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFNvcnRGaWVsZE5hbWVWZWN0b3IgPSAnc29ydEZpZWxkbmFtZVZlY3RvcicsXG5cbiAgLy8gRFBJX1N1cHBvcnRlZEpvaW5PcGVyYXRvcnMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFN1cHBvcnRlZEpvaW5PcGVyYXRvcnMgPSAnc3VwcG9ydGVkSm9pbk9wZXJhdG9ycycsXG5cbiAgLy8gRFBJX1RhYmxlQ2FsY1R5cGVDYXB0aW9ucywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgVGFibGVDYWxjVHlwZUNhcHRpb25zID0gJ3RhYmxlQ2FsY1R5cGVDYXB0aW9ucycsXG5cbiAgLy8gRFBJX1RhZ3MsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFRhZ3MgPSAndGFncycsXG5cbiAgLy8gRFBJX1Rlcm1WZWMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFRlcm1WZWMgPSAndGVybVZlY3RvcicsXG5cbiAgLy8gRFBJX1VJQXV0b21hdGlvbkxpc3QsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFVJQXV0b21hdGlvbkxpc3QgPSAndWlBdXRvbWF0aW9uTGlzdCcsXG5cbiAgLy8gRFBJX1JlZmVyZW5jZUxpbmVWYWxpZEN1c3RvbUxhYmVsVGFncywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgUmVmZXJlbmNlTGluZVZhbGlkQ3VzdG9tTGFiZWxUYWdzID0gJ3ZhbGlkUmVmZXJlbmNlTGluZUN1c3RvbUxhYmVsVGFncycsXG5cbiAgLy8gRFBJX0xvY2FsaXplZEtleXdvcmRzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBMb2NhbGl6ZWRLZXl3b3JkcyA9ICdsb2NhbGl6ZWRLZXl3b3JkcycsXG5cbiAgLy8gRFBJX0F2YWlsYWJsZUNhbGVuZGFycywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgQXZhaWxhYmxlQ2FsZW5kYXJzID0gJ2F2YWlsYWJsZUNhbGVuZGFycycsXG5cbiAgLy8gRFBJX1NoZWV0c1RvQmVEZWxldGVkT3JIaWRkZW4sIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFNoZWV0c1RvQmVEZWxldGVkT3JIaWRkZW4gPSAnc2hlZXRzVG9CZURlbGV0ZWRPckhpZGRlbicsXG5cbiAgLy8gRFBJX0FkZFNoZWV0cywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgQWRkU2hlZXRzID0gJ2FkZFNoZWV0cycsXG5cbiAgLy8gRFBJX05hbWVzT2ZTdWJzaGVldHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIE5hbWVzT2ZTdWJzaGVldHMgPSAnbmFtZXNPZlN1YnNoZWV0cycsXG5cbiAgLy8gRFBJX1JlbW92ZVNoZWV0cywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgUmVtb3ZlU2hlZXRzID0gJ3JlbW92ZVNoZWV0cycsXG5cbiAgLy8gRFBJX1Njcm9sbE9mZnNldFNoZWV0cywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgU2Nyb2xsT2Zmc2V0U2hlZXRzID0gJ3Njcm9sbE9mZnNldFNoZWV0cycsXG5cbiAgLy8gRFBJX1NoZWV0cywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgU2hlZXRzID0gJ3NoZWV0cycsXG5cbiAgLy8gRFBJX1NvdXJjZVdvcmtzaGVldHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFNvdXJjZVdvcmtzaGVldHMgPSAnc291cmNlV29ya3NoZWV0cycsXG5cbiAgLy8gRFBJX1RhcmdldEV4Y2x1ZGVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBUYXJnZXRFeGNsdWRlcyA9ICd0YXJnZXRFeGNsdWRlJyxcblxuICAvLyBEUElfVGFyZ2V0V29ya3NoZWV0cywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgVGFyZ2V0V29ya3NoZWV0cyA9ICd0YXJnZXRXb3Jrc2hlZXRzJyxcblxuICAvLyBEUElfVGlsZVVSTHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFRpbGVVUkxzID0gJ3RpbGVVcmxzJyxcblxuICAvLyBEUElfRGV0YWlscywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgRGV0YWlscyA9ICdkZXRhaWxzJyxcblxuICAvLyBEUElfRmllbGRDYXB0aW9ucywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgRmllbGRDYXB0aW9ucyA9ICdmaWVsZENhcHRpb25zJyxcblxuICAvLyBEUElfSGlnaGxpZ2h0Q2FwdGlvbnMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIEhpZ2hsaWdodENhcHRpb25zID0gJ2hpZ2hsaWdodENhcHRpb25zJyxcblxuICAvLyBEUElfTGV2ZWxDYXB0aW9ucywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgTGV2ZWxDYXB0aW9ucyA9ICdsZXZlbENhcHRpb25zJyxcblxuICAvLyBEUElfTGV2ZWxMZWFmVmFsdWVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBMZXZlbExlYWZWYWx1ZXMgPSAnbGV2ZWxMZWFmVmFsdWVzJyxcblxuICAvLyBEUElfU3Vic3RpdHV0aW9uVmFyaWFibGVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBTdWJzdGl0dXRpb25WYXJpYWJsZXMgPSAnc3Vic3RpdHV0aW9uVmFyaWFibGVzJyxcblxuICAvLyBEUElfU3Vic3RpdHV0aW9uVmFyaWFibGVWYWx1ZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFN1YnN0aXR1dGlvblZhcmlhYmxlVmFsdWVzID0gJ3N1YnN0aXR1dGlvblZhcmlhYmxlVmFsdWVzJyxcblxuICAvLyBEUElfSHRtbFRvb2x0aXBzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBIdG1sVG9vbHRpcHMgPSAnaHRtbFRvb2x0aXBzJyxcblxuICAvLyBEUElfSW52YWxpZEZpZWxkcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgSW52YWxpZEZpZWxkcyA9ICdpbnZhbGlkRmllbGRzJyxcblxuICAvLyBEUElfTmFtZXNPZkNvbHVtbnMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIE5hbWVzT2ZDb2x1bW5zID0gJ25hbWVzT2ZDb2x1bW5zJyxcblxuICAvLyBEUElfTmFtZXNPZkZpZWxkcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgTmFtZXNPZkZpZWxkcyA9ICduYW1lc09mRmllbGRzJyxcblxuICAvLyBEUElfUmVmZXJlbmNlZERhdGFzb3VyY2VzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBSZWZlcmVuY2VkRGF0YXNvdXJjZXMgPSAncmVmZXJlbmNlZERhdGFTb3VyY2VMaXN0JyxcblxuICAvLyBEUElfQ1NTQXR0cnMsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2Ygc3RyaW5nKVxuICBDU1NBdHRycyA9ICdjc3NBdHRycycsXG5cbiAgLy8gRFBJX0RhdGFTb3VyY2VNYXAsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2Ygc3RyaW5nKVxuICBEYXRhU291cmNlTWFwID0gJ2RhdGFTb3VyY2VNYXAnLFxuXG4gIC8vIERQSV9FdmVudFBhcmFtZXRlcnMsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2Ygc3RyaW5nKVxuICBFdmVudFBhcmFtZXRlcnMgPSAnZXZlbnRQYXJhbWV0ZXJzJyxcblxuICAvLyBEUElfRXhjZXB0aW9uQXR0cnMsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2Ygc3RyaW5nKVxuICBFeGNlcHRpb25BdHRycyA9ICdleGNlcHRpb25BdHRycycsXG5cbiAgLy8gRFBJX0ludmFsaWRTaGVldE1lc3NhZ2UsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2Ygc3RyaW5nKVxuICBJbnZhbGlkU2hlZXRNZXNzYWdlID0gJ2ludmFsaWRTaGVldE1lc3NhZ2VzJyxcblxuICAvLyBEUElfTWFwQm94RGVmYXVsdFN0eWxlLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIHN0cmluZylcbiAgTWFwQm94RGVmYXVsdFN0eWxlID0gJ21hcGJveERlZmF1bHRTdHlsZXMnLFxuXG4gIC8vIERQSV9QYW5lRm9ybWF0dGluZ3MsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2Ygc3RyaW5nKVxuICBQYW5lRm9ybWF0dGluZ3MgPSAncGFuZUZvcm1hdHRpbmdzJyxcblxuICAvLyBEUElfU291cmNlTmFtZVdpdGhDYXB0aW9uLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIHN0cmluZylcbiAgU291cmNlTmFtZVdpdGhDYXB0aW9uID0gJ3NvdXJjZU5hbWVXaXRoQ2FwdGlvbicsXG5cbiAgLy8gRFBJX0Nvbm5lY3Rpb25Db2xvck1hcCwgaGF2aW5nIHR5cGUgRGljdGlvbmFyeShvZiBzdHJpbmcpXG4gIENvbm5lY3Rpb25Db2xvck1hcCA9ICdjb25uZWN0aW9uQ29sb3JNYXAnLFxuXG4gIC8vIERQSV9UYXJnZXROYW1lV2l0aENhcHRpb24sIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2Ygc3RyaW5nKVxuICBUYXJnZXROYW1lV2l0aENhcHRpb24gPSAndGFyZ2V0TmFtZVdpdGhDYXB0aW9uJyxcblxuICAvLyBEUElfVmlld0lkcywgaGF2aW5nIHR5cGUgRGljdGlvbmFyeShvZiBzdHJpbmcpXG4gIFZpZXdJZHMgPSAndmlld0lkcycsXG5cbiAgLy8gRFBJX0FkZEluU2V0dGluZ3MsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2Ygc3RyaW5nKVxuICBBZGRJblNldHRpbmdzID0gJ2FkZEluU2V0dGluZ3MnLFxuXG4gIC8vIERQSV9EYXRhc291cmNlSWNvbnMsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2Ygc3RyaW5nKVxuICBEYXRhc291cmNlSWNvbnMgPSAnZGF0YXNvdXJjZUljb25zJyxcblxuICAvLyBEUElfRm9ybWF0dGVkVGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZvcm1hdHRlZFRleHQgPSAnZm9ybWF0dGVkVGV4dCcsXG5cbiAgLy8gRFBJX0ljb25Ub29sdGlwLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgSWNvblRvb2x0aXAgPSAnaWNvblRvb2x0aXAnLFxuXG4gIC8vIERQSV9UaXRsZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFRpdGxlID0gJ3RpdGxlJyxcblxuICAvLyBEUElfVG9vbHRpcCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFRvb2x0aXAgPSAndG9vbHRpcCcsXG5cbiAgLy8gRFBJX1pvbmVUZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgWm9uZVRleHQgPSAnem9uZVRleHQnLFxuXG4gIC8vIERQSV9BbGlnbm1lbnRGbGFncywgaGF2aW5nIHR5cGUgaW50XG4gIEFsaWdubWVudEZsYWdzID0gJ2FsaWdubWVudEZsYWdzJyxcblxuICAvLyBEUElfQWxwaGFMZXZlbCwgaGF2aW5nIHR5cGUgaW50XG4gIEFscGhhTGV2ZWwgPSAnYWxwaGFMZXZlbCcsXG5cbiAgLy8gRFBJX0Fub3ZhREYsIGhhdmluZyB0eXBlIGludFxuICBBbm92YURGID0gJ2Fub3ZhRGYnLFxuXG4gIC8vIERQSV9BdFRoZUxldmVsSW5kZXgsIGhhdmluZyB0eXBlIGludFxuICBBdFRoZUxldmVsSW5kZXggPSAnYXRUaGVMZXZlbEluZGV4JyxcblxuICAvLyBEUElfQXV0b21hdGljRHJpbGxJZHhJblZlY3RvciwgaGF2aW5nIHR5cGUgaW50XG4gIEF1dG9tYXRpY0RyaWxsSWR4SW5WZWN0b3IgPSAnYXV0b21hdGljRHJpbGxJZHhWZWN0b3InLFxuXG4gIC8vIERQSV9BdXRvU2l6ZSwgaGF2aW5nIHR5cGUgaW50XG4gIEF1dG9TaXplID0gJ2F1dG9tYXRpY1NpemUnLFxuXG4gIC8vIERQSV9CYXNlQ29vcmQsIGhhdmluZyB0eXBlIGludFxuICBCYXNlQ29vcmQgPSAnYmFzZUNvb3JkJyxcblxuICAvLyBEUElfQ2FsY0VkaXRvckN1cnNvclBvc1Bvc3REcm9wLCBoYXZpbmcgdHlwZSBpbnRcbiAgQ2FsY0VkaXRvckN1cnNvclBvc1Bvc3REcm9wID0gJ2NhbGNFZGl0b3JDdXJzb3JQb3NQb3N0RHJvcCcsXG5cbiAgLy8gRFBJX0NhbGNFZGl0b3JEcm9wUG9zLCBoYXZpbmcgdHlwZSBpbnRcbiAgQ2FsY0VkaXRvckRyb3BQb3MgPSAnY2FsY0VkaXRvckRyb3BQb3MnLFxuXG4gIC8vIERQSV9DYWxjRWRpdG9yVGV4dFNlbGVjdGlvbkVuZFBvcywgaGF2aW5nIHR5cGUgaW50XG4gIENhbGNFZGl0b3JUZXh0U2VsZWN0aW9uRW5kUG9zID0gJ2NhbGNFZGl0b3JUZXh0U2VsZWN0aW9uRW5kUG9zJyxcblxuICAvLyBEUElfQ2FsY0VkaXRvclRleHRTZWxlY3Rpb25TdGFydFBvcywgaGF2aW5nIHR5cGUgaW50XG4gIENhbGNFZGl0b3JUZXh0U2VsZWN0aW9uU3RhcnRQb3MgPSAnY2FsY0VkaXRvclRleHRTZWxlY3Rpb25TdGFydFBvcycsXG5cbiAgLy8gRFBJX0NhdGVnb3JpY2FsQmluSWQsIGhhdmluZyB0eXBlIGludFxuICBDYXRlZ29yaWNhbEJpbklkID0gJ2NhdGVnb3JpY2FsQmluSWQnLFxuXG4gIC8vIERQSV9DYXRlZ29yaWNhbEZpbmRDb250cm9sbGVySWQsIGhhdmluZyB0eXBlIGludFxuICBDYXRlZ29yaWNhbEZpbmRDb250cm9sbGVySWQgPSAnY2F0ZWdvcmljYWxGaW5kQ29udHJvbGxlcklkJyxcblxuICAvLyBEUElfQ2xhdXNlVG9Nb2RpZnlJbmRleCwgaGF2aW5nIHR5cGUgaW50XG4gIENsYXVzZVRvTW9kaWZ5SW5kZXggPSAnY2xhdXNlVG9Nb2RpZnlJbmRleCcsXG5cbiAgLy8gRFBJX0NsaWVudFJlbmRlclBpeGVsTGltaXQsIGhhdmluZyB0eXBlIGludFxuICBDbGllbnRSZW5kZXJQaXhlbExpbWl0ID0gJ2NsaWVudFJlbmRlclBpeGVsTGltaXQnLFxuXG4gIC8vIERQSV9Db2xDb3VudCwgaGF2aW5nIHR5cGUgaW50XG4gIENvbENvdW50ID0gJ2NvbENvdW50JyxcblxuICAvLyBEUElfQ29sV2lkdGgsIGhhdmluZyB0eXBlIGludFxuICBDb2xXaWR0aCA9ICdjb2xXaWR0aCcsXG5cbiAgLy8gRFBJX0NvbHVtbkxldmVscywgaGF2aW5nIHR5cGUgaW50XG4gIENvbHVtbkxldmVscyA9ICdjb2x1bW5MZXZlbHMnLFxuXG4gIC8vIERQSV9Db2x1bW5OdW1iZXIsIGhhdmluZyB0eXBlIGludFxuICBDb2x1bW5OdW1iZXIgPSAnY29sdW1uTnVtYmVyJyxcblxuICAvLyBEUElfQ29sdW1uV2lkdGgsIGhhdmluZyB0eXBlIGludFxuICBDb2x1bW5XaWR0aCA9ICdjb2x1bW5XaWR0aCcsXG5cbiAgLy8gRFBJX0NvbnRlbnRIZWlnaHQsIGhhdmluZyB0eXBlIGludFxuICBDb250ZW50SGVpZ2h0ID0gJ2NvbnRlbnRIJyxcblxuICAvLyBEUElfQ29udGVudFdpZHRoLCBoYXZpbmcgdHlwZSBpbnRcbiAgQ29udGVudFdpZHRoID0gJ2NvbnRlbnRXJyxcblxuICAvLyBEUElfQ29udGVudFgsIGhhdmluZyB0eXBlIGludFxuICBDb250ZW50WCA9ICdjb250ZW50WCcsXG5cbiAgLy8gRFBJX0NvbnRlbnRZLCBoYXZpbmcgdHlwZSBpbnRcbiAgQ29udGVudFkgPSAnY29udGVudFknLFxuXG4gIC8vIERQSV9Db29yZGluYXRlLCBoYXZpbmcgdHlwZSBpbnRcbiAgQ29vcmRpbmF0ZSA9ICdjb29yZCcsXG5cbiAgLy8gRFBJX0N1ckRhdGVBZ2csIGhhdmluZyB0eXBlIGludFxuICBDdXJEYXRlQWdnID0gJ2N1ckRhdGVBZ2cnLFxuXG4gIC8vIERQSV9DdXJyZW50Q3VzdFZpZXdJZCwgaGF2aW5nIHR5cGUgaW50XG4gIEN1cnJlbnRDdXN0Vmlld0lkID0gJ2N1cnJlbnRDdXN0b21WaWV3SWQnLFxuXG4gIC8vIERQSV9DdXN0b21TcGxpdENoYXJhY3RlckNvdW50U2VwYXJhdG9yLCBoYXZpbmcgdHlwZSBpbnRcbiAgQ3VzdG9tU3BsaXRDaGFyYWN0ZXJDb3VudFNlcGFyYXRvciA9ICdjdXN0b21TcGxpdENoYXJhY3RlckNvdW50U2VwYXJhdG9yJyxcblxuICAvLyBEUElfQ3VzdG9tU3BsaXREZXNpcmVkU3BsaXRDb3VudCwgaGF2aW5nIHR5cGUgaW50XG4gIEN1c3RvbVNwbGl0RGVzaXJlZFNwbGl0Q291bnQgPSAnY3VzdG9tU3BsaXREZXNpcmVkU3BsaXRDb3VudCcsXG5cbiAgLy8gRFBJX0Rhc2hib2FyZEdyaWRTaXplLCBoYXZpbmcgdHlwZSBpbnRcbiAgRGFzaGJvYXJkR3JpZFNpemUgPSAnZGFzaGJvYXJkR3JpZFNpemUnLFxuXG4gIC8vIERQSV9EYXRhSW5kZXgsIGhhdmluZyB0eXBlIGludFxuICBEYXRhSW5kZXggPSAnZGF0YUluZGV4JyxcblxuICAvLyBEUElfRGVjaW1hbFBsYWNlcywgaGF2aW5nIHR5cGUgaW50XG4gIERlY2ltYWxQbGFjZXMgPSAnZGVjaW1hbFBsYWNlcycsXG5cbiAgLy8gRFBJX0RlbHRhVGltZSwgaGF2aW5nIHR5cGUgaW50XG4gIERlbHRhVGltZSA9ICdkZWx0YVRpbWUnLFxuXG4gIC8vIERQSV9EZXN0UGl4LCBoYXZpbmcgdHlwZSBpbnRcbiAgRGVzdFBpeCA9ICdkZXN0UGl4JyxcblxuICAvLyBEUElfRGV2aWNlSW5kZXgsIGhhdmluZyB0eXBlIGludFxuICBEZXZpY2VJbmRleCA9ICdkZXZpY2VJbmRleCcsXG5cbiAgLy8gRFBJX0R1cmF0aW9uLCBoYXZpbmcgdHlwZSBpbnRcbiAgRHVyYXRpb24gPSAnZHVyYXRpb24nLFxuXG4gIC8vIERQSV9FbmRQdFgsIGhhdmluZyB0eXBlIGludFxuICBFbmRQdFggPSAnZW5kWCcsXG5cbiAgLy8gRFBJX0VuZFB0WSwgaGF2aW5nIHR5cGUgaW50XG4gIEVuZFB0WSA9ICdlbmRZJyxcblxuICAvLyBEUElfRXJyb3JMZW4sIGhhdmluZyB0eXBlIGludFxuICBFcnJvckxlbiA9ICdsZW5ndGhPZkNhbGNPZkVycm9yJyxcblxuICAvLyBEUElfRXJyb3JQb3MsIGhhdmluZyB0eXBlIGludFxuICBFcnJvclBvcyA9ICdzdGFydFBvc2l0aW9uRm9yRXJyb3InLFxuXG4gIC8vIERQSV9FeGNlcHRpb25FcnJvck1lc3NhZ2VJZCwgaGF2aW5nIHR5cGUgaW50XG4gIEV4Y2VwdGlvbkVycm9yTWVzc2FnZUlkID0gJ2V4Y2VwdGlvbkVycm9yTWVzc2FnZUlkJyxcblxuICAvLyBEUElfRXh0ZW50c0gsIGhhdmluZyB0eXBlIGludFxuICBFeHRlbnRzSCA9ICdleHRlbnRzSGVpZ2h0JyxcblxuICAvLyBEUElfRXh0ZW50c1csIGhhdmluZyB0eXBlIGludFxuICBFeHRlbnRzVyA9ICdleHRlbnRzV2lkdGgnLFxuXG4gIC8vIERQSV9FeHRlbnRzWCwgaGF2aW5nIHR5cGUgaW50XG4gIEV4dGVudHNYID0gJ2V4dGVudHNYJyxcblxuICAvLyBEUElfRXh0ZW50c1ksIGhhdmluZyB0eXBlIGludFxuICBFeHRlbnRzWSA9ICdleHRlbnRzWScsXG5cbiAgLy8gRFBJX0ZpZWxkSW5kZXgsIGhhdmluZyB0eXBlIGludFxuICBGaWVsZEluZGV4ID0gJ2ZpZWxkSW5kZXgnLFxuXG4gIC8vIERQSV9GaWVsZE5hbWVJZCwgaGF2aW5nIHR5cGUgaW50XG4gIEZpZWxkTmFtZUlkID0gJ2ZpZWxkTmFtZUlkJyxcblxuICAvLyBEUElfRmlyc3REYXlPZldlZWssIGhhdmluZyB0eXBlIGludFxuICBGaXJzdERheU9mV2VlayA9ICdmaXJzdERheU9mV2VlaycsXG5cbiAgLy8gRFBJX0ZpcnN0VmFsdWVJbmRleCwgaGF2aW5nIHR5cGUgaW50XG4gIEZpcnN0VmFsdWVJbmRleCA9ICdmaXJzdFZhbHVlSW5kZXgnLFxuXG4gIC8vIERQSV9GaXhlZFNpemVQcmVzZXRJbmRleCwgaGF2aW5nIHR5cGUgaW50XG4gIEZpeGVkU2l6ZVByZXNldEluZGV4ID0gJ2ZpeGVkU2l6ZVByZXNldEluZGV4JyxcblxuICAvLyBEUElfRm9jdXNJdGVtSW5kZXgsIGhhdmluZyB0eXBlIGludFxuICBGb2N1c0l0ZW1JbmRleCA9ICdmb2N1c0l0ZW1JbmRleCcsXG5cbiAgLy8gRFBJX0ZvbnRTaXplLCBoYXZpbmcgdHlwZSBpbnRcbiAgRm9udFNpemUgPSAnZm9udFNpemUnLFxuXG4gIC8vIERQSV9Gb3JlY2FzdEludFJhbmdlRW5kLCBoYXZpbmcgdHlwZSBpbnRcbiAgRm9yZWNhc3RJbnRSYW5nZUVuZCA9ICdmb3JlY2FzdEludFJhbmdlRW5kJyxcblxuICAvLyBEUElfRm9yZWNhc3RJbnRSYW5nZVN0YXJ0LCBoYXZpbmcgdHlwZSBpbnRcbiAgRm9yZWNhc3RJbnRSYW5nZVN0YXJ0ID0gJ2ZvcmVjYXN0SW50UmFuZ2VTdGFydCcsXG5cbiAgLy8gRFBJX0Z1bmN0aW9uSGVscEluZGV4LCBoYXZpbmcgdHlwZSBpbnRcbiAgRnVuY3Rpb25IZWxwSW5kZXggPSAnZnVuY3Rpb25IZWxwSW5kZXgnLFxuXG4gIC8vIERQSV9HZW9ncmFwaGljU2VhcmNoTWF4UmVzdWx0cywgaGF2aW5nIHR5cGUgaW50XG4gIEdlb2dyYXBoaWNTZWFyY2hNYXhSZXN1bHRzID0gJ2dlb2dyYXBoaWNTZWFyY2hNYXhSZXN1bHRzJyxcblxuICAvLyBEUElfSGVpZ2h0LCBoYXZpbmcgdHlwZSBpbnRcbiAgSGVpZ2h0ID0gJ2gnLFxuXG4gIC8vIERQSV9IaWVyYXJjaHlMZXZlbCwgaGF2aW5nIHR5cGUgaW50XG4gIEhpZXJhcmNoeUxldmVsID0gJ2hpZXJhcmNoeUxldmVsJyxcblxuICAvLyBEUElfSGllcmFyY2h5TGV2ZWxMb2FkZWQsIGhhdmluZyB0eXBlIGludFxuICBIaWVyYXJjaHlMZXZlbExvYWRlZCA9ICdoaWVyYXJjaHlMZXZlbExvYWRlZCcsXG5cbiAgLy8gRFBJX0hpZXJhcmNoeUxldmVsTWluaW11bSwgaGF2aW5nIHR5cGUgaW50XG4gIEhpZXJhcmNoeUxldmVsTWluaW11bSA9ICdoaWVyYXJjaHlMZXZlbE1pbmltdW0nLFxuXG4gIC8vIERQSV9IaWVyYXJjaHlMb2FkTGltaXQsIGhhdmluZyB0eXBlIGludFxuICBIaWVyYXJjaHlMb2FkTGltaXQgPSAnaGllcmFyY2h5TG9hZExpbWl0JyxcblxuICAvLyBEUElfSGllcmFyY2h5U2VsZWN0Q29udHJvbGxlcklkLCBoYXZpbmcgdHlwZSBpbnRcbiAgSGllcmFyY2h5U2VsZWN0Q29udHJvbGxlcklkID0gJ2hpZXJhcmNoeVNlbGVjdENvbnRyb2xsZXJJZCcsXG5cbiAgLy8gRFBJX0hvcnpUZXh0Q2VsbCwgaGF2aW5nIHR5cGUgaW50XG4gIEhvcnpUZXh0Q2VsbCA9ICdob3J6VGV4dENlbGwnLFxuXG4gIC8vIERQSV9JbWFnZUluZGV4LCBoYXZpbmcgdHlwZSBpbnRcbiAgSW1hZ2VJbmRleCA9ICdpbWFnZUluZGV4JyxcblxuICAvLyBEUElfSW1hZ2VTaXplTGltaXQsIGhhdmluZyB0eXBlIGludFxuICBJbWFnZVNpemVMaW1pdCA9ICdpbWFnZVNpemVMaW1pdCcsXG5cbiAgLy8gRFBJX1RyYW5zcGFyZW50TGluZU1hcmtzTGltaXQsIGhhdmluZyB0eXBlIGludFxuICBUcmFuc3BhcmVudExpbmVNYXJrc0xpbWl0ID0gJ3RyYW5zcGFyZW50TGluZU1hcmtzTGltaXQnLFxuXG4gIC8vIERQSV9JbmRlbnQsIGhhdmluZyB0eXBlIGludFxuICBJbmRlbnQgPSAnaW5kZW50JyxcblxuICAvLyBEUElfSW5kZXgsIGhhdmluZyB0eXBlIGludFxuICBJbmRleCA9ICdpZHgnLFxuXG4gIC8vIERQSV9JbmRleEZyb20sIGhhdmluZyB0eXBlIGludFxuICBJbmRleEZyb20gPSAnaW5kZXhGcm9tJyxcblxuICAvLyBEUElfSW5kZXhPZmZzZXQsIGhhdmluZyB0eXBlIGludFxuICBJbmRleE9mZnNldCA9ICdpbmRleE9mZnNldCcsXG5cbiAgLy8gRFBJX0luZGV4VG8sIGhhdmluZyB0eXBlIGludFxuICBJbmRleFRvID0gJ2luZGV4VG8nLFxuXG4gIC8vIERQSV9JbmxpbmVDb25uZWN0aW9uUmVuYW1lUm93LCBoYXZpbmcgdHlwZSBpbnRcbiAgSW5saW5lQ29ubmVjdGlvblJlbmFtZVJvdyA9ICdpbmxpbmVDb25uZWN0aW9uUmVuYW1lUm93JyxcblxuICAvLyBEUElfSW5zZXJ0UG9zLCBoYXZpbmcgdHlwZSBpbnRcbiAgSW5zZXJ0UG9zID0gJ2luc2VydFBvcycsXG5cbiAgLy8gRFBJX0lzSGFzRGF0YVN1cHBvcnRlZCwgaGF2aW5nIHR5cGUgaW50XG4gIElzSGFzRGF0YVN1cHBvcnRlZCA9ICdpc0hhc0RhdGFTdXBwb3J0ZWQnLFxuXG4gIC8vIERQSV9MZWZ0TWFyZ2luLCBoYXZpbmcgdHlwZSBpbnRcbiAgTGVmdE1hcmdpbiA9ICdsZWZ0TWFyZ2luJyxcblxuICAvLyBEUElfTGVmdFJpZ2h0Qm9yZGVyV2lkdGgsIGhhdmluZyB0eXBlIGludFxuICBMZWZ0UmlnaHRCb3JkZXJXaWR0aCA9ICdsZWZ0UmlnaHRCb3JkZXJXaWR0aCcsXG5cbiAgLy8gRFBJX0xvd2VyQm91bmQsIGhhdmluZyB0eXBlIGludFxuICBMb3dlckJvdW5kID0gJ2xvd2VyQm91bmQnLFxuXG4gIC8vIERQSV9NYXBSZXF1ZXN0UGl4ZWxzLCBoYXZpbmcgdHlwZSBpbnRcbiAgTWFwUmVxdWVzdFBpeGVscyA9ICdtYXBSZXF1ZXN0UGl4ZWxzJyxcblxuICAvLyBEUElfTWFwU2NhbGVGb250U2l6ZVBpeGVscywgaGF2aW5nIHR5cGUgaW50XG4gIE1hcFNjYWxlRm9udFNpemVQaXhlbHMgPSAnbWFwU2NhbGVGb250U2l6ZVBpeGVscycsXG5cbiAgLy8gRFBJX01hcFNjYWxlUmVhZG91dE51bWJlciwgaGF2aW5nIHR5cGUgaW50XG4gIE1hcFNjYWxlUmVhZG91dE51bWJlciA9ICdtYXBTY2FsZVJlYWRvdXROdW1iZXInLFxuXG4gIC8vIERQSV9NYXBTY2FsZVdpZHRoLCBoYXZpbmcgdHlwZSBpbnRcbiAgTWFwU2NhbGVXaWR0aCA9ICdtYXBTY2FsZVdpZHRoJyxcblxuICAvLyBEUElfTWFwVGlsZVNpemUsIGhhdmluZyB0eXBlIGludFxuICBNYXBUaWxlU2l6ZSA9ICdtYXBUaWxlU2l6ZScsXG5cbiAgLy8gRFBJX01hcmdpbiwgaGF2aW5nIHR5cGUgaW50XG4gIE1hcmdpbiA9ICdtYXJnaW4nLFxuXG4gIC8vIERQSV9NYXJnaW5Cb3R0b20sIGhhdmluZyB0eXBlIGludFxuICBNYXJnaW5Cb3R0b20gPSAnbWFyZ2luQm90dG9tJyxcblxuICAvLyBEUElfTWFyZ2luTGVmdCwgaGF2aW5nIHR5cGUgaW50XG4gIE1hcmdpbkxlZnQgPSAnbWFyZ2luTGVmdCcsXG5cbiAgLy8gRFBJX01hcmdpblJpZ2h0LCBoYXZpbmcgdHlwZSBpbnRcbiAgTWFyZ2luUmlnaHQgPSAnbWFyZ2luUmlnaHQnLFxuXG4gIC8vIERQSV9NYXJnaW5Ub3AsIGhhdmluZyB0eXBlIGludFxuICBNYXJnaW5Ub3AgPSAnbWFyZ2luVG9wJyxcblxuICAvLyBEUElfTWF4Q2VsbCwgaGF2aW5nIHR5cGUgaW50XG4gIE1heENlbGwgPSAnbWF4Q2VsbCcsXG5cbiAgLy8gRFBJX01heEl0ZW1TcGFuLCBoYXZpbmcgdHlwZSBpbnRcbiAgTWF4SXRlbVNwYW4gPSAnbWF4SXRlbVNwYW4nLFxuXG4gIC8vIERQSV9NYXhQb2x5bm9taWFsRGVncmVlLCBoYXZpbmcgdHlwZSBpbnRcbiAgTWF4UG9seW5vbWlhbERlZ3JlZSA9ICdtYXhEZWdyZWUnLFxuXG4gIC8vIERQSV9NYXhQb3NpdGlvbiwgaGF2aW5nIHR5cGUgaW50XG4gIE1heFBvc2l0aW9uID0gJ21heFBvc2l0aW9uJyxcblxuICAvLyBEUElfTWF4U2l6ZSwgaGF2aW5nIHR5cGUgaW50XG4gIE1heFNpemUgPSAnbWF4U2l6ZScsXG5cbiAgLy8gRFBJX01pbkNlbGwsIGhhdmluZyB0eXBlIGludFxuICBNaW5DZWxsID0gJ21pbkNlbGwnLFxuXG4gIC8vIERQSV9NaW5Qb2x5bm9taWFsRGVncmVlLCBoYXZpbmcgdHlwZSBpbnRcbiAgTWluUG9seW5vbWlhbERlZ3JlZSA9ICdtaW5EZWdyZWUnLFxuXG4gIC8vIERQSV9NaW5Qb3NpdGlvbiwgaGF2aW5nIHR5cGUgaW50XG4gIE1pblBvc2l0aW9uID0gJ21pblBvc2l0aW9uJyxcblxuICAvLyBEUElfTWluU2l6ZSwgaGF2aW5nIHR5cGUgaW50XG4gIE1pblNpemUgPSAnbWluU2l6ZScsXG5cbiAgLy8gRFBJX01vZGVsREYsIGhhdmluZyB0eXBlIGludFxuICBNb2RlbERGID0gJ21vZGVsRGYnLFxuXG4gIC8vIERQSV9OZXdJbmRleCwgaGF2aW5nIHR5cGUgaW50XG4gIE5ld0luZGV4ID0gJ25ld0luZGV4JyxcblxuICAvLyBEUElfTnVtRGF0YVNvdXJjZXNVc2luZ1NlcnZlciwgaGF2aW5nIHR5cGUgaW50XG4gIE51bURhdGFTb3VyY2VzVXNpbmdTZXJ2ZXIgPSAnbnVtRGF0YVNvdXJjZXNVc2luZ1NlcnZlcicsXG5cbiAgLy8gRFBJX051bUZpbHRlcmVkT2JzLCBoYXZpbmcgdHlwZSBpbnRcbiAgTnVtRmlsdGVyZWRPYnMgPSAnZmlsdGVyZWRPYnNlcnZhdGlvbnMnLFxuXG4gIC8vIERQSV9OdW1Nb2RlbGVkT2JzLCBoYXZpbmcgdHlwZSBpbnRcbiAgTnVtTW9kZWxlZE9icyA9ICdtb2RlbGVkT2JzZXJ2YXRpb25zJyxcblxuICAvLyBEUElfTnVtTm90Q2x1c3RlcmVkLCBoYXZpbmcgdHlwZSBpbnRcbiAgTnVtTm90Q2x1c3RlcmVkID0gJ251bU5vdENsdXN0ZXJlZCcsXG5cbiAgLy8gRFBJX051bU51bWVyaWNGaWVsZHMsIGhhdmluZyB0eXBlIGludFxuICBOdW1OdW1lcmljRmllbGRzID0gJ251bU51bWVyaWNGaWVsZHMnLFxuXG4gIC8vIERQSV9OdW1PdXRsaWVycywgaGF2aW5nIHR5cGUgaW50XG4gIE51bU91dGxpZXJzID0gJ251bU91dGxpZXJzJyxcblxuICAvLyBEUElfTnVtUm93cywgaGF2aW5nIHR5cGUgaW50XG4gIE51bVJvd3MgPSAnbnVtUm93cycsXG5cbiAgLy8gRFBJX051bVNlbGVjdGVkLCBoYXZpbmcgdHlwZSBpbnRcbiAgTnVtU2VsZWN0ZWQgPSAnbnVtU2VsZWN0ZWQnLFxuXG4gIC8vIERQSV9PZmZzZXRYLCBoYXZpbmcgdHlwZSBpbnRcbiAgT2Zmc2V0WCA9ICdvZmZzZXRYJyxcblxuICAvLyBEUElfT2Zmc2V0WSwgaGF2aW5nIHR5cGUgaW50XG4gIE9mZnNldFkgPSAnb2Zmc2V0WScsXG5cbiAgLy8gRFBJX1BhZGRpbmcsIGhhdmluZyB0eXBlIGludFxuICBQYWRkaW5nID0gJ3BhZGRpbmcnLFxuXG4gIC8vIERQSV9QYWRkaW5nQm90dG9tLCBoYXZpbmcgdHlwZSBpbnRcbiAgUGFkZGluZ0JvdHRvbSA9ICdwYWRkaW5nQm90dG9tJyxcblxuICAvLyBEUElfUGFkZGluZ0xlZnQsIGhhdmluZyB0eXBlIGludFxuICBQYWRkaW5nTGVmdCA9ICdwYWRkaW5nTGVmdCcsXG5cbiAgLy8gRFBJX1BhZGRpbmdSaWdodCwgaGF2aW5nIHR5cGUgaW50XG4gIFBhZGRpbmdSaWdodCA9ICdwYWRkaW5nUmlnaHQnLFxuXG4gIC8vIERQSV9QYWRkaW5nVG9wLCBoYXZpbmcgdHlwZSBpbnRcbiAgUGFkZGluZ1RvcCA9ICdwYWRkaW5nVG9wJyxcblxuICAvLyBEUElfUGFnZUxvYWRQZXJjZW50YWdlLCBoYXZpbmcgdHlwZSBpbnRcbiAgUGFnZUxvYWRQZXJjZW50YWdlID0gJ3BhZ2VMb2FkUGVyY2VudGFnZScsXG5cbiAgLy8gRFBJX1BhbGV0dGVJbmRleCwgaGF2aW5nIHR5cGUgaW50XG4gIFBhbGV0dGVJbmRleCA9ICdwYWxldHRlSW5kZXgnLFxuXG4gIC8vIERQSV9QYW5lU3BlY2lmaWNhdGlvbklkLCBoYXZpbmcgdHlwZSBpbnRcbiAgUGFuZVNwZWNpZmljYXRpb25JZCA9ICdwYW5lU3BlYycsXG5cbiAgLy8gRFBJX1BhcmFtZXRlckN0cmxJbmNyZW1lbnRzUGVyVGljaywgaGF2aW5nIHR5cGUgaW50XG4gIFBhcmFtZXRlckN0cmxJbmNyZW1lbnRzUGVyVGljayA9ICdwYXJhbWV0ZXJDb250cm9sSW5jcmVtZW50TXVsdGlwbGllcicsXG5cbiAgLy8gRFBJX1BvbHlub21pYWxEZWdyZWUsIGhhdmluZyB0eXBlIGludFxuICBQb2x5bm9taWFsRGVncmVlID0gJ2RlZ3JlZScsXG5cbiAgLy8gRFBJX1BvcnQsIGhhdmluZyB0eXBlIGludFxuICBQb3J0ID0gJ2RhdGFzb3VyY2VQb3J0JyxcblxuICAvLyBEUElfUG9zaXRpb24sIGhhdmluZyB0eXBlIGludFxuICBQb3NpdGlvbiA9ICdwb3NpdGlvbicsXG5cbiAgLy8gRFBJX1BhcmVudFByb2plY3RJZCwgaGF2aW5nIHR5cGUgaW50XG4gIFBhcmVudFByb2plY3RJZCA9ICdwYXJlbnRQcm9qZWN0SWQnLFxuXG4gIC8vIERQSV9QdWJsaXNoUmVzdWx0U3RyaW5nSWQsIGhhdmluZyB0eXBlIGludFxuICBQdWJsaXNoUmVzdWx0U3RyaW5nSWQgPSAncHVibGlzaFJlc3VsdFN0cmluZ0lkJyxcblxuICAvLyBEUElfUmFkaXVzLCBoYXZpbmcgdHlwZSBpbnRcbiAgUmFkaXVzID0gJ3JhZGl1cycsXG5cbiAgLy8gRFBJX1JlYWRvdXRPZmZzZXQsIGhhdmluZyB0eXBlIGludFxuICBSZWFkb3V0T2Zmc2V0ID0gJ3JlYWRvdXRPZmZzZXQnLFxuXG4gIC8vIERQSV9SZWZlcmVuY2VJbmRleCwgaGF2aW5nIHR5cGUgaW50XG4gIFJlZmVyZW5jZUluZGV4ID0gJ3JlZmVyZW5jZUluZGV4JyxcblxuICAvLyBEUElfUmVnaW9uSGVpZ2h0LCBoYXZpbmcgdHlwZSBpbnRcbiAgUmVnaW9uSGVpZ2h0ID0gJ3JlZ2lvbkhlaWdodCcsXG5cbiAgLy8gRFBJX1JlZ2lvbldpZHRoLCBoYXZpbmcgdHlwZSBpbnRcbiAgUmVnaW9uV2lkdGggPSAncmVnaW9uV2lkdGgnLFxuXG4gIC8vIERQSV9SZW1vdmVkRGF0YXNvdXJjZUNvdW50LCBoYXZpbmcgdHlwZSBpbnRcbiAgUmVtb3ZlZERhdGFzb3VyY2VDb3VudCA9ICdyZW1vdmVkRGF0YXNvdXJjZUNvdW50JyxcblxuICAvLyBEUElfUmVtb3ZlZFNoZWV0Q291bnQsIGhhdmluZyB0eXBlIGludFxuICBSZW1vdmVkU2hlZXRDb3VudCA9ICdyZW1vdmVkU2hlZXRDb3VudCcsXG5cbiAgLy8gRFBJX1Jlc2lkdWFsREYsIGhhdmluZyB0eXBlIGludFxuICBSZXNpZHVhbERGID0gJ3Jlc2lkdWFsRGYnLFxuXG4gIC8vIERQSV9SZXNpemVDb2x1bW4sIGhhdmluZyB0eXBlIGludFxuICBSZXNpemVDb2x1bW4gPSAncmVzaXplQ29sdW1uJyxcblxuICAvLyBEUElfUmVzdGFydEV2ZXJ5SW5kZXgsIGhhdmluZyB0eXBlIGludFxuICBSZXN0YXJ0RXZlcnlJbmRleCA9ICdyZXN0YXJ0RXZlcnlJbmRleCcsXG5cbiAgLy8gRFBJX1JpZ2h0TWFyZ2luLCBoYXZpbmcgdHlwZSBpbnRcbiAgUmlnaHRNYXJnaW4gPSAncmlnaHRNYXJnaW4nLFxuXG4gIC8vIERQSV9Sb3dDb3VudCwgaGF2aW5nIHR5cGUgaW50XG4gIFJvd0NvdW50ID0gJ3Jvd0NvdW50JyxcblxuICAvLyBEUElfUm93SGVpZ2h0LCBoYXZpbmcgdHlwZSBpbnRcbiAgUm93SGVpZ2h0ID0gJ3Jvd0hlaWdodCcsXG5cbiAgLy8gRFBJX1Jvd0lubmVyTGV2ZWxzLCBoYXZpbmcgdHlwZSBpbnRcbiAgUm93SW5uZXJMZXZlbHMgPSAncm93SW5uZXJMZXZlbHMnLFxuXG4gIC8vIERQSV9Sb3dMZXZlbHMsIGhhdmluZyB0eXBlIGludFxuICBSb3dMZXZlbHMgPSAncm93TGV2ZWxzJyxcblxuICAvLyBEUElfUm93TnVtYmVyLCBoYXZpbmcgdHlwZSBpbnRcbiAgUm93TnVtYmVyID0gJ3Jvd051bWJlcicsXG5cbiAgLy8gRFBJX1Jvd1dpZHRoLCBoYXZpbmcgdHlwZSBpbnRcbiAgUm93V2lkdGggPSAncm93V2lkdGgnLFxuXG4gIC8vIERQSV9TZWNvbmRWYWx1ZUluZGV4LCBoYXZpbmcgdHlwZSBpbnRcbiAgU2Vjb25kVmFsdWVJbmRleCA9ICdzZWNvbmRWYWx1ZUluZGV4JyxcblxuICAvLyBEUElfU2Vjb25kc0FnbywgaGF2aW5nIHR5cGUgaW50XG4gIFNlY29uZHNBZ28gPSAnc2Vjb25kc0FnbycsXG5cbiAgLy8gRFBJX1NlbGVjdGlvbkVuZCwgaGF2aW5nIHR5cGUgaW50XG4gIFNlbGVjdGlvbkVuZCA9ICdzZWxlY3Rpb25FbmQnLFxuXG4gIC8vIERQSV9TZWxlY3Rpb25TdGFydCwgaGF2aW5nIHR5cGUgaW50XG4gIFNlbGVjdGlvblN0YXJ0ID0gJ3NlbGVjdGlvblN0YXJ0JyxcblxuICAvLyBEUElfU2hhcGVQYWxldHRlSUQsIGhhdmluZyB0eXBlIGludFxuICBTaGFwZVBhbGV0dGVJRCA9ICdzaGFwZVBhbGV0dGVJZCcsXG5cbiAgLy8gRFBJX1NoZWV0SW5kZXgsIGhhdmluZyB0eXBlIGludFxuICBTaGVldEluZGV4ID0gJ3NoZWV0SW5kZXgnLFxuXG4gIC8vIERQSV9TaGVsZlBvc2l0aW9uSW5kZXgsIGhhdmluZyB0eXBlIGludFxuICBTaGVsZlBvc2l0aW9uSW5kZXggPSAnc2hlbGZQb3NJbmRleCcsXG5cbiAgLy8gRFBJX1NpemUsIGhhdmluZyB0eXBlIGludFxuICBTaXplID0gJ3NpemUnLFxuXG4gIC8vIERQSV9TaXplRGlmZmVyZW5jZSwgaGF2aW5nIHR5cGUgaW50XG4gIFNpemVEaWZmZXJlbmNlID0gJ3NpemVEZWx0YScsXG5cbiAgLy8gRFBJX1NuYXBEaXN0YW5jZSwgaGF2aW5nIHR5cGUgaW50XG4gIFNuYXBEaXN0YW5jZSA9ICdzbmFwRGlzdGFuY2UnLFxuXG4gIC8vIERQSV9TbmFwTG9jYXRpb24sIGhhdmluZyB0eXBlIGludFxuICBTbmFwTG9jYXRpb24gPSAnc25hcExvY2F0aW9uJyxcblxuICAvLyBEUElfU29sdmVPcmRlciwgaGF2aW5nIHR5cGUgaW50XG4gIFNvbHZlT3JkZXIgPSAnc29sdmVPcmRlcicsXG5cbiAgLy8gRFBJX1NwYWNlQmV0d2VlblBvaW50cywgaGF2aW5nIHR5cGUgaW50XG4gIFNwYWNlQmV0d2VlblBvaW50cyA9ICdzcGFjZUJldHdlZW5Qb2ludHMnLFxuXG4gIC8vIERQSV9TdGVwU2l6ZSwgaGF2aW5nIHR5cGUgaW50XG4gIFN0ZXBTaXplID0gJ3N0ZXBTaXplJyxcblxuICAvLyBEUElfU3RlcHMsIGhhdmluZyB0eXBlIGludFxuICBTdGVwcyA9ICdzdGVwcycsXG5cbiAgLy8gRFBJX1N0b3J5UG9pbnRJbmRleCwgaGF2aW5nIHR5cGUgaW50XG4gIFN0b3J5UG9pbnRJbmRleCA9ICdjdXJyZW50U3Rvcnlwb2ludEluZGV4JyxcblxuICAvLyBEUElfU3R5bGVMZW4sIGhhdmluZyB0eXBlIGludFxuICBTdHlsZUxlbiA9ICd0b2tlbkxlbmd0aEZvclN0eWxlJyxcblxuICAvLyBEUElfU3R5bGVQb3MsIGhhdmluZyB0eXBlIGludFxuICBTdHlsZVBvcyA9ICd0b2tlblBvc2l0aW9uRm9yU3R5bGUnLFxuXG4gIC8vIERQSV9Td2F0Y2hBcmVhV2lkdGgsIGhhdmluZyB0eXBlIGludFxuICBTd2F0Y2hBcmVhV2lkdGggPSAnc3dhdGNoV2lkdGgnLFxuXG4gIC8vIERQSV9UYXJnZXRCaW5JZCwgaGF2aW5nIHR5cGUgaW50XG4gIFRhcmdldEJpbklkID0gJ3RhcmdldEJpbklkJyxcblxuICAvLyBEUElfVGFyZ2V0UHRYLCBoYXZpbmcgdHlwZSBpbnRcbiAgVGFyZ2V0UHRYID0gJ3RhcmdldFgnLFxuXG4gIC8vIERQSV9UYXJnZXRQdFksIGhhdmluZyB0eXBlIGludFxuICBUYXJnZXRQdFkgPSAndGFyZ2V0WScsXG5cbiAgLy8gRFBJX1RpbGVGYWN0b3IsIGhhdmluZyB0eXBlIGludFxuICBUaWxlRmFjdG9yID0gJ3RpbGVGYWN0b3InLFxuXG4gIC8vIERQSV9UaXRsZUhlaWdodCwgaGF2aW5nIHR5cGUgaW50XG4gIFRpdGxlSGVpZ2h0ID0gJ3RpdGxlSGVpZ2h0JyxcblxuICAvLyBEUElfVGl0bGVXaWR0aCwgaGF2aW5nIHR5cGUgaW50XG4gIFRpdGxlV2lkdGggPSAndGl0bGVXaWR0aCcsXG5cbiAgLy8gRFBJX1RvcEJvdHRvbUJvcmRlcldpZHRoLCBoYXZpbmcgdHlwZSBpbnRcbiAgVG9wQm90dG9tQm9yZGVyV2lkdGggPSAndG9wQm90dG9tQm9yZGVyV2lkdGgnLFxuXG4gIC8vIERQSV9VSUF1dG9tYXRpb25MaW5lU2l6ZSwgaGF2aW5nIHR5cGUgaW50XG4gIFVJQXV0b21hdGlvbkxpbmVTaXplID0gJ3VpQXV0b21hdGlvbkxpbmVTaXplJyxcblxuICAvLyBEUElfVUlBdXRvbWF0aW9uUGFnZVNpemUsIGhhdmluZyB0eXBlIGludFxuICBVSUF1dG9tYXRpb25QYWdlU2l6ZSA9ICd1aUF1dG9tYXRpb25QYWdlU2l6ZScsXG5cbiAgLy8gRFBJX1VJRCwgaGF2aW5nIHR5cGUgaW50XG4gIFVJRCA9ICd1aWQnLFxuXG4gIC8vIERQSV9VcHBlckJvdW5kLCBoYXZpbmcgdHlwZSBpbnRcbiAgVXBwZXJCb3VuZCA9ICd1cHBlckJvdW5kJyxcblxuICAvLyBEUElfVmVydFRleHRDZWxsLCBoYXZpbmcgdHlwZSBpbnRcbiAgVmVydFRleHRDZWxsID0gJ3ZlcnRUZXh0Q2VsbCcsXG5cbiAgLy8gRFBJX1dpZHRoLCBoYXZpbmcgdHlwZSBpbnRcbiAgV2lkdGggPSAndycsXG5cbiAgLy8gRFBJX1gsIGhhdmluZyB0eXBlIGludFxuICBYID0gJ3gnLFxuXG4gIC8vIERQSV9ZLCBoYXZpbmcgdHlwZSBpbnRcbiAgWSA9ICd5JyxcblxuICAvLyBEUElfWk9yZGVyLCBoYXZpbmcgdHlwZSBpbnRcbiAgWk9yZGVyID0gJ3pPcmRlcicsXG5cbiAgLy8gRFBJX1pvbmVJY29uSW5kZXgsIGhhdmluZyB0eXBlIGludFxuICBab25lSWNvbkluZGV4ID0gJ3pvbmVJY29uSW5kZXgnLFxuXG4gIC8vIERQSV9BbGlhc0luZGljZXMsIGhhdmluZyB0eXBlIGludFtdXG4gIEFsaWFzSW5kaWNlcyA9ICdhbGlhc0luZGljZXMnLFxuXG4gIC8vIERQSV9Bbm92YURGVmVjLCBoYXZpbmcgdHlwZSBpbnRbXVxuICBBbm92YURGVmVjID0gJ2Fub3ZhRGZWZWN0b3InLFxuXG4gIC8vIERQSV9Db2x1bW5JbmRpY2VzLCBoYXZpbmcgdHlwZSBpbnRbXVxuICBDb2x1bW5JbmRpY2VzID0gJ2NvbHVtbkluZGljZXMnLFxuXG4gIC8vIERQSV9EcmlsbEZpZWxkSW5kaWNlcywgaGF2aW5nIHR5cGUgaW50W11cbiAgRHJpbGxGaWVsZEluZGljZXMgPSAnZHJpbGxGaWVsZEluZGljZXMnLFxuXG4gIC8vIERQSV9GaWx0ZXJNYXhJbmRpY2VzLCBoYXZpbmcgdHlwZSBpbnRbXVxuICBGaWx0ZXJNYXhJbmRpY2VzID0gJ2ZpbHRlck1heEluZGljZXMnLFxuXG4gIC8vIERQSV9GaWx0ZXJNaW5JbmRpY2VzLCBoYXZpbmcgdHlwZSBpbnRbXVxuICBGaWx0ZXJNaW5JbmRpY2VzID0gJ2ZpbHRlck1pbkluZGljZXMnLFxuXG4gIC8vIERQSV9GaWx0ZXJWYWx1ZXNJbmRpY2VzLCBoYXZpbmcgdHlwZSBpbnRbXVxuICBGaWx0ZXJWYWx1ZXNJbmRpY2VzID0gJ2ZpbHRlclZhbHVlSW5kaWNlcycsXG5cbiAgLy8gRFBJX0Zvcm1hdFN0cmluZ0luZGljZXMsIGhhdmluZyB0eXBlIGludFtdXG4gIEZvcm1hdFN0cmluZ0luZGljZXMgPSAnZm9ybWF0c3RySW5kaWNlcycsXG5cbiAgLy8gRFBJX0Zvcm1hdHRlZFZhbEluZGljZXMsIGhhdmluZyB0eXBlIGludFtdXG4gIEZvcm1hdHRlZFZhbEluZGljZXMgPSAnZm9ybWF0VmFsSWR4cycsXG5cbiAgLy8gRFBJX1BhbGV0dGVJbmRpY2VzLCBoYXZpbmcgdHlwZSBpbnRbXVxuICBQYWxldHRlSW5kaWNlcyA9ICdwYWxldHRlc0luZGljZXMnLFxuXG4gIC8vIERQSV9QYW5lSW5kaWNlcywgaGF2aW5nIHR5cGUgaW50W11cbiAgUGFuZUluZGljZXMgPSAncGFuZUluZGljZXMnLFxuXG4gIC8vIERQSV9Qb2ludHMsIGhhdmluZyB0eXBlIGludFtdXG4gIFBvaW50cyA9ICdwb2ludHMnLFxuXG4gIC8vIERQSV9RdWlja0ZpbHRlclNldHRpbmdzLCBoYXZpbmcgdHlwZSBpbnRbXVxuICBRdWlja0ZpbHRlclNldHRpbmdzID0gJ3F1aWNrRmlsdGVyU2V0dGluZ3MnLFxuXG4gIC8vIERQSV9TZWxlY3RlZEluZGljZXMsIGhhdmluZyB0eXBlIGludFtdXG4gIFNlbGVjdGVkSW5kaWNlcyA9ICdzZWxlY3RlZEluZGljZXMnLFxuXG4gIC8vIERQSV9TaGVsZlBvc2l0aW9uSW5kaWNlcywgaGF2aW5nIHR5cGUgaW50W11cbiAgU2hlbGZQb3NpdGlvbkluZGljZXMgPSAnc2hlbGZQb3NJbmRpY2VzJyxcblxuICAvLyBEUElfVGlsZUJveCwgaGF2aW5nIHR5cGUgaW50W11cbiAgVGlsZUJveCA9ICd0aWxlQm94JyxcblxuICAvLyBEUElfVHJhaWxPdmVycmlkZSwgaGF2aW5nIHR5cGUgaW50W11cbiAgVHJhaWxPdmVycmlkZSA9ICd0cmFpbE92ZXJyaWRlJyxcblxuICAvLyBEUElfVUlEcywgaGF2aW5nIHR5cGUgaW50W11cbiAgVUlEcyA9ICd1aWRzJyxcblxuICAvLyBEUElfVmFsdWVJbmRpY2VzLCBoYXZpbmcgdHlwZSBpbnRbXVxuICBWYWx1ZUluZGljZXMgPSAndmFsdWVJbmRpY2VzJyxcblxuICAvLyBEUElfWENlbGxPZmZzZXRzLCBoYXZpbmcgdHlwZSBpbnRbXVxuICBYQ2VsbE9mZnNldHMgPSAneENlbGxPZmZzZXRzJyxcblxuICAvLyBEUElfWFBpeGVsT2Zmc2V0cywgaGF2aW5nIHR5cGUgaW50W11cbiAgWFBpeGVsT2Zmc2V0cyA9ICd4UGl4ZWxPZmZzZXRzJyxcblxuICAvLyBEUElfWUNlbGxPZmZzZXRzLCBoYXZpbmcgdHlwZSBpbnRbXVxuICBZQ2VsbE9mZnNldHMgPSAneUNlbGxPZmZzZXRzJyxcblxuICAvLyBEUElfWVBpeGVsT2Zmc2V0cywgaGF2aW5nIHR5cGUgaW50W11cbiAgWVBpeGVsT2Zmc2V0cyA9ICd5UGl4ZWxPZmZzZXRzJyxcblxuICAvLyBEUElfSW50TWFwLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIGludClcbiAgSW50TWFwID0gJ2ludE1hcCcsXG5cbiAgLy8gRFBJX1NlbGVjdGVkQXV0aFNldHRpbmdJbmRpY2VzLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIGludClcbiAgU2VsZWN0ZWRBdXRoU2V0dGluZ0luZGljZXMgPSAnc2VsZWN0ZWRBdXRoU2V0dGluZ0luZGljZXMnLFxuXG4gIC8vIERQSV9BY3RpdmVTdG9yeVBvaW50SUQsIGhhdmluZyB0eXBlIHVpbnRcbiAgQWN0aXZlU3RvcnlQb2ludElEID0gJ2FjdGl2ZVN0b3J5UG9pbnRJZCcsXG5cbiAgLy8gRFBJX0FjdGl2ZVpvbmVJRCwgaGF2aW5nIHR5cGUgdWludFxuICBBY3RpdmVab25lSUQgPSAnYWN0aXZlWm9uZUlkJyxcblxuICAvLyBEUElfQWN0dWFsU2l6ZSwgaGF2aW5nIHR5cGUgdWludFxuICBBY3R1YWxTaXplID0gJ2FjdHVhbFNpemUnLFxuXG4gIC8vIERQSV9BZGRJbkRlYnVnUG9ydCwgaGF2aW5nIHR5cGUgdWludFxuICBBZGRJbkRlYnVnUG9ydCA9ICdhZGRJbkRlYnVnUG9ydCcsXG5cbiAgLy8gRFBJX0FnZ3JlZ2F0aW9uSW5kZXgsIGhhdmluZyB0eXBlIHVpbnRcbiAgQWdncmVnYXRpb25JbmRleCA9ICdhZ2dyZWdhdGlvbkluZGV4JyxcblxuICAvLyBEUElfQW5ub3RhdGlvbklELCBoYXZpbmcgdHlwZSB1aW50XG4gIEFubm90YXRpb25JRCA9ICdhbm5vdGF0aW9uSWQnLFxuXG4gIC8vIERQSV9Bc3NpZ25lZEFsaWFzQ291bnQsIGhhdmluZyB0eXBlIHVpbnRcbiAgQXNzaWduZWRBbGlhc0NvdW50ID0gJ2Fzc2lnbmVkQWxpYXNDb3VudCcsXG5cbiAgLy8gRFBJX0NhcGFiaWxpdHlJZCwgaGF2aW5nIHR5cGUgdWludFxuICBDYXBhYmlsaXR5SWQgPSAnY2FwYWJpbGl0eUlkJyxcblxuICAvLyBEUElfQ2FyZXRJbmRleCwgaGF2aW5nIHR5cGUgdWludFxuICBDYXJldEluZGV4ID0gJ2NhcmV0SW5kZXgnLFxuXG4gIC8vIERQSV9DZWxsSUQsIGhhdmluZyB0eXBlIHVpbnRcbiAgQ2VsbElEID0gJ2NlbGxJZCcsXG5cbiAgLy8gRFBJX0NvbHVtbkluZGV4LCBoYXZpbmcgdHlwZSB1aW50XG4gIENvbHVtbkluZGV4ID0gJ2NvbHVtbkluZGV4JyxcblxuICAvLyBEUElfQ29tbWFuZElELCBoYXZpbmcgdHlwZSB1aW50XG4gIENvbW1hbmRJRCA9ICdpZCcsXG5cbiAgLy8gRFBJX0NvbW1hbmRJbmRleCwgaGF2aW5nIHR5cGUgdWludFxuICBDb21tYW5kSW5kZXggPSAnaW5kZXgnLFxuXG4gIC8vIERQSV9Db250cm9sbGVySWQsIGhhdmluZyB0eXBlIHVpbnRcbiAgQ29udHJvbGxlcklkID0gJ2NvbnRyb2xsZXJJZCcsXG5cbiAgLy8gRFBJX0NvdW50LCBoYXZpbmcgdHlwZSB1aW50XG4gIENvdW50ID0gJ2NvdW50JyxcblxuICAvLyBEUElfVVJvd0NvdW50LCBoYXZpbmcgdHlwZSB1aW50XG4gIFVSb3dDb3VudCA9ICd1Um93Q291bnQnLFxuXG4gIC8vIERQSV9VQ29sdW1uQ291bnQsIGhhdmluZyB0eXBlIHVpbnRcbiAgVUNvbHVtbkNvdW50ID0gJ3VDb2x1bW5Db3VudCcsXG5cbiAgLy8gRFBJX0N1cnJlbnRQYWdlLCBoYXZpbmcgdHlwZSB1aW50XG4gIEN1cnJlbnRQYWdlID0gJ2N1cnJlbnRQYWdlJyxcblxuICAvLyBEUElfRGF0ZVBlcmlvZHNDb3VudCwgaGF2aW5nIHR5cGUgdWludFxuICBEYXRlUGVyaW9kc0NvdW50ID0gJ2RhdGVQZXJpb2RzQ291bnQnLFxuXG4gIC8vIERQSV9EZWNpbWFscywgaGF2aW5nIHR5cGUgdWludFxuICBEZWNpbWFscyA9ICdkZWNpbWFscycsXG5cbiAgLy8gRFBJX0RlZmF1bHRIZWlnaHQsIGhhdmluZyB0eXBlIHVpbnRcbiAgRGVmYXVsdEhlaWdodCA9ICdkZWZhdWx0SGVpZ2h0JyxcblxuICAvLyBEUElfRGVmYXVsdEl0ZW0sIGhhdmluZyB0eXBlIHVpbnRcbiAgRGVmYXVsdEl0ZW0gPSAnZGVmYXVsdEl0ZW0nLFxuXG4gIC8vIERQSV9EZWZhdWx0V2lkdGgsIGhhdmluZyB0eXBlIHVpbnRcbiAgRGVmYXVsdFdpZHRoID0gJ2RlZmF1bHRXaWR0aCcsXG5cbiAgLy8gRFBJX0RlcHRoLCBoYXZpbmcgdHlwZSB1aW50XG4gIERlcHRoID0gJ2RlcHRoJyxcblxuICAvLyBEUElfRGV0YWlsSUQsIGhhdmluZyB0eXBlIHVpbnRcbiAgRGV0YWlsSUQgPSAnZGV0YWlsSWQnLFxuXG4gIC8vIERQSV9EcmlsbExldmVsLCBoYXZpbmcgdHlwZSB1aW50XG4gIERyaWxsTGV2ZWwgPSAnZHJpbGxMZXZlbCcsXG5cbiAgLy8gRFBJX0R1cGxpY2F0ZUluZGV4LCBoYXZpbmcgdHlwZSB1aW50XG4gIER1cGxpY2F0ZUluZGV4ID0gJ2R1cGxpY2F0ZUluZGV4JyxcblxuICAvLyBEUElfRW5kSW5kZXgsIGhhdmluZyB0eXBlIHVpbnRcbiAgRW5kSW5kZXggPSAnZW5kSW5kZXgnLFxuXG4gIC8vIERQSV9GaWVsZEljb25JZHgsIGhhdmluZyB0eXBlIHVpbnRcbiAgRmllbGRJY29uSWR4ID0gJ2ZpZWxkSWNvbklkeCcsXG5cbiAgLy8gRFBJX0ZpbHRlckxldmVsLCBoYXZpbmcgdHlwZSB1aW50XG4gIEZpbHRlckxldmVsID0gJ2ZpbHRlckxldmVsJyxcblxuICAvLyBEUElfRmlsdGVyVGlsZVNpemUsIGhhdmluZyB0eXBlIHVpbnRcbiAgRmlsdGVyVGlsZVNpemUgPSAnZmlsdGVyVGlsZVNpemUnLFxuXG4gIC8vIERQSV9GaXNjYWxZZWFyU3RhcnQsIGhhdmluZyB0eXBlIHVpbnRcbiAgRmlzY2FsWWVhclN0YXJ0ID0gJ2Zpc2NhbFllYXJTdGFydCcsXG5cbiAgLy8gRFBJX0ZpdFBhZ2VzQWNyb3NzLCBoYXZpbmcgdHlwZSB1aW50XG4gIEZpdFBhZ2VzQWNyb3NzID0gJ3BhZ2VGaXRIb3Jpem9udGFsJyxcblxuICAvLyBEUElfRml0UGFnZXNEb3duLCBoYXZpbmcgdHlwZSB1aW50XG4gIEZpdFBhZ2VzRG93biA9ICdwYWdlRml0VmVydGljYWwnLFxuXG4gIC8vIERQSV9GaXhlZEluZGV4LCBoYXZpbmcgdHlwZSB1aW50XG4gIEZpeGVkSW5kZXggPSAnZml4ZWRJbmRleCcsXG5cbiAgLy8gRFBJX0ZsaXBib2FyZFpvbmVJRCwgaGF2aW5nIHR5cGUgdWludFxuICBGbGlwYm9hcmRab25lSUQgPSAnZmxpcGJvYXJkWm9uZUlkJyxcblxuICAvLyBEUElfRm9yZWNhc3RBdXRvUmFuZ2VTaXplLCBoYXZpbmcgdHlwZSB1aW50XG4gIEZvcmVjYXN0QXV0b1JhbmdlU2l6ZSA9ICdmb3JlY2FzdEF1dG9SYW5nZVNpemUnLFxuXG4gIC8vIERQSV9Gb3JlY2FzdEVuZE9mUmFuZ2UsIGhhdmluZyB0eXBlIHVpbnRcbiAgRm9yZWNhc3RFbmRPZlJhbmdlID0gJ2ZvcmVjYXN0RW5kT2ZSYW5nZScsXG5cbiAgLy8gRFBJX0ZvcmVjYXN0SWdub3JlTGFzdCwgaGF2aW5nIHR5cGUgdWludFxuICBGb3JlY2FzdElnbm9yZUxhc3QgPSAnZm9yZWNhc3RJZ25vcmVMYXN0JyxcblxuICAvLyBEUElfRm9yZWNhc3ROZXh0UmFuZ2VTaXplLCBoYXZpbmcgdHlwZSB1aW50XG4gIEZvcmVjYXN0TmV4dFJhbmdlU2l6ZSA9ICdmb3JlY2FzdE5leHRSYW5nZVNpemUnLFxuXG4gIC8vIERQSV9Hcm91cEZsYWdzLCBoYXZpbmcgdHlwZSB1aW50XG4gIEdyb3VwRmxhZ3MgPSAnZ3JvdXBGbGFnJyxcblxuICAvLyBEUElfSGllcmFyY2h5TGV2ZWxzLCBoYXZpbmcgdHlwZSB1aW50XG4gIEhpZXJhcmNoeUxldmVscyA9ICdoaWVyYXJjaHlMZXZlbHMnLFxuXG4gIC8vIERQSV9IaWVyYXJjaHlNZW1iZXJJZCwgaGF2aW5nIHR5cGUgdWludFxuICBIaWVyYXJjaHlNZW1iZXJJZCA9ICdoaWVyYXJjaHlNZW1iZXJJZCcsXG5cbiAgLy8gRFBJX0hpdFRlc3RGbGFncywgaGF2aW5nIHR5cGUgdWludFxuICBIaXRUZXN0RmxhZ3MgPSAnaGl0VGVzdEZsYWdzJyxcblxuICAvLyBEUElfSW1hZ2VIZWlnaHQsIGhhdmluZyB0eXBlIHVpbnRcbiAgSW1hZ2VIZWlnaHQgPSAnaW1hZ2VIZWlnaHQnLFxuXG4gIC8vIERQSV9JbWFnZVdpZHRoLCBoYXZpbmcgdHlwZSB1aW50XG4gIEltYWdlV2lkdGggPSAnaW1hZ2VXaWR0aCcsXG5cbiAgLy8gRFBJX0l0ZW1JbmRleCwgaGF2aW5nIHR5cGUgdWludFxuICBJdGVtSW5kZXggPSAnaXRlbUluZGV4JyxcblxuICAvLyBEUElfSXRlbUluZGV4MSwgaGF2aW5nIHR5cGUgdWludFxuICBJdGVtSW5kZXgxID0gJ2l0ZW1JbmRleDEnLFxuXG4gIC8vIERQSV9MaW5lSGVpZ2h0LCBoYXZpbmcgdHlwZSB1aW50XG4gIExpbmVIZWlnaHQgPSAnbGluZUhlaWdodCcsXG5cbiAgLy8gRFBJX01hcEludGVybWVkaWF0ZUxldmVscywgaGF2aW5nIHR5cGUgdWludFxuICBNYXBJbnRlcm1lZGlhdGVMZXZlbHMgPSAnbWFwSW50ZXJtZWRpYXRlTGV2ZWxzJyxcblxuICAvLyBEUElfTWFwV29ybGRSZXBlYXRzLCBoYXZpbmcgdHlwZSB1aW50XG4gIE1hcFdvcmxkUmVwZWF0cyA9ICdtYXBXb3JsZFJlcGVhdHMnLFxuXG4gIC8vIERQSV9NYXhBbHBoYSwgaGF2aW5nIHR5cGUgdWludFxuICBNYXhBbHBoYSA9ICdtYXhBbHBoYScsXG5cbiAgLy8gRFBJX01heEhlaWdodCwgaGF2aW5nIHR5cGUgdWludFxuICBNYXhIZWlnaHQgPSAnbWF4SGVpZ2h0JyxcblxuICAvLyBEUElfTWF4TnVtYmVyV2ViTGlzdEl0ZW1zLCBoYXZpbmcgdHlwZSB1aW50XG4gIE1heE51bWJlcldlYkxpc3RJdGVtcyA9ICdtYXhOdW1iZXJXZWJMaXN0SXRlbXMnLFxuXG4gIC8vIERQSV9NYXhQcmV2T3JOZXh0VmFsdWVzLCBoYXZpbmcgdHlwZSB1aW50XG4gIE1heFByZXZPck5leHRWYWx1ZXMgPSAnbWF4UHJldk9yTmV4dFZhbHVlcycsXG5cbiAgLy8gRFBJX01heFJvd3MsIGhhdmluZyB0eXBlIHVpbnRcbiAgTWF4Um93cyA9ICdtYXhSb3dzJyxcblxuICAvLyBEUElfTWF4VHJhbnNwYXJlbmN5LCBoYXZpbmcgdHlwZSB1aW50XG4gIE1heFRyYW5zcGFyZW5jeSA9ICdjb2xvck1heFRyYW5zcGFyZW5jeVZhbHVlJyxcblxuICAvLyBEUElfTWF4V2lkdGgsIGhhdmluZyB0eXBlIHVpbnRcbiAgTWF4V2lkdGggPSAnbWF4V2lkdGgnLFxuXG4gIC8vIERQSV9NaW5Db2x1bW5zLCBoYXZpbmcgdHlwZSB1aW50XG4gIE1pbkNvbHVtbnMgPSAnbWluQ29sdW1ucycsXG5cbiAgLy8gRFBJX01pbkhlaWdodCwgaGF2aW5nIHR5cGUgdWludFxuICBNaW5IZWlnaHQgPSAnbWluSGVpZ2h0JyxcblxuICAvLyBEUElfTWluUHJldk9yTmV4dFZhbHVlcywgaGF2aW5nIHR5cGUgdWludFxuICBNaW5QcmV2T3JOZXh0VmFsdWVzID0gJ21pblByZXZPck5leHRWYWx1ZXMnLFxuXG4gIC8vIERQSV9NaW5UcmFuc3BhcmVuY3ksIGhhdmluZyB0eXBlIHVpbnRcbiAgTWluVHJhbnNwYXJlbmN5ID0gJ2NvbG9yTWluVHJhbnNwYXJlbmN5VmFsdWUnLFxuXG4gIC8vIERQSV9NaW5XaWR0aCwgaGF2aW5nIHR5cGUgdWludFxuICBNaW5XaWR0aCA9ICdtaW5XaWR0aCcsXG5cbiAgLy8gRFBJX05lc3RlZENhbGNzSW5kZXgsIGhhdmluZyB0eXBlIHVpbnRcbiAgTmVzdGVkQ2FsY3NJbmRleCA9ICduZXN0ZWRDYWxjc0luZGV4JyxcblxuICAvLyBEUElfTmV4dFZhbHVlcywgaGF2aW5nIHR5cGUgdWludFxuICBOZXh0VmFsdWVzID0gJ25leHRWYWx1ZXMnLFxuXG4gIC8vIERQSV9Ob2RlTGV2ZWwsIGhhdmluZyB0eXBlIHVpbnRcbiAgTm9kZUxldmVsID0gJ25vZGVMZXZlbCcsXG5cbiAgLy8gRFBJX051bUhpZ2hsaWdodGVkLCBoYXZpbmcgdHlwZSB1aW50XG4gIE51bUhpZ2hsaWdodGVkID0gJ251bUhpZ2hsaWdodGVkJyxcblxuICAvLyBEUElfTnVtYmVyT2ZOZXh0VmFsdWVzLCBoYXZpbmcgdHlwZSB1aW50XG4gIE51bWJlck9mTmV4dFZhbHVlcyA9ICdudW1iZXJPZk5leHRWYWx1ZXMnLFxuXG4gIC8vIERQSV9OdW1iZXJPZlByZXZWYWx1ZXMsIGhhdmluZyB0eXBlIHVpbnRcbiAgTnVtYmVyT2ZQcmV2VmFsdWVzID0gJ251bWJlck9mUHJldlZhbHVlcycsXG5cbiAgLy8gRFBJX09iamVjdElELCBoYXZpbmcgdHlwZSB1aW50XG4gIE9iamVjdElEID0gJ29iamVjdElkJyxcblxuICAvLyBEUElfT3JkZXJpbmdUeXBlSW5kZXgsIGhhdmluZyB0eXBlIHVpbnRcbiAgT3JkZXJpbmdUeXBlSW5kZXggPSAnb3JkZXJpbmdUeXBlSW5kZXgnLFxuXG4gIC8vIERQSV9QYWdlQ291bnQsIGhhdmluZyB0eXBlIHVpbnRcbiAgUGFnZUNvdW50ID0gJ3BhZ2VDb3VudCcsXG5cbiAgLy8gRFBJX1BhZ2VGYWRlRW5kLCBoYXZpbmcgdHlwZSB1aW50XG4gIFBhZ2VGYWRlRW5kID0gJ2ZhZGVFbmQnLFxuXG4gIC8vIERQSV9QYWdlRmFkZVN0YXJ0LCBoYXZpbmcgdHlwZSB1aW50XG4gIFBhZ2VGYWRlU3RhcnQgPSAnZmFkZVN0YXJ0JyxcblxuICAvLyBEUElfUGFnZUluZGV4LCBoYXZpbmcgdHlwZSB1aW50XG4gIFBhZ2VJbmRleCA9ICdwYWdlSW5kZXgnLFxuXG4gIC8vIERQSV9QYWdlTnVtYmVyLCBoYXZpbmcgdHlwZSB1aW50XG4gIFBhZ2VOdW1iZXIgPSAncGFnZU51bWJlcicsXG5cbiAgLy8gRFBJX1BhZ2VTY2FsZVBlcmNlbnQsIGhhdmluZyB0eXBlIHVpbnRcbiAgUGFnZVNjYWxlUGVyY2VudCA9ICdwYWdlU2NhbGVQZXJjZW50JyxcblxuICAvLyBEUElfUGFnZVRyYWlsTGVuZ3RoLCBoYXZpbmcgdHlwZSB1aW50XG4gIFBhZ2VUcmFpbExlbmd0aCA9ICdoaXN0b3J5TGVuZ3RoJyxcblxuICAvLyBEUElfUGFsZXR0ZUZsYWdzVmFsLCBoYXZpbmcgdHlwZSB1aW50XG4gIFBhbGV0dGVGbGFnc1ZhbCA9ICdwYWxldHRlRmxhZ3NWYWwnLFxuXG4gIC8vIERQSV9QYW5lSW5kZXgsIGhhdmluZyB0eXBlIHVpbnRcbiAgUGFuZUluZGV4ID0gJ3BhbmVJbmRleCcsXG5cbiAgLy8gRFBJX1BhcmFtQ3RybERpc3BsYXlGbGFncywgaGF2aW5nIHR5cGUgdWludFxuICBQYXJhbUN0cmxEaXNwbGF5RmxhZ3MgPSAncGFyYW1EaXNwbGF5RmxhZ3MnLFxuXG4gIC8vIERQSV9QYXJlbnRab25lSUQsIGhhdmluZyB0eXBlIHVpbnRcbiAgUGFyZW50Wm9uZUlEID0gJ3BhcmVudFpvbmVJZCcsXG5cbiAgLy8gRFBJX1BlcmNlbnRpbGVQYXJhbSwgaGF2aW5nIHR5cGUgdWludFxuICBQZXJjZW50aWxlUGFyYW0gPSAncGVyY2VudGlsZVBhcmFtJyxcblxuICAvLyBEUElfUHJldlZhbHVlcywgaGF2aW5nIHR5cGUgdWludFxuICBQcmV2VmFsdWVzID0gJ3ByZXZWYWx1ZXMnLFxuXG4gIC8vIERQSV9RUkdCQ29sb3IsIGhhdmluZyB0eXBlIHVpbnRcbiAgUVJHQkNvbG9yID0gJ3FyZ2JDb2xvcicsXG5cbiAgLy8gRFBJX1JhbmdlTiwgaGF2aW5nIHR5cGUgdWludFxuICBSYW5nZU4gPSAncmFuZ2VOJyxcblxuICAvLyBEUElfUmFua1R5cGVJbmRleCwgaGF2aW5nIHR5cGUgdWludFxuICBSYW5rVHlwZUluZGV4ID0gJ3JhbmtUeXBlSW5kZXgnLFxuXG4gIC8vIERQSV9SZW5kZXJDb21wbGV4aXR5LCBoYXZpbmcgdHlwZSB1aW50XG4gIFJlbmRlckNvbXBsZXhpdHkgPSAncmVuZGVyQ29tcGxleGl0eUxpbWl0JyxcblxuICAvLyBEUElfUm93SW5kZXgsIGhhdmluZyB0eXBlIHVpbnRcbiAgUm93SW5kZXggPSAncm93SW5kZXgnLFxuXG4gIC8vIERQSV9TZWxlY3RlZEF1dGhTZXR0aW5nSW5kZXgsIGhhdmluZyB0eXBlIHVpbnRcbiAgU2VsZWN0ZWRBdXRoU2V0dGluZ0luZGV4ID0gJ3NlbGVjdGVkQXV0aFNldHRpbmdJbmRleCcsXG5cbiAgLy8gRFBJX1NlbGVjdGVkRnVsbFNjaGVkdWxlSW5kZXgsIGhhdmluZyB0eXBlIHVpbnRcbiAgU2VsZWN0ZWRGdWxsU2NoZWR1bGVJbmRleCA9ICdzZWxlY3RlZEZ1bGxTY2hlZHVsZUluZGV4JyxcblxuICAvLyBEUElfU2VsZWN0ZWRJbmNyU2NoZWR1bGVJbmRleCwgaGF2aW5nIHR5cGUgdWludFxuICBTZWxlY3RlZEluY3JTY2hlZHVsZUluZGV4ID0gJ3NlbGVjdGVkSW5jclNjaGVkdWxlSW5kZXgnLFxuXG4gIC8vIERQSV9TZWxlY3RlZFB1Ymxpc2hDaG9pY2VJbmRleCwgaGF2aW5nIHR5cGUgdWludFxuICBTZWxlY3RlZFB1Ymxpc2hDaG9pY2VJbmRleCA9ICdzZWxlY3RlZFB1Ymxpc2hDaG9pY2VJbmRleCcsXG5cbiAgLy8gRFBJX1NlbGVjdGVkTWVtYmVyQ291bnQsIGhhdmluZyB0eXBlIHVpbnRcbiAgU2VsZWN0ZWRNZW1iZXJDb3VudCA9ICdzZWxlY3RlZE1lbWJlckNvdW50JyxcblxuICAvLyBEUElfU2hhcGVJRCwgaGF2aW5nIHR5cGUgdWludFxuICBTaGFwZUlEID0gJ3NoYXBlSWQnLFxuXG4gIC8vIERQSV9TaGVldFVzZUNvdW50LCBoYXZpbmcgdHlwZSB1aW50XG4gIFNoZWV0VXNlQ291bnQgPSAndXNlQ291bnQnLFxuXG4gIC8vIERQSV9TaGVsZkl0ZW1JRCwgaGF2aW5nIHR5cGUgdWludFxuICBTaGVsZkl0ZW1JRCA9ICdzaGVsZkl0ZW1JZCcsXG5cbiAgLy8gRFBJX1NpZ0ZpZ3MsIGhhdmluZyB0eXBlIHVpbnRcbiAgU2lnRmlncyA9ICdzaWdGaWdzJyxcblxuICAvLyBEUElfU29ydEFnZ0luZGV4LCBoYXZpbmcgdHlwZSB1aW50XG4gIFNvcnRBZ2dJbmRleCA9ICdzb3J0QWdnSW5kdlZhbHVlcycsXG5cbiAgLy8gRFBJX1NvcnRDb2x1bW5JbmRleCwgaGF2aW5nIHR5cGUgdWludFxuICBTb3J0Q29sdW1uSW5kZXggPSAnc29ydENvbHVtbkluZGV4JyxcblxuICAvLyBEUElfU29ydERpcmVjdGlvbkluZGV4LCBoYXZpbmcgdHlwZSB1aW50XG4gIFNvcnREaXJlY3Rpb25JbmRleCA9ICdzb3J0RGlyZWN0aW9uSW5kZXgnLFxuXG4gIC8vIERQSV9Tb3J0RmllbGRJbmRleCwgaGF2aW5nIHR5cGUgdWludFxuICBTb3J0RmllbGRJbmRleCA9ICdzb3J0RmllbGRJbmRleCcsXG5cbiAgLy8gRFBJX1N0YXJ0SW5kZXgsIGhhdmluZyB0eXBlIHVpbnRcbiAgU3RhcnRJbmRleCA9ICdzdGFydEluZGV4JyxcblxuICAvLyBEUElfU3RhcnRPZldlZWssIGhhdmluZyB0eXBlIHVpbnRcbiAgU3RhcnRPZldlZWsgPSAnc3RhcnRPZldlZWsnLFxuXG4gIC8vIERQSV9TdG9yeVBvaW50SUQsIGhhdmluZyB0eXBlIHVpbnRcbiAgU3RvcnlQb2ludElEID0gJ3N0b3J5UG9pbnRJZCcsXG5cbiAgLy8gRFBJX1RhYmxlQ2FsY1R5cGVJbmRleCwgaGF2aW5nIHR5cGUgdWludFxuICBUYWJsZUNhbGNUeXBlSW5kZXggPSAndGFibGVDYWxjVHlwZUluZGV4JyxcblxuICAvLyBEUElfVGFibGVDYWxjVHlwZXNVc2VkLCBoYXZpbmcgdHlwZSB1aW50XG4gIFRhYmxlQ2FsY1R5cGVzVXNlZCA9ICd0YWJsZUNhbGNUeXBlc1VzZWQnLFxuXG4gIC8vIERQSV9UZW1wbGF0ZUluZGV4LCBoYXZpbmcgdHlwZSB1aW50XG4gIFRlbXBsYXRlSW5kZXggPSAndGVtcGxhdGVJbmRleCcsXG5cbiAgLy8gRFBJX1RpbGVDb3VudCwgaGF2aW5nIHR5cGUgdWludFxuICBUaWxlQ291bnQgPSAndGlsZUNvdW50JyxcblxuICAvLyBEUElfVGltZW91dFNlY29uZHMsIGhhdmluZyB0eXBlIHVpbnRcbiAgVGltZW91dFNlY29uZHMgPSAndGltZW91dFNlY29uZHMnLFxuXG4gIC8vIERQSV9Ub3BOLCBoYXZpbmcgdHlwZSB1aW50XG4gIFRvcE4gPSAndG9wTicsXG5cbiAgLy8gRFBJX1RvdGFsTnVtYmVyT2ZJdGVtc0luU2V0LCBoYXZpbmcgdHlwZSB1aW50XG4gIFRvdGFsTnVtYmVyT2ZJdGVtc0luU2V0ID0gJ3RvdGFsTnVtYmVyT2ZJdGVtc0luU2V0JyxcblxuICAvLyBEUElfVG90YWxNZW1iZXJDb3VudCwgaGF2aW5nIHR5cGUgdWludFxuICBUb3RhbE1lbWJlckNvdW50ID0gJ3RvdGFsTWVtYmVyQ291bnQnLFxuXG4gIC8vIERQSV9UcmFuc3BhcmVuY3ksIGhhdmluZyB0eXBlIHVpbnRcbiAgVHJhbnNwYXJlbmN5ID0gJ2NvbG9yVHJhbnNwYXJlbmN5VmFsdWUnLFxuXG4gIC8vIERQSV9UdXBsZUlELCBoYXZpbmcgdHlwZSB1aW50XG4gIFR1cGxlSUQgPSAndHVwbGVJZCcsXG5cbiAgLy8gRFBJX1VJbmRleCwgaGF2aW5nIHR5cGUgdWludFxuICBVSW5kZXggPSAndWluZGV4JyxcblxuICAvLyBEUElfVW5kb1Bvc2l0aW9uLCBoYXZpbmcgdHlwZSB1aW50XG4gIFVuZG9Qb3NpdGlvbiA9ICd1bmRvUG9zaXRpb24nLFxuXG4gIC8vIERQSV9VbnNpZ25lZFdpZHRoLCBoYXZpbmcgdHlwZSB1aW50XG4gIFVuc2lnbmVkV2lkdGggPSAndXcnLFxuXG4gIC8vIERQSV9VbnNpZ25lZFdpZHRoQm90dG9tLCBoYXZpbmcgdHlwZSB1aW50XG4gIFVuc2lnbmVkV2lkdGhCb3R0b20gPSAndXdiJyxcblxuICAvLyBEUElfVW5zaWduZWRXaWR0aExlZnQsIGhhdmluZyB0eXBlIHVpbnRcbiAgVW5zaWduZWRXaWR0aExlZnQgPSAndXdsJyxcblxuICAvLyBEUElfVW5zaWduZWRXaWR0aFJpZ2h0LCBoYXZpbmcgdHlwZSB1aW50XG4gIFVuc2lnbmVkV2lkdGhSaWdodCA9ICd1d3InLFxuXG4gIC8vIERQSV9VbnNpZ25lZFdpZHRoVG9wLCBoYXZpbmcgdHlwZSB1aW50XG4gIFVuc2lnbmVkV2lkdGhUb3AgPSAndXd0JyxcblxuICAvLyBEUElfVmFsdWVJbmRleCwgaGF2aW5nIHR5cGUgdWludFxuICBWYWx1ZUluZGV4ID0gJ3ZhbHVlSW5kZXgnLFxuXG4gIC8vIERQSV9WYWx1ZUludCwgaGF2aW5nIHR5cGUgdWludFxuICBWYWx1ZUludCA9ICd2YWx1ZUludCcsXG5cbiAgLy8gRFBJX1dvcmxkT2Zmc2V0LCBoYXZpbmcgdHlwZSB1aW50XG4gIFdvcmxkT2Zmc2V0ID0gJ3dvcmxkT2Zmc2V0JyxcblxuICAvLyBEUElfWER1cGxpY2F0ZUluZGV4LCBoYXZpbmcgdHlwZSB1aW50XG4gIFhEdXBsaWNhdGVJbmRleCA9ICd4RHVwbGljYXRlSW5kZXgnLFxuXG4gIC8vIERQSV9YSW5kZXgsIGhhdmluZyB0eXBlIHVpbnRcbiAgWEluZGV4ID0gJ3hJbmRleCcsXG5cbiAgLy8gRFBJX1lEdXBsaWNhdGVJbmRleCwgaGF2aW5nIHR5cGUgdWludFxuICBZRHVwbGljYXRlSW5kZXggPSAneUR1cGxpY2F0ZUluZGV4JyxcblxuICAvLyBEUElfWUluZGV4LCBoYXZpbmcgdHlwZSB1aW50XG4gIFlJbmRleCA9ICd5SW5kZXgnLFxuXG4gIC8vIERQSV9ab25lSUQsIGhhdmluZyB0eXBlIHVpbnRcbiAgWm9uZUlEID0gJ3pvbmVJZCcsXG5cbiAgLy8gRFBJX1pvbmVaT3JkZXIsIGhhdmluZyB0eXBlIHVpbnRcbiAgWm9uZVpPcmRlciA9ICd6b25lWk9yZGVyJyxcblxuICAvLyBEUElfQ29tcG9uZW50SUQsIGhhdmluZyB0eXBlIHVpbnRcbiAgQ29tcG9uZW50SUQgPSAnY29tcG9uZW50SWQnLFxuXG4gIC8vIERQSV9Ob25UaHJlYWRQb29sVXNlQ291bnQsIGhhdmluZyB0eXBlIHVpbnRcbiAgTm9uVGhyZWFkUG9vbFVzZUNvdW50ID0gJ25vblRocmVhZFBvb2xVc2VDb3VudCcsXG5cbiAgLy8gRFBJX0FkZHJlc3NpbmdJbmRpY2VzLCBoYXZpbmcgdHlwZSB1aW50W11cbiAgQWRkcmVzc2luZ0luZGljZXMgPSAnYWRkcmVzc2luZ0luZGljZXMnLFxuXG4gIC8vIERQSV9BZGRyZXNzaW5nSW52YWxpZEluZGljZXMsIGhhdmluZyB0eXBlIHVpbnRbXVxuICBBZGRyZXNzaW5nSW52YWxpZEluZGljZXMgPSAnYWRkcmVzc2luZ0ludmFsaWRJbmRpY2VzJyxcblxuICAvLyBEUElfQ2hpbGRab25lSWRzLCBoYXZpbmcgdHlwZSB1aW50W11cbiAgQ2hpbGRab25lSWRzID0gJ2NoaWxkWm9uZUlkcycsXG5cbiAgLy8gRFBJX0NvbG9yTGlzdCwgaGF2aW5nIHR5cGUgdWludFtdXG4gIENvbG9yTGlzdCA9ICdjb2xvckxpc3QnLFxuXG4gIC8vIERQSV9EdXBsaWNhdGVJbmRpY2VzLCBoYXZpbmcgdHlwZSB1aW50W11cbiAgRHVwbGljYXRlSW5kaWNlcyA9ICdkdXBsaWNhdGVJbmRpY2VzJyxcblxuICAvLyBEUElfRmlsdGVyQWRkSW5kaWNlcywgaGF2aW5nIHR5cGUgdWludFtdXG4gIEZpbHRlckFkZEluZGljZXMgPSAnZmlsdGVyQWRkSW5kaWNlcycsXG5cbiAgLy8gRFBJX0ZpbHRlckluZGljZXMsIGhhdmluZyB0eXBlIHVpbnRbXVxuICBGaWx0ZXJJbmRpY2VzID0gJ2ZpbHRlckluZGljZXMnLFxuXG4gIC8vIERQSV9GaWx0ZXJMZXZlbEFkZCwgaGF2aW5nIHR5cGUgdWludFtdXG4gIEZpbHRlckxldmVsQWRkID0gJ2ZpbHRlckxldmVsQWRkJyxcblxuICAvLyBEUElfRmlsdGVyTGV2ZWxSZW1vdmUsIGhhdmluZyB0eXBlIHVpbnRbXVxuICBGaWx0ZXJMZXZlbFJlbW92ZSA9ICdmaWx0ZXJMZXZlbFJlbW92ZScsXG5cbiAgLy8gRFBJX0ZpbHRlckxldmVscywgaGF2aW5nIHR5cGUgdWludFtdXG4gIEZpbHRlckxldmVscyA9ICdmaWx0ZXJMZXZlbHMnLFxuXG4gIC8vIERQSV9GaWx0ZXJSZW1vdmVJbmRpY2VzLCBoYXZpbmcgdHlwZSB1aW50W11cbiAgRmlsdGVyUmVtb3ZlSW5kaWNlcyA9ICdmaWx0ZXJSZW1vdmVJbmRpY2VzJyxcblxuICAvLyBEUElfRml4ZWRWYWx1ZXMsIGhhdmluZyB0eXBlIHVpbnRbXVxuICBGaXhlZFZhbHVlcyA9ICdmaXhlZFZhbHVlcycsXG5cbiAgLy8gRFBJX0hpZXJhcmNoeU1lbWJlcklkTGlzdCwgaGF2aW5nIHR5cGUgdWludFtdXG4gIEhpZXJhcmNoeU1lbWJlcklkTGlzdCA9ICdoaWVyYXJjaHlNZW1iZXJJZExpc3QnLFxuXG4gIC8vIERQSV9JbnZhbGlkSW5kaWNlcywgaGF2aW5nIHR5cGUgdWludFtdXG4gIEludmFsaWRJbmRpY2VzID0gJ2ludmFsaWRJbmRpY2VzJyxcblxuICAvLyBEUElfSXRlbUluZGljZXMsIGhhdmluZyB0eXBlIHVpbnRbXVxuICBJdGVtSW5kaWNlcyA9ICdpdGVtSW5kaWNlcycsXG5cbiAgLy8gRFBJX0xpbmVUdXBsZUlEcywgaGF2aW5nIHR5cGUgdWludFtdXG4gIExpbmVUdXBsZUlEcyA9ICdsaW5lVHVwbGVJZHMnLFxuXG4gIC8vIERQSV9PYmplY3RJRHMsIGhhdmluZyB0eXBlIHVpbnRbXVxuICBPYmplY3RJRHMgPSAnb2JqZWN0SWRzJyxcblxuICAvLyBEUElfUGFnZUluZGljZXMsIGhhdmluZyB0eXBlIHVpbnRbXVxuICBQYWdlSW5kaWNlcyA9ICdwYWdlSW5kaWNlcycsXG5cbiAgLy8gRFBJX1FSR0IsIGhhdmluZyB0eXBlIHVpbnRbXVxuICBRUkdCID0gJ3FyZ2JMaXN0JyxcblxuICAvLyBEUElfUVJHQkNvbG9ycywgaGF2aW5nIHR5cGUgdWludFtdXG4gIFFSR0JDb2xvcnMgPSAncXJnYkNvbG9ycycsXG5cbiAgLy8gRFBJX1JlZkxpbmVJRCwgaGF2aW5nIHR5cGUgdWludFtdXG4gIFJlZkxpbmVJRCA9ICdyZWZsaW5lSWQnLFxuXG4gIC8vIERQSV9TaGFwZUlEcywgaGF2aW5nIHR5cGUgdWludFtdXG4gIFNoYXBlSURzID0gJ3NoYXBlSWRzJyxcblxuICAvLyBEUElfU2hlbGZTZWxlY3Rpb24sIGhhdmluZyB0eXBlIHVpbnRbXVxuICBTaGVsZlNlbGVjdGlvbiA9ICdzaGVsZlNlbGVjdGlvbicsXG5cbiAgLy8gRFBJX1N0b3J5UG9pbnRJRHMsIGhhdmluZyB0eXBlIHVpbnRbXVxuICBTdG9yeVBvaW50SURzID0gJ3N0b3J5UG9pbnRJZHMnLFxuXG4gIC8vIERQSV9UdXBsZUlEcywgaGF2aW5nIHR5cGUgdWludFtdXG4gIFR1cGxlSURzID0gJ3R1cGxlSWRzJyxcblxuICAvLyBEUElfV2lkdGhzLCBoYXZpbmcgdHlwZSB1aW50W11cbiAgV2lkdGhzID0gJ3dpZHRocycsXG5cbiAgLy8gRFBJX1VpbnRNYXAsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2YgdWludDMyX3QpXG4gIFVpbnRNYXAgPSAndWludE1hcCcsXG5cbiAgLy8gRFBJX0FscGhhLCBoYXZpbmcgdHlwZSBmbG9hdFxuICBBbHBoYSA9ICdhbHBoYScsXG5cbiAgLy8gRFBJX0FuZ2xlLCBoYXZpbmcgdHlwZSBmbG9hdFxuICBBbmdsZSA9ICdhbmdsZScsXG5cbiAgLy8gRFBJX0JyZWFrUG9pbnRWYWx1ZSwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgQnJlYWtQb2ludFZhbHVlID0gJ2JyZWFrUG9pbnRWYWx1ZScsXG5cbiAgLy8gRFBJX0RldmljZVBpeGVsUmF0aW8sIGhhdmluZyB0eXBlIGZsb2F0XG4gIERldmljZVBpeGVsUmF0aW8gPSAnZGV2aWNlUGl4ZWxSYXRpbycsXG5cbiAgLy8gRFBJX0Rpc3RhbmNlLCBoYXZpbmcgdHlwZSBmbG9hdFxuICBEaXN0YW5jZSA9ICdkaXN0YW5jZScsXG5cbiAgLy8gRFBJX0Zsb2F0WCwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgRmxvYXRYID0gJ2Zsb2F0WCcsXG5cbiAgLy8gRFBJX0Zsb2F0WSwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgRmxvYXRZID0gJ2Zsb2F0WScsXG5cbiAgLy8gRFBJX0ZvZ0Rlc2F0dXJhdGlvbiwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgRm9nRGVzYXR1cmF0aW9uID0gJ2ZvZ0Rlc2F0dXJhdGlvbicsXG5cbiAgLy8gRFBJX01hcmtTY2FsZSwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgTWFya1NjYWxlID0gJ21hcmtTY2FsZScsXG5cbiAgLy8gRFBJX01hcmtTaXplSW5QaXhlbFVuaXRzLCBoYXZpbmcgdHlwZSBmbG9hdFxuICBNYXJrU2l6ZUluUGl4ZWxVbml0cyA9ICdtYXJrU2l6ZUluUGl4ZWxVbml0cycsXG5cbiAgLy8gRFBJX1BvaW50U2l6ZSwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgUG9pbnRTaXplID0gJ3BvaW50U2l6ZScsXG5cbiAgLy8gRFBJX1N0cm9rZVdpZHRoLCBoYXZpbmcgdHlwZSBmbG9hdFxuICBTdHJva2VXaWR0aCA9ICdzdHJva2VXaWR0aCcsXG5cbiAgLy8gRFBJX1RleHRSZWdpb25PcmllbnRhdGlvbiwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgVGV4dFJlZ2lvbk9yaWVudGF0aW9uID0gJ29yaWVudGF0aW9uJyxcblxuICAvLyBEUElfVHJhbnNmb3JtQW5nbGUsIGhhdmluZyB0eXBlIGZsb2F0XG4gIFRyYW5zZm9ybUFuZ2xlID0gJ3RyYW5zZm9ybUFuZ2xlJyxcblxuICAvLyBEUElfWm9vbUxldmVsLCBoYXZpbmcgdHlwZSBmbG9hdFxuICBab29tTGV2ZWwgPSAnem9vbUxldmVsJyxcblxuICAvLyBEUElfT2xkWm9vbUxldmVsLCBoYXZpbmcgdHlwZSBmbG9hdFxuICBPbGRab29tTGV2ZWwgPSAnb2xkWm9vbUxldmVsJyxcblxuICAvLyBEUElfTmV3Wm9vbUxldmVsLCBoYXZpbmcgdHlwZSBmbG9hdFxuICBOZXdab29tTGV2ZWwgPSAnbmV3Wm9vbUxldmVsJyxcblxuICAvLyBEUElfQXNwZWN0UmF0aW8sIGhhdmluZyB0eXBlIGZsb2F0XG4gIEFzcGVjdFJhdGlvID0gJ2FzcGVjdFJhdGlvJyxcblxuICAvLyBEUElfQm90dG9tUHJpbnRNYXJnaW4sIGhhdmluZyB0eXBlIGZsb2F0XG4gIEJvdHRvbVByaW50TWFyZ2luID0gJ2JvdHRvbVByaW50TWFyZ2luJyxcblxuICAvLyBEUElfRWFydGhSYWRpdXMsIGhhdmluZyB0eXBlIGZsb2F0XG4gIEVhcnRoUmFkaXVzID0gJ2VhcnRoUmFkaXVzJyxcblxuICAvLyBEUElfRmxvYXRIZWlnaHQsIGhhdmluZyB0eXBlIGZsb2F0XG4gIEZsb2F0SGVpZ2h0ID0gJ2Zsb2F0SGVpZ2h0JyxcblxuICAvLyBEUElfRmxvYXRMZWZ0LCBoYXZpbmcgdHlwZSBmbG9hdFxuICBGbG9hdExlZnQgPSAnZmxvYXRMZWZ0JyxcblxuICAvLyBEUElfRmxvYXRSYWRpdXMsIGhhdmluZyB0eXBlIGZsb2F0XG4gIEZsb2F0UmFkaXVzID0gJ2Zsb2F0UmFkaXVzJyxcblxuICAvLyBEUElfRmxvYXRUb3AsIGhhdmluZyB0eXBlIGZsb2F0XG4gIEZsb2F0VG9wID0gJ2Zsb2F0VG9wJyxcblxuICAvLyBEUElfRmxvYXRXaWR0aCwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgRmxvYXRXaWR0aCA9ICdmbG9hdFdpZHRoJyxcblxuICAvLyBEUElfTGVmdFByaW50TWFyZ2luLCBoYXZpbmcgdHlwZSBmbG9hdFxuICBMZWZ0UHJpbnRNYXJnaW4gPSAnbGVmdFByaW50TWFyZ2luJyxcblxuICAvLyBEUElfTWFwQ2VudGVyTGF0aXR1ZGUsIGhhdmluZyB0eXBlIGZsb2F0XG4gIE1hcENlbnRlckxhdGl0dWRlID0gJ21hcENlbnRlckxhdGl0dWRlJyxcblxuICAvLyBEUElfTWFwQ2VudGVyTG9uZ2l0dWRlLCBoYXZpbmcgdHlwZSBmbG9hdFxuICBNYXBDZW50ZXJMb25naXR1ZGUgPSAnbWFwQ2VudGVyTG9uZ2l0dWRlJyxcblxuICAvLyBEUElfTWFwRGlzcGxheVNjYWxlLCBoYXZpbmcgdHlwZSBmbG9hdFxuICBNYXBEaXNwbGF5U2NhbGUgPSAnbWFwRGlzcGxheVNjYWxlJyxcblxuICAvLyBEUElfTWFwTWF4U3RyZXRjaCwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgTWFwTWF4U3RyZXRjaCA9ICdtYXBNYXhTdHJldGNoJyxcblxuICAvLyBEUElfTWFwTWF4Wm9vbSwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgTWFwTWF4Wm9vbSA9ICdtYXBNYXhab29tJyxcblxuICAvLyBEUElfTWFwTWluU2hyaW5rLCBoYXZpbmcgdHlwZSBmbG9hdFxuICBNYXBNaW5TaHJpbmsgPSAnbWFwTWluU2hyaW5rJyxcblxuICAvLyBEUElfTWFwTWluWm9vbSwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgTWFwTWluWm9vbSA9ICdtYXBNaW5ab29tJyxcblxuICAvLyBEUElfTWFwUmVxdWVzdFpvb20sIGhhdmluZyB0eXBlIGZsb2F0XG4gIE1hcFJlcXVlc3Rab29tID0gJ21hcFJlcXVlc3Rab29tJyxcblxuICAvLyBEUElfTWFwV2FzaG91dCwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgTWFwV2FzaG91dCA9ICdtYXBXYXNob3V0JyxcblxuICAvLyBEUElfTWF4TGF0aXR1ZGUsIGhhdmluZyB0eXBlIGZsb2F0XG4gIE1heExhdGl0dWRlID0gJ21heExhdGl0dWRlJyxcblxuICAvLyBEUElfTWF4TG9uZ2l0dWRlLCBoYXZpbmcgdHlwZSBmbG9hdFxuICBNYXhMb25naXR1ZGUgPSAnbWF4TG9uZ2l0dWRlJyxcblxuICAvLyBEUElfTWluTGF0aXR1ZGUsIGhhdmluZyB0eXBlIGZsb2F0XG4gIE1pbkxhdGl0dWRlID0gJ21pbkxhdGl0dWRlJyxcblxuICAvLyBEUElfTWluTG9uZ2l0dWRlLCBoYXZpbmcgdHlwZSBmbG9hdFxuICBNaW5Mb25naXR1ZGUgPSAnbWluTG9uZ2l0dWRlJyxcblxuICAvLyBEUElfUmlnaHRQcmludE1hcmdpbiwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgUmlnaHRQcmludE1hcmdpbiA9ICdyaWdodFByaW50TWFyZ2luJyxcblxuICAvLyBEUElfVG9wUHJpbnRNYXJnaW4sIGhhdmluZyB0eXBlIGZsb2F0XG4gIFRvcFByaW50TWFyZ2luID0gJ3RvcFByaW50TWFyZ2luJyxcblxuICAvLyBEUElfVUlBdXRvbWF0aW9uTWF4aW11bSwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgVUlBdXRvbWF0aW9uTWF4aW11bSA9ICd1aUF1dG9tYXRpb25NYXhpbXVtJyxcblxuICAvLyBEUElfVUlBdXRvbWF0aW9uTWluaW11bSwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgVUlBdXRvbWF0aW9uTWluaW11bSA9ICd1aUF1dG9tYXRpb25NaW5pbXVtJyxcblxuICAvLyBEUElfVUlBdXRvbWF0aW9uT2Zmc2V0LCBoYXZpbmcgdHlwZSBmbG9hdFxuICBVSUF1dG9tYXRpb25PZmZzZXQgPSAndWlBdXRvbWF0aW9uT2Zmc2V0JyxcblxuICAvLyBEUElfVW5pdERpdmlzb3IsIGhhdmluZyB0eXBlIGZsb2F0XG4gIFVuaXREaXZpc29yID0gJ3VuaXREaXZpc29yJyxcblxuICAvLyBEUElfVW5pdFRyYW5zaXRpb24sIGhhdmluZyB0eXBlIGZsb2F0XG4gIFVuaXRUcmFuc2l0aW9uID0gJ3VuaXRUcmFuc2l0aW9uJyxcblxuICAvLyBEUElfQXV0b21hdGljRHJpbGxJZHgsIGhhdmluZyB0eXBlIGZsb2F0W11cbiAgQXV0b21hdGljRHJpbGxJZHggPSAnYXV0b21hdGljRHJpbGxJZHgnLFxuXG4gIC8vIERQSV9EZXN0aW5hdGlvbkJveCwgaGF2aW5nIHR5cGUgZmxvYXRbXVxuICBEZXN0aW5hdGlvbkJveCA9ICdkZXN0Qm94JyxcblxuICAvLyBEUElfTG93ZXJFbmQsIGhhdmluZyB0eXBlIGZsb2F0W11cbiAgTG93ZXJFbmQgPSAnbG93ZXJFbmQnLFxuXG4gIC8vIERQSV9PcHBvc2l0ZUF4aXMsIGhhdmluZyB0eXBlIGZsb2F0W11cbiAgT3Bwb3NpdGVBeGlzID0gJ29wcG9zaXRlQXhpcycsXG5cbiAgLy8gRFBJX1BvaW50c0YsIGhhdmluZyB0eXBlIGZsb2F0W11cbiAgUG9pbnRzRiA9ICdwb2ludHNGJyxcblxuICAvLyBEUElfU291cmNlQm94LCBoYXZpbmcgdHlwZSBmbG9hdFtdXG4gIFNvdXJjZUJveCA9ICdzb3VyY2VCb3gnLFxuXG4gIC8vIERQSV9UcmFuc2Zvcm1PZmZzZXQsIGhhdmluZyB0eXBlIGZsb2F0W11cbiAgVHJhbnNmb3JtT2Zmc2V0ID0gJ3RyYW5zZm9ybU9mZnNldCcsXG5cbiAgLy8gRFBJX1RyYW5zZm9ybVNjYWxlLCBoYXZpbmcgdHlwZSBmbG9hdFtdXG4gIFRyYW5zZm9ybVNjYWxlID0gJ3RyYW5zZm9ybVNjYWxlJyxcblxuICAvLyBEUElfVXBwZXJFbmQsIGhhdmluZyB0eXBlIGZsb2F0W11cbiAgVXBwZXJFbmQgPSAndXBwZXJFbmQnLFxuXG4gIC8vIERQSV9GbG9hdE1hcCwgaGF2aW5nIHR5cGUgRGljdGlvbmFyeShvZiBmbG9hdClcbiAgRmxvYXRNYXAgPSAnZmxvYXRNYXAnLFxuXG4gIC8vIERQSV9CR1NTLCBoYXZpbmcgdHlwZSBkb3VibGVcbiAgQkdTUyA9ICdiZXR3ZWVuR3JvdXBTdW1PZlNxdWFyZXMnLFxuXG4gIC8vIERQSV9Db25maWRlbmNlTGV2ZWwsIGhhdmluZyB0eXBlIGRvdWJsZVxuICBDb25maWRlbmNlTGV2ZWwgPSAnY29uZmlkZW5jZUxldmVsJyxcblxuICAvLyBEUElfQ29uZmlkZW5jZVBlcmNlbnRhZ2UsIGhhdmluZyB0eXBlIGRvdWJsZVxuICBDb25maWRlbmNlUGVyY2VudGFnZSA9ICdjb25maWRlbmNlUGVyY2VudGFnZScsXG5cbiAgLy8gRFBJX0RvdWJsZUxlZnQsIGhhdmluZyB0eXBlIGRvdWJsZVxuICBEb3VibGVMZWZ0ID0gJ2RvdWJsZUxlZnQnLFxuXG4gIC8vIERQSV9Eb3VibGVUb3AsIGhhdmluZyB0eXBlIGRvdWJsZVxuICBEb3VibGVUb3AgPSAnZG91YmxlVG9wJyxcblxuICAvLyBEUElfRG91YmxlVmFsdWUsIGhhdmluZyB0eXBlIGRvdWJsZVxuICBEb3VibGVWYWx1ZSA9ICdkb3VibGVWYWx1ZScsXG5cbiAgLy8gRFBJX0RvdWJsZVgsIGhhdmluZyB0eXBlIGRvdWJsZVxuICBEb3VibGVYID0gJ2RvdWJsZVgnLFxuXG4gIC8vIERQSV9Eb3VibGVZLCBoYXZpbmcgdHlwZSBkb3VibGVcbiAgRG91YmxlWSA9ICdkb3VibGVZJyxcblxuICAvLyBEUElfRlN0YXRpc3RpYywgaGF2aW5nIHR5cGUgZG91YmxlXG4gIEZTdGF0aXN0aWMgPSAnZlN0YXRpc3RpYycsXG5cbiAgLy8gRFBJX0ZpbHRlclJhbmdlTWF4LCBoYXZpbmcgdHlwZSBkb3VibGVcbiAgRmlsdGVyUmFuZ2VNYXggPSAnZmlsdGVyUmFuZ2VNYXgnLFxuXG4gIC8vIERQSV9GaWx0ZXJSYW5nZU1pbiwgaGF2aW5nIHR5cGUgZG91YmxlXG4gIEZpbHRlclJhbmdlTWluID0gJ2ZpbHRlclJhbmdlTWluJyxcblxuICAvLyBEUElfR2VvZ3JhcGhpY1NlYXJjaENhbmRpZGF0ZVNjb3JlLCBoYXZpbmcgdHlwZSBkb3VibGVcbiAgR2VvZ3JhcGhpY1NlYXJjaENhbmRpZGF0ZVNjb3JlID0gJ2dlb2dyYXBoaWNTZWFyY2hDYW5kaWRhdGVTY29yZScsXG5cbiAgLy8gRFBJX0hlaWdodEQsIGhhdmluZyB0eXBlIGRvdWJsZVxuICBIZWlnaHREID0gJ2hlaWdodCcsXG5cbiAgLy8gRFBJX0luZmxlY3Rpb25GcmFjdGlvbiwgaGF2aW5nIHR5cGUgZG91YmxlXG4gIEluZmxlY3Rpb25GcmFjdGlvbiA9ICdpbmZsZWN0aW9uRnJhY3Rpb24nLFxuXG4gIC8vIERQSV9JbmZsZWN0aW9uVmFsdWUsIGhhdmluZyB0eXBlIGRvdWJsZVxuICBJbmZsZWN0aW9uVmFsdWUgPSAnaW5mbGVjdGlvblZhbHVlJyxcblxuICAvLyBEUElfTVNFLCBoYXZpbmcgdHlwZSBkb3VibGVcbiAgTVNFID0gJ21lYW5TcXVhcmVkRXJyb3InLFxuXG4gIC8vIERQSV9NU00sIGhhdmluZyB0eXBlIGRvdWJsZVxuICBNU00gPSAnbWVhblNxdWFyZWRNb2RlbCcsXG5cbiAgLy8gRFBJX01hcFNjYWxlTWFyZ2luT2ZFcnJvciwgaGF2aW5nIHR5cGUgZG91YmxlXG4gIE1hcFNjYWxlTWFyZ2luT2ZFcnJvciA9ICdtYXBTY2FsZU1hcmdpbk9mRXJyb3InLFxuXG4gIC8vIERQSV9NYXJrU2l6ZSwgaGF2aW5nIHR5cGUgZG91YmxlXG4gIE1hcmtTaXplID0gJ21hcmtTaXplJyxcblxuICAvLyBEUElfTWF4TWFya1NpemUsIGhhdmluZyB0eXBlIGRvdWJsZVxuICBNYXhNYXJrU2l6ZSA9ICdtYXhNYXJrU2l6ZScsXG5cbiAgLy8gRFBJX01pbk1hcmtTaXplLCBoYXZpbmcgdHlwZSBkb3VibGVcbiAgTWluTWFya1NpemUgPSAnbWluTWFya1NpemUnLFxuXG4gIC8vIERQSV9Ob3RjaFBvc2l0aW9uLCBoYXZpbmcgdHlwZSBkb3VibGVcbiAgTm90Y2hQb3NpdGlvbiA9ICdub3RjaFBvc2l0aW9uJyxcblxuICAvLyBEUElfTm90Y2hWYWx1ZSwgaGF2aW5nIHR5cGUgZG91YmxlXG4gIE5vdGNoVmFsdWUgPSAnbm90Y2hWYWx1ZScsXG5cbiAgLy8gRFBJX1BWYWx1ZSwgaGF2aW5nIHR5cGUgZG91YmxlXG4gIFBWYWx1ZSA9ICdwVmFsdWUnLFxuXG4gIC8vIERQSV9QZXJjZW50RGltZW5zaW9ucywgaGF2aW5nIHR5cGUgZG91YmxlXG4gIFBlcmNlbnREaW1lbnNpb25zID0gJ3BlcmNlbnREaW1lbnNpb25zJyxcblxuICAvLyBEUElfUGVyY2VudEdyb3VwcywgaGF2aW5nIHR5cGUgZG91YmxlXG4gIFBlcmNlbnRHcm91cHMgPSAncGVyY2VudEdyb3VwcycsXG5cbiAgLy8gRFBJX1BlcmNlbnRNZWFzdXJlcywgaGF2aW5nIHR5cGUgZG91YmxlXG4gIFBlcmNlbnRNZWFzdXJlcyA9ICdwZXJjZW50TWVhc3VyZXMnLFxuXG4gIC8vIERQSV9SU3F1YXJlZCwgaGF2aW5nIHR5cGUgZG91YmxlXG4gIFJTcXVhcmVkID0gJ3JTcXVhcmVkJyxcblxuICAvLyBEUElfU1NFLCBoYXZpbmcgdHlwZSBkb3VibGVcbiAgU1NFID0gJ3N1bVNxdWFyZWRFcnJvcicsXG5cbiAgLy8gRFBJX1NTTSwgaGF2aW5nIHR5cGUgZG91YmxlXG4gIFNTTSA9ICdzdW1TcXVhcmVkTW9kZWwnLFxuXG4gIC8vIERQSV9TdGFuZGFyZEVycm9yLCBoYXZpbmcgdHlwZSBkb3VibGVcbiAgU3RhbmRhcmRFcnJvciA9ICdzdGFuZGFyZEVycm9yJyxcblxuICAvLyBEUElfVFNTLCBoYXZpbmcgdHlwZSBkb3VibGVcbiAgVFNTID0gJ3RvdGFsU3VtT2ZTcXVhcmVzJyxcblxuICAvLyBEUElfV0dTUywgaGF2aW5nIHR5cGUgZG91YmxlXG4gIFdHU1MgPSAnd2l0aGluR3JvdXBTdW1PZlNxdWFyZXMnLFxuXG4gIC8vIERQSV9XaWR0aEQsIGhhdmluZyB0eXBlIGRvdWJsZVxuICBXaWR0aEQgPSAnd2lkdGgnLFxuXG4gIC8vIERQSV9ab29tRmFjdG9yLCBoYXZpbmcgdHlwZSBkb3VibGVcbiAgWm9vbUZhY3RvciA9ICd6b29tRmFjdG9yJyxcblxuICAvLyBEUElfQ29lZmZpY2llbnRQVmFsdWVWZWMsIGhhdmluZyB0eXBlIGRvdWJsZVtdXG4gIENvZWZmaWNpZW50UFZhbHVlVmVjID0gJ2NvZWZmaWNpZW50UFZhbHVlVmVjdG9yJyxcblxuICAvLyBEUElfQ29lZmZpY2llbnRTdGRFcnJWZWMsIGhhdmluZyB0eXBlIGRvdWJsZVtdXG4gIENvZWZmaWNpZW50U3RkRXJyVmVjID0gJ2NvZWZmaWNpZW50U3RkRXJyb3JWZWN0b3InLFxuXG4gIC8vIERQSV9Db2VmZmljaWVudFRWYWx1ZVZlYywgaGF2aW5nIHR5cGUgZG91YmxlW11cbiAgQ29lZmZpY2llbnRUVmFsdWVWZWMgPSAnY29lZmZpY2llbnRUVmFsdWVWZWN0b3InLFxuXG4gIC8vIERQSV9Db2VmZmljaWVudFZlYywgaGF2aW5nIHR5cGUgZG91YmxlW11cbiAgQ29lZmZpY2llbnRWZWMgPSAnY29lZmZpY2llbnRWZWN0b3InLFxuXG4gIC8vIERQSV9GU3RhdGlzdGljVmVjLCBoYXZpbmcgdHlwZSBkb3VibGVbXVxuICBGU3RhdGlzdGljVmVjID0gJ3RyZW5kTGluZUZTdGF0aXN0aWNWZWN0b3InLFxuXG4gIC8vIERQSV9GYWN0b3JzLCBoYXZpbmcgdHlwZSBkb3VibGVbXVxuICBGYWN0b3JzID0gJ2ZhY3RvcnMnLFxuXG4gIC8vIERQSV9NU0VWZWMsIGhhdmluZyB0eXBlIGRvdWJsZVtdXG4gIE1TRVZlYyA9ICdtZWFuU3F1YXJlZEVycm9yVmVjdG9yJyxcblxuICAvLyBEUElfTWVhbnMsIGhhdmluZyB0eXBlIGRvdWJsZVtdXG4gIE1lYW5zID0gJ21lYW5zJyxcblxuICAvLyBEUElfUFZhbHVlVmVjLCBoYXZpbmcgdHlwZSBkb3VibGVbXVxuICBQVmFsdWVWZWMgPSAncFZhbHVlVmVjdG9yJyxcblxuICAvLyBEUElfUGVyY2VudGFnZXMsIGhhdmluZyB0eXBlIGRvdWJsZVtdXG4gIFBlcmNlbnRhZ2VzID0gJ3BlcmNlbnRhZ2VzJyxcblxuICAvLyBEUElfUGVyY2VudGlsZXMsIGhhdmluZyB0eXBlIGRvdWJsZVtdXG4gIFBlcmNlbnRpbGVzID0gJ3BlcmNlbnRpbGVzJyxcblxuICAvLyBEUElfU1NFVmVjLCBoYXZpbmcgdHlwZSBkb3VibGVbXVxuICBTU0VWZWMgPSAnc3VtU3F1YXJlZEVycm9yVmVjdG9yJyxcblxuICAvLyBEUElfU3REZXZzLCBoYXZpbmcgdHlwZSBkb3VibGVbXVxuICBTdERldnMgPSAnc3RkZXYnLFxuXG4gIC8vIERQSV9VbnNjYWxlZE1lYW5zLCBoYXZpbmcgdHlwZSBkb3VibGVbXVxuICBVbnNjYWxlZE1lYW5zID0gJ3Vuc2NhbGVkTWVhbnMnLFxuXG4gIC8vIERQSV9EZWx0YVRpbWVNcywgaGF2aW5nIHR5cGUgbG9uZ1xuICBEZWx0YVRpbWVNcyA9ICdkZWx0YVRpbWVNcycsXG5cbiAgLy8gRFBJX0V4dHJhY3RIaXN0b3J5Um93Q291bnQsIGhhdmluZyB0eXBlIGxvbmdcbiAgRXh0cmFjdEhpc3RvcnlSb3dDb3VudCA9ICdleHRyYWN0Um93Q291bnQnLFxuXG4gIC8vIERQSV9FeHRyYWN0SGlzdG9yeVJvd3NSZW1vdmVkLCBoYXZpbmcgdHlwZSBsb25nXG4gIEV4dHJhY3RIaXN0b3J5Um93c1JlbW92ZWQgPSAnZXh0cmFjdFJvd3NSZW1vdmVkJyxcblxuICAvLyBEUElfRXh0cmFjdHNTaXplLCBoYXZpbmcgdHlwZSBsb25nXG4gIEV4dHJhY3RzU2l6ZSA9ICdleHRyYWN0c1NpemUnLFxuXG4gIC8vIERQSV9PbGRFeHRyYWN0U2l6ZSwgaGF2aW5nIHR5cGUgbG9uZ1xuICBPbGRFeHRyYWN0U2l6ZSA9ICdvbGRFeHRyYWN0U2l6ZScsXG5cbiAgLy8gRFBJX1Jvd3NJbnNlcnRlZCwgaGF2aW5nIHR5cGUgbG9uZ1xuICBSb3dzSW5zZXJ0ZWQgPSAncm93c0luc2VydGVkJyxcblxuICAvLyBEUElfU2FtcGxlU2l6ZSwgaGF2aW5nIHR5cGUgbG9uZ1xuICBTYW1wbGVTaXplID0gJ3NhbXBsZVNpemUnLFxuXG4gIC8vIERQSV9TYW1wbGVTcGFjZSwgaGF2aW5nIHR5cGUgbG9uZ1xuICBTYW1wbGVTcGFjZSA9ICdzYW1wbGVTcGFjZScsXG5cbiAgLy8gRFBJX1RocmVhZFBvb2xVc2VDb3VudCwgaGF2aW5nIHR5cGUgbG9uZ1xuICBUaHJlYWRQb29sVXNlQ291bnQgPSAndGhyZWFkUG9vbFVzZUNvdW50JyxcblxuICAvLyBEUElfQWN0aW9uSWQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBY3Rpb25JZCA9ICdhY3Rpb25JZCcsXG5cbiAgLy8gRFBJX0F4aXNDb2x1bW4sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBBeGlzQ29sdW1uID0gJ2F4aXNDb2x1bW4nLFxuXG4gIC8vIERQSV9CYXNlQ29sdW1uTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEJhc2VDb2x1bW5OYW1lID0gJ2Jhc2VDb2x1bW5OYW1lJyxcblxuICAvLyBEUElfQnJlYWtQb2ludEZpZWxkTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEJyZWFrUG9pbnRGaWVsZE5hbWUgPSAnYnJlYWtQb2ludEZpZWxkTmFtZScsXG5cbiAgLy8gRFBJX1BhaXJlZEZpZWxkTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFBhaXJlZEZpZWxkTmFtZSA9ICdwYWlyZWRGbicsXG5cbiAgLy8gRFBJX0ZpZWxkTmFtZUFsbG93RW1wdHksIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGaWVsZE5hbWVBbGxvd0VtcHR5ID0gJ2ZpZWxkTmFtZUFsbG93RW1wdHknLFxuXG4gIC8vIERQSV9GaWVsZE5hbWVEaXNBZ2csIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGaWVsZE5hbWVEaXNBZ2cgPSAnZm5EaXNhZ2cnLFxuXG4gIC8vIERQSV9GaWVsZE5hbWVMb2NhbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZpZWxkTmFtZUxvY2FsID0gJ2ZpZWxkTmFtZUxvY2FsJyxcblxuICAvLyBEUElfRmllbGROYW1lUHJldiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZpZWxkTmFtZVByZXYgPSAnZm5QcmV2JyxcblxuICAvLyBEUElfRmllbGROYW1lU291cmNlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRmllbGROYW1lU291cmNlID0gJ2ZuU291cmNlJyxcblxuICAvLyBEUElfRmllbGROYW1lVGFyZ2V0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRmllbGROYW1lVGFyZ2V0ID0gJ2ZuVGFyZ2V0JyxcblxuICAvLyBEUElfRmllbGROYW1lWCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZpZWxkTmFtZVggPSAnZm5YJyxcblxuICAvLyBEUElfRmllbGROYW1lWSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEZpZWxkTmFtZVkgPSAnZm5ZJyxcblxuICAvLyBEUElfRmllbGRUb1NvcnQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGaWVsZFRvU29ydCA9ICdmaWVsZFRvU29ydCcsXG5cbiAgLy8gRFBJX0dsb2JhbEZpZWxkTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEdsb2JhbEZpZWxkTmFtZSA9ICdnbG9iYWxGaWVsZE5hbWUnLFxuXG4gIC8vIERQSV9IaWVyYXJjaHlOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgSGllcmFyY2h5TmFtZSA9ICdoaWVyYXJjaHlOYW1lJyxcblxuICAvLyBEUElfSW52YWxpZEFnZ0ZpZWxkTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEludmFsaWRBZ2dGaWVsZE5hbWUgPSAnaW52YWxpZEFnZ0ZpZWxkTmFtZScsXG5cbiAgLy8gRFBJX0ludmFsaWRGaWVsZE5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBJbnZhbGlkRmllbGROYW1lID0gJ2ludmFsaWRGaWVsZE5hbWUnLFxuXG4gIC8vIERQSV9MaW1pdFBhcmFtZXRlck5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBMaW1pdFBhcmFtZXRlck5hbWUgPSAnbGltaXRQYXJhbWV0ZXJOYW1lJyxcblxuICAvLyBEUElfTG9jYWxCYXNlQ29sdW1uTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIExvY2FsQmFzZUNvbHVtbk5hbWUgPSAnbG9jYWxCYXNlQ29sdW1uTmFtZScsXG5cbiAgLy8gRFBJX01lYXN1cmVOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTWVhc3VyZU5hbWUgPSAnbWVhc3VyZU5hbWUnLFxuXG4gIC8vIERQSV9OZXN0ZWRDYWxjRmllbGQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBOZXN0ZWRDYWxjRmllbGQgPSAnbmVzdGVkQ2FsY0ZuJyxcblxuICAvLyBEUElfUGFyYW1ldGVyTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFBhcmFtZXRlck5hbWUgPSAncGFyYW1ldGVyTmFtZScsXG5cbiAgLy8gRFBJX1JlZmVyZW5jZVBhcmFtLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUmVmZXJlbmNlUGFyYW0gPSAncmVmZXJlbmNlUGFyYW0nLFxuXG4gIC8vIERQSV9SZXBsYWNlbWVudEZpZWxkTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFJlcGxhY2VtZW50RmllbGROYW1lID0gJ3JlcGxhY2VtZW50RmllbGROYW1lJyxcblxuICAvLyBEUElfUkhTVGFibGVBbGlhcywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFJIU1RhYmxlQWxpYXMgPSAncmhzVGFibGVBbGlhcycsXG5cbiAgLy8gRFBJX1NvcnRNZWFzdXJlTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFNvcnRNZWFzdXJlTmFtZSA9ICdzb3J0TWVhc3VyZU5hbWUnLFxuXG4gIC8vIERQSV9VbmlxdWVOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgVW5pcXVlTmFtZSA9ICd1bmlxdWVOYW1lJyxcblxuICAvLyBEUElfVmFsdWVDb2x1bW4sIGhhdmluZyB0eXBlIHN0cmluZ1xuICBWYWx1ZUNvbHVtbiA9ICd2YWx1ZUNvbHVtbicsXG5cbiAgLy8gRFBJX1BhaXJlZFZhbHVlQ29sdW1uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUGFpcmVkVmFsdWVDb2x1bW4gPSAncGFpcmVkVmFsdWVDb2x1bW4nLFxuXG4gIC8vIERQSV9BY3Rpb25JZHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIEFjdGlvbklkcyA9ICdhY3Rpb25JZHMnLFxuXG4gIC8vIERQSV9BZGRyZXNzaW5nVmFsdWVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBBZGRyZXNzaW5nVmFsdWVzID0gJ2FkZHJlc3NpbmdWYWx1ZXMnLFxuXG4gIC8vIERQSV9BbGxDb2x1bW5zLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBBbGxDb2x1bW5zID0gJ2FsbENvbHVtbnMnLFxuXG4gIC8vIERQSV9BdFRoZUxldmVsVmFsdWVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBBdFRoZUxldmVsVmFsdWVzID0gJ2F0VGhlTGV2ZWxWYWx1ZXMnLFxuXG4gIC8vIERQSV9BdXRvbWF0aWNEcmlsbEZpZWxkTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgQXV0b21hdGljRHJpbGxGaWVsZE5hbWUgPSAnYXV0b21hdGljRHJpbGxGaWVsZE5hbWUnLFxuXG4gIC8vIERQSV9CbGVuZGluZ0ZpZWxkQ2FuZGlkYXRlcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgQmxlbmRpbmdGaWVsZENhbmRpZGF0ZXMgPSAnYmxlbmRpbmdGaWVsZENhbmRpZGF0ZXMnLFxuXG4gIC8vIERQSV9Db2x1bW5zLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBDb2x1bW5zID0gJ2NvbHVtbnMnLFxuXG4gIC8vIERQSV9DdXJyZW50QmxlbmRpbmdGaWVsZHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIEN1cnJlbnRCbGVuZGluZ0ZpZWxkcyA9ICdjdXJyZW50QmxlbmRpbmdGaWVsZHMnLFxuXG4gIC8vIERQSV9EaW1lbnNpb25zVG9Tb3J0LCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBEaW1lbnNpb25zVG9Tb3J0ID0gJ2RpbWVuc2lvbnNUb1NvcnQnLFxuXG4gIC8vIERQSV9EcmlsbEZpZWxkVmVjdG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBEcmlsbEZpZWxkVmVjdG9yID0gJ2RyaWxsRmllbGRWZWN0b3InLFxuXG4gIC8vIERQSV9FbmNvZGluZ0ZpZWxkVmVjdG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBFbmNvZGluZ0ZpZWxkVmVjdG9yID0gJ2VuY29kaW5nRmllbGRWZWN0b3InLFxuXG4gIC8vIERQSV9GaWVsZFZlY3RvciwgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgRmllbGRWZWN0b3IgPSAnZmllbGRWZWN0b3InLFxuXG4gIC8vIERQSV9GaWx0ZXJGaWVsZHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIEZpbHRlckZpZWxkcyA9ICdmaWx0ZXJGaWVsZHMnLFxuXG4gIC8vIERQSV9MT0RGaWVsZFZlY3RvciwgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgTE9ERmllbGRWZWN0b3IgPSAnbG9kRmllbGRWZWN0b3InLFxuXG4gIC8vIERQSV9MZWdlbmRDb2x1bW5zLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBMZWdlbmRDb2x1bW5zID0gJ2xlZ2VuZENvbHVtbnMnLFxuXG4gIC8vIERQSV9MZWdlbmROYW1lcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgTGVnZW5kTmFtZXMgPSAnbGVnZW5kTmFtZXMnLFxuXG4gIC8vIERQSV9Ob2RlQ29sdW1ucywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgTm9kZUNvbHVtbnMgPSAnbm9kZUNvbHVtbnMnLFxuXG4gIC8vIERQSV9QYWdlRmllbGRzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBQYWdlRmllbGRzID0gJ3BhZ2VGaWVsZHMnLFxuXG4gIC8vIERQSV9QYXJhbVZhbHVlcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgUGFyYW1WYWx1ZXMgPSAncGFyYW1WYWx1ZXMnLFxuXG4gIC8vIERQSV9SZWZMaW5lRmllbGRzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBSZWZMaW5lRmllbGRzID0gJ3JlZmxpbmVGaWVsZHMnLFxuXG4gIC8vIERQSV9SZWZlcmVuY2VkQ29sdW1ucywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgUmVmZXJlbmNlZENvbHVtbnMgPSAncmVmZXJlbmNlZENvbHVtbnMnLFxuXG4gIC8vIERQSV9SZWxhdGVkRmllbGROYW1lcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgUmVsYXRlZEZpZWxkTmFtZXMgPSAncmVsYXRlZEZpZWxkTmFtZXMnLFxuXG4gIC8vIERQSV9SZW1vdmVBY3Rpb25SZXN1bHRzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBSZW1vdmVBY3Rpb25SZXN1bHRzID0gJ3JlbW92ZUFjdGlvblJlc3VsdHMnLFxuXG4gIC8vIERQSV9SZXNwb25zZVZlY3RvciwgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgUmVzcG9uc2VWZWN0b3IgPSAncmVzcG9uc2VWZWN0b3InLFxuXG4gIC8vIERQSV9SZXN0YXJ0RXZlcnlWYWx1ZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFJlc3RhcnRFdmVyeVZhbHVlcyA9ICdyZXN0YXJ0RXZlcnlWYWx1ZXMnLFxuXG4gIC8vIERQSV9SZXN1bHRGaWVsZHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFJlc3VsdEZpZWxkcyA9ICdyZXN1bHRGaWVsZHMnLFxuXG4gIC8vIERQSV9Tb3J0RmllbGRWYWx1ZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIFNvcnRGaWVsZFZhbHVlcyA9ICdzb3J0RmllbGRWYWx1ZXMnLFxuXG4gIC8vIERQSV9YRmllbGRzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBYRmllbGRzID0gJ3hGaWVsZHMnLFxuXG4gIC8vIERQSV9ZRmllbGRzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBZRmllbGRzID0gJ3lGaWVsZHMnLFxuXG4gIC8vIERQSV9Db25uZWN0aW9uRnVsbE5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDb25uZWN0aW9uRnVsbE5hbWUgPSAnY29ubmVjdGlvbkZ1bGxOYW1lJyxcblxuICAvLyBEUElfQ29ubmVjdGlvbkZ1bGxOYW1lcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgQ29ubmVjdGlvbkZ1bGxOYW1lcyA9ICdjb25uZWN0aW9uRnVsbE5hbWVzJyxcblxuICAvLyBEUElfQm91bmREYXRhVmFsdWUsIGhhdmluZyB0eXBlIG9iamVjdFxuICBCb3VuZERhdGFWYWx1ZSA9ICdib3VuZERhdGFWYWx1ZScsXG5cbiAgLy8gRFBJX0RhdGFWYWx1ZSwgaGF2aW5nIHR5cGUgb2JqZWN0XG4gIERhdGFWYWx1ZSA9ICdkYXRhVmFsdWUnLFxuXG4gIC8vIERQSV9EYXRhVmFsdWVJbmNyZW1lbnQsIGhhdmluZyB0eXBlIG9iamVjdFxuICBEYXRhVmFsdWVJbmNyZW1lbnQgPSAnZGF0YVZhbHVlSW5jcmVtZW50JyxcblxuICAvLyBEUElfRGF0YVZhbHVlTG93ZXJYLCBoYXZpbmcgdHlwZSBvYmplY3RcbiAgRGF0YVZhbHVlTG93ZXJYID0gJ2RhdGFWYWx1ZUxvd2VyWCcsXG5cbiAgLy8gRFBJX0RhdGFWYWx1ZUxvd2VyWSwgaGF2aW5nIHR5cGUgb2JqZWN0XG4gIERhdGFWYWx1ZUxvd2VyWSA9ICdkYXRhVmFsdWVMb3dlclknLFxuXG4gIC8vIERQSV9EYXRhVmFsdWVVcHBlclgsIGhhdmluZyB0eXBlIG9iamVjdFxuICBEYXRhVmFsdWVVcHBlclggPSAnZGF0YVZhbHVlVXBwZXJYJyxcblxuICAvLyBEUElfRGF0YVZhbHVlVXBwZXJZLCBoYXZpbmcgdHlwZSBvYmplY3RcbiAgRGF0YVZhbHVlVXBwZXJZID0gJ2RhdGFWYWx1ZVVwcGVyWScsXG5cbiAgLy8gRFBJX0RlZmF1bHREYXRhVmFsdWUsIGhhdmluZyB0eXBlIG9iamVjdFxuICBEZWZhdWx0RGF0YVZhbHVlID0gJ2RlZmF1bHREYXRhVmFsdWUnLFxuXG4gIC8vIERQSV9NYXhEYXRhVmFsdWUsIGhhdmluZyB0eXBlIG9iamVjdFxuICBNYXhEYXRhVmFsdWUgPSAnbWF4RGF0YVZhbHVlJyxcblxuICAvLyBEUElfTWluRGF0YVZhbHVlLCBoYXZpbmcgdHlwZSBvYmplY3RcbiAgTWluRGF0YVZhbHVlID0gJ21pbkRhdGFWYWx1ZScsXG5cbiAgLy8gRFBJX1ZhbGlkYXRlZERhdGFWYWx1ZSwgaGF2aW5nIHR5cGUgb2JqZWN0XG4gIFZhbGlkYXRlZERhdGFWYWx1ZSA9ICd2YWxpZGF0ZWREYXRhVmFsdWUnLFxuXG4gIC8vIERQSV9CaW5TaXplLCBoYXZpbmcgdHlwZSBvYmplY3RcbiAgQmluU2l6ZSA9ICdiaW5TaXplJyxcblxuICAvLyBEUElfTGltaXRDb3VudCwgaGF2aW5nIHR5cGUgb2JqZWN0XG4gIExpbWl0Q291bnQgPSAnbGltaXRDb3VudCcsXG5cbiAgLy8gRFBJX0RhdGFWYWx1ZUxpc3QsIGhhdmluZyB0eXBlIG9iamVjdFtdXG4gIERhdGFWYWx1ZUxpc3QgPSAnZGF0YVZhbHVlTGlzdCcsXG5cbiAgLy8gRFBJX0ZpZWxkQ2FwdGlvblBhaXIsIGhhdmluZyB0eXBlIEZpZWxkQ2FwdGlvblBhaXJQcmVzTW9kZWxcbiAgRmllbGRDYXB0aW9uUGFpciA9ICdmaWVsZENhcHRpb25QYWlyJyxcblxuICAvLyBEUElfRmllbGRDYXB0aW9uUGFpcnMsIGhhdmluZyB0eXBlIEZpZWxkQ2FwdGlvblBhaXJQcmVzTW9kZWxbXVxuICBGaWVsZENhcHRpb25QYWlycyA9ICdmaWVsZENhcHRpb25QYWlycycsXG5cbiAgLy8gRFBJX1BhcmFtZXRlckNhcHRpb25QYWlycywgaGF2aW5nIHR5cGUgRmllbGRDYXB0aW9uUGFpclByZXNNb2RlbFtdXG4gIFBhcmFtZXRlckNhcHRpb25QYWlycyA9ICdwYXJhbWV0ZXJDYXB0aW9uUGFpcnMnLFxuXG4gIC8vIERQSV9WYXJ5aW5nQXR0cmlidXRlRGltZW5zaW9ucywgaGF2aW5nIHR5cGUgRmllbGRDYXB0aW9uUGFpclByZXNNb2RlbFtdXG4gIFZhcnlpbmdBdHRyaWJ1dGVEaW1lbnNpb25zID0gJ3ZhcnlpbmdBdHRyaWJ1dGVEaW1lbnNpb25zJyxcblxuICAvLyBEUElfRmllbGRDYXB0aW9uUGFpclN0YXRlLCBoYXZpbmcgdHlwZSBGaWVsZENhcHRpb25QYWlyU3RhdGVQcmVzTW9kZWxcbiAgRmllbGRDYXB0aW9uUGFpclN0YXRlID0gJ2ZpZWxkQ2FwdGlvblBhaXJTdGF0ZScsXG5cbiAgLy8gRFBJX0ZpZWxkQ2FwdGlvblBhaXJTdGF0ZXMsIGhhdmluZyB0eXBlIEZpZWxkQ2FwdGlvblBhaXJTdGF0ZVByZXNNb2RlbFtdXG4gIEZpZWxkQ2FwdGlvblBhaXJTdGF0ZXMgPSAnZmllbGRDYXB0aW9uUGFpclN0YXRlcycsXG5cbiAgLy8gRFBJX0RhdGFzb3VyY2VDYXB0aW9uUGFpciwgaGF2aW5nIHR5cGUgRGF0YXNvdXJjZUNhcHRpb25QYWlyUHJlc01vZGVsXG4gIERhdGFzb3VyY2VDYXB0aW9uUGFpciA9ICdkYXRhc291cmNlQ2FwdGlvblBhaXInLFxuXG4gIC8vIERQSV9EYXRhc291cmNlQ2FwdGlvblBhaXJzLCBoYXZpbmcgdHlwZSBEYXRhc291cmNlQ2FwdGlvblBhaXJQcmVzTW9kZWxbXVxuICBEYXRhc291cmNlQ2FwdGlvblBhaXJzID0gJ2RhdGFzb3VyY2VDYXB0aW9uUGFpcnMnLFxuXG4gIC8vIERQSV9TaGVldE5hbWVJbmZvUGFpciwgaGF2aW5nIHR5cGUgU2hlZXROYW1lSW5mb1BhaXJQcmVzTW9kZWxcbiAgU2hlZXROYW1lSW5mb1BhaXIgPSAnc2hlZXROYW1lSW5mb1BhaXInLFxuXG4gIC8vIERQSV9TaGVldE5hbWVJbmZvUGFpcnMsIGhhdmluZyB0eXBlIFNoZWV0TmFtZUluZm9QYWlyUHJlc01vZGVsW11cbiAgU2hlZXROYW1lSW5mb1BhaXJzID0gJ3NoZWV0TmFtZUluZm9QYWlycycsXG5cbiAgLy8gRFBJX0JHQWN0aXZlQ29sb3IsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBCR0FjdGl2ZUNvbG9yID0gJ2JnQWN0aXZlQ29sb3InLFxuXG4gIC8vIERQSV9CR0NvbG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQkdDb2xvciA9ICdiZ0NvbG9yJyxcblxuICAvLyBEUElfQkdSZXN0Q29sb3IsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBCR1Jlc3RDb2xvciA9ICdiZ1Jlc3RDb2xvcicsXG5cbiAgLy8gRFBJX0JvcmRlckNvbG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQm9yZGVyQ29sb3IgPSAnYm9yZGVyQ29sb3InLFxuXG4gIC8vIERQSV9Cb3JkZXJDb2xvckJvdHRvbSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEJvcmRlckNvbG9yQm90dG9tID0gJ2JvcmRlckNvbG9yQm90dG9tJyxcblxuICAvLyBEUElfQm9yZGVyQ29sb3JMZWZ0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQm9yZGVyQ29sb3JMZWZ0ID0gJ2JvcmRlckNvbG9yTGVmdCcsXG5cbiAgLy8gRFBJX0JvcmRlckNvbG9yUmlnaHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBCb3JkZXJDb2xvclJpZ2h0ID0gJ2JvcmRlckNvbG9yUmlnaHQnLFxuXG4gIC8vIERQSV9Cb3JkZXJDb2xvclRvcCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIEJvcmRlckNvbG9yVG9wID0gJ2JvcmRlckNvbG9yVG9wJyxcblxuICAvLyBEUElfQ29sb3IsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDb2xvciA9ICdjb2xvcicsXG5cbiAgLy8gRFBJX0NvbG9yMSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIENvbG9yMSA9ICdjb2xvcjEnLFxuXG4gIC8vIERQSV9Db2xvcjIsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBDb2xvcjIgPSAnY29sb3IyJyxcblxuICAvLyBEUElfRGVmYXVsdENvbG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRGVmYXVsdENvbG9yID0gJ2RlZmF1bHRDb2xvcicsXG5cbiAgLy8gRFBJX0Rpc3RhbmNlRm9udENvbG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgRGlzdGFuY2VGb250Q29sb3IgPSAnZGlzdGFuY2VGb250Q29sb3InLFxuXG4gIC8vIERQSV9GaWxsQ29sb3IsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGaWxsQ29sb3IgPSAnZmlsbENvbG9yJyxcblxuICAvLyBEUElfRm9nQ29sb3IsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBGb2dDb2xvciA9ICdmb2dDb2xvcicsXG5cbiAgLy8gRFBJX0hlYWRlckNvbG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgSGVhZGVyQ29sb3IgPSAnaGVhZGVyQ29sb3InLFxuXG4gIC8vIERQSV9IaWdobGlnaHRCR0NvbG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgSGlnaGxpZ2h0QkdDb2xvciA9ICdoaWdobGlnaHRCZ0NvbG9yJyxcblxuICAvLyBEUElfSGlnaGxpZ2h0VGV4dENvbG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgSGlnaGxpZ2h0VGV4dENvbG9yID0gJ2hpZ2hsaWdodFRleHRDb2xvcicsXG5cbiAgLy8gRFBJX0hvdmVyQ29sb3IsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBIb3ZlckNvbG9yID0gJ2hvdmVyQ29sb3InLFxuXG4gIC8vIERQSV9NYXBBdHRyaWJ1dGlvbkZpbGwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBNYXBBdHRyaWJ1dGlvbkZpbGwgPSAnbWFwQXR0cmlidXRpb25GaWxsJyxcblxuICAvLyBEUElfTWFwQXR0cmlidXRpb25UZXh0Q29sb3IsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBNYXBBdHRyaWJ1dGlvblRleHRDb2xvciA9ICdtYXBBdHRyaWJ1dGlvblRleHRDb2xvcicsXG5cbiAgLy8gRFBJX01hcFBhbmVCYWNrZ3JvdW5kRmlsbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE1hcFBhbmVCYWNrZ3JvdW5kRmlsbCA9ICdtYXBQYW5lQmFja2dyb3VuZEZpbGwnLFxuXG4gIC8vIERQSV9NYXBTY2FsZUJvcmRlckNvbG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTWFwU2NhbGVCb3JkZXJDb2xvciA9ICdtYXBTY2FsZUJvcmRlckNvbG9yJyxcblxuICAvLyBEUElfTWFwU2NhbGVDb2xvciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE1hcFNjYWxlQ29sb3IgPSAnbWFwU2NhbGVDb2xvcicsXG5cbiAgLy8gRFBJX01hcFdhaXRUaWxlRmlsbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE1hcFdhaXRUaWxlRmlsbCA9ICdtYXBXYWl0VGlsZUZpbGwnLFxuXG4gIC8vIERQSV9NYXJrQ29sb3IsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBNYXJrQ29sb3IgPSAnbWFya0NvbG9yJyxcblxuICAvLyBEUElfTmF2QXJyb3dEaXNhYmxlZENvbG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgTmF2QXJyb3dEaXNhYmxlZENvbG9yID0gJ25hdkFycm93RGlzYWJsZWRDb2xvcicsXG5cbiAgLy8gRFBJX05hdkFycm93SG92ZXJDb2xvciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE5hdkFycm93SG92ZXJDb2xvciA9ICduYXZBcnJvd0hvdmVyQ29sb3InLFxuXG4gIC8vIERQSV9OYXZBcnJvd0lkbGVDb2xvciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE5hdkFycm93SWRsZUNvbG9yID0gJ25hdkFycm93SWRsZUNvbG9yJyxcblxuICAvLyBEUElfTmF2QXJyb3dQcmVzc2VkQ29sb3IsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBOYXZBcnJvd1ByZXNzZWRDb2xvciA9ICduYXZBcnJvd1ByZXNzZWRDb2xvcicsXG5cbiAgLy8gRFBJX1BhbmVDb2xvciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFBhbmVDb2xvciA9ICdwYW5lQ29sb3InLFxuXG4gIC8vIERQSV9QcmVzc0NvbG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgUHJlc3NDb2xvciA9ICdwcmVzc0NvbG9yJyxcblxuICAvLyBEUElfUmVzaXplQm9yZGVyQ29sb3IsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBSZXNpemVCb3JkZXJDb2xvciA9ICdyZXNpemVCb3JkZXJDb2xvcicsXG5cbiAgLy8gRFBJX1NlbGVjdEJHQ29sb3IsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTZWxlY3RCR0NvbG9yID0gJ3NlbGVjdEJnQ29sb3InLFxuXG4gIC8vIERQSV9TZWxlY3Rpb25UZXh0Q29sb3IsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBTZWxlY3Rpb25UZXh0Q29sb3IgPSAnc2VsZWN0aW9uVGV4dENvbG9yJyxcblxuICAvLyBEUElfU3dhdGNoQmFja2dyb3VuZENvbG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgU3dhdGNoQmFja2dyb3VuZENvbG9yID0gJ3N3YXRjaEJnQ29sb3InLFxuXG4gIC8vIERQSV9Td2F0Y2hCb3JkZXJDb2xvciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIFN3YXRjaEJvcmRlckNvbG9yID0gJ3N3YXRjaEJvcmRlckNvbG9yJyxcblxuICAvLyBEUElfVGFiQ29sb3IsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBUYWJDb2xvciA9ICd0YWJDb2xvcicsXG5cbiAgLy8gRFBJX0NvbG9ycywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgQ29sb3JzID0gJ2NvbG9ycycsXG5cbiAgLy8gRFBJX0NvbG9yTWFwLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIHN0cmluZylcbiAgQ29sb3JNYXAgPSAnY29sb3JNYXAnLFxuXG4gIC8vIERQSV9QaXhtYXAsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBQaXhtYXAgPSAncGl4bWFwJyxcblxuICAvLyBEUElfSW1hZ2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBJbWFnZSA9ICdpbWFnZScsXG5cbiAgLy8gRFBJX092ZXJsYXlJbWFnZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIE92ZXJsYXlJbWFnZSA9ICdvdmVybGF5SW1hZ2UnLFxuXG4gIC8vIERQSV9JY29uSW1hZ2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICBJY29uSW1hZ2UgPSAnaWNvbkltYWdlJyxcblxuICAvLyBEUElfSW1hZ2VMaXN0LCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICBJbWFnZUxpc3QgPSAnaW1hZ2VMaXN0JyxcblxuICAvLyBEUElfSW1hZ2VNYXAsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2Ygc3RyaW5nKVxuICBJbWFnZU1hcCA9ICdpbWFnZU1hcCcsXG5cbiAgLy8gRFBJX1VVSUQsIGhhdmluZyB0eXBlIG9iamVjdFxuICBVVUlEID0gJ3V1aWQnLFxuXG4gIC8vIERQSV9OYW5vc2Vjb25kcywgaGF2aW5nIHR5cGUgb2JqZWN0XG4gIE5hbm9zZWNvbmRzID0gJ25hbm9zZWNvbmRzJyxcblxuICAvLyBEUElfTWljcm9zZWNvbmRzLCBoYXZpbmcgdHlwZSBvYmplY3RcbiAgTWljcm9zZWNvbmRzID0gJ21pY3Jvc2Vjb25kcycsXG5cbiAgLy8gRFBJX01pbGxpc2Vjb25kcywgaGF2aW5nIHR5cGUgb2JqZWN0XG4gIE1pbGxpc2Vjb25kcyA9ICdtaWxsaXNlY29uZHMnLFxuXG4gIC8vIERQSV9UaW1lb3V0UywgaGF2aW5nIHR5cGUgb2JqZWN0XG4gIFRpbWVvdXRTID0gJ3RpbWVvdXRTJyxcblxuICAvLyBEUElfTWludXRlcywgaGF2aW5nIHR5cGUgb2JqZWN0XG4gIE1pbnV0ZXMgPSAnbWludXRlcycsXG5cbiAgLy8gRFBJX0hvdXJzLCBoYXZpbmcgdHlwZSBvYmplY3RcbiAgSG91cnMgPSAnaG91cnMnLFxuXG4gIC8vIERQSV9DYXJkVHlwZSwgaGF2aW5nIHR5cGUgQ2FyZFR5cGVcbiAgQ2FyZFR5cGUgPSAnY2FyZFR5cGUnLFxuXG4gIC8vIERQSV9Eb2NQYXJhbWV0ZXJJRCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gIERvY1BhcmFtZXRlcklEID0gJ3R5cGUnLFxuXG4gIC8vIERQSV9Bcmd1bWVudFBhcmFtLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgQXJndW1lbnRQYXJhbSA9ICdhcmd1bWVudFBhcmFtJyxcblxuICAvLyBEUElfQXJndW1lbnRQYXJhbXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gIEFyZ3VtZW50UGFyYW1zID0gJ2FyZ3VtZW50UGFyYW1zJyxcblxuICAvLyBEUElfQWN0aW9uVHlwZSwgaGF2aW5nIHR5cGUgQWN0aW9uVHlwZVxuICBBY3Rpb25UeXBlID0gJ2FjdGlvblR5cGUnLFxuXG4gIC8vIERQSV9Bbm5vdGF0ZUVudW0sIGhhdmluZyB0eXBlIEFubm90YXRlRW51bVxuICBBbm5vdGF0ZUVudW0gPSAnYW5ub3RhdGVFbnVtJyxcblxuICAvLyBEUElfSm9pblR5cGUsIGhhdmluZyB0eXBlIFNRTEpvaW5UeXBlXG4gIEpvaW5UeXBlID0gJ2pvaW5UeXBlJyxcblxuICAvLyBEUElfU3VwcG9ydGVkSm9pblR5cGVzLCBoYXZpbmcgdHlwZSBTUUxKb2luVHlwZVtdXG4gIFN1cHBvcnRlZEpvaW5UeXBlcyA9ICdzdXBwb3J0ZWRKb2luVHlwZXMnLFxuXG4gIC8vIERQSV9Sb3VuZGluZywgaGF2aW5nIHR5cGUgUm91bmRpbmdcbiAgUm91bmRpbmcgPSAncm91bmRpbmdFbnVtJyxcblxuICAvLyBEUElfQm9keVR5cGUsIGhhdmluZyB0eXBlIEJvZHlUeXBlXG4gIEJvZHlUeXBlID0gJ2JvZHlUeXBlJyxcblxuICAvLyBEUElfTGluZUVuZCwgaGF2aW5nIHR5cGUgTGluZUVuZFxuICBMaW5lRW5kID0gJ2xpbmVFbmRFbnVtJyxcblxuICAvLyBEUElfTGluZUVuZFNpemUsIGhhdmluZyB0eXBlIExpbmVFbmRTaXplXG4gIExpbmVFbmRTaXplID0gJ2xpbmVFbmRTaXplRW51bScsXG5cbiAgLy8gRFBJX0JydXNoU3BlY2lhbEZpZWxkcywgaGF2aW5nIHR5cGUgQnJ1c2hTcGVjaWFsRmllbGRzXG4gIEJydXNoU3BlY2lhbEZpZWxkcyA9ICdzcGVjaWFsRmllbGRzJyxcblxuICAvLyBEUElfQ2VsbFNpemVDaGFuZ2UsIGhhdmluZyB0eXBlIENlbGxTaXplQ2hhbmdlXG4gIENlbGxTaXplQ2hhbmdlID0gJ2NlbGxTaXplQ2hhbmdlJyxcblxuICAvLyBEUElfQ2VsbFR5cGUsIGhhdmluZyB0eXBlIENlbGxUeXBlXG4gIENlbGxUeXBlID0gJ2NlbGxUeXBlJyxcblxuICAvLyBEUElfQ29ubmVjdGlvbkF0dGVtcHRSZXN1bHQsIGhhdmluZyB0eXBlIENvbm5lY3Rpb25BdHRlbXB0UmVzdWx0XG4gIENvbm5lY3Rpb25BdHRlbXB0UmVzdWx0ID0gJ2Nvbm5lY3Rpb25BdHRlbXB0UmVzdWx0JyxcblxuICAvLyBEUElfQ29ubmVjdGlvbkVycm9yU3RhZ2UsIGhhdmluZyB0eXBlIENvbm5lY3Rpb25FcnJvclN0YWdlXG4gIENvbm5lY3Rpb25FcnJvclN0YWdlID0gJ2Nvbm5lY3Rpb25FcnJvclN0YWdlJyxcblxuICAvLyBEUElfQ29ubmVjdGlvbkVycm9yVHlwZSwgaGF2aW5nIHR5cGUgQ29ubmVjdGlvbkVycm9yVHlwZVxuICBDb25uZWN0aW9uRXJyb3JUeXBlID0gJ2Nvbm5lY3Rpb25FcnJvclR5cGUnLFxuXG4gIC8vIERQSV9EYXRhU2VydmVyQ29ubmVjdGlvblJlc3VsdCwgaGF2aW5nIHR5cGUgRGF0YVNlcnZlckNvbm5lY3Rpb25SZXN1bHRcbiAgRGF0YVNlcnZlckNvbm5lY3Rpb25SZXN1bHQgPSAnZHNDb25uZWN0aW9uUmVzdWx0JyxcblxuICAvLyBEUElfRHJvcFdoZW4sIGhhdmluZyB0eXBlIERyb3BXaGVuXG4gIERyb3BXaGVuID0gJ2Ryb3BXaGVuJyxcblxuICAvLyBEUElfRHJvcFR5cGUsIGhhdmluZyB0eXBlIERyb3BGaWVsZFJlc3VsdFxuICBEcm9wVHlwZSA9ICdkcm9wVHlwZScsXG5cbiAgLy8gRFBJX0VuY29kaW5nVHlwZSwgaGF2aW5nIHR5cGUgRW5jb2RpbmdUeXBlXG4gIEVuY29kaW5nVHlwZSA9ICdlbmNvZGluZ1R5cGUnLFxuXG4gIC8vIERQSV9Ecm9wZG93bkVuY29kaW5nVHlwZSwgaGF2aW5nIHR5cGUgRW5jb2RpbmdUeXBlXG4gIERyb3Bkb3duRW5jb2RpbmdUeXBlID0gJ2Ryb3Bkb3duRW5jb2RpbmdUeXBlJyxcblxuICAvLyBEUElfRW5jb2RpbmdUeXBlcywgaGF2aW5nIHR5cGUgRW5jb2RpbmdUeXBlW11cbiAgRW5jb2RpbmdUeXBlcyA9ICdlbmNvZGluZ1R5cGVzJyxcblxuICAvLyBEUElfRmllbGRPcmRlclR5cGUsIGhhdmluZyB0eXBlIEZpZWxkT3JkZXJUeXBlXG4gIEZpZWxkT3JkZXJUeXBlID0gJ2ZpZWxkT3JkZXJUeXBlJyxcblxuICAvLyBEUElfRmlsdGVySWNvblR5cGUsIGhhdmluZyB0eXBlIEZpbHRlckljb25UeXBlXG4gIEZpbHRlckljb25UeXBlID0gJ2ZpbHRlckljb25UeXBlJyxcblxuICAvLyBEUElfRmlsdGVySWNvblR5cGVzLCBoYXZpbmcgdHlwZSBGaWx0ZXJJY29uVHlwZVtdXG4gIEZpbHRlckljb25UeXBlcyA9ICdmaWx0ZXJJY29uVHlwZXMnLFxuXG4gIC8vIERQSV9GbG9hdGluZ1Rvb2xiYXJWaXMsIGhhdmluZyB0eXBlIEZsb2F0aW5nVG9vbGJhclZpc2liaWxpdHlcbiAgRmxvYXRpbmdUb29sYmFyVmlzID0gJ3Rvb2xiYXJWaXNpYmlsaXR5JyxcblxuICAvLyBEUElfRm9sZGVyUm9sZSwgaGF2aW5nIHR5cGUgRm9sZGVyUm9sZVxuICBGb2xkZXJSb2xlID0gJ2ZvbGRlclJvbGUnLFxuXG4gIC8vIERQSV9MZWdlbmRUeXBlLCBoYXZpbmcgdHlwZSBFbnVtXG4gIExlZ2VuZFR5cGUgPSAnbGVnZW5kVHlwZScsXG5cbiAgLy8gRFBJX0ZvcmVjYXN0TW9kZWxUeXBlLCBoYXZpbmcgdHlwZSBGb3JlY2FzdE1vZGVsVHlwZVxuICBGb3JlY2FzdE1vZGVsVHlwZSA9ICdmb3JlY2FzdE1vZGVsVHlwZScsXG5cbiAgLy8gRFBJX0ZvcmVjYXN0VHJlbmRUeXBlLCBoYXZpbmcgdHlwZSBGb3JlY2FzdENvbXBvbmVudFR5cGVcbiAgRm9yZWNhc3RUcmVuZFR5cGUgPSAnZm9yZWNhc3RUcmVuZFR5cGUnLFxuXG4gIC8vIERQSV9Gb3JlY2FzdFNlYXNvblR5cGUsIGhhdmluZyB0eXBlIEZvcmVjYXN0Q29tcG9uZW50VHlwZVxuICBGb3JlY2FzdFNlYXNvblR5cGUgPSAnZm9yZWNhc3RTZWFzb25UeXBlJyxcblxuICAvLyBEUElfRm9yZWNhc3RSYW5nZVR5cGUsIGhhdmluZyB0eXBlIEZvcmVjYXN0UmFuZ2VUeXBlXG4gIEZvcmVjYXN0UmFuZ2VUeXBlID0gJ2ZvcmVjYXN0UmFuZ2VUeXBlJyxcblxuICAvLyBEUElfRm9yZWNhc3RTdGF0dXMsIGhhdmluZyB0eXBlIEZvcmVjYXN0U3RhdHVzXG4gIEZvcmVjYXN0U3RhdHVzID0gJ2ZvcmVjYXN0U3RhdHVzJyxcblxuICAvLyBEUElfU2hlZXRGb3JlY2FzdFN0YXR1cywgaGF2aW5nIHR5cGUgRm9yZWNhc3RTdGF0dXNcbiAgU2hlZXRGb3JlY2FzdFN0YXR1cyA9ICdzaGVldEZvcmVjYXN0U3RhdHVzJyxcblxuICAvLyBEUElfUERGb3JlY2FzdFN0YXR1c0xpc3QsIGhhdmluZyB0eXBlIEZvcmVjYXN0U3RhdHVzW11cbiAgUERGb3JlY2FzdFN0YXR1c0xpc3QgPSAncGFuZURlc2NyaXB0b3JGb3JlY2FzdFN0YXR1c0xpc3QnLFxuXG4gIC8vIERQSV9Gb3JlY2FzdENvbHVtblR5cGUsIGhhdmluZyB0eXBlIEZvcmVjYXN0Q29sdW1uVHlwZVxuICBGb3JlY2FzdENvbHVtblR5cGUgPSAnZm9yZWNhc3RDb2x1bW5UeXBlJyxcblxuICAvLyBEUElfRGF0YVNjYWxpbmcsIGhhdmluZyB0eXBlIERhdGFTY2FsaW5nXG4gIERhdGFTY2FsaW5nID0gJ2RhdGFTY2FsaW5nJyxcblxuICAvLyBEUElfR2V0RmlsdGVySXRlbXNKc29uUmVzcG9uc2UsIGhhdmluZyB0eXBlIEdldEpzb25SZXNwb25zZUVudW1cbiAgR2V0RmlsdGVySXRlbXNKc29uUmVzcG9uc2UgPSAnZ2V0RmlsdGVySXRlbXNKc29uUmVzcG9uc2UnLFxuXG4gIC8vIERQSV9GaWx0ZXJTZWFyY2hKc29uUmVzcG9uc2UsIGhhdmluZyB0eXBlIEdldEpzb25SZXNwb25zZUVudW1cbiAgRmlsdGVyU2VhcmNoSnNvblJlc3BvbnNlID0gJ2ZpbHRlclNlYXJjaEpzb25SZXNwb25zZScsXG5cbiAgLy8gRFBJX0ZpbHRlclNlYXJjaFdpdGhJbmRleEpzb25SZXNwb25zZSwgaGF2aW5nIHR5cGUgR2V0SnNvblJlc3BvbnNlRW51bVxuICBGaWx0ZXJTZWFyY2hXaXRoSW5kZXhKc29uUmVzcG9uc2UgPSAnZmlsdGVyU2VhcmNoV2l0aEluZGV4SnNvblJlc3BvbnNlJyxcblxuICAvLyBEUElfRmlsdGVyU2hvd0NoaWxkcmVuSnNvblJlc3BvbnNlLCBoYXZpbmcgdHlwZSBHZXRKc29uUmVzcG9uc2VFbnVtXG4gIEZpbHRlclNob3dDaGlsZHJlbkpzb25SZXNwb25zZSA9ICdmaWx0ZXJTaG93Q2hpbGRyZW5Kc29uUmVzcG9uc2UnLFxuXG4gIC8vIERQSV9IQWxpZ25tZW50LCBoYXZpbmcgdHlwZSBMYWJlbEhBbGlnbm1lbnRcbiAgSEFsaWdubWVudCA9ICdob3Jpem9udGFsTGFiZWxBbGlnbm1lbnQnLFxuXG4gIC8vIERQSV9Kb2luVmFsaWRhdGlvbkVycm9yLCBoYXZpbmcgdHlwZSBKb2luVmFsaWRhdGlvbkVycm9yXG4gIEpvaW5WYWxpZGF0aW9uRXJyb3IgPSAnam9pblZhbGlkYXRpb25FcnJvcicsXG5cbiAgLy8gRFBJX05hbWVDb25mbGljdFJlc29sdXRpb24sIGhhdmluZyB0eXBlIE5hbWVDb25mbGljdFJlc29sdXRpb25cbiAgTmFtZUNvbmZsaWN0UmVzb2x1dGlvbiA9ICduYW1lQ29uZmxpY3RSZXNvbHV0aW9uJyxcblxuICAvLyBEUElfTGFiZWxEaXIsIGhhdmluZyB0eXBlIFRleHRPcmllbnRcbiAgTGFiZWxEaXIgPSAnbGFiZWxEaXJlY3Rpb24nLFxuXG4gIC8vIERQSV9MYWJlbEFsaWduLCBoYXZpbmcgdHlwZSBUZXh0QWxpZ25cbiAgTGFiZWxBbGlnbiA9ICdsYWJlbEFsaWdubWVudCcsXG5cbiAgLy8gRFBJX0xhYmVsV3JhcCwgaGF2aW5nIHR5cGUgVGV4dFdyYXBNb2RlXG4gIExhYmVsV3JhcCA9ICdsYWJlbFdyYXAnLFxuXG4gIC8vIERQSV9XcmFwTW9kZSwgaGF2aW5nIHR5cGUgVGV4dFdyYXBNb2RlXG4gIFdyYXBNb2RlID0gJ3dyYXBNb2RlJyxcblxuICAvLyBEUElfTWFya0VudW0sIGhhdmluZyB0eXBlIE1hcmtFbnVtXG4gIE1hcmtFbnVtID0gJ21hcmtFbnVtJyxcblxuICAvLyBEUElfUGVyY2VudE1vZGUsIGhhdmluZyB0eXBlIFBlcmNlbnRNb2RlXG4gIFBlcmNlbnRNb2RlID0gJ3BlcmNlbnRhZ2VNb2RlJyxcblxuICAvLyBEUElfUmVmZXJlbmNlT3B0aW9uc1NldCwgaGF2aW5nIHR5cGUgUmVmZXJlbmNlT3B0aW9uc1NldFxuICBSZWZlcmVuY2VPcHRpb25zU2V0ID0gJ3JlZmVyZW5jZU9wdGlvbnNTZXQnLFxuXG4gIC8vIERQSV9SZWZlcmVuY2VPcHRpb25zU2V0cywgaGF2aW5nIHR5cGUgUmVmZXJlbmNlT3B0aW9uc1NldFtdXG4gIFJlZmVyZW5jZU9wdGlvbnNTZXRzID0gJ3JlZmVyZW5jZU9wdGlvbnNTZXRzJyxcblxuICAvLyBEUElfUmFua1R5cGUsIGhhdmluZyB0eXBlIFJhbmtUeXBlXG4gIFJhbmtUeXBlID0gJ3JhbmtUeXBlJyxcblxuICAvLyBEUElfUmFua1R5cGVWYWx1ZXMsIGhhdmluZyB0eXBlIFJhbmtUeXBlW11cbiAgUmFua1R5cGVWYWx1ZXMgPSAncmFua1R5cGVWYWx1ZXMnLFxuXG4gIC8vIERQSV9TcGVjaWFsVmFsdWVzTW9kZSwgaGF2aW5nIHR5cGUgU3BlY2lhbFZhbHVlc01vZGVcbiAgU3BlY2lhbFZhbHVlc01vZGUgPSAnc3BlY2lhbFZhbHVlc01vZGUnLFxuXG4gIC8vIERQSV9WQWxpZ25tZW50LCBoYXZpbmcgdHlwZSBMYWJlbFZBbGlnbm1lbnRcbiAgVkFsaWdubWVudCA9ICd2ZXJ0aWNhbExhYmVsQWxpZ25tZW50JyxcblxuICAvLyBEUElfQ29sb3JNb2RlLCBoYXZpbmcgdHlwZSBDb2xvck1vZGVcbiAgQ29sb3JNb2RlID0gJ2NvbG9yTW9kZScsXG5cbiAgLy8gRFBJX01hcmtMYWJlbHNNb2RlLCBoYXZpbmcgdHlwZSBNYXJrTGFiZWxzTW9kZVxuICBNYXJrTGFiZWxzTW9kZSA9ICdtYXJrTGFiZWxzTW9kZScsXG5cbiAgLy8gRFBJX01hcmtMYWJlbHNTY29wZSwgaGF2aW5nIHR5cGUgTWFya0xhYmVsc1Njb3BlXG4gIE1hcmtMYWJlbHNTY29wZSA9ICdtYXJrTGFiZWxzU2NvcGUnLFxuXG4gIC8vIERQSV9NYXJrTGFiZWxzVmlzaWJpbGl0eSwgaGF2aW5nIHR5cGUgTWFya0xhYmVsc1Zpc2liaWxpdHlcbiAgTWFya0xhYmVsc1Zpc2liaWxpdHkgPSAnbWFya0xhYmVsc1Zpc2liaWxpdHknLFxuXG4gIC8vIERQSV9QcmltaXRpdmVUeXBlLCBoYXZpbmcgdHlwZSBQcmltaXRpdmVUeXBlXG4gIFByaW1pdGl2ZVR5cGUgPSAncHJpbWl0aXZlVHlwZScsXG5cbiAgLy8gRFBJX0FjdHVhbFByaW1pdGl2ZVR5cGUsIGhhdmluZyB0eXBlIFByaW1pdGl2ZVR5cGVcbiAgQWN0dWFsUHJpbWl0aXZlVHlwZSA9ICdhY3R1YWxQcmltaXRpdmVUeXBlJyxcblxuICAvLyBEUElfUHJpbWl0aXZlVHlwZXMsIGhhdmluZyB0eXBlIFByaW1pdGl2ZVR5cGVbXVxuICBQcmltaXRpdmVUeXBlcyA9ICdwcmltaXRpdmVUeXBlcycsXG5cbiAgLy8gRFBJX1NoYXBlVHlwZSwgaGF2aW5nIHR5cGUgU2hhcGVUeXBlXG4gIFNoYXBlVHlwZSA9ICdzaGFwZVR5cGUnLFxuXG4gIC8vIERQSV9Tb3J0VHlwZSwgaGF2aW5nIHR5cGUgU29ydFR5cGVcbiAgU29ydFR5cGUgPSAnc29ydEJ5JyxcblxuICAvLyBEUElfU29ydEVuZCwgaGF2aW5nIHR5cGUgU29ydEVuZFxuICBTb3J0RW5kID0gJ3NvcnRFbmQnLFxuXG4gIC8vIERQSV9TdGFja2luZ01vZGUsIGhhdmluZyB0eXBlIFN0YWNraW5nTW9kZVxuICBTdGFja2luZ01vZGUgPSAnc3RhY2tpbmdNb2RlJyxcblxuICAvLyBEUElfU3R5bGVUaGVtZSwgaGF2aW5nIHR5cGUgU3R5bGVUaGVtZVxuICBTdHlsZVRoZW1lID0gJ3N0eWxlVGhlbWUnLFxuXG4gIC8vIERQSV9UcmVuZExpbmVGaXRUeXBlLCBoYXZpbmcgdHlwZSBUcmVuZExpbmVGaXRUeXBlXG4gIFRyZW5kTGluZUZpdFR5cGUgPSAnZml0VHlwZScsXG5cbiAgLy8gRFBJX1VwZGF0ZVNjb3BlLCBoYXZpbmcgdHlwZSBVcGRhdGVTY29wZVxuICBVcGRhdGVTY29wZSA9ICd1cGRhdGVTY29wZScsXG5cbiAgLy8gRFBJX1BhcmFtZXRlckN0cmxEaXNwbGF5TW9kZSwgaGF2aW5nIHR5cGUgRGlzcGxheU1vZGVcbiAgUGFyYW1ldGVyQ3RybERpc3BsYXlNb2RlID0gJ3BhcmFtRGlzcGxheU1vZGUnLFxuXG4gIC8vIERQSV9QYXJhbWV0ZXJDdHJsRGlzcGxheUZsYWcsIGhhdmluZyB0eXBlIFBhcmFtZXRlckN0cmxEaXNwbGF5RmxhZ1xuICBQYXJhbWV0ZXJDdHJsRGlzcGxheUZsYWcgPSAncGFyYW1EaXNwbGF5RmxhZycsXG5cbiAgLy8gRFBJX0luY2x1ZGVkLCBoYXZpbmcgdHlwZSBRdWFudGl0YXRpdmVJbmNsdWRlZFZhbHVlc1xuICBJbmNsdWRlZCA9ICdpbmNsdWRlZCcsXG5cbiAgLy8gRFBJX0NvbW1hbmRzVHlwZSwgaGF2aW5nIHR5cGUgQ29tbWFuZHNUeXBlXG4gIENvbW1hbmRzVHlwZSA9ICdjb21tYW5kc1R5cGUnLFxuXG4gIC8vIERQSV9QYXJhbWV0ZXJEb21haW5UeXBlLCBoYXZpbmcgdHlwZSBEb21haW5UeXBlXG4gIFBhcmFtZXRlckRvbWFpblR5cGUgPSAncGFyYW1ldGVyRG9tYWluVHlwZScsXG5cbiAgLy8gRFBJX0ZpbHRlckRvbWFpblR5cGUsIGhhdmluZyB0eXBlIERvbWFpblR5cGVcbiAgRmlsdGVyRG9tYWluVHlwZSA9ICdmaWx0ZXJEb21haW5UeXBlJyxcblxuICAvLyBEUElfRmlsdGVyRG9tYWlucywgaGF2aW5nIHR5cGUgRG9tYWluVHlwZVtdXG4gIEZpbHRlckRvbWFpbnMgPSAnZmlsdGVyRG9tYWlucycsXG5cbiAgLy8gRFBJX0NhdGVnb3JpY2FsRmlsdGVyVHlwZSwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxGaWx0ZXJUeXBlXG4gIENhdGVnb3JpY2FsRmlsdGVyVHlwZSA9ICdjYXRlZ29yaWNhbEZpbHRlclR5cGUnLFxuXG4gIC8vIERQSV9EYXRlUGVyaW9kVHlwZSwgaGF2aW5nIHR5cGUgRGF0ZVBlcmlvZFR5cGVcbiAgRGF0ZVBlcmlvZFR5cGUgPSAnZGF0ZVBlcmlvZFR5cGUnLFxuXG4gIC8vIERQSV9GaWx0ZXJQYXR0ZXJuVHlwZSwgaGF2aW5nIHR5cGUgUGF0dGVyblR5cGVcbiAgRmlsdGVyUGF0dGVyblR5cGUgPSAnZmlsdGVyUGF0dGVyblR5cGUnLFxuXG4gIC8vIERQSV9GaWx0ZXJDb25kaXRpb25UeXBlLCBoYXZpbmcgdHlwZSBDb25kaXRpb25UeXBlXG4gIEZpbHRlckNvbmRpdGlvblR5cGUgPSAnZmlsdGVyQ29uZGl0aW9uVHlwZScsXG5cbiAgLy8gRFBJX0ZpbHRlcnNQcmVzZXRUeXBlLCBoYXZpbmcgdHlwZSBQcmVzZXRUeXBlXG4gIEZpbHRlcnNQcmVzZXRUeXBlID0gJ2ZpbHRlcnNQcmVzZXRUeXBlJyxcblxuICAvLyBEUElfRmlsdGVyc1JhbmdlVHlwZSwgaGF2aW5nIHR5cGUgUmFuZ2VUeXBlXG4gIEZpbHRlcnNSYW5nZVR5cGUgPSAnZmlsdGVyc1JhbmdlVHlwZScsXG5cbiAgLy8gRFBJX0RhdGVSYW5nZVR5cGUsIGhhdmluZyB0eXBlIFJlbGF0aXZlRGF0ZVJhbmdlVHlwZVxuICBEYXRlUmFuZ2VUeXBlID0gJ2RhdGVSYW5nZVR5cGUnLFxuXG4gIC8vIERQSV9QYWdlRmxhZywgaGF2aW5nIHR5cGUgUGFnZU5hdkZsYWdzXG4gIFBhZ2VGbGFnID0gJ3BhZ2VGbGFnJyxcblxuICAvLyBEUElfTWFya3NUb1RyYWlsLCBoYXZpbmcgdHlwZSBNYXJrc1RvVHJhaWxcbiAgTWFya3NUb1RyYWlsID0gJ21hcmtzVG9UcmFpbCcsXG5cbiAgLy8gRFBJX1RyYWlsVHlwZSwgaGF2aW5nIHR5cGUgVHJhaWxUeXBlXG4gIFRyYWlsVHlwZSA9ICd0cmFpbFR5cGUnLFxuXG4gIC8vIERQSV9DaGFuZ2VQYWdlRGlyZWN0aW9uLCBoYXZpbmcgdHlwZSBDaGFuZ2VQYWdlVHlwZVxuICBDaGFuZ2VQYWdlRGlyZWN0aW9uID0gJ2NoYW5nZVRvJyxcblxuICAvLyBEUElfQW5pbWF0aW9uQ29udHJvbCwgaGF2aW5nIHR5cGUgUGFnZUFuaW1hdGlvbkNvbnRyb2xcbiAgQW5pbWF0aW9uQ29udHJvbCA9ICdhbmltYXRpb25Db250cm9sJyxcblxuICAvLyBEUElfTGluZVBhdHRlcm4sIGhhdmluZyB0eXBlIExpbmVQYXR0ZXJuXG4gIExpbmVQYXR0ZXJuID0gJ2xpbmVQYXR0ZXJuJyxcblxuICAvLyBEUElfTGluZUNhcCwgaGF2aW5nIHR5cGUgTGluZUNhcFxuICBMaW5lQ2FwID0gJ2xpbmVDYXAnLFxuXG4gIC8vIERQSV9MaW5lSm9pbiwgaGF2aW5nIHR5cGUgTGluZUpvaW5cbiAgTGluZUpvaW4gPSAnbGluZUpvaW4nLFxuXG4gIC8vIERQSV9MaW5lQWxpZ25tZW50LCBoYXZpbmcgdHlwZSBMaW5lQWxpZ25tZW50XG4gIExpbmVBbGlnbm1lbnQgPSAnbGluZUFsaWdubWVudCcsXG5cbiAgLy8gRFBJX0ZpbGxNb2RlLCBoYXZpbmcgdHlwZSBGaWxsTW9kZVxuICBGaWxsTW9kZSA9ICdmaWxsTW9kZScsXG5cbiAgLy8gRFBJX0N1cnNvclNoYXBlLCBoYXZpbmcgdHlwZSBDdXJzb3JTaGFwZVxuICBDdXJzb3JTaGFwZSA9ICdjdXJzb3JTaGFwZScsXG5cbiAgLy8gRFBJX1Nob3dNZUNvbW1hbmRUeXBlLCBoYXZpbmcgdHlwZSBTaG93TWVDb21tYW5kVHlwZVxuICBTaG93TWVDb21tYW5kVHlwZSA9ICdzaG93TWVDb21tYW5kVHlwZScsXG5cbiAgLy8gRFBJX1NoZWxmSWNvblR5cGUsIGhhdmluZyB0eXBlIFNoZWxmSWNvblR5cGVcbiAgU2hlbGZJY29uVHlwZSA9ICdzaGVsZkljb25UeXBlJyxcblxuICAvLyBEUElfU2hlbGZJY29uVHlwZXMsIGhhdmluZyB0eXBlIFNoZWxmSWNvblR5cGVbXVxuICBTaGVsZkljb25UeXBlcyA9ICdzaGVsZkljb25UeXBlcycsXG5cbiAgLy8gRFBJX0l0ZW1EcmF3U3R5bGUsIGhhdmluZyB0eXBlIEl0ZW1EcmF3U3R5bGVcbiAgSXRlbURyYXdTdHlsZSA9ICdpdGVtRHJhd1N0eWxlJyxcblxuICAvLyBEUElfU2NhbGVNb2RlLCBoYXZpbmcgdHlwZSBTY2FsZU1vZGVcbiAgU2NhbGVNb2RlID0gJ3BhZ2VTY2FsZU1vZGUnLFxuXG4gIC8vIERQSV9QYWdlT3JpZW50YXRpb25PcHRpb24sIGhhdmluZyB0eXBlIFBhZ2VPcmllbnRhdGlvblxuICBQYWdlT3JpZW50YXRpb25PcHRpb24gPSAncGFnZU9yaWVudGF0aW9uT3B0aW9uJyxcblxuICAvLyBEUElfUGFnZVNpemVPcHRpb24sIGhhdmluZyB0eXBlIFBhZ2VTaXplT3B0aW9uXG4gIFBhZ2VTaXplT3B0aW9uID0gJ3BhZ2VTaXplT3B0aW9uJyxcblxuICAvLyBEUElfU29ydFJlZ2lvblR5cGUsIGhhdmluZyB0eXBlIFNvcnRSZWdpb25UeXBlXG4gIFNvcnRSZWdpb25UeXBlID0gJ3NvcnRSZWdpb24nLFxuXG4gIC8vIERQSV9MZWdlbmRJdGVtTGF5b3V0LCBoYXZpbmcgdHlwZSBMZWdlbmRJdGVtTGF5b3V0XG4gIExlZ2VuZEl0ZW1MYXlvdXQgPSAnbGVnZW5kTGF5b3V0JyxcblxuICAvLyBEUElfTGVnZW5kSXRlbU9yZGVyLCBoYXZpbmcgdHlwZSBMZWdlbmRJdGVtT3JkZXJcbiAgTGVnZW5kSXRlbU9yZGVyID0gJ2xlZ2VuZE9yZGVyJyxcblxuICAvLyBEUElfVml6SW1hZ2VSZWdpb24sIGhhdmluZyB0eXBlIFZpekltYWdlUmVnaW9uXG4gIFZpekltYWdlUmVnaW9uID0gJ3InLFxuXG4gIC8vIERQSV9MZWdhY3lNZW51TmFtZSwgaGF2aW5nIHR5cGUgTGVnYWN5TWVudU5hbWVcbiAgTGVnYWN5TWVudU5hbWUgPSAnbGVnYWN5TWVudU5hbWUnLFxuXG4gIC8vIERQSV9MZWdhY3lNZW51U3RhdGUsIGhhdmluZyB0eXBlIExlZ2FjeU1lbnVTdGF0ZVxuICBMZWdhY3lNZW51U3RhdGUgPSAnbGVnYWN5TWVudVN0YXRlJyxcblxuICAvLyBEUElfTGVnYWN5TWVudVN0YXRlTGlzdCwgaGF2aW5nIHR5cGUgTGVnYWN5TWVudVN0YXRlW11cbiAgTGVnYWN5TWVudVN0YXRlTGlzdCA9ICdsZWdhY3lNZW51U3RhdGVzJyxcblxuICAvLyBEUElfRGltZW5zaW9uVHlwZSwgaGF2aW5nIHR5cGUgRGltZW5zaW9uVHlwZVxuICBEaW1lbnNpb25UeXBlID0gJ2RpbWVuc2lvblR5cGUnLFxuXG4gIC8vIERQSV9MYXlvdXRUeXBlLCBoYXZpbmcgdHlwZSBMYXlvdXRUeXBlXG4gIExheW91dFR5cGUgPSAnbGF5b3V0VHlwZScsXG5cbiAgLy8gRFBJX1NoZWxmVHlwZSwgaGF2aW5nIHR5cGUgU2hlbGZUeXBlXG4gIFNoZWxmVHlwZSA9ICdzaGVsZlR5cGUnLFxuXG4gIC8vIERQSV9MYXN0U2VsZWN0aW9uU2hlbGYsIGhhdmluZyB0eXBlIFNoZWxmVHlwZVxuICBMYXN0U2VsZWN0aW9uU2hlbGYgPSAnbGFzdFNoZWxmJyxcblxuICAvLyBEUElfU2NoZW1hVmlld2VyRGF0YVNvdXJjZVR5cGUsIGhhdmluZyB0eXBlIFNjaGVtYVZpZXdlckRhdGFTb3VyY2VUeXBlXG4gIFNjaGVtYVZpZXdlckRhdGFTb3VyY2VUeXBlID0gJ3NjaGVtYURhdGFzb3VyY2VUeXBlJyxcblxuICAvLyBEUElfU2NoZW1hSXRlbVR5cGUsIGhhdmluZyB0eXBlIFNjaGVtYUl0ZW1UeXBlXG4gIFNjaGVtYUl0ZW1UeXBlID0gJ3NjaGVtYUl0ZW1UeXBlJyxcblxuICAvLyBEUElfSFNNU2VsZWN0aW9uTW9kZSwgaGF2aW5nIHR5cGUgU2VsZWN0aW9uTW9kZVxuICBIU01TZWxlY3Rpb25Nb2RlID0gJ2hzbVNlbGVjdGlvbk1vZGUnLFxuXG4gIC8vIERQSV9IU01EZWZhdWx0TWVtYmVyVHlwZSwgaGF2aW5nIHR5cGUgRGVmYXVsdE1lbWJlclR5cGVcbiAgSFNNRGVmYXVsdE1lbWJlclR5cGUgPSAnaHNtRGVmYXVsdE1lbWJlclR5cGUnLFxuXG4gIC8vIERQSV9IU01Ob3RpZmljYXRpb25UeXBlLCBoYXZpbmcgdHlwZSBOb3RpZmljYXRpb25UeXBlXG4gIEhTTU5vdGlmaWNhdGlvblR5cGUgPSAnaHNtTm90aWZpY2F0aW9uVHlwZScsXG5cbiAgLy8gRFBJX0hTTVNlbGVjdGlvblJlcXVlc3RUeXBlLCBoYXZpbmcgdHlwZSBTZWxlY3Rpb25SZXF1ZXN0VHlwZVxuICBIU01TZWxlY3Rpb25SZXF1ZXN0VHlwZSA9ICdoc21TZWxlY3Rpb25SZXF1ZXN0VHlwZScsXG5cbiAgLy8gRFBJX0hTTU1lbWJlclNlbGVjdFJlcXVlc3RUeXBlLCBoYXZpbmcgdHlwZSBNZW1iZXJTZWxlY3RSZXF1ZXN0VHlwZVxuICBIU01NZW1iZXJTZWxlY3RSZXF1ZXN0VHlwZSA9ICdoc21NZW1iZXJTZWxlY3RSZXF1ZXN0VHlwZScsXG5cbiAgLy8gRFBJX1Bpdm90U3RyYXRlZ3ksIGhhdmluZyB0eXBlIEZpZWxkUGl2b3RTdHJhdGVneVxuICBQaXZvdFN0cmF0ZWd5ID0gJ3Bpdm90U3RyYXRlZ3knLFxuXG4gIC8vIERQSV9BbGlhc1R5cGUsIGhhdmluZyB0eXBlIEFsaWFzVHlwZVxuICBBbGlhc1R5cGUgPSAnYWxpYXNUeXBlJyxcblxuICAvLyBEUElfRFNPRGltZW5zaW9uU29ydE9yZGVyLCBoYXZpbmcgdHlwZSBEYXRhU291cmNlT3JkZXJcbiAgRFNPRGltZW5zaW9uU29ydE9yZGVyID0gJ2Rzb0RpbWVuc2lvblNvcnRPcmRlcicsXG5cbiAgLy8gRFBJX0RTT01lYXN1cmVTb3J0T3JkZXIsIGhhdmluZyB0eXBlIERhdGFTb3VyY2VPcmRlclxuICBEU09NZWFzdXJlU29ydE9yZGVyID0gJ2Rzb01lYXN1cmVTb3J0T3JkZXInLFxuXG4gIC8vIERQSV9EU09Tb3J0T3JkZXIsIGhhdmluZyB0eXBlIERhdGFTb3VyY2VPcmRlclxuICBEU09Tb3J0T3JkZXIgPSAnZHNvU29ydE9yZGVyJyxcblxuICAvLyBEUElfVlRBZ2dUeXBlLCBoYXZpbmcgdHlwZSBWVEFnZ1R5cGVcbiAgVlRBZ2dUeXBlID0gJ3Z0QWdncmVnYXRpb24nLFxuXG4gIC8vIERQSV9GaWVsZFR5cGVJY29uU2V0LCBoYXZpbmcgdHlwZSBGaWVsZFR5cGVJY29uU2V0XG4gIEZpZWxkVHlwZUljb25TZXQgPSAnZmllbGRJY29uU2V0JyxcblxuICAvLyBEUElfVmlzdWFsUGFydCwgaGF2aW5nIHR5cGUgVmlzdWFsUGFydFxuICBWaXN1YWxQYXJ0ID0gJ3Zpc3VhbFBhcnQnLFxuXG4gIC8vIERQSV9EZWZhdWx0TWFwVG9vbEVudW0sIGhhdmluZyB0eXBlIE1hcFRvb2xTZWxlY3Rpb25cbiAgRGVmYXVsdE1hcFRvb2xFbnVtID0gJ2RlZmF1bHRNYXBUb29sRW51bScsXG5cbiAgLy8gRFBJX0RlZmF1bHRNYXBVbml0RW51bSwgaGF2aW5nIHR5cGUgTWFwVW5pdFNlbGVjdGlvbkVudW1cbiAgRGVmYXVsdE1hcFVuaXRFbnVtID0gJ2RlZmF1bHRNYXBVbml0RW51bScsXG5cbiAgLy8gRFBJX1NjZW5lTW9kZWxEZXRhaWwsIGhhdmluZyB0eXBlIERldGFpbFxuICBTY2VuZU1vZGVsRGV0YWlsID0gJ3NjZW5lTW9kZWxEZXRhaWxFbnVtJyxcblxuICAvLyBEUElfU2NlbmVNb2RlbEhpdFR5cGUsIGhhdmluZyB0eXBlIEhpdFR5cGVcbiAgU2NlbmVNb2RlbEhpdFR5cGUgPSAnc2NlbmVNb2RlbEhpdFR5cGUnLFxuXG4gIC8vIERQSV9IaXRUZXN0U3R5bGUsIGhhdmluZyB0eXBlIEhpdFRlc3RTdHlsZVxuICBIaXRUZXN0U3R5bGUgPSAnaGl0VGVzdFN0eWxlJyxcblxuICAvLyBEUElfTWFya1N0YXRlLCBoYXZpbmcgdHlwZSBNYXJrU3RhdGVcbiAgTWFya1N0YXRlID0gJ21hcmtTdGF0ZScsXG5cbiAgLy8gRFBJX1NoZWV0VHlwZSwgaGF2aW5nIHR5cGUgU2hlZXRUeXBlXG4gIFNoZWV0VHlwZSA9ICdzaGVldFR5cGUnLFxuXG4gIC8vIERQSV9EcmFnU291cmNlLCBoYXZpbmcgdHlwZSBEcmFnRHJvcFR5cGVcbiAgRHJhZ1NvdXJjZSA9ICdkcmFnU291cmNlJyxcblxuICAvLyBEUElfRHJvcFRhcmdldCwgaGF2aW5nIHR5cGUgRHJhZ0Ryb3BUeXBlXG4gIERyb3BUYXJnZXQgPSAnZHJvcFRhcmdldCcsXG5cbiAgLy8gRFBJX1NoZWxmRHJvcEFjdGlvbiwgaGF2aW5nIHR5cGUgU2hlbGZEcm9wQWN0aW9uXG4gIFNoZWxmRHJvcEFjdGlvbiA9ICdzaGVsZkRyb3BBY3Rpb24nLFxuXG4gIC8vIERQSV9TaGVsZkRyb3BDb250ZXh0LCBoYXZpbmcgdHlwZSBTaGVsZkRyb3BDb250ZXh0XG4gIFNoZWxmRHJvcENvbnRleHQgPSAnc2hlbGZEcm9wQ29udGV4dCcsXG5cbiAgLy8gRFBJX0ZpbHRlclNlbGVjdGlvblRyYWNraW5nLCBoYXZpbmcgdHlwZSBTZWxlY3Rpb25UcmFja2luZ1xuICBGaWx0ZXJTZWxlY3Rpb25UcmFja2luZyA9ICdmaWx0ZXJTZWxlY3Rpb25UcmFja2luZycsXG5cbiAgLy8gRFBJX0ZpbHRlclVwZGF0ZVR5cGUsIGhhdmluZyB0eXBlIEZpbHRlclVwZGF0ZVR5cGVcbiAgRmlsdGVyVXBkYXRlVHlwZSA9ICdmaWx0ZXJVcGRhdGVUeXBlJyxcblxuICAvLyBEUElfRmlsdGVyVXBkYXRlUXVhbGlmaWVyVHlwZSwgaGF2aW5nIHR5cGUgRmlsdGVyVXBkYXRlUXVhbGlmaWVyVHlwZVxuICBGaWx0ZXJVcGRhdGVRdWFsaWZpZXJUeXBlID0gJ2ZpbHRlclVwZGF0ZVF1YWxpZmllclR5cGUnLFxuXG4gIC8vIERQSV9QYXJhbWV0ZXJFcnJvciwgaGF2aW5nIHR5cGUgUGFyYW1ldGVyRXJyb3JcbiAgUGFyYW1ldGVyRXJyb3IgPSAncGFyYW1ldGVyRXJyb3InLFxuXG4gIC8vIERQSV9TZWxlY3Rpb25UeXBlLCBoYXZpbmcgdHlwZSBTZWxlY3Rpb25UeXBlXG4gIFNlbGVjdGlvblR5cGUgPSAnc2VsZWN0aW9uVHlwZScsXG5cbiAgLy8gRFBJX1NlbGVjdGlvblVwZGF0ZVR5cGUsIGhhdmluZyB0eXBlIFNlbGVjdGlvblVwZGF0ZVR5cGVcbiAgU2VsZWN0aW9uVXBkYXRlVHlwZSA9ICdzZWxlY3Rpb25VcGRhdGVUeXBlJyxcblxuICAvLyBEUElfU2VsZWN0T3B0aW9ucywgaGF2aW5nIHR5cGUgU2VsZWN0T3B0aW9uc1xuICBTZWxlY3RPcHRpb25zID0gJ3NlbGVjdE9wdGlvbnMnLFxuXG4gIC8vIERQSV9XaGl0ZXNwYWNlU2VsZWN0aW9uQmVoYXZpb3IsIGhhdmluZyB0eXBlIFdoaXRlc3BhY2VTZWxlY3Rpb25CZWhhdmlvclxuICBXaGl0ZXNwYWNlU2VsZWN0aW9uQmVoYXZpb3IgPSAnd2hpdGVzcGFjZVNlbGVjdGlvbkJlaGF2aW9yJyxcblxuICAvLyBEUElfQXhpc09yaWVudGF0aW9uLCBoYXZpbmcgdHlwZSBPcmllbnRhdGlvblxuICBBeGlzT3JpZW50YXRpb24gPSAnYXhpc09yaWVudGF0aW9uJyxcblxuICAvLyBEUElfRGVjaW1hbE1vZGUsIGhhdmluZyB0eXBlIERlY2ltYWxNb2RlXG4gIERlY2ltYWxNb2RlID0gJ2RlY2ltYWxNb2RlJyxcblxuICAvLyBEUElfQWN0aXZhdGlvbk1ldGhvZCwgaGF2aW5nIHR5cGUgQWN0aXZhdGlvbk1ldGhvZFxuICBBY3RpdmF0aW9uTWV0aG9kID0gJ2FjdGl2YXRpb24nLFxuXG4gIC8vIERQSV9Tb3VyY2VUeXBlLCBoYXZpbmcgdHlwZSBTb3VyY2VUeXBlXG4gIFNvdXJjZVR5cGUgPSAnc291cmNlVHlwZScsXG5cbiAgLy8gRFBJX09uQ2xlYXIsIGhhdmluZyB0eXBlIE9uQ2xlYXJcbiAgT25DbGVhciA9ICdvbkNsZWFyJyxcblxuICAvLyBEUElfTWVyZ2VPclNwbGl0LCBoYXZpbmcgdHlwZSBNZXJnZU9yU3BsaXRcbiAgTWVyZ2VPclNwbGl0ID0gJ21lcmdlT3JTcGxpdCcsXG5cbiAgLy8gRFBJX0ZpbHRlck1vZGUsIGhhdmluZyB0eXBlIEZpbHRlck1vZGVcbiAgRmlsdGVyTW9kZSA9ICdmaWx0ZXJNb2RlJyxcblxuICAvLyBEUElfRmlsdGVyVHlwZSwgaGF2aW5nIHR5cGUgRmlsdGVyVHlwZVxuICBGaWx0ZXJUeXBlID0gJ2ZpbHRlclR5cGUnLFxuXG4gIC8vIERQSV9ab25lVHlwZSwgaGF2aW5nIHR5cGUgWm9uZVR5cGVcbiAgWm9uZVR5cGUgPSAnem9uZVR5cGUnLFxuXG4gIC8vIERQSV9ab25lTGF5b3V0VHlwZSwgaGF2aW5nIHR5cGUgWm9uZUxheW91dFR5cGVcbiAgWm9uZUxheW91dFR5cGUgPSAnem9uZUxheW91dFR5cGUnLFxuXG4gIC8vIERQSV9RdWlja1RhYmxlQ2FsY1R5cGUsIGhhdmluZyB0eXBlIFF1aWNrVGFibGVDYWxjQ29tbWFuZFR5cGVcbiAgUXVpY2tUYWJsZUNhbGNUeXBlID0gJ3F1aWNrVGFibGVDYWxjVHlwZScsXG5cbiAgLy8gRFBJX1RhYmxlQ2FsY0NvbW1hbmRUeXBlLCBoYXZpbmcgdHlwZSBUYWJsZUNhbGNDb21tYW5kVHlwZVxuICBUYWJsZUNhbGNDb21tYW5kVHlwZSA9ICd0YWJsZUNhbGNDb21tYW5kVHlwZScsXG5cbiAgLy8gRFBJX1RhYmxlQ2FsY0FkZHJlc3NUeXBlLCBoYXZpbmcgdHlwZSBUYWJsZUNhbGNBZGRyZXNzQ29tbWFuZFR5cGVcbiAgVGFibGVDYWxjQWRkcmVzc1R5cGUgPSAndGFibGVDYWxjQWRkcmVzc1R5cGUnLFxuXG4gIC8vIERQSV9NYXJrTGF5b3V0UHJpbWl0aXZlLCBoYXZpbmcgdHlwZSBQcmltaXRpdmVcbiAgTWFya0xheW91dFByaW1pdGl2ZSA9ICdtYXJrTGF5b3V0UHJpbWl0aXZlJyxcblxuICAvLyBEUElfTWFya0xheW91dFZpelR5cGUsIGhhdmluZyB0eXBlIFZpelR5cGVcbiAgTWFya0xheW91dFZpelR5cGUgPSAnbWFya0xheW91dFZpelR5cGUnLFxuXG4gIC8vIERQSV9NYXJrQWxpZ25tZW50LCBoYXZpbmcgdHlwZSBNYXJrQWxpZ25tZW50XG4gIE1hcmtBbGlnbm1lbnQgPSAnbWFya0FsaWdubWVudCcsXG5cbiAgLy8gRFBJX01vZGlmeVpvbmVaT3JkZXJUeXBlLCBoYXZpbmcgdHlwZSBNb2RpZnlab25lWk9yZGVyQ29tbWFuZFR5cGVcbiAgTW9kaWZ5Wm9uZVpPcmRlclR5cGUgPSAnbW9kaWZ5Wm9uZVpPcmRlclR5cGUnLFxuXG4gIC8vIERQSV9UZXh0UmVnaW9uSEFsaWduLCBoYXZpbmcgdHlwZSBUZXh0UmVnaW9uSEFsaWduXG4gIFRleHRSZWdpb25IQWxpZ24gPSAnaGFsaWduJyxcblxuICAvLyBEUElfVGV4dFJlZ2lvblZBbGlnbiwgaGF2aW5nIHR5cGUgVGV4dFJlZ2lvblZBbGlnblxuICBUZXh0UmVnaW9uVkFsaWduID0gJ3ZhbGlnbicsXG5cbiAgLy8gRFBJX1BhdGhFbGVtZW50LCBoYXZpbmcgdHlwZSBQYXRoRWxlbWVudFxuICBQYXRoRWxlbWVudCA9ICdwYXRoRWxlbWVudCcsXG5cbiAgLy8gRFBJX1BhdGhFbGVtZW50cywgaGF2aW5nIHR5cGUgUGF0aEVsZW1lbnRbXVxuICBQYXRoRWxlbWVudHMgPSAncGF0aEVsZW1lbnRzJyxcblxuICAvLyBEUElfUmVuZGVyTW9kZSwgaGF2aW5nIHR5cGUgUmVuZGVyTW9kZVxuICBSZW5kZXJNb2RlID0gJ3JlbmRlck1vZGUnLFxuXG4gIC8vIERQSV9Gb250U3R5bGUsIGhhdmluZyB0eXBlIFRhYmxlYXVGb250U3R5bGVcbiAgRm9udFN0eWxlID0gJ2ZvbnRTdHlsZScsXG5cbiAgLy8gRFBJX0ZvbnRXZWlnaHQsIGhhdmluZyB0eXBlIEZvbnRXZWlnaHRcbiAgRm9udFdlaWdodCA9ICdmb250V2VpZ2h0JyxcblxuICAvLyBEUElfVGV4dERlY29yYXRpb24sIGhhdmluZyB0eXBlIFRleHREZWNvcmF0aW9uXG4gIFRleHREZWNvcmF0aW9uID0gJ3RleHREZWNvcmF0aW9uJyxcblxuICAvLyBEUElfQm9yZGVyU3R5bGUsIGhhdmluZyB0eXBlIEJvcmRlclN0eWxlXG4gIEJvcmRlclN0eWxlID0gJ2JvcmRlclN0eWxlJyxcblxuICAvLyBEUElfQm9yZGVyU3R5bGVUb3AsIGhhdmluZyB0eXBlIEJvcmRlclN0eWxlXG4gIEJvcmRlclN0eWxlVG9wID0gJ2JvcmRlclN0eWxlVG9wJyxcblxuICAvLyBEUElfQm9yZGVyU3R5bGVSaWdodCwgaGF2aW5nIHR5cGUgQm9yZGVyU3R5bGVcbiAgQm9yZGVyU3R5bGVSaWdodCA9ICdib3JkZXJTdHlsZVJpZ2h0JyxcblxuICAvLyBEUElfQm9yZGVyU3R5bGVCb3R0b20sIGhhdmluZyB0eXBlIEJvcmRlclN0eWxlXG4gIEJvcmRlclN0eWxlQm90dG9tID0gJ2JvcmRlclN0eWxlQm90dG9tJyxcblxuICAvLyBEUElfQm9yZGVyU3R5bGVMZWZ0LCBoYXZpbmcgdHlwZSBCb3JkZXJTdHlsZVxuICBCb3JkZXJTdHlsZUxlZnQgPSAnYm9yZGVyU3R5bGVMZWZ0JyxcblxuICAvLyBEUElfRmxvYXRpbmdUb29sYmFyVmlzaWJpbGl0eSwgaGF2aW5nIHR5cGUgRmxvYXRpbmdUb29sYmFyVmlzaWJpbGl0eVxuICBGbG9hdGluZ1Rvb2xiYXJWaXNpYmlsaXR5ID0gJ2Zsb2F0aW5nVG9vbGJhclZpc2liaWxpdHknLFxuXG4gIC8vIERQSV9HZW9TZWFyY2hWaXNpYmlsaXR5LCBoYXZpbmcgdHlwZSBHZW9TZWFyY2hWaXNpYmlsaXR5XG4gIEdlb1NlYXJjaFZpc2liaWxpdHkgPSAnZ2VvZ3JhcGhpY1NlYXJjaFZpc2liaWxpdHknLFxuXG4gIC8vIERQSV9NYXBTY2FsZVZpc2liaWxpdHksIGhhdmluZyB0eXBlIE1hcFNjYWxlVmlzaWJpbGl0eVxuICBNYXBTY2FsZVZpc2liaWxpdHkgPSAnbWFwU2NhbGVWaXNpYmlsaXR5JyxcblxuICAvLyBEUElfVml6TmF2aWdhdGlvblNldHRpbmcsIGhhdmluZyB0eXBlIFZpek5hdmlnYXRpb25TZXR0aW5nXG4gIFZpek5hdmlnYXRpb25TZXR0aW5nID0gJ3Zpek5hdmlnYXRpb25TZXR0aW5nJyxcblxuICAvLyBEUElfQXV0b0RyaWxsVmlzaWJpbGl0eSwgaGF2aW5nIHR5cGUgQXV0b0RyaWxsVmlzaWJpbGl0eVxuICBBdXRvRHJpbGxWaXNpYmlsaXR5ID0gJ2F1dG9EcmlsbFZpc2liaWxpdHknLFxuXG4gIC8vIERQSV9DbGllbnRVSU1ldHJpY1R5cGUsIGhhdmluZyB0eXBlIENsaWVudFVJTWV0cmljVHlwZVxuICBDbGllbnRVSU1ldHJpY1R5cGUgPSAnY2xpZW50VWlNZXRyaWNUeXBlJyxcblxuICAvLyBEUElfU2hlZXRTY3JvbGxEaXJlY3Rpb24sIGhhdmluZyB0eXBlIFNoZWV0U2Nyb2xsRGlyZWN0aW9uXG4gIFNoZWV0U2Nyb2xsRGlyZWN0aW9uID0gJ3NoZWV0U2Nyb2xsRGlyZWN0aW9uJyxcblxuICAvLyBEUElfU2l6ZU1vZGUsIGhhdmluZyB0eXBlIFNpemVNb2RlXG4gIFNpemVNb2RlID0gJ3NpemVNb2RlJyxcblxuICAvLyBEUElfUGVyc3BlY3RpdmVBZ2dyZWdhdGUsIGhhdmluZyB0eXBlIFBlcnNwZWN0aXZlQWdncmVnYXRlXG4gIFBlcnNwZWN0aXZlQWdncmVnYXRlID0gJ3BlcnNwZWN0aXZlQWdncmVnYXRpb24nLFxuXG4gIC8vIERQSV9TdHlsZUF0dHJpYnV0ZSwgaGF2aW5nIHR5cGUgU3R5bGVBdHRyaWJ1dGVcbiAgU3R5bGVBdHRyaWJ1dGUgPSAnc3R5bGVBdHRyaWJ1dGUnLFxuXG4gIC8vIERQSV9TdHlsZUF0dHJpYnV0ZXMsIGhhdmluZyB0eXBlIFN0eWxlQXR0cmlidXRlW11cbiAgU3R5bGVBdHRyaWJ1dGVzID0gJ3N0eWxlQXR0cmlidXRlcycsXG5cbiAgLy8gRFBJX1N0eWxlRWxlbWVudCwgaGF2aW5nIHR5cGUgU3R5bGVFbGVtZW50XG4gIFN0eWxlRWxlbWVudCA9ICdzdHlsZUVsZW1lbnQnLFxuXG4gIC8vIERQSV9TdHlsZURhdGFDbGFzcywgaGF2aW5nIHR5cGUgU3R5bGVEYXRhQ2xhc3NcbiAgU3R5bGVEYXRhQ2xhc3MgPSAnc3R5bGVDbGFzcycsXG5cbiAgLy8gRFBJX1N0eWxlRmllbGRTY29wZSwgaGF2aW5nIHR5cGUgU3R5bGVGaWVsZFNjb3BlXG4gIFN0eWxlRmllbGRTY29wZSA9ICdzdHlsZVNjb3BlJyxcblxuICAvLyBEUElfRm9ybWF0Q29udHJvbFR5cGUsIGhhdmluZyB0eXBlIEZvcm1hdENvbnRyb2xUeXBlXG4gIEZvcm1hdENvbnRyb2xUeXBlID0gJ2Zvcm1hdFR5cGUnLFxuXG4gIC8vIERQSV9MaW5lSW50ZXJwb2xhdGlvbk1vZGUsIGhhdmluZyB0eXBlIExpbmVJbnRlcnBvbGF0aW9uTW9kZVxuICBMaW5lSW50ZXJwb2xhdGlvbk1vZGUgPSAnbGluZUludGVycG9sYXRpb25Nb2RlJyxcblxuICAvLyBEUElfTGluZU1hcmtlclBvc2l0aW9uLCBoYXZpbmcgdHlwZSBMaW5lTWFya2VyUG9zaXRpb25cbiAgTGluZU1hcmtlclBvc2l0aW9uID0gJ2xpbmVNYXJrZXJQb3NpdGlvbicsXG5cbiAgLy8gRFBJX01hcmtlcnNNb2RlLCBoYXZpbmcgdHlwZSBNYXJrTWFya2Vyc01vZGVcbiAgTWFya2Vyc01vZGUgPSAnbWFya2Vyc01vZGUnLFxuXG4gIC8vIERQSV9BcHBDb25maWdFbnVtLCBoYXZpbmcgdHlwZSBBcHBDb25maWdFbnVtXG4gIEFwcENvbmZpZ0VudW0gPSAnYXBwQ29uZmlnRW51bScsXG5cbiAgLy8gRFBJX0NvbG9yUGFsZXR0ZVR5cGUsIGhhdmluZyB0eXBlIENvbG9yUGFsZXR0ZVR5cGVcbiAgQ29sb3JQYWxldHRlVHlwZSA9ICdjb2xvclBhbGV0dGVUeXBlJyxcblxuICAvLyBEUElfRXh0cmFjdFR5cGUsIGhhdmluZyB0eXBlIEV4dHJhY3RUeXBlXG4gIEV4dHJhY3RUeXBlID0gJ2V4dHJhY3RUeXBlJyxcblxuICAvLyBEUElfQWN0aXZpdHlEaXNwb3NpdGlvbiwgaGF2aW5nIHR5cGUgQWN0aXZpdHlEaXNwb3NpdGlvblxuICBBY3Rpdml0eURpc3Bvc2l0aW9uID0gJ2FjdGl2aXR5RGlzcG9zaXRpb24nLFxuXG4gIC8vIERQSV9BY3Rpdml0eVJlc3VsdCwgaGF2aW5nIHR5cGUgQWN0aXZpdHlSZXN1bHRcbiAgQWN0aXZpdHlSZXN1bHQgPSAnYWN0aXZpdHlSZXN1bHQnLFxuXG4gIC8vIERQSV9Ub29sdGlwTW9kZSwgaGF2aW5nIHR5cGUgVG9vbHRpcE1vZGVcbiAgVG9vbHRpcE1vZGUgPSAndG9vbHRpcE1vZGUnLFxuXG4gIC8vIERQSV9SdW50aW1lT3V0cHV0LCBoYXZpbmcgdHlwZSBSdW50aW1lT3V0cHV0XG4gIFJ1bnRpbWVPdXRwdXQgPSAncnVudGltZU91dHB1dCcsXG5cbiAgLy8gRFBJX0FuYWx5dGljc09iamVjdFR5cGUsIGhhdmluZyB0eXBlIEFuYWx5dGljc09iamVjdFR5cGVcbiAgQW5hbHl0aWNzT2JqZWN0VHlwZSA9ICdhbmFseXRpY3NPYmplY3RUeXBlJyxcblxuICAvLyBEUElfVUlBdXRvbWF0aW9uU3RhdHVzLCBoYXZpbmcgdHlwZSBVSUF1dG9tYXRpb25Db21tYW5kU3RhdHVzXG4gIFVJQXV0b21hdGlvblN0YXR1cyA9ICd1aUF1dG9tYXRpb25TdGF0dXMnLFxuXG4gIC8vIERQSV9UYWJsZVZpZXdEYXRhVHlwZSwgaGF2aW5nIHR5cGUgVGFibGVWaWV3RGF0YVR5cGVcbiAgVGFibGVWaWV3RGF0YVR5cGUgPSAndGFibGVWaWV3ZXJEYXRhVHlwZScsXG5cbiAgLy8gRFBJX1VuaXRzRm9ybWF0LCBoYXZpbmcgdHlwZSBVbml0c0Zvcm1hdEVudW1cbiAgVW5pdHNGb3JtYXQgPSAndW5pdHNGb3JtYXQnLFxuXG4gIC8vIERQSV9GaWx0ZXJMaW1pdFR5cGUsIGhhdmluZyB0eXBlIExpbWl0VHlwZVxuICBGaWx0ZXJMaW1pdFR5cGUgPSAnZmlsdGVyTGltaXRUeXBlJyxcblxuICAvLyBEUElfRGlzdHJpYnV0aW9uU2VsZWN0ZWRUeXBlLCBoYXZpbmcgdHlwZSBEaXN0cmlidXRpb25UeXBlXG4gIERpc3RyaWJ1dGlvblNlbGVjdGVkVHlwZSA9ICdkaXN0cmlidXRpb25TZWxlY3RlZFR5cGUnLFxuXG4gIC8vIERQSV9EaXN0cmlidXRpb25UeXBlLCBoYXZpbmcgdHlwZSBEaXN0cmlidXRpb25UeXBlXG4gIERpc3RyaWJ1dGlvblR5cGUgPSAnZGlzdHJpYnV0aW9uVHlwZScsXG5cbiAgLy8gRFBJX1RyYW5zbGF0ZWREaXN0cmlidXRpb25UeXBlLCBoYXZpbmcgdHlwZSBUcmFuc2xhdGVkRGlzdHJpYnV0aW9uVHlwZVByZXNNb2RlbFxuICBUcmFuc2xhdGVkRGlzdHJpYnV0aW9uVHlwZSA9ICd0cmFuc2xhdGVkRGlzdHJpYnV0aW9uVHlwZScsXG5cbiAgLy8gRFBJX1RyYW5zbGF0ZWREaXN0cmlidXRpb25UeXBlcywgaGF2aW5nIHR5cGUgVHJhbnNsYXRlZERpc3RyaWJ1dGlvblR5cGVQcmVzTW9kZWxbXVxuICBUcmFuc2xhdGVkRGlzdHJpYnV0aW9uVHlwZXMgPSAndHJhbnNsYXRlZERpc3RyaWJ1dGlvblR5cGVzJyxcblxuICAvLyBEUElfUmVmTGluZUZvcm11bGFHcm91cCwgaGF2aW5nIHR5cGUgRm9ybXVsYUdyb3VwXG4gIFJlZkxpbmVGb3JtdWxhR3JvdXAgPSAncmVmbGluZUZvcm11bGFHcm91cCcsXG5cbiAgLy8gRFBJX1JlZmVyZW5jZUxpbmVTY29wZVR5cGUsIGhhdmluZyB0eXBlIFNjb3BlVHlwZVxuICBSZWZlcmVuY2VMaW5lU2NvcGVUeXBlID0gJ3JlZmVyZW5jZUxpbmVTY29wZVR5cGUnLFxuXG4gIC8vIERQSV9TdERldlR5cGUsIGhhdmluZyB0eXBlIFN0RGV2VHlwZVxuICBTdERldlR5cGUgPSAnc3RkZXZUeXBlJyxcblxuICAvLyBEUElfU2hvd0JvdW5kcywgaGF2aW5nIHR5cGUgU2hvd0JvdW5kc1xuICBTaG93Qm91bmRzID0gJ3Nob3dCb3VuZHMnLFxuXG4gIC8vIERQSV9Cb3hwbG90V2hpc2tlclR5cGUsIGhhdmluZyB0eXBlIEJveHBsb3RXaGlza2VyVHlwZVxuICBCb3hwbG90V2hpc2tlclR5cGUgPSAnYm94cGxvdFdoaXNrZXJUeXBlJyxcblxuICAvLyBEUElfUmVmZXJlbmNlTGluZUxhYmVsVHlwZSwgaGF2aW5nIHR5cGUgTGFiZWxUeXBlXG4gIFJlZmVyZW5jZUxpbmVMYWJlbFR5cGUgPSAncmVmZXJlbmNlTGluZUxhYmVsVHlwZScsXG5cbiAgLy8gRFBJX1BhaXJlZFJlZmVyZW5jZUxpbmVMYWJlbFR5cGUsIGhhdmluZyB0eXBlIExhYmVsVHlwZVxuICBQYWlyZWRSZWZlcmVuY2VMaW5lTGFiZWxUeXBlID0gJ3BhaXJlZFJlZmVyZW5jZUxpbmVMYWJlbFR5cGUnLFxuXG4gIC8vIERQSV9Db25maWRlbmNlSW50ZXJ2YWxTZWxlY3RlZFN0YXRlLCBoYXZpbmcgdHlwZSBDb25maWRlbmNlSW50ZXJ2YWxTdGF0ZVxuICBDb25maWRlbmNlSW50ZXJ2YWxTZWxlY3RlZFN0YXRlID0gJ2NvbmZpZGVuY2VJbnRlcnZhbFNlbGVjdGVkU3RhdGUnLFxuXG4gIC8vIERQSV9Db25maWRlbmNlSW50ZXJ2YWxTdGF0ZSwgaGF2aW5nIHR5cGUgQ29uZmlkZW5jZUludGVydmFsU3RhdGVcbiAgQ29uZmlkZW5jZUludGVydmFsU3RhdGUgPSAnY29uZmlkZW5jZUludGVydmFsU3RhdGUnLFxuXG4gIC8vIERQSV9UcmFuc2xhdGVkTGFiZWxUeXBlLCBoYXZpbmcgdHlwZSBUcmFuc2xhdGVkTGFiZWxUeXBlUHJlc01vZGVsXG4gIFRyYW5zbGF0ZWRMYWJlbFR5cGUgPSAndHJhbnNsYXRlZExhYmVsVHlwZScsXG5cbiAgLy8gRFBJX1JlZmVyZW5jZUxpbmVWYWxpZExhYmVsVHlwZXMsIGhhdmluZyB0eXBlIFRyYW5zbGF0ZWRMYWJlbFR5cGVQcmVzTW9kZWxbXVxuICBSZWZlcmVuY2VMaW5lVmFsaWRMYWJlbFR5cGVzID0gJ3ZhbGlkUmVmZXJlbmNlTGluZUxhYmVsVHlwZXMnLFxuXG4gIC8vIERQSV9SZWZlcmVuY2VMaW5lRm9ybXVsYVR5cGUsIGhhdmluZyB0eXBlIEZvcm11bGFUeXBlXG4gIFJlZmVyZW5jZUxpbmVGb3JtdWxhVHlwZSA9ICdyZWZlcmVuY2VMaW5lRm9ybXVsYVR5cGUnLFxuXG4gIC8vIERQSV9QYWlyZWRSZWZlcmVuY2VMaW5lRm9ybXVsYVR5cGUsIGhhdmluZyB0eXBlIEZvcm11bGFUeXBlXG4gIFBhaXJlZFJlZmVyZW5jZUxpbmVGb3JtdWxhVHlwZSA9ICdwYWlyZWRSZWZlcmVuY2VMaW5lRm9ybXVsYVR5cGUnLFxuXG4gIC8vIERQSV9UcmFuc2xhdGVkRm9ybXVsYVR5cGUsIGhhdmluZyB0eXBlIFRyYW5zbGF0ZWRGb3JtdWxhVHlwZVByZXNNb2RlbFxuICBUcmFuc2xhdGVkRm9ybXVsYVR5cGUgPSAndHJhbnNsYXRlZEZvcm11bGFUeXBlJyxcblxuICAvLyBEUElfUmVmZXJlbmNlTGluZVZhbGlkRm9ybXVsYVR5cGVzLCBoYXZpbmcgdHlwZSBUcmFuc2xhdGVkRm9ybXVsYVR5cGVQcmVzTW9kZWxbXVxuICBSZWZlcmVuY2VMaW5lVmFsaWRGb3JtdWxhVHlwZXMgPSAndmFsaWRSZWZlcmVuY2VMaW5lRm9ybXVsYVR5cGVzJyxcblxuICAvLyBEUElfUmVmZXJlbmNlTGluZVZhbGlkUGFpcmVkRm9ybXVsYVR5cGVzLCBoYXZpbmcgdHlwZSBUcmFuc2xhdGVkRm9ybXVsYVR5cGVQcmVzTW9kZWxbXVxuICBSZWZlcmVuY2VMaW5lVmFsaWRQYWlyZWRGb3JtdWxhVHlwZXMgPSAndmFsaWRSZWZlcmVuY2VMaW5lUGFpcmVkRm9ybXVsYVR5cGVzJyxcblxuICAvLyBEUElfVHJhbnNsYXRlZENvbmZpZGVuY2VJbnRlcnZhbFN0YXRlLCBoYXZpbmcgdHlwZSBUcmFuc2xhdGVkQ29uZmlkZW5jZUludGVydmFsU3RhdGVQcmVzTW9kZWxcbiAgVHJhbnNsYXRlZENvbmZpZGVuY2VJbnRlcnZhbFN0YXRlID0gJ3RyYW5zbGF0ZWRDb25maWRlbmNlSW50ZXJ2YWxTdGF0ZScsXG5cbiAgLy8gRFBJX1RyYW5zbGF0ZWRDb25maWRlbmNlSW50ZXJ2YWxTdGF0ZXMsIGhhdmluZyB0eXBlIFRyYW5zbGF0ZWRDb25maWRlbmNlSW50ZXJ2YWxTdGF0ZVByZXNNb2RlbFtdXG4gIFRyYW5zbGF0ZWRDb25maWRlbmNlSW50ZXJ2YWxTdGF0ZXMgPSAndHJhbnNsYXRlZENvbmZpZGVuY2VJbnRlcnZhbFN0YXRlcycsXG5cbiAgLy8gRFBJX1RyYW5zbGF0ZWRTdERldlR5cGUsIGhhdmluZyB0eXBlIFRyYW5zbGF0ZWRTdERldlR5cGVQcmVzTW9kZWxcbiAgVHJhbnNsYXRlZFN0RGV2VHlwZSA9ICd0cmFuc2xhdGVkU3RkZXZUeXBlJyxcblxuICAvLyBEUElfVHJhbnNsYXRlZFN0RGV2VHlwZXMsIGhhdmluZyB0eXBlIFRyYW5zbGF0ZWRTdERldlR5cGVQcmVzTW9kZWxbXVxuICBUcmFuc2xhdGVkU3REZXZUeXBlcyA9ICd0cmFuc2xhdGVkU3RkZXZUeXBlcycsXG5cbiAgLy8gRFBJX1JlZmVyZW5jZUxpbmVMT0RDYWxjVHlwZSwgaGF2aW5nIHR5cGUgTE9EQ2FsY1R5cGVcbiAgUmVmZXJlbmNlTGluZUxPRENhbGNUeXBlID0gJ3JlZmVyZW5jZUxpbmVMb2RDYWxjVHlwZScsXG5cbiAgLy8gRFBJX1ZhbHVlRG9tYWluVHlwZSwgaGF2aW5nIHR5cGUgVmFsdWVEb21haW5UeXBlXG4gIFZhbHVlRG9tYWluVHlwZSA9ICd2YWx1ZURvbWFpblR5cGUnLFxuXG4gIC8vIERQSV9WYWx1ZURvbWFpblR5cGVzLCBoYXZpbmcgdHlwZSBWYWx1ZURvbWFpblR5cGVbXVxuICBWYWx1ZURvbWFpblR5cGVzID0gJ3ZhbHVlRG9tYWluVHlwZXMnLFxuXG4gIC8vIERQSV9PcGVyYXRpb25UeXBlLCBoYXZpbmcgdHlwZSBPcGVyYXRpb25UeXBlXG4gIE9wZXJhdGlvblR5cGUgPSAnb3BlcmF0aW9uVHlwZScsXG5cbiAgLy8gRFBJX09wZXJhdGlvblR5cGVzLCBoYXZpbmcgdHlwZSBPcGVyYXRpb25UeXBlW11cbiAgT3BlcmF0aW9uVHlwZXMgPSAnb3BlcmF0aW9uVHlwZXMnLFxuXG4gIC8vIERQSV9Db25uZWN0aW9uVHlwZUNhdGVnb3J5LCBoYXZpbmcgdHlwZSBDb25uZWN0aW9uVHlwZUNhdGVnb3J5XG4gIENvbm5lY3Rpb25UeXBlQ2F0ZWdvcnkgPSAnY29ubmVjdGlvblR5cGVDYXRlZ29yeScsXG5cbiAgLy8gRFBJX0Nvbm5lY3Rpb25UeXBlR3JvdXAsIGhhdmluZyB0eXBlIENvbm5lY3Rpb25UeXBlR3JvdXBcbiAgQ29ubmVjdGlvblR5cGVHcm91cCA9ICdjb25uZWN0aW9uVHlwZUdyb3VwJyxcblxuICAvLyBEUElfQ29tbWFuZFJlZGlyZWN0VHlwZSwgaGF2aW5nIHR5cGUgQ29tbWFuZFJlZGlyZWN0VHlwZVxuICBDb21tYW5kUmVkaXJlY3RUeXBlID0gJ2NvbW1hbmRSZWRpcmVjdFR5cGUnLFxuXG4gIC8vIERQSV9DdXN0b21TcGxpdE1vZGUsIGhhdmluZyB0eXBlIFNwbGl0TW9kZVxuICBDdXN0b21TcGxpdE1vZGUgPSAnY3VzdG9tU3BsaXRNb2RlJyxcblxuICAvLyBEUElfQ3VzdG9tU3BsaXRTZXBhcmF0b3JUeXBlLCBoYXZpbmcgdHlwZSBTZXBhcmF0b3JUeXBlXG4gIEN1c3RvbVNwbGl0U2VwYXJhdG9yVHlwZSA9ICdjdXN0b21TcGxpdFNlcGFyYXRvclR5cGUnLFxuXG4gIC8vIERQSV9MZXZlbFNlbGVjdGlvblN0YXRlLCBoYXZpbmcgdHlwZSBMZXZlbFNlbGVjdGlvblN0YXRlXG4gIExldmVsU2VsZWN0aW9uU3RhdGUgPSAnbGV2ZWxTZWxlY3Rpb25TdGF0ZScsXG5cbiAgLy8gRFBJX0xldmVsU2VsZWN0aW9uU3RhdGVzLCBoYXZpbmcgdHlwZSBMZXZlbFNlbGVjdGlvblN0YXRlW11cbiAgTGV2ZWxTZWxlY3Rpb25TdGF0ZXMgPSAnbGV2ZWxTZWxlY3Rpb25TdGF0ZXMnLFxuXG4gIC8vIERQSV9Tb3VyY2VEZXN0SWNvbiwgaGF2aW5nIHR5cGUgU291cmNlRGVzdEljb25cbiAgU291cmNlRGVzdEljb24gPSAnc291cmNlRGVzdEljb24nLFxuXG4gIC8vIERQSV9MZWdlbmRMYXlvdXQsIGhhdmluZyB0eXBlIExlZ2VuZExheW91dFxuICBMZWdlbmRMYXlvdXQgPSAncGFnZUxlZ2VuZExheW91dCcsXG5cbiAgLy8gRFBJX0ltYWdlc0VkaXRSZXN1bHRDb2RlLCBoYXZpbmcgdHlwZSBJbWFnZXNFZGl0UmVzdWx0Q29kZVxuICBJbWFnZXNFZGl0UmVzdWx0Q29kZSA9ICdpbWFnZXNFZGl0UmVzdWx0Q29kZScsXG5cbiAgLy8gRFBJX0NhbGN1bGF0aW9uQ29udGV4dCwgaGF2aW5nIHR5cGUgQ2FsY3VsYXRpb25Db250ZXh0XG4gIENhbGN1bGF0aW9uQ29udGV4dCA9ICdjYWxjdWxhdGlvbkNvbnRleHQnLFxuXG4gIC8vIERQSV9Xb3JrZ3JvdXBQdWJsaXNoRXJyb3JUeXBlLCBoYXZpbmcgdHlwZSBXb3JrZ3JvdXBQdWJsaXNoRXJyb3JUeXBlXG4gIFdvcmtncm91cFB1Ymxpc2hFcnJvclR5cGUgPSAnd29ya2dyb3VwUHVibGlzaEVycm9yVHlwZScsXG5cbiAgLy8gRFBJX0lzUGFyYW1ldGVyLCBoYXZpbmcgdHlwZSBUcmlCb29sXG4gIElzUGFyYW1ldGVyID0gJ2lzUGFyYW1ldGVyJyxcblxuICAvLyBEUElfQWRkcmVzc2luZ1N0YXRlLCBoYXZpbmcgdHlwZSBXaWRnZXRTdGF0ZVxuICBBZGRyZXNzaW5nU3RhdGUgPSAnYWRkcmVzc2luZ1N0YXRlJyxcblxuICAvLyBEUElfQWxsUGFnZXNTdGF0ZSwgaGF2aW5nIHR5cGUgV2lkZ2V0U3RhdGVcbiAgQWxsUGFnZXNTdGF0ZSA9ICdhbGxQYWdlc1N0YXRlJyxcblxuICAvLyBEUElfQXRUaGVMZXZlbFN0YXRlLCBoYXZpbmcgdHlwZSBXaWRnZXRTdGF0ZVxuICBBdFRoZUxldmVsU3RhdGUgPSAnYXRUaGVMZXZlbFN0YXRlJyxcblxuICAvLyBEUElfQ29tcHV0ZUNvbXBvdW5kZWRSYXRlU3RhdGUsIGhhdmluZyB0eXBlIFdpZGdldFN0YXRlXG4gIENvbXB1dGVDb21wb3VuZGVkUmF0ZVN0YXRlID0gJ2NvbXB1dGVDb21wb3VuZGVkUmF0ZVN0YXRlJyxcblxuICAvLyBEUElfQ3VzdG9tTnVsbElmSW5jb21wbGV0ZVN0YXRlLCBoYXZpbmcgdHlwZSBXaWRnZXRTdGF0ZVxuICBDdXN0b21OdWxsSWZJbmNvbXBsZXRlU3RhdGUgPSAnY3VzdG9tTnVsbElmSW5jb21wbGV0ZVN0YXRlJyxcblxuICAvLyBEUElfTmVzdGVkQ2FsY3NTdGF0ZSwgaGF2aW5nIHR5cGUgV2lkZ2V0U3RhdGVcbiAgTmVzdGVkQ2FsY3NTdGF0ZSA9ICduZXN0ZWRDYWxjc1N0YXRlJyxcblxuICAvLyBEUElfUmFua1R5cGVTdGF0ZSwgaGF2aW5nIHR5cGUgV2lkZ2V0U3RhdGVcbiAgUmFua1R5cGVTdGF0ZSA9ICdyYW5rVHlwZVN0YXRlJyxcblxuICAvLyBEUElfUmVmZXJlbmNlT3B0aW9uc1N0YXRlLCBoYXZpbmcgdHlwZSBXaWRnZXRTdGF0ZVxuICBSZWZlcmVuY2VPcHRpb25zU3RhdGUgPSAncmVmZXJlbmNlT3B0aW9uc1N0YXRlJyxcblxuICAvLyBEUElfUmVzdGFydEV2ZXJ5U3RhdGUsIGhhdmluZyB0eXBlIFdpZGdldFN0YXRlXG4gIFJlc3RhcnRFdmVyeVN0YXRlID0gJ3Jlc3RhcnRFdmVyeVN0YXRlJyxcblxuICAvLyBEUElfU29ydEFnZ1N0YXRlLCBoYXZpbmcgdHlwZSBXaWRnZXRTdGF0ZVxuICBTb3J0QWdnU3RhdGUgPSAnc29ydEFnZ1N0YXRlJyxcblxuICAvLyBEUElfU29ydFN0YXRlLCBoYXZpbmcgdHlwZSBXaWRnZXRTdGF0ZVxuICBTb3J0U3RhdGUgPSAnc29ydFN0YXRlJyxcblxuICAvLyBEUElfVGFibGVDYWxjVHlwZVN0YXRlLCBoYXZpbmcgdHlwZSBXaWRnZXRTdGF0ZVxuICBUYWJsZUNhbGNUeXBlU3RhdGUgPSAndGFibGVDYWxjVHlwZVN0YXRlJyxcblxuICAvLyBEUElfVGFibGVDYWxjQXNzaXN0YW5jZVdpZGdldFN0YXRlLCBoYXZpbmcgdHlwZSBXaWRnZXRTdGF0ZVxuICBUYWJsZUNhbGNBc3Npc3RhbmNlV2lkZ2V0U3RhdGUgPSAndGFibGVDYWxjQXNzaXN0YW5jZVdpZGdldFN0YXRlJyxcblxuICAvLyBEUElfQ2FsY05lc3RpbmdMZXZlbCwgaGF2aW5nIHR5cGUgQ2FsY05lc3RpbmdMZXZlbFxuICBDYWxjTmVzdGluZ0xldmVsID0gJ2NhbGNOZXN0aW5nTGV2ZWwnLFxuXG4gIC8vIERQSV9EYXRhUHJvdmlkZXJUeXBlLCBoYXZpbmcgdHlwZSBEYXRhUHJvdmlkZXJUeXBlXG4gIERhdGFQcm92aWRlclR5cGUgPSAnZGF0YVByb3ZpZGVyVHlwZScsXG5cbiAgLy8gRFBJX0hldXJpc3RpY0NvbW1hbmRSZWludGVycHJldGF0aW9uLCBoYXZpbmcgdHlwZSBIZXVyaXN0aWNDb21tYW5kUmVpbnRlcnByZXRhdGlvblxuICBIZXVyaXN0aWNDb21tYW5kUmVpbnRlcnByZXRhdGlvbiA9ICdoZXVyaXN0aWNDb21tYW5kUmVpbnRlcnByZXRhdGlvbicsXG5cbiAgLy8gRFBJX0V4dHJhY3RSZWZyZXNoU3RhdHVzLCBoYXZpbmcgdHlwZSBFeHRyYWN0UmVmcmVzaFN0YXR1c1xuICBFeHRyYWN0UmVmcmVzaFN0YXR1cyA9ICdleHRyYWN0UmVmcmVzaFN0YXR1cycsXG5cbiAgLy8gRFBJX1JpY2hUZXh0RWRpdG9yV2lkZ2V0S2V5LCBoYXZpbmcgdHlwZSBSaWNoVGV4dEVkaXRvcldpZGdldEtleVxuICBSaWNoVGV4dEVkaXRvcldpZGdldEtleSA9ICdyaWNoVGV4dEVkaXRvcldpZGdldEtleScsXG5cbiAgLy8gRFBJX1JpY2hUZXh0V2lkZ2V0S2V5cywgaGF2aW5nIHR5cGUgUmljaFRleHRFZGl0b3JXaWRnZXRLZXlbXVxuICBSaWNoVGV4dFdpZGdldEtleXMgPSAncmljaFRleHRXaWRnZXRLZXlzJyxcblxuICAvLyBEUElfVHlwZU9mRm9ybWF0SXRlbSwgaGF2aW5nIHR5cGUgVHlwZU9mRm9ybWF0SXRlbVxuICBUeXBlT2ZGb3JtYXRJdGVtID0gJ3R5cGVPZkZvcm1hdEl0ZW0nLFxuXG4gIC8vIERQSV9UeXBlT2ZGb3JtYXRDb250YWluZXIsIGhhdmluZyB0eXBlIFR5cGVPZkZvcm1hdENvbnRhaW5lclxuICBUeXBlT2ZGb3JtYXRDb250YWluZXIgPSAndHlwZU9mRm9ybWF0Q29udGFpbmVyJyxcblxuICAvLyBEUElfVHlwZU9mRm9ybWF0Q29udHJvbCwgaGF2aW5nIHR5cGUgVHlwZU9mRm9ybWF0Q29udHJvbFxuICBUeXBlT2ZGb3JtYXRDb250cm9sID0gJ3R5cGVPZkZvcm1hdENvbnRyb2wnLFxuXG4gIC8vIERQSV9Gb3JtYXRXaWRnZXRLZXksIGhhdmluZyB0eXBlIEZvcm1hdFdpZGdldEtleVxuICBGb3JtYXRXaWRnZXRLZXkgPSAnZm9ybWF0V2lkZ2V0S2V5JyxcblxuICAvLyBEUElfQ29sb3JTd2F0Y2hUeXBlLCBoYXZpbmcgdHlwZSBDb2xvclN3YXRjaFR5cGVcbiAgQ29sb3JTd2F0Y2hUeXBlID0gJ2Zvcm1hdENvbG9yU3dhdGNoVHlwZScsXG5cbiAgLy8gRFBJX1BpY2tlclR5cGUsIGhhdmluZyB0eXBlIFBpY2tlclR5cGVcbiAgUGlja2VyVHlwZSA9ICdwaWNrZXJUeXBlJyxcblxuICAvLyBEUElfRXh0cmFjdEhpc3RvcnlSZWZyZXNoVHlwZSwgaGF2aW5nIHR5cGUgUmVmcmVzaFR5cGVcbiAgRXh0cmFjdEhpc3RvcnlSZWZyZXNoVHlwZSA9ICdleHRyYWN0SGlzdG9yeVJlZnJlc2hUeXBlRW51bScsXG5cbiAgLy8gRFBJX0F4aXNGb2xkU3RhdGUsIGhhdmluZyB0eXBlIEF4aXNGb2xkU3RhdGVcbiAgQXhpc0ZvbGRTdGF0ZSA9ICdheGlzRm9sZFN0YXRlJyxcblxuICAvLyBEUElfVGlja01hcmtTcGFjaW5nVW5pdHMsIGhhdmluZyB0eXBlIFRpY2tTcGFjaW5nVW5pdHNcbiAgVGlja01hcmtTcGFjaW5nVW5pdHMgPSAndGlja1NwYWNpbmdVbml0cycsXG5cbiAgLy8gRFBJX1RpY2tNYXJrU3RhdGUsIGhhdmluZyB0eXBlIFRpY2tNYXJrU3RhdGVcbiAgVGlja01hcmtTdGF0ZSA9ICd0aWNrTWFya1N0YXRlJyxcblxuICAvLyBEUElfQXhpc1JhbmdlVHlwZSwgaGF2aW5nIHR5cGUgQXhpc1JhbmdlVHlwZVxuICBBeGlzUmFuZ2VUeXBlID0gJ2F4aXNSYW5nZVR5cGUnLFxuXG4gIC8vIERQSV9TY2FsZVR5cGUsIGhhdmluZyB0eXBlIFNjYWxlVHlwZVxuICBTY2FsZVR5cGUgPSAnc2NhbGVUeXBlJyxcblxuICAvLyBEUElfRGFzaGJvYXJkRGV2aWNlTGF5b3V0LCBoYXZpbmcgdHlwZSBEYXNoYm9hcmREZXZpY2VMYXlvdXRcbiAgRGFzaGJvYXJkRGV2aWNlTGF5b3V0ID0gJ2Rhc2hib2FyZERldmljZUxheW91dCcsXG5cbiAgLy8gRFBJX0FjdGl2YXRlRGV2aWNlTGF5b3V0LCBoYXZpbmcgdHlwZSBEYXNoYm9hcmREZXZpY2VMYXlvdXRcbiAgQWN0aXZhdGVEZXZpY2VMYXlvdXQgPSAnYWN0aXZhdGVEZXZpY2VMYXlvdXQnLFxuXG4gIC8vIERQSV9EYXNoYm9hcmREZXZpY2VMYXlvdXRzLCBoYXZpbmcgdHlwZSBEYXNoYm9hcmREZXZpY2VMYXlvdXRbXVxuICBEYXNoYm9hcmREZXZpY2VMYXlvdXRzID0gJ2Rhc2hib2FyZERldmljZUxheW91dHMnLFxuXG4gIC8vIERQSV9EZXZpY2VTb3VyY2UsIGhhdmluZyB0eXBlIERldmljZVNvdXJjZVxuICBEZXZpY2VTb3VyY2UgPSAnZGV2aWNlU291cmNlJyxcblxuICAvLyBEUElfRGFzaGJvYXJkU2l6aW5nRGltZW5zaW9uLCBoYXZpbmcgdHlwZSBEYXNoYm9hcmRTaXppbmdEaW1lbnNpb25cbiAgRGFzaGJvYXJkU2l6aW5nRGltZW5zaW9uID0gJ2Rhc2hib2FyZFNpemluZ0RpbWVuc2lvbicsXG5cbiAgLy8gRFBJX0dyaWRPdmVybGF5TW9kZSwgaGF2aW5nIHR5cGUgR3JpZE92ZXJsYXlNb2RlXG4gIEdyaWRPdmVybGF5TW9kZSA9ICdncmlkT3ZlcmxheU1vZGUnLFxuXG4gIC8vIERQSV9EYXNoYm9hcmRTaXppbmdNb2RlLCBoYXZpbmcgdHlwZSBEYXNoYm9hcmRTaXppbmdNb2RlXG4gIERhc2hib2FyZFNpemluZ01vZGUgPSAnZGFzaGJvYXJkU2l6aW5nTW9kZScsXG5cbiAgLy8gRFBJX0ZsaXBib2FyZE5hdlR5cGUsIGhhdmluZyB0eXBlIEZsaXBib2FyZE5hdlR5cGVcbiAgRmxpcGJvYXJkTmF2VHlwZSA9ICdmbGlwYm9hcmROYXZUeXBlJyxcblxuICAvLyBEUElfRmllbGRQaWNrZXJEaWFsb2dVc2VDYXNlLCBoYXZpbmcgdHlwZSBGaWVsZFBpY2tlckRpYWxvZ1VzZUNhc2VcbiAgRmllbGRQaWNrZXJEaWFsb2dVc2VDYXNlID0gJ2ZpZWxkUGlja2VyRGlhbG9nVXNlQ2FzZScsXG5cbiAgLy8gRFBJX1N0YXJ0T2ZXZWVrRW51bSwgaGF2aW5nIHR5cGUgU09XVmFsdWVcbiAgU3RhcnRPZldlZWtFbnVtID0gJ3N0YXJ0T2ZXZWVrRW51bScsXG5cbiAgLy8gRFBJX1N0YXJ0T2ZGaXNjYWxZZWFyLCBoYXZpbmcgdHlwZSBGWVNWYWx1ZXNcbiAgU3RhcnRPZkZpc2NhbFllYXIgPSAnc3RhcnRPZkZpc2NhbFllYXInLFxuXG4gIC8vIERQSV9Ub3RhbHNJbmNsdXNpb25WYWx1ZSwgaGF2aW5nIHR5cGUgVG90YWxzSW5jbHVzaW9uXG4gIFRvdGFsc0luY2x1c2lvblZhbHVlID0gJ3RvdGFsc0luY2x1c2lvblZhbHVlJyxcblxuICAvLyBEUElfRm9ybWF0Q29kZSwgaGF2aW5nIHR5cGUgRm9ybWF0Q29kZVxuICBGb3JtYXRDb2RlID0gJ2Zvcm1hdENvZGUnLFxuXG4gIC8vIERQSV9GaW5kVHlwZSwgaGF2aW5nIHR5cGUgRmluZFR5cGVcbiAgRmluZFR5cGUgPSAnZmluZFR5cGUnLFxuXG4gIC8vIERQSV9QZXJzcGVjdGl2ZVR5cGUsIGhhdmluZyB0eXBlIFBlcnNwZWN0aXZlVHlwZVxuICBQZXJzcGVjdGl2ZVR5cGUgPSAncGVyc3BlY3RpdmVUeXBlJyxcblxuICAvLyBEUElfR2VvbWV0cnlUeXBlLCBoYXZpbmcgdHlwZSBHZW9tZXRyeVR5cGVcbiAgR2VvbWV0cnlUeXBlID0gJ2dlb21ldHJ5VHlwZScsXG5cbiAgLy8gRFBJX1BhbmVMYWJlbENvbXBvc2l0aW9uLCBoYXZpbmcgdHlwZSBQYW5lTGFiZWxDb21wb3NpdGlvblxuICBQYW5lTGFiZWxDb21wb3NpdGlvbiA9ICdwYW5lTGFiZWxDb21wb3NpdGlvbicsXG5cbiAgLy8gRFBJX1dhcm5pbmdUeXBlLCBoYXZpbmcgdHlwZSBXYXJuaW5nVHlwZVxuICBXYXJuaW5nVHlwZSA9ICd3YXJuaW5nVHlwZScsXG5cbiAgLy8gRFBJX1VJTW9kZSwgaGF2aW5nIHR5cGUgV29ya2Jvb2tVSU1vZGVcbiAgVUlNb2RlID0gJ3VpTW9kZScsXG5cbiAgLy8gRFBJX01lbnVJdGVtSWQsIGhhdmluZyB0eXBlIFRvcExldmVsTWVudUl0ZW1cbiAgTWVudUl0ZW1JZCA9ICdtZW51SXRlbUlkJyxcblxuICAvLyBEUElfQ29tbWFuZFJldHVybiwgaGF2aW5nIHR5cGUgb2JqZWN0XG4gIENvbW1hbmRSZXR1cm4gPSAnY29tbWFuZFJldHVybicsXG5cbiAgLy8gRFBJX0xlZ2FjeVByZXNNb2RlbCwgaGF2aW5nIHR5cGUgb2JqZWN0XG4gIExlZ2FjeVByZXNNb2RlbCA9ICdsZWdhY3lQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9QcmVzZW50YXRpb25Nb2RlbCwgaGF2aW5nIHR5cGUgb2JqZWN0XG4gIFByZXNlbnRhdGlvbk1vZGVsID0gJ3ByZXNNb2RlbEhvbGRlcicsXG5cbiAgLy8gRFBJX0V2ZW50LCBoYXZpbmcgdHlwZSBvYmplY3RcbiAgRXZlbnQgPSAnZXZlbnRDb250YWluZXInLFxuXG4gIC8vIERQSV9MaW5lU3R5bGUsIGhhdmluZyB0eXBlIEFycmF5XG4gIExpbmVTdHlsZSA9ICdsaW5lU3R5bGUnLFxuXG4gIC8vIERQSV9TdHJva2VTdHlsZSwgaGF2aW5nIHR5cGUgQXJyYXlcbiAgU3Ryb2tlU3R5bGUgPSAnc3Ryb2tlU3R5bGUnLFxuXG4gIC8vIERQSV9TY2hlbWEsIGhhdmluZyB0eXBlIEFycmF5XG4gIFNjaGVtYSA9ICdzY2hlbWEnLFxuXG4gIC8vIERQSV9TdGFydFR1cGxlLCBoYXZpbmcgdHlwZSBBcnJheVxuICBTdGFydFR1cGxlID0gJ3N0YXJ0VHVwbGUnLFxuXG4gIC8vIERQSV9FbmRUdXBsZSwgaGF2aW5nIHR5cGUgQXJyYXlcbiAgRW5kVHVwbGUgPSAnZW5kVHVwbGUnLFxuXG4gIC8vIERQSV9UdXBsZSwgaGF2aW5nIHR5cGUgQXJyYXlcbiAgVHVwbGUgPSAndHVwbGUnLFxuXG4gIC8vIERQSV9UdXBsZXMsIGhhdmluZyB0eXBlIEFycmF5W11cbiAgVHVwbGVzID0gJ3R1cGxlcycsXG5cbiAgLy8gRFBJX0N1c3RvbURvbWFpblR1cGxlcywgaGF2aW5nIHR5cGUgQXJyYXlbXVxuICBDdXN0b21Eb21haW5UdXBsZXMgPSAnY3VzdG9tRG9tYWluVHVwbGVzJyxcblxuICAvLyBEUElfVXBkYXRlZFR1cGxlcywgaGF2aW5nIHR5cGUgQXJyYXlbXVxuICBVcGRhdGVkVHVwbGVzID0gJ3VwZGF0ZWRUdXBsZXMnLFxuXG4gIC8vIERQSV9UYWJsZSwgaGF2aW5nIHR5cGUgQXJyYXlcbiAgVGFibGUgPSAndGFibGUnLFxuXG4gIC8vIERQSV9BbGlhc2VkVmFsdWUsIGhhdmluZyB0eXBlIEFycmF5XG4gIEFsaWFzZWRWYWx1ZSA9ICd2YWx1ZUFsaWFzJyxcblxuICAvLyBEUElfRmlyc3RBbGlhc2VkVmFsdWUsIGhhdmluZyB0eXBlIEFycmF5XG4gIEZpcnN0QWxpYXNlZFZhbHVlID0gJ2ZpcnN0QWxpc2VkVmFsdWUnLFxuXG4gIC8vIERQSV9NYXhpbXVtUmFuZ2UsIGhhdmluZyB0eXBlIEFycmF5XG4gIE1heGltdW1SYW5nZSA9ICdtYXhpbXVtUmFuZ2VWYWx1ZScsXG5cbiAgLy8gRFBJX01pbmltdW1SYW5nZSwgaGF2aW5nIHR5cGUgQXJyYXlcbiAgTWluaW11bVJhbmdlID0gJ21pbmltdW1SYW5nZVZhbHVlJyxcblxuICAvLyBEUElfU2Vjb25kQWxpYXNlZFZhbHVlLCBoYXZpbmcgdHlwZSBBcnJheVxuICBTZWNvbmRBbGlhc2VkVmFsdWUgPSAnc2Vjb25kQWxpc2VkVmFsdWUnLFxuXG4gIC8vIERQSV9BbGlhc2VkU2VsZWN0aW9uTGlzdCwgaGF2aW5nIHR5cGUgQXJyYXlbXVxuICBBbGlhc2VkU2VsZWN0aW9uTGlzdCA9ICdhbGlhc2VkU2VsZWN0aW9uTGlzdCcsXG5cbiAgLy8gRFBJX0FsaWFzZWRWYWx1ZXMsIGhhdmluZyB0eXBlIEFycmF5W11cbiAgQWxpYXNlZFZhbHVlcyA9ICd2YWx1ZXNBbGlhc2VzJyxcblxuICAvLyBEUElfVmVyYm9zZUFsaWFzZWRSYW5nZU1heCwgaGF2aW5nIHR5cGUgQXJyYXlcbiAgVmVyYm9zZUFsaWFzZWRSYW5nZU1heCA9ICd2ZXJib3NlQWxpYXNlZFJhbmdlTWF4JyxcblxuICAvLyBEUElfVmVyYm9zZUFsaWFzZWRWYWx1ZSwgaGF2aW5nIHR5cGUgQXJyYXlcbiAgVmVyYm9zZUFsaWFzZWRWYWx1ZSA9ICd2ZXJib3NlQWxpYXNlZFZhbHVlJyxcblxuICAvLyBEUElfTXVsdGlCdWNrZXQsIGhhdmluZyB0eXBlIE11bHRpQnVja2V0XG4gIE11bHRpQnVja2V0ID0gJ3hWYWx1ZXMnLFxuXG4gIC8vIERQSV9QYWdlTmFtZSwgaGF2aW5nIHR5cGUgUGFnZU5hbWVcbiAgUGFnZU5hbWUgPSAncGFnZU5hbWUnLFxuXG4gIC8vIERQSV9TZWxlY3RvciwgaGF2aW5nIHR5cGUgb2JqZWN0XG4gIFNlbGVjdG9yID0gJ3NlbGVjdG9yJyxcblxuICAvLyBEUElfUGFuZUlkLCBoYXZpbmcgdHlwZSBvYmplY3RcbiAgUGFuZUlkID0gJ3BhbmVJZCcsXG5cbiAgLy8gRFBJX1BhbmVJZHMsIGhhdmluZyB0eXBlIFBhbmVJZFtdXG4gIFBhbmVJZHMgPSAncGFuZUlkcycsXG5cbiAgLy8gRFBJX0ltYWdlUmVnaW9uSW5mbywgaGF2aW5nIHR5cGUgb2JqZWN0XG4gIEltYWdlUmVnaW9uSW5mbyA9ICd2aXpSZWdpb25SZWN0JyxcblxuICAvLyBEUElfSW1hZ2VSZWdpb25JbmZvTGlzdCwgaGF2aW5nIHR5cGUgb2JqZWN0W11cbiAgSW1hZ2VSZWdpb25JbmZvTGlzdCA9ICd2aXpSZWdpb25SZWN0TGlzdCcsXG5cbiAgLy8gRFBJX1Zpc3VhbElELCBoYXZpbmcgdHlwZSBWaXN1YWxJRFxuICBWaXN1YWxJRCA9ICd2aXN1YWxJZCcsXG5cbiAgLy8gRFBJX1Zpc3VhbElEUE0sIGhhdmluZyB0eXBlIFZpc3VhbElEUHJlc01vZGVsXG4gIFZpc3VhbElEUE0gPSAndmlzdWFsSWRQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9JbnZhbGlkU2hlZXRzLCBoYXZpbmcgdHlwZSBWaXN1YWxJRFByZXNNb2RlbFtdXG4gIEludmFsaWRTaGVldHMgPSAnaW52YWxpZFNoZWV0cycsXG5cbiAgLy8gRFBJX1Zpc3VhbElEUE1zLCBoYXZpbmcgdHlwZSBWaXN1YWxJRFByZXNNb2RlbFtdXG4gIFZpc3VhbElEUE1zID0gJ3Zpc3VhbElkcycsXG5cbiAgLy8gRFBJX1NoZWV0UGF0aFBNLCBoYXZpbmcgdHlwZSBTaGVldFBhdGhQcmVzTW9kZWxcbiAgU2hlZXRQYXRoUE0gPSAnc2hlZXRQYXRoJyxcblxuICAvLyBEUElfQ2FwdHVyZWRTaGVldFBNLCBoYXZpbmcgdHlwZSBTaGVldFBhdGhQcmVzTW9kZWxcbiAgQ2FwdHVyZWRTaGVldFBNID0gJ2NhcHR1cmVkU2hlZXRQbScsXG5cbiAgLy8gRFBJX0N1cnJlbnRTaGVldFBNLCBoYXZpbmcgdHlwZSBTaGVldFBhdGhQcmVzTW9kZWxcbiAgQ3VycmVudFNoZWV0UE0gPSAnY3VycmVudFNoZWV0UG0nLFxuXG4gIC8vIERQSV9EYXNoYm9hcmRQTSwgaGF2aW5nIHR5cGUgU2hlZXRQYXRoUHJlc01vZGVsXG4gIERhc2hib2FyZFBNID0gJ2Rhc2hib2FyZFBtJyxcblxuICAvLyBEUElfTmV3U2hlZXRQTSwgaGF2aW5nIHR5cGUgU2hlZXRQYXRoUHJlc01vZGVsXG4gIE5ld1NoZWV0UE0gPSAnbmV3U2hlZXRQbScsXG5cbiAgLy8gRFBJX1NoZWV0TmFtZVBNLCBoYXZpbmcgdHlwZSBTaGVldFBhdGhQcmVzTW9kZWxcbiAgU2hlZXROYW1lUE0gPSAnc2hlZXROYW1lUG0nLFxuXG4gIC8vIERQSV9TaGVldFBNLCBoYXZpbmcgdHlwZSBTaGVldFBhdGhQcmVzTW9kZWxcbiAgU2hlZXRQTSA9ICdzaGVldFBtJyxcblxuICAvLyBEUElfU291cmNlRGFzaGJvYXJkUE0sIGhhdmluZyB0eXBlIFNoZWV0UGF0aFByZXNNb2RlbFxuICBTb3VyY2VEYXNoYm9hcmRQTSA9ICdzb3VyY2VEYXNoYm9hcmRQbScsXG5cbiAgLy8gRFBJX1NvdXJjZVNoZWV0UE0sIGhhdmluZyB0eXBlIFNoZWV0UGF0aFByZXNNb2RlbFxuICBTb3VyY2VTaGVldFBNID0gJ3NvdXJjZVNoZWV0UG0nLFxuXG4gIC8vIERQSV9UYXJnZXRTaGVldFBNLCBoYXZpbmcgdHlwZSBTaGVldFBhdGhQcmVzTW9kZWxcbiAgVGFyZ2V0U2hlZXRQTSA9ICd0YXJnZXRTaGVldFBtJyxcblxuICAvLyBEUElfV29ya3NoZWV0UE0sIGhhdmluZyB0eXBlIFNoZWV0UGF0aFByZXNNb2RlbFxuICBXb3Jrc2hlZXRQTSA9ICd3b3Jrc2hlZXRQbScsXG5cbiAgLy8gRFBJX01vZGlmaWVkU2hlZXRzLCBoYXZpbmcgdHlwZSBTaGVldFBhdGhQcmVzTW9kZWxbXVxuICBNb2RpZmllZFNoZWV0cyA9ICdtb2RpZmllZFNoZWV0cycsXG5cbiAgLy8gRFBJX0RhdGFDb2x1bW4sIGhhdmluZyB0eXBlIERhdGFDb2x1bW5QcmVzTW9kZWxcbiAgRGF0YUNvbHVtbiA9ICdkYXRhQ29sdW1uJyxcblxuICAvLyBEUElfRGF0YUNvbHVtbnMsIGhhdmluZyB0eXBlIERhdGFDb2x1bW5QcmVzTW9kZWxbXVxuICBEYXRhQ29sdW1ucyA9ICdkYXRhQ29sdW1ucycsXG5cbiAgLy8gRFBJX0FkZHJlc3NlcywgaGF2aW5nIHR5cGUgRGF0YUNvbHVtblByZXNNb2RlbFtdXG4gIEFkZHJlc3NlcyA9ICdhZGRyZXNzZXMnLFxuXG4gIC8vIERQSV9FbmNvZGluZ0NvbHVtbnMsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2YgRGF0YUNvbHVtblByZXNNb2RlbClcbiAgRW5jb2RpbmdDb2x1bW5zID0gJ2VuY29kaW5nQ29sdW1ucycsXG5cbiAgLy8gRFBJX1RleHRSdW5Db2x1bW5zLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIERhdGFDb2x1bW5QcmVzTW9kZWwpXG4gIFRleHRSdW5Db2x1bW5zID0gJ3RleHRSdW5Db2x1bW5zJyxcblxuICAvLyBEUElfVGV4dFN0eWxlQ29sdW1ucywgaGF2aW5nIHR5cGUgRGljdGlvbmFyeShvZiBEYXRhQ29sdW1uUHJlc01vZGVsKVxuICBUZXh0U3R5bGVDb2x1bW5zID0gJ3RleHRTdHlsZUNvbHVtbnMnLFxuXG4gIC8vIERQSV9OYW1lZERhdGFDb2x1bW4sIGhhdmluZyB0eXBlIE5hbWVkRGF0YUNvbHVtblByZXNNb2RlbFxuICBOYW1lZERhdGFDb2x1bW4gPSAnbmFtZWREYXRhQ29sdW1uJyxcblxuICAvLyBEUElfTmFtZWREYXRhQ29sdW1ucywgaGF2aW5nIHR5cGUgTmFtZWREYXRhQ29sdW1uUHJlc01vZGVsW11cbiAgTmFtZWREYXRhQ29sdW1ucyA9ICduYW1lZERhdGFDb2x1bW5zJyxcblxuICAvLyBEUElfRGF0YVRhYmxlLCBoYXZpbmcgdHlwZSBEYXRhVGFibGVQcmVzTW9kZWxcbiAgRGF0YVRhYmxlID0gJ2RhdGFUYWJsZScsXG5cbiAgLy8gRFBJX0FjdGlvblNwZWNpZmljYXRpb24sIGhhdmluZyB0eXBlIE5vbmVcbiAgQWN0aW9uU3BlY2lmaWNhdGlvbiA9ICdhY3Rpb25TcGVjJyxcblxuICAvLyBEUElfQ29sdW1uLCBoYXZpbmcgdHlwZSBDb2x1bW5cbiAgQ29sdW1uID0gJ2NvbHVtbkNvbnRleHQnLFxuXG4gIC8vIERQSV9TZXRGdW5jdGlvbiwgaGF2aW5nIHR5cGUgU2V0RnVuY3Rpb25cbiAgU2V0RnVuY3Rpb24gPSAnc2V0RnVuY3Rpb24nLFxuXG4gIC8vIERQSV9TZXRGdW5jdGlvbnMsIGhhdmluZyB0eXBlIFNldEZ1bmN0aW9uc1xuICBTZXRGdW5jdGlvbnMgPSAnc2V0RnVuY3Rpb25zJyxcblxuICAvLyBEUElfVmlzdWFsUHJvZmlsZVNob3dNZSwgaGF2aW5nIHR5cGUgVmlzdWFsUHJvZmlsZVNob3dNZVxuICBWaXN1YWxQcm9maWxlU2hvd01lID0gJ3Zwc20nLFxuXG4gIC8vIERQSV9EYXRhU291cmNlUHRyLCBoYXZpbmcgdHlwZSBEYXRhU291cmNlXG4gIERhdGFTb3VyY2VQdHIgPSAnZGF0YXNvdXJjZVB0cicsXG5cbiAgLy8gRFBJX1dvcmtncm91cENvbm5lY3Rpb24sIGhhdmluZyB0eXBlIFdvcmtncm91cENvbm5lY3Rpb25cbiAgV29ya2dyb3VwQ29ubmVjdGlvbiA9ICd3b3JrZ3JvdXBDb25uZWN0aW9uJyxcblxuICAvLyBEUElfQXV0aGVudGljYXRvciwgaGF2aW5nIHR5cGUgQXV0aGVudGljYXRvclJhd1B0clxuICBBdXRoZW50aWNhdG9yID0gJ2F1dGhlbnRpY2F0b3InLFxuXG4gIC8vIERQSV9VcGdyYWRlQXR0ciwgaGF2aW5nIHR5cGUgVXBncmFkZUF0dHJcbiAgVXBncmFkZUF0dHIgPSAndXBncmFkZUF0dHInLFxuXG4gIC8vIERQSV9FeHRyYWN0QXR0ciwgaGF2aW5nIHR5cGUgRXh0cmFjdEF0dHJcbiAgRXh0cmFjdEF0dHIgPSAnZXh0cmFjdEF0dHInLFxuXG4gIC8vIERQSV9SZWZyZXNoQXR0ciwgaGF2aW5nIHR5cGUgUmVmcmVzaEF0dHJcbiAgUmVmcmVzaEF0dHIgPSAncmVmcmVzaEF0dHInLFxuXG4gIC8vIERQSV9Db250ZXh0U3BlY2lmaWNhdGlvbiwgaGF2aW5nIHR5cGUgQ29udGV4dFNwZWNpZmljYXRpb25cbiAgQ29udGV4dFNwZWNpZmljYXRpb24gPSAnY29udGV4dFNwZWNpZmljYXRpb24nLFxuXG4gIC8vIERQSV9TY2hlbWFWaWV3ZXJTZWxlY3RvciwgaGF2aW5nIHR5cGUgU2NoZW1hVmlld2VyU2VsZWN0b3JQdHJcbiAgU2NoZW1hVmlld2VyU2VsZWN0b3IgPSAnc2NoZW1hVmlld2VyU2VsZWN0b3InLFxuXG4gIC8vIERQSV9CdWNrZXRzLCBoYXZpbmcgdHlwZSBCdWNrZXRzXG4gIEJ1Y2tldHMgPSAnYnVja2V0cycsXG5cbiAgLy8gRFBJX0xlZ2VuZEl0ZW1zLCBoYXZpbmcgdHlwZSBNdWx0aUJ1Y2tldHNcbiAgTGVnZW5kSXRlbXMgPSAnbGVnZW5kSXRlbXMnLFxuXG4gIC8vIERQSV9MZWdlbmRJdGVtLCBoYXZpbmcgdHlwZSBNdWx0aUJ1Y2tldFxuICBMZWdlbmRJdGVtID0gJ2xlZ2VuZEl0ZW0nLFxuXG4gIC8vIERQSV9Tb3VyY2VJdGVtLCBoYXZpbmcgdHlwZSBNdWx0aUJ1Y2tldFxuICBTb3VyY2VJdGVtID0gJ3NvdXJjZUl0ZW0nLFxuXG4gIC8vIERQSV9EZXN0SXRlbSwgaGF2aW5nIHR5cGUgTXVsdGlCdWNrZXRcbiAgRGVzdEl0ZW0gPSAnZGVzdEl0ZW0nLFxuXG4gIC8vIERQSV9JUXVpY2tTb3J0U3RhdGUsIGhhdmluZyB0eXBlIElRdWlja1NvcnRTdGF0ZVxuICBJUXVpY2tTb3J0U3RhdGUgPSAncXVpY2tTb3J0U3RhdGUnLFxuXG4gIC8vIERQSV9BcHBCdWlsZERhdGUsIGhhdmluZyB0eXBlIERhdGVUaW1lXG4gIEFwcEJ1aWxkRGF0ZSA9ICdhcHBCdWlsZERhdGUnLFxuXG4gIC8vIERQSV9Gb3JlY2FzdERhdGVSYW5nZUVuZCwgaGF2aW5nIHR5cGUgRGF0ZVRpbWVcbiAgRm9yZWNhc3REYXRlUmFuZ2VFbmQgPSAnZm9yZWNhc3REYXRlUmFuZ2VFbmQnLFxuXG4gIC8vIERQSV9Gb3JlY2FzdERhdGVSYW5nZVN0YXJ0LCBoYXZpbmcgdHlwZSBEYXRlVGltZVxuICBGb3JlY2FzdERhdGVSYW5nZVN0YXJ0ID0gJ2ZvcmVjYXN0RGF0ZVJhbmdlU3RhcnQnLFxuXG4gIC8vIERQSV9MYXN0TW9kaWZpZWQsIGhhdmluZyB0eXBlIERhdGVUaW1lXG4gIExhc3RNb2RpZmllZCA9ICdsYXN0TW9kaWZpZWQnLFxuXG4gIC8vIERQSV9TZWFyY2hEb21haW5QdHIsIGhhdmluZyB0eXBlIE11bHRpRG9tYWluXG4gIFNlYXJjaERvbWFpblB0ciA9ICdzZWFyY2hEb21haW5QdHInLFxuXG4gIC8vIERQSV9SZXN1bHRzRG9tYWluUHRyLCBoYXZpbmcgdHlwZSBNdWx0aURvbWFpblxuICBSZXN1bHRzRG9tYWluUHRyID0gJ3Jlc3VsdHNEb21haW5QdHInLFxuXG4gIC8vIERQSV9BY3Rpb25zLCBoYXZpbmcgdHlwZSBvYmplY3RcbiAgQWN0aW9ucyA9ICdhY3Rpb25zJyxcblxuICAvLyBEUElfU1JDb21tYW5kcywgaGF2aW5nIHR5cGUgb2JqZWN0XG4gIFNSQ29tbWFuZHMgPSAnc2VsZWN0aW9uUmVsYXhhdGlvbkNvbW1hbmRzJyxcblxuICAvLyBEUElfQ29tbWFuZHMsIGhhdmluZyB0eXBlIG9iamVjdFxuICBDb21tYW5kcyA9ICdjb21tYW5kcycsXG5cbiAgLy8gRFBJX0RhdGFUeXBlQ29tbWFuZHMsIGhhdmluZyB0eXBlIG9iamVjdFxuICBEYXRhVHlwZUNvbW1hbmRzID0gJ2RhdGF0eXBlQ29tbWFuZHMnLFxuXG4gIC8vIERQSV9NdWx0aVNlbGVjdENvbW1hbmRzLCBoYXZpbmcgdHlwZSBvYmplY3RcbiAgTXVsdGlTZWxlY3RDb21tYW5kcyA9ICdtdWx0aXNlbGVjdENvbW1hbmRzJyxcblxuICAvLyBEUElfTm9uVml6Q29tbWFuZHMsIGhhdmluZyB0eXBlIG9iamVjdFxuICBOb25WaXpDb21tYW5kcyA9ICdub25WaXpDb21tYW5kcycsXG5cbiAgLy8gRFBJX1F1aWNrRmlsdGVyQ29tbWFuZHMsIGhhdmluZyB0eXBlIG9iamVjdFxuICBRdWlja0ZpbHRlckNvbW1hbmRzID0gJ3F1aWNrRmlsdGVyQ29tbWFuZHMnLFxuXG4gIC8vIERQSV9TaG93TWVDb21tYW5kcywgaGF2aW5nIHR5cGUgb2JqZWN0XG4gIFNob3dNZUNvbW1hbmRzID0gJ3Nob3dNZUNvbW1hbmRzJyxcblxuICAvLyBEUElfU29ydEluZGljYXRvck1lbnUsIGhhdmluZyB0eXBlIG9iamVjdFxuICBTb3J0SW5kaWNhdG9yTWVudSA9ICdzb3J0SW5kaWNhdG9yTWVudScsXG5cbiAgLy8gRFBJX1N0YW5kYXJkQ29tbWFuZHMsIGhhdmluZyB0eXBlIG9iamVjdFxuICBTdGFuZGFyZENvbW1hbmRzID0gJ3N0YW5kYXJkQ29tbWFuZHMnLFxuXG4gIC8vIERQSV9WaXpDb21tYW5kcywgaGF2aW5nIHR5cGUgb2JqZWN0XG4gIFZpekNvbW1hbmRzID0gJ3ZpekNvbW1hbmRzJyxcblxuICAvLyBEUElfWm9uZUNocm9tZUNvbW1hbmRzLCBoYXZpbmcgdHlwZSBvYmplY3RcbiAgWm9uZUNocm9tZUNvbW1hbmRzID0gJ3pvbmVDaHJvbWVDb21tYW5kcycsXG5cbiAgLy8gRFBJX0NvbW1hbmRJdGVtLCBoYXZpbmcgdHlwZSBDb21tYW5kc0l0ZW1cbiAgQ29tbWFuZEl0ZW0gPSAnY29tbWFuZEl0ZW0nLFxuXG4gIC8vIERQSV9Db21tYW5kSXRlbXMsIGhhdmluZyB0eXBlIENvbW1hbmRzSXRlbVtdXG4gIENvbW1hbmRJdGVtcyA9ICdjb21tYW5kSXRlbXMnLFxuXG4gIC8vIERQSV9Db21tYW5kLCBoYXZpbmcgdHlwZSBTaW1wbGVDb21tYW5kc1ByZXNNb2RlbFxuICBDb21tYW5kID0gJ3NpbXBsZUNvbW1hbmRNb2RlbCcsXG5cbiAgLy8gRFBJX0FkZENvbW1hbmQsIGhhdmluZyB0eXBlIFNpbXBsZUNvbW1hbmRzUHJlc01vZGVsXG4gIEFkZENvbW1hbmQgPSAnYWRkU2ltcGxlQ29tbWFuZE1vZGVsJyxcblxuICAvLyBEUElfUmVtb3ZlQ29tbWFuZCwgaGF2aW5nIHR5cGUgU2ltcGxlQ29tbWFuZHNQcmVzTW9kZWxcbiAgUmVtb3ZlQ29tbWFuZCA9ICdyZW1vdmVTaW1wbGVDb21tYW5kTW9kZWwnLFxuXG4gIC8vIERQSV9BY2NlcHRDb21tYW5kLCBoYXZpbmcgdHlwZSBTaW1wbGVDb21tYW5kc1ByZXNNb2RlbFxuICBBY2NlcHRDb21tYW5kID0gJ2FjY2VwdFNpbXBsZUNvbW1hbmRNb2RlbCcsXG5cbiAgLy8gRFBJX0RlY2xpbmVDb21tYW5kLCBoYXZpbmcgdHlwZSBTaW1wbGVDb21tYW5kc1ByZXNNb2RlbFxuICBEZWNsaW5lQ29tbWFuZCA9ICdkZWNsaW5lU2ltcGxlQ29tbWFuZE1vZGVsJyxcblxuICAvLyBEUElfRHJvcENvbW1hbmQsIGhhdmluZyB0eXBlIFNpbXBsZUNvbW1hbmRzUHJlc01vZGVsXG4gIERyb3BDb21tYW5kID0gJ2Ryb3BDb21tYW5kTW9kZWwnLFxuXG4gIC8vIERQSV9FZGl0Q2FwdGlvbkNvbW1hbmQsIGhhdmluZyB0eXBlIFNpbXBsZUNvbW1hbmRzUHJlc01vZGVsXG4gIEVkaXRDYXB0aW9uQ29tbWFuZCA9ICdlZGl0Q2FwdGlvbkNvbW1hbmRNb2RlbCcsXG5cbiAgLy8gRFBJX0ZvbnRDb21tYW5kLCBoYXZpbmcgdHlwZSBTaW1wbGVDb21tYW5kc1ByZXNNb2RlbFxuICBGb250Q29tbWFuZCA9ICdmb250Q29tbWFuZE1vZGVsJyxcblxuICAvLyBEUElfTGluZVN0eWxlQ29tbWFuZCwgaGF2aW5nIHR5cGUgU2ltcGxlQ29tbWFuZHNQcmVzTW9kZWxcbiAgTGluZVN0eWxlQ29tbWFuZCA9ICdsaW5lU3R5bGVDb21tYW5kTW9kZWwnLFxuXG4gIC8vIERQSV9Gb3JtYXRDb21tYW5kLCBoYXZpbmcgdHlwZSBTaW1wbGVDb21tYW5kc1ByZXNNb2RlbFxuICBGb3JtYXRDb21tYW5kID0gJ2Zvcm1hdENvbW1hbmRNb2RlbCcsXG5cbiAgLy8gRFBJX0Rlc3RydWN0b3JDb21tYW5kLCBoYXZpbmcgdHlwZSBTaW1wbGVDb21tYW5kc1ByZXNNb2RlbFxuICBEZXN0cnVjdG9yQ29tbWFuZCA9ICdkZXN0cnVjdG9yQ29tbWFuZCcsXG5cbiAgLy8gRFBJX0NsZWFyRm9ybWF0Q29tbWFuZCwgaGF2aW5nIHR5cGUgU2ltcGxlQ29tbWFuZHNQcmVzTW9kZWxcbiAgQ2xlYXJGb3JtYXRDb21tYW5kID0gJ2NsZWFyRm9ybWF0Q29tbWFuZE1vZGVsJyxcblxuICAvLyBEUElfUmljaFRleHRDb21tYW5kLCBoYXZpbmcgdHlwZSBTaW1wbGVDb21tYW5kc1ByZXNNb2RlbFxuICBSaWNoVGV4dENvbW1hbmQgPSAncmljaFRleHRDb21tYW5kTW9kZWwnLFxuXG4gIC8vIERQSV9Tb3J0SW5kaWNhdG9yQ29tbWFuZCwgaGF2aW5nIHR5cGUgU2ltcGxlQ29tbWFuZHNQcmVzTW9kZWxcbiAgU29ydEluZGljYXRvckNvbW1hbmQgPSAnc29ydEluZGljYXRvckNvbW1hbmQnLFxuXG4gIC8vIERQSV9Db21tYW5kTGlzdCwgaGF2aW5nIHR5cGUgU2ltcGxlQ29tbWFuZHNQcmVzTW9kZWxbXVxuICBDb21tYW5kTGlzdCA9ICdjb21tYW5kTGlzdCcsXG5cbiAgLy8gRFBJX1BhcmFtZXRlckN0cmwsIGhhdmluZyB0eXBlIFBhcmFtZXRlckN0cmxQcmVzTW9kZWxcbiAgUGFyYW1ldGVyQ3RybCA9ICdwYXJhbWV0ZXJDb250cm9sJyxcblxuICAvLyBEUElfUGFyYW1ldGVyQ3RybHMsIGhhdmluZyB0eXBlIFBhcmFtZXRlckN0cmxQcmVzTW9kZWxbXVxuICBQYXJhbWV0ZXJDdHJscyA9ICdwYXJhbWV0ZXJDb250cm9scycsXG5cbiAgLy8gRFBJX1BhZ2VNb2RlbCwgaGF2aW5nIHR5cGUgUGFnZVByZXNNb2RlbFxuICBQYWdlTW9kZWwgPSAncGFnZU1vZGVsJyxcblxuICAvLyBEUElfUGFnZVRyYWlsT3B0aW9ucywgaGF2aW5nIHR5cGUgUGFnZVRyYWlsT3B0aW9uc1ByZXNNb2RlbFxuICBQYWdlVHJhaWxPcHRpb25zID0gJ3BhZ2VUcmFpbE9wdGlvbnMnLFxuXG4gIC8vIERQSV9GaWVsZCwgaGF2aW5nIHR5cGUgRmllbGRQcmVzTW9kZWxcbiAgRmllbGQgPSAnZmllbGQnLFxuXG4gIC8vIERQSV9GaWVsZExpc3QsIGhhdmluZyB0eXBlIEZpZWxkUHJlc01vZGVsW11cbiAgRmllbGRMaXN0ID0gJ2ZpZWxkTGlzdCcsXG5cbiAgLy8gRFBJX0ZpZWxkQ29sdW1uLCBoYXZpbmcgdHlwZSBGaWVsZENvbHVtblByZXNNb2RlbFxuICBGaWVsZENvbHVtbiA9ICdjb2x1bW4nLFxuXG4gIC8vIERQSV9GaWVsZENvbHVtbkxpc3QsIGhhdmluZyB0eXBlIEZpZWxkQ29sdW1uUHJlc01vZGVsW11cbiAgRmllbGRDb2x1bW5MaXN0ID0gJ2NvbHVtbkxpc3QnLFxuXG4gIC8vIERQSV9QYXJhbWV0ZXIsIGhhdmluZyB0eXBlIFBhcmFtZXRlclByZXNNb2RlbFxuICBQYXJhbWV0ZXIgPSAncGFyYW1ldGVyJyxcblxuICAvLyBEUElfRGltZW5zaW9uLCBoYXZpbmcgdHlwZSBEaW1lbnNpb25QcmVzTW9kZWxcbiAgRGltZW5zaW9uID0gJ2RpbWVuc2lvbicsXG5cbiAgLy8gRFBJX0F0dHJpYnV0ZURpbWVuc2lvbkxpc3QsIGhhdmluZyB0eXBlIERpbWVuc2lvblByZXNNb2RlbFtdXG4gIEF0dHJpYnV0ZURpbWVuc2lvbkxpc3QgPSAnYXR0cmlidXRlRGltZW5zaW9uTGlzdCcsXG5cbiAgLy8gRFBJX1JlbGF0aW9uYWxUYWJsZSwgaGF2aW5nIHR5cGUgUmVsYXRpb25hbFRhYmxlUHJlc01vZGVsXG4gIFJlbGF0aW9uYWxUYWJsZSA9ICdyZWxhdGlvbmFsVGFibGUnLFxuXG4gIC8vIERQSV9EcmlsbFBhdGgsIGhhdmluZyB0eXBlIERyaWxsUGF0aFByZXNNb2RlbFxuICBEcmlsbFBhdGggPSAnZHJpbGxQYXRoJyxcblxuICAvLyBEUElfRmllbGRGb2xkZXIsIGhhdmluZyB0eXBlIEZpZWxkRm9sZGVyUHJlc01vZGVsXG4gIEZpZWxkRm9sZGVyID0gJ2ZpZWxkRm9sZGVyJyxcblxuICAvLyBEUElfR3JvdXAsIGhhdmluZyB0eXBlIEdyb3VwUHJlc01vZGVsXG4gIEdyb3VwID0gJ2dyb3VwJyxcblxuICAvLyBEUElfSGllcmFyY2h5LCBoYXZpbmcgdHlwZSBIaWVyYXJjaHlQcmVzTW9kZWxcbiAgSGllcmFyY2h5ID0gJ2hpZXJhcmNoeScsXG5cbiAgLy8gRFBJX0hpZXJhcmNoeUxpc3QsIGhhdmluZyB0eXBlIEhpZXJhcmNoeVByZXNNb2RlbFtdXG4gIEhpZXJhcmNoeUxpc3QgPSAnaGllcmFyY2h5TGlzdCcsXG5cbiAgLy8gRFBJX0hpZXJhcmNoeU1lbWJlclNlbGVjdGVkU3RhdGUsIGhhdmluZyB0eXBlIEhpZXJhcmNoeVNlbGVjdF9NZW1iZXJTZWxlY3RlZFN0YXRlUHJlc01vZGVsXG4gIEhpZXJhcmNoeU1lbWJlclNlbGVjdGVkU3RhdGUgPSAnaGllcmFyY2h5TWVtYmVyU2VsZWN0ZWRTdGF0ZScsXG5cbiAgLy8gRFBJX0hpZXJhcmNoeVNlbGVjdGlvbkNoYW5nZXMsIGhhdmluZyB0eXBlIEhpZXJhcmNoeVNlbGVjdF9NZW1iZXJTZWxlY3RlZFN0YXRlUHJlc01vZGVsW11cbiAgSGllcmFyY2h5U2VsZWN0aW9uQ2hhbmdlcyA9ICdoaWVyYXJjaHlTZWxlY3Rpb25DaGFuZ2VzJyxcblxuICAvLyBEUElfRGlzcGxheUZvbGRlciwgaGF2aW5nIHR5cGUgRGlzcGxheUZvbGRlclByZXNNb2RlbFxuICBEaXNwbGF5Rm9sZGVyID0gJ2Rpc3BsYXlGb2xkZXInLFxuXG4gIC8vIERQSV9EaXNwbGF5Rm9sZGVyTGlzdCwgaGF2aW5nIHR5cGUgRGlzcGxheUZvbGRlclByZXNNb2RlbFtdXG4gIERpc3BsYXlGb2xkZXJMaXN0ID0gJ2Rpc3BsYXlGb2xkZXJMaXN0JyxcblxuICAvLyBEUElfRGF0YVNvdXJjZUxheW91dCwgaGF2aW5nIHR5cGUgRGF0YVNvdXJjZUxheW91dFByZXNNb2RlbFxuICBEYXRhU291cmNlTGF5b3V0ID0gJ2RhdGFTb3VyY2VMYXlvdXQnLFxuXG4gIC8vIERQSV9CYXNlRGF0YVNvdXJjZSwgaGF2aW5nIHR5cGUgQmFzZURhdGFTb3VyY2VQcmVzTW9kZWxcbiAgQmFzZURhdGFTb3VyY2UgPSAnYmFzZURhdGFTb3VyY2UnLFxuXG4gIC8vIERQSV9CYXNlRGF0YVNvdXJjZXMsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2YgQmFzZURhdGFTb3VyY2VQcmVzTW9kZWwpXG4gIEJhc2VEYXRhU291cmNlcyA9ICdiYXNlRGF0YVNvdXJjZXMnLFxuXG4gIC8vIERQSV9EYXRhU291cmNlLCBoYXZpbmcgdHlwZSBEYXRhU291cmNlUHJlc01vZGVsXG4gIERhdGFTb3VyY2UgPSAnZGF0YVNvdXJjZScsXG5cbiAgLy8gRFBJX0RhdGFTb3VyY2VzLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIERhdGFTb3VyY2VQcmVzTW9kZWwpXG4gIERhdGFTb3VyY2VzID0gJ2RhdGFTb3VyY2VzJyxcblxuICAvLyBEUElfU2NoZW1hVmlld2VyRGF0YVNvdXJjZSwgaGF2aW5nIHR5cGUgU2NoZW1hVmlld2VyRGF0YVNvdXJjZVByZXNNb2RlbFxuICBTY2hlbWFWaWV3ZXJEYXRhU291cmNlID0gJ3NjaGVtYVZpZXdlckRhdGFTb3VyY2UnLFxuXG4gIC8vIERQSV9TY2hlbWFWaWV3ZXJEYXRhU291cmNlcywgaGF2aW5nIHR5cGUgRGljdGlvbmFyeShvZiBTY2hlbWFWaWV3ZXJEYXRhU291cmNlUHJlc01vZGVsKVxuICBTY2hlbWFWaWV3ZXJEYXRhU291cmNlcyA9ICdzY2hlbWFWaWV3ZXJEYXRhU291cmNlcycsXG5cbiAgLy8gRFBJX0Jhc2VEYXRhU2NoZW1hLCBoYXZpbmcgdHlwZSBCYXNlRGF0YVNjaGVtYVByZXNNb2RlbFxuICBCYXNlRGF0YVNjaGVtYSA9ICdiYXNlRGF0YVNjaGVtYScsXG5cbiAgLy8gRFBJX0RhdGFTY2hlbWEsIGhhdmluZyB0eXBlIERhdGFTY2hlbWFQcmVzTW9kZWxcbiAgRGF0YVNjaGVtYSA9ICdkYXRhU2NoZW1hJyxcblxuICAvLyBEUElfU2NoZW1hVmlld2VyRGF0YVNjaGVtYSwgaGF2aW5nIHR5cGUgU2NoZW1hVmlld2VyRGF0YVNjaGVtYVByZXNNb2RlbFxuICBTY2hlbWFWaWV3ZXJEYXRhU2NoZW1hID0gJ3NjaGVtYVZpZXdlckRhdGFTY2hlbWEnLFxuXG4gIC8vIERQSV9TaGVldExpc3RJdGVtLCBoYXZpbmcgdHlwZSBTaGVldExpc3RJdGVtUHJlc01vZGVsXG4gIFNoZWV0TGlzdEl0ZW0gPSAnc2hlZXRMaXN0SXRlbScsXG5cbiAgLy8gRFBJX1NoZWV0TGlzdEl0ZW1zLCBoYXZpbmcgdHlwZSBTaGVldExpc3RJdGVtUHJlc01vZGVsW11cbiAgU2hlZXRMaXN0SXRlbXMgPSAnc2hlZXRMaXN0SXRlbXMnLFxuXG4gIC8vIERQSV9TaGVldExpc3QsIGhhdmluZyB0eXBlIFNoZWV0TGlzdFByZXNNb2RlbFxuICBTaGVldExpc3QgPSAnc2hlZXRMaXN0JyxcblxuICAvLyBEUElfU2l6ZU1vZGVPcHRpb24sIGhhdmluZyB0eXBlIFNpemVNb2RlT3B0aW9uUHJlc01vZGVsXG4gIFNpemVNb2RlT3B0aW9uID0gJ3NpemVNb2RlT3B0aW9uJyxcblxuICAvLyBEUElfU2l6ZU1vZGVPcHRpb25zLCBoYXZpbmcgdHlwZSBTaXplTW9kZU9wdGlvblByZXNNb2RlbFtdXG4gIFNpemVNb2RlT3B0aW9ucyA9ICdzaXplTW9kZU9wdGlvbnMnLFxuXG4gIC8vIERQSV9EYXNoYm9hcmRTaXplQ29udHJvbCwgaGF2aW5nIHR5cGUgRGFzaGJvYXJkU2l6ZUNvbnRyb2xQcmVzTW9kZWxcbiAgRGFzaGJvYXJkU2l6ZUNvbnRyb2wgPSAnZGFzaGJvYXJkU2l6ZUNvbnRyb2wnLFxuXG4gIC8vIERQSV9EZXZpY2VMYXlvdXRJbmZvSXRlbSwgaGF2aW5nIHR5cGUgRGV2aWNlTGF5b3V0SW5mb0l0ZW1QcmVzTW9kZWxcbiAgRGV2aWNlTGF5b3V0SW5mb0l0ZW0gPSAnZGV2aWNlTGF5b3V0SW5mb0l0ZW0nLFxuXG4gIC8vIERQSV9EZXZpY2VMYXlvdXRJbmZvSXRlbXMsIGhhdmluZyB0eXBlIERldmljZUxheW91dEluZm9JdGVtUHJlc01vZGVsW11cbiAgRGV2aWNlTGF5b3V0SW5mb0l0ZW1zID0gJ2RldmljZUxheW91dEluZm9JdGVtcycsXG5cbiAgLy8gRFBJX0RldmljZUxheW91dEluZm9MaXN0LCBoYXZpbmcgdHlwZSBEZXZpY2VMYXlvdXRJbmZvTGlzdFByZXNNb2RlbFxuICBEZXZpY2VMYXlvdXRJbmZvTGlzdCA9ICdkZXZpY2VMYXlvdXRJbmZvTGlzdCcsXG5cbiAgLy8gRFBJX1NwZWNpYWxpemVkRGV2aWNlTGF5b3V0SXRlbSwgaGF2aW5nIHR5cGUgU3BlY2lhbGl6ZWREZXZpY2VMYXlvdXRJdGVtUHJlc01vZGVsXG4gIFNwZWNpYWxpemVkRGV2aWNlTGF5b3V0SXRlbSA9ICdzcGVjaWFsaXplZERldmljZUxheW91dEl0ZW0nLFxuXG4gIC8vIERQSV9TcGVjaWFsaXplZERldmljZUxheW91dEl0ZW1zLCBoYXZpbmcgdHlwZSBTcGVjaWFsaXplZERldmljZUxheW91dEl0ZW1QcmVzTW9kZWxbXVxuICBTcGVjaWFsaXplZERldmljZUxheW91dEl0ZW1zID0gJ3NwZWNpYWxpemVkRGV2aWNlTGF5b3V0SXRlbXMnLFxuXG4gIC8vIERQSV9TcGVjaWFsaXplZERldmljZUxheW91dExpc3QsIGhhdmluZyB0eXBlIFNwZWNpYWxpemVkRGV2aWNlTGF5b3V0TGlzdFByZXNNb2RlbFxuICBTcGVjaWFsaXplZERldmljZUxheW91dExpc3QgPSAnc3BlY2lhbGl6ZWREZXZpY2VMYXlvdXRMaXN0JyxcblxuICAvLyBEUElfU2l6ZUl0ZW0sIGhhdmluZyB0eXBlIFNpemVJdGVtUHJlc01vZGVsXG4gIFNpemVJdGVtID0gJ3NpemVJdGVtJyxcblxuICAvLyBEUElfU2l6ZUl0ZW1zLCBoYXZpbmcgdHlwZSBTaXplSXRlbVByZXNNb2RlbFtdXG4gIFNpemVJdGVtcyA9ICdzaXplSXRlbXMnLFxuXG4gIC8vIERQSV9EZXZpY2VTaXplc0xpc3QsIGhhdmluZyB0eXBlIFNpemVJdGVtTGlzdFByZXNNb2RlbFxuICBEZXZpY2VTaXplc0xpc3QgPSAnZGV2aWNlU2l6ZXNMaXN0JyxcblxuICAvLyBEUElfUHJlc2V0U2l6ZXNMaXN0LCBoYXZpbmcgdHlwZSBTaXplSXRlbUxpc3RQcmVzTW9kZWxcbiAgUHJlc2V0U2l6ZXNMaXN0ID0gJ3ByZXNldFNpemVzTGlzdCcsXG5cbiAgLy8gRFBJX1NpemVJdGVtTGlzdCwgaGF2aW5nIHR5cGUgU2l6ZUl0ZW1MaXN0UHJlc01vZGVsXG4gIFNpemVJdGVtTGlzdCA9ICdzaXplSXRlbUxpc3QnLFxuXG4gIC8vIERQSV9TdWJzdGl0dXRpb25LZXl3b3JkLCBoYXZpbmcgdHlwZSBTdWJzdGl0dXRpb25LZXl3b3JkUHJlc01vZGVsXG4gIFN1YnN0aXR1dGlvbktleXdvcmQgPSAnc3Vic3RpdHV0aW9uS2V5d29yZCcsXG5cbiAgLy8gRFBJX1N1YnN0aXR1dGlvbktleXdvcmRzLCBoYXZpbmcgdHlwZSBTdWJzdGl0dXRpb25LZXl3b3JkUHJlc01vZGVsW11cbiAgU3Vic3RpdHV0aW9uS2V5d29yZHMgPSAnc3Vic3RpdHV0aW9uS2V5d29yZHMnLFxuXG4gIC8vIERQSV9TdWJzdGl0dXRpb25LZXl3b3JkU3ViTGlzdCwgaGF2aW5nIHR5cGUgU3Vic3RpdHV0aW9uS2V5d29yZFN1Ykxpc3RQcmVzTW9kZWxcbiAgU3Vic3RpdHV0aW9uS2V5d29yZFN1Ykxpc3QgPSAnc3Vic3RpdHV0aW9uS2V5d29yZHNTdWJsaXN0JyxcblxuICAvLyBEUElfU3Vic3RpdHV0aW9uS2V5d29yZFN1Ykxpc3RzLCBoYXZpbmcgdHlwZSBTdWJzdGl0dXRpb25LZXl3b3JkU3ViTGlzdFByZXNNb2RlbFtdXG4gIFN1YnN0aXR1dGlvbktleXdvcmRTdWJMaXN0cyA9ICdzdWJzdGl0dXRpb25LZXl3b3JkU3VibGlzdHMnLFxuXG4gIC8vIERQSV9TdWJzdGl0dXRpb25LZXl3b3JkTGlzdCwgaGF2aW5nIHR5cGUgU3Vic3RpdHV0aW9uS2V5d29yZExpc3RQcmVzTW9kZWxcbiAgU3Vic3RpdHV0aW9uS2V5d29yZExpc3QgPSAnc3Vic3RpdHV0aW9uS2V5d29yZHNMaXN0JyxcblxuICAvLyBEUElfRGV2aWNlWm9uZUxpc3RJdGVtLCBoYXZpbmcgdHlwZSBEZXZpY2Vab25lTGlzdEl0ZW1QcmVzTW9kZWxcbiAgRGV2aWNlWm9uZUxpc3RJdGVtID0gJ2RldmljZVpvbmVMaXN0SXRlbScsXG5cbiAgLy8gRFBJX0RldmljZVpvbmVMaXN0SXRlbXMsIGhhdmluZyB0eXBlIERldmljZVpvbmVMaXN0SXRlbVByZXNNb2RlbFtdXG4gIERldmljZVpvbmVMaXN0SXRlbXMgPSAnZGV2aWNlWm9uZUxpc3RJdGVtcycsXG5cbiAgLy8gRFBJX0RldmljZVpvbmVMaXN0LCBoYXZpbmcgdHlwZSBEZXZpY2Vab25lTGlzdFByZXNNb2RlbFxuICBEZXZpY2Vab25lTGlzdCA9ICdkZXZpY2Vab25lTGlzdCcsXG5cbiAgLy8gRFBJX1pvbmVTbmFwTGluZUxpc3RJdGVtLCBoYXZpbmcgdHlwZSBab25lU25hcExpbmVMaXN0SXRlbVByZXNNb2RlbFxuICBab25lU25hcExpbmVMaXN0SXRlbSA9ICdzbmFwTGluZUxpc3RJdGVtJyxcblxuICAvLyBEUElfT3V0ZXJIb3Jpem9udGFsU25hcExpbmVzLCBoYXZpbmcgdHlwZSBab25lU25hcExpbmVMaXN0SXRlbVByZXNNb2RlbFtdXG4gIE91dGVySG9yaXpvbnRhbFNuYXBMaW5lcyA9ICdvdXRlckhvcml6b250YWxTbmFwTGluZXMnLFxuXG4gIC8vIERQSV9PdXRlclZlcnRpY2FsU25hcExpbmVzLCBoYXZpbmcgdHlwZSBab25lU25hcExpbmVMaXN0SXRlbVByZXNNb2RlbFtdXG4gIE91dGVyVmVydGljYWxTbmFwTGluZXMgPSAnb3V0ZXJWZXJ0aWNhbFNuYXBMaW5lcycsXG5cbiAgLy8gRFBJX0lubmVySG9yaXpvbnRhbFNuYXBMaW5lcywgaGF2aW5nIHR5cGUgWm9uZVNuYXBMaW5lTGlzdEl0ZW1QcmVzTW9kZWxbXVxuICBJbm5lckhvcml6b250YWxTbmFwTGluZXMgPSAnaW5uZXJIb3Jpem9udGFsU25hcExpbmVzJyxcblxuICAvLyBEUElfSW5uZXJWZXJ0aWNhbFNuYXBMaW5lcywgaGF2aW5nIHR5cGUgWm9uZVNuYXBMaW5lTGlzdEl0ZW1QcmVzTW9kZWxbXVxuICBJbm5lclZlcnRpY2FsU25hcExpbmVzID0gJ2lubmVyVmVydGljYWxTbmFwTGluZXMnLFxuXG4gIC8vIERQSV9ab25lU25hcExpbmVMaXN0LCBoYXZpbmcgdHlwZSBab25lU25hcExpbmVMaXN0UHJlc01vZGVsXG4gIFpvbmVTbmFwTGluZUxpc3QgPSAnc25hcExpbmVMaXN0JyxcblxuICAvLyBEUElfRGFzaGJvYXJkWm9uZUhpZXJhcmNoeSwgaGF2aW5nIHR5cGUgRGFzaGJvYXJkWm9uZUhpZXJhcmNoeVByZXNNb2RlbFxuICBEYXNoYm9hcmRab25lSGllcmFyY2h5ID0gJ2Rhc2hib2FyZFpvbmVIaWVyYXJjaHknLFxuXG4gIC8vIERQSV9EZXZpY2Vab25lVmlzaWJpbGl0eUxpc3RJdGVtLCBoYXZpbmcgdHlwZSBEZXZpY2Vab25lVmlzaWJpbGl0eUxpc3RJdGVtUHJlc01vZGVsXG4gIERldmljZVpvbmVWaXNpYmlsaXR5TGlzdEl0ZW0gPSAnZGV2aWNlWm9uZVZpc2liaWxpdHlMaXN0SXRlbScsXG5cbiAgLy8gRFBJX0RldmljZVpvbmVWaXNpYmlsaXR5TGlzdEl0ZW1zLCBoYXZpbmcgdHlwZSBEZXZpY2Vab25lVmlzaWJpbGl0eUxpc3RJdGVtUHJlc01vZGVsW11cbiAgRGV2aWNlWm9uZVZpc2liaWxpdHlMaXN0SXRlbXMgPSAnZGV2aWNlWm9uZVZpc2liaWxpdHlMaXN0SXRlbXMnLFxuXG4gIC8vIERQSV9EZXZpY2Vab25lVmlzaWJpbGl0eUxpc3QsIGhhdmluZyB0eXBlIERldmljZVpvbmVWaXNpYmlsaXR5TGlzdFByZXNNb2RlbFxuICBEZXZpY2Vab25lVmlzaWJpbGl0eUxpc3QgPSAnZGV2aWNlWm9uZVZpc2liaWxpdHlMaXN0JyxcblxuICAvLyBEUElfV29ya3NoZWV0RGF0YVNjaGVtYSwgaGF2aW5nIHR5cGUgV29ya3NoZWV0RGF0YVNjaGVtYVByZXNNb2RlbFxuICBXb3Jrc2hlZXREYXRhU2NoZW1hID0gJ3dvcmtzaGVldERhdGFTY2hlbWEnLFxuXG4gIC8vIERQSV9Xb3Jrc2hlZXREYXRhU2NoZW1hTWFwLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIFdvcmtzaGVldERhdGFTY2hlbWFQcmVzTW9kZWwpXG4gIFdvcmtzaGVldERhdGFTY2hlbWFNYXAgPSAnd29ya3NoZWV0RGF0YVNjaGVtYU1hcCcsXG5cbiAgLy8gRFBJX1NoZWxmLCBoYXZpbmcgdHlwZSBTaGVsZlByZXNNb2RlbFxuICBTaGVsZiA9ICdzaGVsZicsXG5cbiAgLy8gRFBJX1NoZWxmRGV0YWlsLCBoYXZpbmcgdHlwZSBTaGVsZlByZXNNb2RlbFxuICBTaGVsZkRldGFpbCA9ICdzaGVsZkRldGFpbCcsXG5cbiAgLy8gRFBJX1NoZWxmTGlzdCwgaGF2aW5nIHR5cGUgU2hlbGZQcmVzTW9kZWxbXVxuICBTaGVsZkxpc3QgPSAnc2hlbGZMaXN0JyxcblxuICAvLyBEUElfU2hlbGZJdGVtLCBoYXZpbmcgdHlwZSBTaGVsZkl0ZW1QcmVzTW9kZWxcbiAgU2hlbGZJdGVtID0gJ3NoZWxmSXRlbScsXG5cbiAgLy8gRFBJX1NoZWxmSXRlbXMsIGhhdmluZyB0eXBlIFNoZWxmSXRlbVByZXNNb2RlbFtdXG4gIFNoZWxmSXRlbXMgPSAnc2hlbGZJdGVtcycsXG5cbiAgLy8gRFBJX1NoZWx2ZXMsIGhhdmluZyB0eXBlIFNoZWx2ZXNQcmVzTW9kZWxcbiAgU2hlbHZlcyA9ICdzaGVsdmVzJyxcblxuICAvLyBEUElfRmllbGRFbmNvZGluZywgaGF2aW5nIHR5cGUgRmllbGRFbmNvZGluZ1ByZXNNb2RlbFxuICBGaWVsZEVuY29kaW5nID0gJ2ZpZWxkRW5jb2RpbmcnLFxuXG4gIC8vIERQSV9GaWVsZEVuY29kaW5ncywgaGF2aW5nIHR5cGUgRmllbGRFbmNvZGluZ1ByZXNNb2RlbFtdXG4gIEZpZWxkRW5jb2RpbmdzID0gJ2ZpZWxkRW5jb2RpbmdzJyxcblxuICAvLyBEUElfVWJlclRpcCwgaGF2aW5nIHR5cGUgVWJlclRpcFByZXNNb2RlbFxuICBVYmVyVGlwID0gJ3ViZXJUaXAnLFxuXG4gIC8vIERQSV9BbmFseXRpY3NPYmplY3REcmFnSW5mbywgaGF2aW5nIHR5cGUgQW5hbHl0aWNzT2JqZWN0RHJhZ0luZm9QcmVzTW9kZWxcbiAgQW5hbHl0aWNzT2JqZWN0RHJhZ0luZm8gPSAnYW5hbHl0aWNzT2JqZWN0RHJhZ0luZm8nLFxuXG4gIC8vIERQSV9UcmVuZExpbmUsIGhhdmluZyB0eXBlIFRyZW5kTGluZVByZXNNb2RlbFxuICBUcmVuZExpbmUgPSAndHJlbmRMaW5lJyxcblxuICAvLyBEUElfVHJlbmRMaW5lRGlhbG9nLCBoYXZpbmcgdHlwZSBUcmVuZExpbmVEaWFsb2dQcmVzTW9kZWxcbiAgVHJlbmRMaW5lRGlhbG9nID0gJ3RyZW5kTGluZURpYWxvZycsXG5cbiAgLy8gRFBJX1RyZW5kTGluZURlc2NyaWJlUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBUcmVuZExpbmVEZXNjcmliZVByZXNNb2RlbFxuICBUcmVuZExpbmVEZXNjcmliZVByZXNNb2RlbCA9ICd0cmVuZExpbmVEZXNjcmliZVByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX1RyZW5kTGluZUFPVk1vZGVsUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBUcmVuZExpbmVBT1ZNb2RlbFByZXNNb2RlbFxuICBUcmVuZExpbmVBT1ZNb2RlbFByZXNNb2RlbCA9ICd0cmVuZExpbmVBb3ZNb2RlbFByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX1RyZW5kTGluZUFPVk1vZGVsc1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgVHJlbmRMaW5lQU9WTW9kZWxQcmVzTW9kZWxbXVxuICBUcmVuZExpbmVBT1ZNb2RlbHNQcmVzTW9kZWwgPSAndHJlbmRNb2RlbERlc2NyaXB0aW9uVmVjdG9yJyxcblxuICAvLyBEUElfVHJlbmRMaW5lTGluZUNvZWZmaWNpZW50UHJlc01vZGVsLCBoYXZpbmcgdHlwZSBUcmVuZExpbmVMaW5lQ29lZmZpY2llbnRQcmVzTW9kZWxcbiAgVHJlbmRMaW5lTGluZUNvZWZmaWNpZW50UHJlc01vZGVsID0gJ3RyZW5kTGluZUxpbmVDb2VmZmljaWVudCcsXG5cbiAgLy8gRFBJX1RyZW5kTGluZUxpbmVDb2VmZmljaWVudHNQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFRyZW5kTGluZUxpbmVDb2VmZmljaWVudFByZXNNb2RlbFtdXG4gIFRyZW5kTGluZUxpbmVDb2VmZmljaWVudHNQcmVzTW9kZWwgPSAndHJlbmRMaW5lTGluZUNvZWZmaWNpZW50c1ByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX1RyZW5kTGluZUxpbmVzUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBUcmVuZExpbmVMaW5lc1ByZXNNb2RlbFxuICBUcmVuZExpbmVMaW5lc1ByZXNNb2RlbCA9ICd0cmVuZExpbmVMaW5lc1ByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX1RyZW5kTGluZUFPVlByZXNNb2RlbCwgaGF2aW5nIHR5cGUgVHJlbmRMaW5lQU9WUHJlc01vZGVsXG4gIFRyZW5kTGluZUFPVlByZXNNb2RlbCA9ICd0cmVuZExpbmVBbm92YVByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX1JlZmVyZW5jZUxpbmUsIGhhdmluZyB0eXBlIFJlZmVyZW5jZUxpbmVQcmVzTW9kZWxcbiAgUmVmZXJlbmNlTGluZSA9ICdyZWZlcmVuY2VMaW5lJyxcblxuICAvLyBEUElfUmVmZXJlbmNlTGluZXMsIGhhdmluZyB0eXBlIFJlZmVyZW5jZUxpbmVQcmVzTW9kZWxbXVxuICBSZWZlcmVuY2VMaW5lcyA9ICdyZWZlcmVuY2VMaW5lcycsXG5cbiAgLy8gRFBJX1BlcmNlbnRpbGVFZGl0RGF0YVZhbHVlLCBoYXZpbmcgdHlwZSBFZGl0RGF0YVZhbHVlUHJlc01vZGVsXG4gIFBlcmNlbnRpbGVFZGl0RGF0YVZhbHVlID0gJ3BlcmNlbnRpbGVFZGl0RGF0YVZhbHVlJyxcblxuICAvLyBEUElfTGltaXRFZGl0RGF0YVZhbHVlLCBoYXZpbmcgdHlwZSBFZGl0RGF0YVZhbHVlUHJlc01vZGVsXG4gIExpbWl0RWRpdERhdGFWYWx1ZSA9ICdsaW1pdEVkaXREYXRhVmFsdWUnLFxuXG4gIC8vIERQSV9Db25maWRlbmNlTGV2ZWxDb21ibywgaGF2aW5nIHR5cGUgRWRpdFZhbHVlV2lkZ2V0UHJlc01vZGVsXG4gIENvbmZpZGVuY2VMZXZlbENvbWJvID0gJ2NvbmZpZGVuY2VMZXZlbENvbWJvJyxcblxuICAvLyBEUElfRGlzdHJpYnV0aW9uUXVhbnRpbGVzQ29tYm8sIGhhdmluZyB0eXBlIEVkaXRWYWx1ZVdpZGdldFByZXNNb2RlbFxuICBEaXN0cmlidXRpb25RdWFudGlsZXNDb21ibyA9ICdkaXN0cmlidXRpb25RdWFudGlsZXNMZXZlbENvbWJvJyxcblxuICAvLyBEUElfUGVyY2VudGlsZXNDb21ibywgaGF2aW5nIHR5cGUgRWRpdFZhbHVlV2lkZ2V0UHJlc01vZGVsXG4gIFBlcmNlbnRpbGVzQ29tYm8gPSAnZGlzdHJpYnV0aW9uUGVyY2VudGlsZXNMZXZlbENvbWJvJyxcblxuICAvLyBEUElfTnVtZXJpY0JpblNpemVDb21ibywgaGF2aW5nIHR5cGUgRWRpdFZhbHVlV2lkZ2V0UHJlc01vZGVsXG4gIE51bWVyaWNCaW5TaXplQ29tYm8gPSAnbnVtZXJpY0JpblNpemVDb21ibycsXG5cbiAgLy8gRFBJX0ZpZWxkUGlja2VyRmllbGQsIGhhdmluZyB0eXBlIEZpZWxkUGlja2VyRmllbGRQcmVzTW9kZWxcbiAgRmllbGRQaWNrZXJGaWVsZCA9ICdmaWVsZFBpY2tlckZpZWxkJyxcblxuICAvLyBEUElfRmllbGRQaWNrZXJGaWVsZHMsIGhhdmluZyB0eXBlIEZpZWxkUGlja2VyRmllbGRQcmVzTW9kZWxbXVxuICBGaWVsZFBpY2tlckZpZWxkcyA9ICdmaWVsZFBpY2tlckZpZWxkcycsXG5cbiAgLy8gRFBJX0ZpZWxkUGlja2VyQ29tYm8sIGhhdmluZyB0eXBlIEZpZWxkUGlja2VyQ29tYm9QcmVzTW9kZWxcbiAgRmllbGRQaWNrZXJDb21ibyA9ICdmaWVsZFBpY2tlckNvbWJvJyxcblxuICAvLyBEUElfUGFpcmVkRmllbGRQaWNrZXJDb21ibywgaGF2aW5nIHR5cGUgRmllbGRQaWNrZXJDb21ib1ByZXNNb2RlbFxuICBQYWlyZWRGaWVsZFBpY2tlckNvbWJvID0gJ3BhaXJlZEZpZWxkUGlja2VyQ29tYm8nLFxuXG4gIC8vIERQSV9SZWZlcmVuY2VMaW5lRWRpdG9yUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBSZWZlcmVuY2VMaW5lRWRpdG9yUHJlc01vZGVsXG4gIFJlZmVyZW5jZUxpbmVFZGl0b3JQcmVzTW9kZWwgPSAncmVmZXJlbmNlTGluZUVkaXRvcicsXG5cbiAgLy8gRFBJX0Nsb3NlRGF0YVNvdXJjZUVycm9yRGlhbG9nUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBDbG9zZURhdGFTb3VyY2VFcnJvckRpYWxvZ1ByZXNNb2RlbFxuICBDbG9zZURhdGFTb3VyY2VFcnJvckRpYWxvZ1ByZXNNb2RlbCA9ICdjbG9zZURzRXJyb3JEaWFsb2cnLFxuXG4gIC8vIERQSV9FZGl0UmVmZXJlbmNlTGluZSwgaGF2aW5nIHR5cGUgRWRpdFJlZmVyZW5jZUxpbmVQcmVzTW9kZWxcbiAgRWRpdFJlZmVyZW5jZUxpbmUgPSAnZWRpdFJlZmVyZW5jZUxpbmUnLFxuXG4gIC8vIERQSV9FZGl0UmVmZXJlbmNlQmFuZCwgaGF2aW5nIHR5cGUgRWRpdFJlZmVyZW5jZUJhbmRQcmVzTW9kZWxcbiAgRWRpdFJlZmVyZW5jZUJhbmQgPSAnZWRpdFJlZmVyZW5jZUJhbmQnLFxuXG4gIC8vIERQSV9FZGl0RGlzdHJpYnV0aW9uLCBoYXZpbmcgdHlwZSBFZGl0RGlzdHJpYnV0aW9uUHJlc01vZGVsXG4gIEVkaXREaXN0cmlidXRpb24gPSAnZWRpdERpc3RyaWJ1dGlvbicsXG5cbiAgLy8gRFBJX0Rpc3RyaWJ1dGlvblBlcmNlbnRhZ2VzLCBoYXZpbmcgdHlwZSBEaXN0cmlidXRpb25QZXJjZW50YWdlc1ByZXNNb2RlbFxuICBEaXN0cmlidXRpb25QZXJjZW50YWdlcyA9ICdkaXN0cmlidXRpb25QZXJjZW50YWdlcycsXG5cbiAgLy8gRFBJX0Rpc3RyaWJ1dGlvblBlcmNlbnRpbGVzLCBoYXZpbmcgdHlwZSBEaXN0cmlidXRpb25QZXJjZW50aWxlc1ByZXNNb2RlbFxuICBEaXN0cmlidXRpb25QZXJjZW50aWxlcyA9ICdkaXN0cmlidXRpb25QZXJjZW50aWxlcycsXG5cbiAgLy8gRFBJX0Rpc3RyaWJ1dGlvblF1YW50aWxlcywgaGF2aW5nIHR5cGUgRGlzdHJpYnV0aW9uUXVhbnRpbGVzUHJlc01vZGVsXG4gIERpc3RyaWJ1dGlvblF1YW50aWxlcyA9ICdkaXN0cmlidXRpb25RdWFudGlsZXMnLFxuXG4gIC8vIERQSV9EaXN0cmlidXRpb25TdGFuZGFyZERldmlhdGlvbiwgaGF2aW5nIHR5cGUgRGlzdHJpYnV0aW9uU3RhbmRhcmREZXZpYXRpb25QcmVzTW9kZWxcbiAgRGlzdHJpYnV0aW9uU3RhbmRhcmREZXZpYXRpb24gPSAnZGlzdHJpYnV0aW9uU3RkZGV2JyxcblxuICAvLyBEUElfU29ydEluZGljYXRvcnMsIGhhdmluZyB0eXBlIFNvcnRJbmRpY2F0b3JzUHJlc01vZGVsXG4gIFNvcnRJbmRpY2F0b3JzID0gJ3NvcnRJbmRpY2F0b3JzJyxcblxuICAvLyBEUElfU29ydEluZGljYXRvclJlZ2lvbiwgaGF2aW5nIHR5cGUgU29ydEluZGljYXRvclJlZ2lvblByZXNNb2RlbFxuICBTb3J0SW5kaWNhdG9yUmVnaW9uID0gJ3NvcnRJbmRpY2F0b3JSZWdpb24nLFxuXG4gIC8vIERQSV9Tb3J0SW5kaWNhdG9yUmVnaW9ucywgaGF2aW5nIHR5cGUgU29ydEluZGljYXRvclJlZ2lvblByZXNNb2RlbFtdXG4gIFNvcnRJbmRpY2F0b3JSZWdpb25zID0gJ3NvcnRJbmRpY2F0b3JSZWdpb25zJyxcblxuICAvLyBEUElfU29ydEluZGljYXRvckl0ZW0sIGhhdmluZyB0eXBlIFNvcnRJbmRpY2F0b3JJdGVtUHJlc01vZGVsXG4gIFNvcnRJbmRpY2F0b3JJdGVtID0gJ3NvcnRJbmRpY2F0b3JJdGVtJyxcblxuICAvLyBEUElfU29ydEluZGljYXRvckl0ZW1zLCBoYXZpbmcgdHlwZSBTb3J0SW5kaWNhdG9ySXRlbVByZXNNb2RlbFtdXG4gIFNvcnRJbmRpY2F0b3JJdGVtcyA9ICdzb3J0SW5kaWNhdG9ySXRlbXMnLFxuXG4gIC8vIERQSV9CdWlsZGVyQ29uZmlnLCBoYXZpbmcgdHlwZSBCdWlsZGVyQ29uZmlnUHJlc01vZGVsXG4gIEJ1aWxkZXJDb25maWcgPSAnYnVpbGRlckNvbmZpZycsXG5cbiAgLy8gRFBJX1NoZWV0TGF5b3V0SW5mbywgaGF2aW5nIHR5cGUgU2hlZXRMYXlvdXRJbmZvUHJlc01vZGVsXG4gIFNoZWV0TGF5b3V0SW5mbyA9ICdzaGVldExheW91dEluZm8nLFxuXG4gIC8vIERQSV9BcmVhUmVjdCwgaGF2aW5nIHR5cGUgUmVjdGFuZ2xlUHJlc01vZGVsXG4gIEFyZWFSZWN0ID0gJ2FyZWFSZWN0JyxcblxuICAvLyBEUElfQm9yZGVyLCBoYXZpbmcgdHlwZSBSZWN0YW5nbGVQcmVzTW9kZWxcbiAgQm9yZGVyID0gJ2JvcmRlclJlY3QnLFxuXG4gIC8vIERQSV9Cb3VuZHNSZWN0LCBoYXZpbmcgdHlwZSBSZWN0YW5nbGVQcmVzTW9kZWxcbiAgQm91bmRzUmVjdCA9ICdib3VuZHNSZWN0JyxcblxuICAvLyBEUElfQnV0dG9uUmVjdCwgaGF2aW5nIHR5cGUgUmVjdGFuZ2xlUHJlc01vZGVsXG4gIEJ1dHRvblJlY3QgPSAnYnV0dG9uUmVjdCcsXG5cbiAgLy8gRFBJX0RyYWdSZWN0LCBoYXZpbmcgdHlwZSBSZWN0YW5nbGVQcmVzTW9kZWxcbiAgRHJhZ1JlY3QgPSAnZHJhZ1JlY3QnLFxuXG4gIC8vIERQSV9Gb2N1c1JlY3QsIGhhdmluZyB0eXBlIFJlY3RhbmdsZVByZXNNb2RlbFxuICBGb2N1c1JlY3QgPSAnZm9jdXNSZWN0JyxcblxuICAvLyBEUElfSW1hZ2VUaWxlUmVjdCwgaGF2aW5nIHR5cGUgUmVjdGFuZ2xlUHJlc01vZGVsXG4gIEltYWdlVGlsZVJlY3QgPSAndGlsZVJlY3QnLFxuXG4gIC8vIERQSV9JdGVtUmVjdCwgaGF2aW5nIHR5cGUgUmVjdGFuZ2xlUHJlc01vZGVsXG4gIEl0ZW1SZWN0ID0gJ2l0ZW1SZWN0JyxcblxuICAvLyBEUElfTGFiZWxSZWN0LCBoYXZpbmcgdHlwZSBSZWN0YW5nbGVQcmVzTW9kZWxcbiAgTGFiZWxSZWN0ID0gJ2xhYmVsUmVjdCcsXG5cbiAgLy8gRFBJX01hcmtSZWN0LCBoYXZpbmcgdHlwZSBSZWN0YW5nbGVQcmVzTW9kZWxcbiAgTWFya1JlY3QgPSAnbWFya1JlY3QnLFxuXG4gIC8vIERQSV9NYXJrVG9vbHRpcFJlY3QsIGhhdmluZyB0eXBlIFJlY3RhbmdsZVByZXNNb2RlbFxuICBNYXJrVG9vbHRpcFJlY3QgPSAnbWFya1Rvb2x0aXBSZWN0JyxcblxuICAvLyBEUElfTWVudUJ1dHRvblJlY3QsIGhhdmluZyB0eXBlIFJlY3RhbmdsZVByZXNNb2RlbFxuICBNZW51QnV0dG9uUmVjdCA9ICdtZW51QnV0dG9uUmVjdCcsXG5cbiAgLy8gRFBJX091dFJlZ2lvblJlY3QsIGhhdmluZyB0eXBlIFJlY3RhbmdsZVByZXNNb2RlbFxuICBPdXRSZWdpb25SZWN0ID0gJ291dFJlZ2lvblJlY3QnLFxuXG4gIC8vIERQSV9QYW5lUmVjdCwgaGF2aW5nIHR5cGUgUmVjdGFuZ2xlUHJlc01vZGVsXG4gIFBhbmVSZWN0ID0gJ3BhbmVSZWN0JyxcblxuICAvLyBEUElfUGl4ZWxFeHRlbnRzLCBoYXZpbmcgdHlwZSBSZWN0YW5nbGVQcmVzTW9kZWxcbiAgUGl4ZWxFeHRlbnRzID0gJ3BpeGVsRXh0ZW50cycsXG5cbiAgLy8gRFBJX1JlY3RNYXhMYWJlbCwgaGF2aW5nIHR5cGUgUmVjdGFuZ2xlUHJlc01vZGVsXG4gIFJlY3RNYXhMYWJlbCA9ICdyZWN0TWF4TGFiZWwnLFxuXG4gIC8vIERQSV9SZWN0TWluTGFiZWwsIGhhdmluZyB0eXBlIFJlY3RhbmdsZVByZXNNb2RlbFxuICBSZWN0TWluTGFiZWwgPSAncmVjdE1pbkxhYmVsJyxcblxuICAvLyBEUElfUmVjdFJhbXAsIGhhdmluZyB0eXBlIFJlY3RhbmdsZVByZXNNb2RlbFxuICBSZWN0UmFtcCA9ICdyZWN0UmFtcCcsXG5cbiAgLy8gRFBJX1JlY3RUaXRsZSwgaGF2aW5nIHR5cGUgUmVjdGFuZ2xlUHJlc01vZGVsXG4gIFJlY3RUaXRsZSA9ICdyZWN0VGl0bGUnLFxuXG4gIC8vIERQSV9SZWdpb25SZWN0LCBoYXZpbmcgdHlwZSBSZWN0YW5nbGVQcmVzTW9kZWxcbiAgUmVnaW9uUmVjdCA9ICdyZWdpb25SZWN0JyxcblxuICAvLyBEUElfU2VsZWN0aW9uUmVjdCwgaGF2aW5nIHR5cGUgUmVjdGFuZ2xlUHJlc01vZGVsXG4gIFNlbGVjdGlvblJlY3QgPSAnc2VsZWN0aW9uUmVjdCcsXG5cbiAgLy8gRFBJX1VudXNlZFJlY3QsIGhhdmluZyB0eXBlIFJlY3RhbmdsZVByZXNNb2RlbFxuICBVbnVzZWRSZWN0ID0gJ3VudXNlZFJlY3QnLFxuXG4gIC8vIERQSV9ab25lRWRnZVJlY3QsIGhhdmluZyB0eXBlIFJlY3RhbmdsZVByZXNNb2RlbFxuICBab25lRWRnZVJlY3QgPSAnem9uZUVkZ2UnLFxuXG4gIC8vIERQSV9ab25lRWRnZVJlY3RQaXgsIGhhdmluZyB0eXBlIFJlY3RhbmdsZVByZXNNb2RlbFxuICBab25lRWRnZVJlY3RQaXggPSAnem9uZUVkZ2VQaXgnLFxuXG4gIC8vIERQSV9ab25lRWRnZVJlY3RQcCwgaGF2aW5nIHR5cGUgUmVjdGFuZ2xlUHJlc01vZGVsXG4gIFpvbmVFZGdlUmVjdFBwID0gJ3pvbmVFZGdlUHAnLFxuXG4gIC8vIERQSV9VSUF1dG9tYXRpb25MaW5rUmVjdCwgaGF2aW5nIHR5cGUgUmVjdGFuZ2xlUHJlc01vZGVsXG4gIFVJQXV0b21hdGlvbkxpbmtSZWN0ID0gJ2xpbmtSZWN0JyxcblxuICAvLyBEUElfQm9yZGVycywgaGF2aW5nIHR5cGUgUmVjdGFuZ2xlUHJlc01vZGVsW11cbiAgQm9yZGVycyA9ICdib3JkZXJSZWN0cycsXG5cbiAgLy8gRFBJX1VJQXV0b21hdGlvbkxpbmtSZWN0cywgaGF2aW5nIHR5cGUgUmVjdGFuZ2xlUHJlc01vZGVsW11cbiAgVUlBdXRvbWF0aW9uTGlua1JlY3RzID0gJ2xpbmtSZWN0cycsXG5cbiAgLy8gRFBJX0RvbWFpbkV4dGVudHMsIGhhdmluZyB0eXBlIERvdWJsZVJlY3RhbmdsZVByZXNNb2RlbFxuICBEb21haW5FeHRlbnRzID0gJ2RvbWFpbkV4dGVudHMnLFxuXG4gIC8vIERQSV9NYXBEb21haW5FeHRlbnRzLCBoYXZpbmcgdHlwZSBEb3VibGVSZWN0YW5nbGVQcmVzTW9kZWxcbiAgTWFwRG9tYWluRXh0ZW50cyA9ICdtYXBEb21haW5FeHRlbnRzJyxcblxuICAvLyBEUElfTWFwTGF0TG9uZ1JlY3QsIGhhdmluZyB0eXBlIE1hcFJlY3RQcmVzTW9kZWxcbiAgTWFwTGF0TG9uZ1JlY3QgPSAnbWFwTGF0TG9uZ1JlY3QnLFxuXG4gIC8vIERQSV9DZW50ZXIsIGhhdmluZyB0eXBlIFBvaW50UHJlc01vZGVsXG4gIENlbnRlciA9ICdjZW50ZXInLFxuXG4gIC8vIERQSV9DZW50ZXJNYXJrTGluZUJlZ2luLCBoYXZpbmcgdHlwZSBQb2ludFByZXNNb2RlbFxuICBDZW50ZXJNYXJrTGluZUJlZ2luID0gJ2NlbnRlck1hcmtMaW5lQmVnaW4nLFxuXG4gIC8vIERQSV9DZW50ZXJNYXJrTGluZUVuZCwgaGF2aW5nIHR5cGUgUG9pbnRQcmVzTW9kZWxcbiAgQ2VudGVyTWFya0xpbmVFbmQgPSAnY2VudGVyTWFya0xpbmVFbmQnLFxuXG4gIC8vIERQSV9Ecm9wTG9jYXRpb24sIGhhdmluZyB0eXBlIFBvaW50UHJlc01vZGVsXG4gIERyb3BMb2NhdGlvbiA9ICdkcm9wTG9jYXRpb24nLFxuXG4gIC8vIERQSV9FbmRQdCwgaGF2aW5nIHR5cGUgUG9pbnRQcmVzTW9kZWxcbiAgRW5kUHQgPSAnZW5kUG9pbnQnLFxuXG4gIC8vIERQSV9HcmFiTG9jYXRpb24sIGhhdmluZyB0eXBlIFBvaW50UHJlc01vZGVsXG4gIEdyYWJMb2NhdGlvbiA9ICdncmFiTG9jYXRpb24nLFxuXG4gIC8vIERQSV9HcmlkT3JpZ2luLCBoYXZpbmcgdHlwZSBQb2ludFByZXNNb2RlbFxuICBHcmlkT3JpZ2luID0gJ2dyaWRPcmlnaW4nLFxuXG4gIC8vIERQSV9MYXNzb1NlbGVjdGlvblBvaW50LCBoYXZpbmcgdHlwZSBQb2ludFByZXNNb2RlbFxuICBMYXNzb1NlbGVjdGlvblBvaW50ID0gJ2xhc3NvU2VsZWN0aW9uUG9pbnQnLFxuXG4gIC8vIERQSV9NZW51TG9jYXRpb24sIGhhdmluZyB0eXBlIFBvaW50UHJlc01vZGVsXG4gIE1lbnVMb2NhdGlvbiA9ICdtZW51TG9jYXRpb24nLFxuXG4gIC8vIERQSV9Nb3ZlT2Zmc2V0LCBoYXZpbmcgdHlwZSBQb2ludFByZXNNb2RlbFxuICBNb3ZlT2Zmc2V0ID0gJ21vdmVPZmZzZXQnLFxuXG4gIC8vIERQSV9PdmVybGF5QW5jaG9yLCBoYXZpbmcgdHlwZSBQb2ludFByZXNNb2RlbFxuICBPdmVybGF5QW5jaG9yID0gJ292ZXJsYXlBbmNob3InLFxuXG4gIC8vIERQSV9QYW5BbW91bnQsIGhhdmluZyB0eXBlIFBvaW50UHJlc01vZGVsXG4gIFBhbkFtb3VudCA9ICdwYW5BbW91bnQnLFxuXG4gIC8vIERQSV9QYW5Mb2NhdGlvbiwgaGF2aW5nIHR5cGUgUG9pbnRQcmVzTW9kZWxcbiAgUGFuTG9jYXRpb24gPSAncGFuTG9jYXRpb24nLFxuXG4gIC8vIERQSV9QYW5lUmVzb2x2ZXJMb2NhdGlvbiwgaGF2aW5nIHR5cGUgUG9pbnRQcmVzTW9kZWxcbiAgUGFuZVJlc29sdmVyTG9jYXRpb24gPSAncGFuZVJlc29sdmVyTG9jYXRpb24nLFxuXG4gIC8vIERQSV9QaXhlbEV4dGVudHNPZmZzZXQsIGhhdmluZyB0eXBlIFBvaW50UHJlc01vZGVsXG4gIFBpeGVsRXh0ZW50c09mZnNldCA9ICdleHRlbnRzT2Zmc2V0JyxcblxuICAvLyBEUElfUG9pbnQxLCBoYXZpbmcgdHlwZSBQb2ludFByZXNNb2RlbFxuICBQb2ludDEgPSAncHQxJyxcblxuICAvLyBEUElfUG9pbnQyLCBoYXZpbmcgdHlwZSBQb2ludFByZXNNb2RlbFxuICBQb2ludDIgPSAncHQyJyxcblxuICAvLyBEUElfUG9pbnQzLCBoYXZpbmcgdHlwZSBQb2ludFByZXNNb2RlbFxuICBQb2ludDMgPSAncHQzJyxcblxuICAvLyBEUElfUmVnaW9uUG9pbnQsIGhhdmluZyB0eXBlIFBvaW50UHJlc01vZGVsXG4gIFJlZ2lvblBvaW50ID0gJ3JlZ2lvblBvaW50JyxcblxuICAvLyBEUElfU2Nyb2xsT2Zmc2V0LCBoYXZpbmcgdHlwZSBQb2ludFByZXNNb2RlbFxuICBTY3JvbGxPZmZzZXQgPSAnc2Nyb2xsT2Zmc2V0JyxcblxuICAvLyBEUElfU2VsZWN0QXRQb2ludCwgaGF2aW5nIHR5cGUgUG9pbnRQcmVzTW9kZWxcbiAgU2VsZWN0QXRQb2ludCA9ICdzZWxlY3RBdFBvaW50JyxcblxuICAvLyBEUElfU2VsZWN0T2Zmc2V0LCBoYXZpbmcgdHlwZSBQb2ludFByZXNNb2RlbFxuICBTZWxlY3RPZmZzZXQgPSAnc2VsZWN0T2Zmc2V0JyxcblxuICAvLyBEUElfVGFyZ2V0UHQsIGhhdmluZyB0eXBlIFBvaW50UHJlc01vZGVsXG4gIFRhcmdldFB0ID0gJ3RhcmdldFBvaW50JyxcblxuICAvLyBEUElfVGV4dE9yaWdpbiwgaGF2aW5nIHR5cGUgUG9pbnRQcmVzTW9kZWxcbiAgVGV4dE9yaWdpbiA9ICd0ZXh0T3JpZ2luJyxcblxuICAvLyBEUElfVG9vbHRpcEFuY2hvclBvaW50LCBoYXZpbmcgdHlwZSBQb2ludFByZXNNb2RlbFxuICBUb29sdGlwQW5jaG9yUG9pbnQgPSAndG9vbHRpcEFuY2hvclBvaW50JyxcblxuICAvLyBEUElfVG9vbHRpcE9mZnNldCwgaGF2aW5nIHR5cGUgUG9pbnRQcmVzTW9kZWxcbiAgVG9vbHRpcE9mZnNldCA9ICd0b29sdGlwT2Zmc2V0JyxcblxuICAvLyBEUElfVml6TG9jYXRpb24sIGhhdmluZyB0eXBlIFBvaW50UHJlc01vZGVsXG4gIFZpekxvY2F0aW9uID0gJ3ZpekxvY2F0aW9uJyxcblxuICAvLyBEUElfWm9vbUFuY2hvclBvaW50LCBoYXZpbmcgdHlwZSBQb2ludFByZXNNb2RlbFxuICBab29tQW5jaG9yUG9pbnQgPSAnem9vbUFuY2hvclBvaW50JyxcblxuICAvLyBEUElfTWVudUFuY2hvclBvaW50LCBoYXZpbmcgdHlwZSBQb2ludFByZXNNb2RlbFxuICBNZW51QW5jaG9yUG9pbnQgPSAnbWVudUFuY2hvclBvaW50JyxcblxuICAvLyBEUElfT3ZlcmxheUFuY2hvcnMsIGhhdmluZyB0eXBlIFBvaW50UHJlc01vZGVsW11cbiAgT3ZlcmxheUFuY2hvcnMgPSAnb3ZlcmxheUFuY2hvcnMnLFxuXG4gIC8vIERQSV9MYXNzb1NlbGVjdGlvbiwgaGF2aW5nIHR5cGUgUG9pbnRQcmVzTW9kZWxbXVxuICBMYXNzb1NlbGVjdGlvbiA9ICdsYXNzb1NlbGVjdGlvbicsXG5cbiAgLy8gRFBJX1Njcm9sbE9mZnNldFBvaW50cywgaGF2aW5nIHR5cGUgUG9pbnRQcmVzTW9kZWxbXVxuICBTY3JvbGxPZmZzZXRQb2ludHMgPSAnc2Nyb2xsT2Zmc2V0UG9pbnRzJyxcblxuICAvLyBEUElfUmFkaWFsU2VsZWN0aW9uLCBoYXZpbmcgdHlwZSBDaXJjbGVQcmVzTW9kZWxcbiAgUmFkaWFsU2VsZWN0aW9uID0gJ3JhZGlhbFNlbGVjdGlvbicsXG5cbiAgLy8gRFBJX0RvbWFpbk9yaWdpbiwgaGF2aW5nIHR5cGUgRmxvYXRQb2ludFByZXNNb2RlbFxuICBEb21haW5PcmlnaW4gPSAnZG9tYWluT3JpZ2luJyxcblxuICAvLyBEUElfRmxvYXRDZW50ZXIsIGhhdmluZyB0eXBlIEZsb2F0UG9pbnRQcmVzTW9kZWxcbiAgRmxvYXRDZW50ZXIgPSAnZmxvYXRDZW50ZXInLFxuXG4gIC8vIERQSV9GbG9hdFBvaW50LCBoYXZpbmcgdHlwZSBGbG9hdFBvaW50UHJlc01vZGVsXG4gIEZsb2F0UG9pbnQgPSAnZmxvYXRQb2ludCcsXG5cbiAgLy8gRFBJX0NsaWVudEF2YWlsYWJsZVNwYWNlLCBoYXZpbmcgdHlwZSBTaXplUHJlc01vZGVsXG4gIENsaWVudEF2YWlsYWJsZVNwYWNlID0gJ2NsaWVudEF2YWlsYWJsZVNwYWNlJyxcblxuICAvLyBEUElfRGFzaGJvYXJkUG9ydFNpemUsIGhhdmluZyB0eXBlIFNpemVQcmVzTW9kZWxcbiAgRGFzaGJvYXJkUG9ydFNpemUgPSAnZGFzaGJvYXJkUG9ydCcsXG5cbiAgLy8gRFBJX0xlZ2VuZFNpemUsIGhhdmluZyB0eXBlIFNpemVQcmVzTW9kZWxcbiAgTGVnZW5kU2l6ZSA9ICdsZWdlbmRTaXplJyxcblxuICAvLyBEUElfU3RvcnlQb3J0U2l6ZSwgaGF2aW5nIHR5cGUgU2l6ZVByZXNNb2RlbFxuICBTdG9yeVBvcnRTaXplID0gJ3N0b3J5UG9ydCcsXG5cbiAgLy8gRFBJX1N3YXRjaEFyZWFTaXplLCBoYXZpbmcgdHlwZSBTaXplUHJlc01vZGVsXG4gIFN3YXRjaEFyZWFTaXplID0gJ2FyZWFTaXplJyxcblxuICAvLyBEUElfU3dhdGNoSW1hZ2VTaXplLCBoYXZpbmcgdHlwZSBTaXplUHJlc01vZGVsXG4gIFN3YXRjaEltYWdlU2l6ZSA9ICdpbWFnZVNpemUnLFxuXG4gIC8vIERQSV9WaWV3cG9ydFNpemUsIGhhdmluZyB0eXBlIFNpemVQcmVzTW9kZWxcbiAgVmlld3BvcnRTaXplID0gJ3ZpZXdwb3J0U2l6ZScsXG5cbiAgLy8gRFBJX1dvcmtzaGVldFBvcnRTaXplLCBoYXZpbmcgdHlwZSBTaXplUHJlc01vZGVsXG4gIFdvcmtzaGVldFBvcnRTaXplID0gJ3dvcmtzaGVldFBvcnQnLFxuXG4gIC8vIERQSV9SZXNpemVFbnRpdHksIGhhdmluZyB0eXBlIFJlc2l6ZUVudGl0eVByZXNNb2RlbFxuICBSZXNpemVFbnRpdHkgPSAncmVzaXplRW50aXR5JyxcblxuICAvLyBEUElfUm93UmVzaXplcnMsIGhhdmluZyB0eXBlIFJlc2l6ZUVudGl0eVByZXNNb2RlbFtdXG4gIFJvd1Jlc2l6ZXJzID0gJ3Jvd1Jlc2l6ZXJzJyxcblxuICAvLyBEUElfQ29sUmVzaXplcnMsIGhhdmluZyB0eXBlIFJlc2l6ZUVudGl0eVByZXNNb2RlbFtdXG4gIENvbFJlc2l6ZXJzID0gJ2NvbFJlc2l6ZXJzJyxcblxuICAvLyBEUElfUmVzaXplSW5mb1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgUmVzaXplSW5mb1ByZXNNb2RlbFxuICBSZXNpemVJbmZvUHJlc01vZGVsID0gJ3Jlc2l6ZUluZm8nLFxuXG4gIC8vIERQSV9TZXJ2ZXJTaGVldCwgaGF2aW5nIHR5cGUgU2VydmVyU2hlZXRQcmVzTW9kZWxcbiAgU2VydmVyU2hlZXQgPSAnc2VydmVyU2hlZXQnLFxuXG4gIC8vIERQSV9TZXJ2ZXJTaGVldHMsIGhhdmluZyB0eXBlIFNlcnZlclNoZWV0UHJlc01vZGVsW11cbiAgU2VydmVyU2hlZXRzID0gJ3NlcnZlclNoZWV0cycsXG5cbiAgLy8gRFBJX1NoZWV0SW5mbywgaGF2aW5nIHR5cGUgU2hlZXRJbmZvUHJlc01vZGVsXG4gIFNoZWV0SW5mbyA9ICdzaGVldEluZm8nLFxuXG4gIC8vIERQSV9TaGVldHNJbmZvLCBoYXZpbmcgdHlwZSBTaGVldEluZm9QcmVzTW9kZWxbXVxuICBTaGVldHNJbmZvID0gJ3NoZWV0c0luZm8nLFxuXG4gIC8vIERQSV9TZXJ2ZXJXb3JrYm9vaywgaGF2aW5nIHR5cGUgU2VydmVyV29ya2Jvb2tQcmVzTW9kZWxcbiAgU2VydmVyV29ya2Jvb2sgPSAnc2VydmVyV29ya2Jvb2snLFxuXG4gIC8vIERQSV9QREZFeHBvcnRPcHRpb25zUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBQREZFeHBvcnRPcHRpb25zUHJlc01vZGVsXG4gIFBERkV4cG9ydE9wdGlvbnNQcmVzTW9kZWwgPSAncGRmRXhwb3J0JyxcblxuICAvLyBEUElfRXhwb3J0RmlsZVJlc3VsdFByZXNNb2RlbCwgaGF2aW5nIHR5cGUgRXhwb3J0RmlsZVJlc3VsdFByZXNNb2RlbFxuICBFeHBvcnRGaWxlUmVzdWx0UHJlc01vZGVsID0gJ3BkZlJlc3VsdCcsXG5cbiAgLy8gRFBJX1BERlNoZWV0LCBoYXZpbmcgdHlwZSBQREZTaGVldFByZXNNb2RlbFxuICBQREZTaGVldCA9ICdwZGZTaGVldCcsXG5cbiAgLy8gRFBJX1NoZWV0T3B0aW9ucywgaGF2aW5nIHR5cGUgUERGU2hlZXRQcmVzTW9kZWxbXVxuICBTaGVldE9wdGlvbnMgPSAnc2hlZXRPcHRpb25zJyxcblxuICAvLyBEUElfRXhwb3J0TGF5b3V0T3B0aW9ucywgaGF2aW5nIHR5cGUgRXhwb3J0TGF5b3V0T3B0aW9uc1ByZXNNb2RlbFxuICBFeHBvcnRMYXlvdXRPcHRpb25zID0gJ2V4cG9ydExheW91dE9wdGlvbnMnLFxuXG4gIC8vIERQSV9EYXRhQWxlcnRDb25kaXRpb25PcGVyYXRpb25UeXBlLCBoYXZpbmcgdHlwZSBEYXRhQWxlcnRDb25kaXRpb25PcGVyYXRpb25UeXBlXG4gIERhdGFBbGVydENvbmRpdGlvbk9wZXJhdGlvblR5cGUgPSAnZGF0YUFsZXJ0Q29uZGl0aW9uT3AnLFxuXG4gIC8vIERQSV9EYXRhQWxlcnREaWFsb2dQcmVzTW9kZWwsIGhhdmluZyB0eXBlIERhdGFBbGVydERpYWxvZ1ByZXNNb2RlbFxuICBEYXRhQWxlcnREaWFsb2dQcmVzTW9kZWwgPSAnZGF0YUFsZXJ0RGlhbG9nUHJlc01vZGVsJyxcblxuICAvLyBEUElfRGF0YUFsZXJ0TWVhc3VyZSwgaGF2aW5nIHR5cGUgRGF0YUFsZXJ0TWVhc3VyZVByZXNNb2RlbFxuICBEYXRhQWxlcnRNZWFzdXJlID0gJ2RhdGFBbGVydE1lYXN1cmUnLFxuXG4gIC8vIERQSV9EYXRhQWxlcnRNZWFzdXJlcywgaGF2aW5nIHR5cGUgRGF0YUFsZXJ0TWVhc3VyZVByZXNNb2RlbFtdXG4gIERhdGFBbGVydE1lYXN1cmVzID0gJ2RhdGFBbGVydE1lYXN1cmVzJyxcblxuICAvLyBEUElfRGF0YUFsZXJ0Q29uc3RhbnRDb25kaXRpb24sIGhhdmluZyB0eXBlIERhdGFBbGVydENvbnN0YW50Q29uZGl0aW9uUHJlc01vZGVsXG4gIERhdGFBbGVydENvbnN0YW50Q29uZGl0aW9uID0gJ2RhdGFBbGVydENvbnN0YW50Q29uZGl0aW9uJyxcblxuICAvLyBEUElfRGF0YUFsZXJ0RGlhbG9nTW9kZSwgaGF2aW5nIHR5cGUgRGF0YUFsZXJ0RGlhbG9nTW9kZVxuICBEYXRhQWxlcnREaWFsb2dNb2RlID0gJ2RhdGFBbGVydERpYWxvZ01vZGUnLFxuXG4gIC8vIERQSV9MaWdodHdlaWdodE1hcE9wdGlvbnMsIGhhdmluZyB0eXBlIExpZ2h0d2VpZ2h0TWFwT3B0aW9uc1ByZXNNb2RlbFxuICBMaWdodHdlaWdodE1hcE9wdGlvbnMgPSAnbGlnaHR3ZWlnaHRNYXBPcHRpb25zJyxcblxuICAvLyBEUElfRGF0YUhpZ2hsaWdodGVyLCBoYXZpbmcgdHlwZSBEYXRhSGlnaGxpZ2h0ZXJQcmVzTW9kZWxcbiAgRGF0YUhpZ2hsaWdodGVyID0gJ2RhdGFIaWdobGlnaHRlcicsXG5cbiAgLy8gRFBJX0RhdGFIaWdobGlnaHRlckl0ZW1TZXQsIGhhdmluZyB0eXBlIERhdGFIaWdobGlnaHRlckl0ZW1TZXRQcmVzTW9kZWxcbiAgRGF0YUhpZ2hsaWdodGVySXRlbVNldCA9ICdkYXRhSGlnaGxpZ2h0ZXJJdGVtU2V0JyxcblxuICAvLyBEUElfRGF0YUhpZ2hsaWdodGVySXRlbSwgaGF2aW5nIHR5cGUgRGF0YUhpZ2hsaWdodGVySXRlbVByZXNNb2RlbFxuICBEYXRhSGlnaGxpZ2h0ZXJJdGVtID0gJ2RhdGFIaWdobGlnaHRlckl0ZW0nLFxuXG4gIC8vIERQSV9EYXRhSGlnaGxpZ2h0ZXJJdGVtcywgaGF2aW5nIHR5cGUgRGF0YUhpZ2hsaWdodGVySXRlbVByZXNNb2RlbFtdXG4gIERhdGFIaWdobGlnaHRlckl0ZW1zID0gJ2RhdGFIaWdobGlnaHRlckl0ZW1zJyxcblxuICAvLyBEUElfQ2F0ZWdvcmljYWxMZWdlbmRMYXlvdXQsIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsTGVnZW5kTGF5b3V0UHJlc01vZGVsXG4gIENhdGVnb3JpY2FsTGVnZW5kTGF5b3V0ID0gJ2NhdExlZ2VuZExheW91dCcsXG5cbiAgLy8gRFBJX0NhdGVnb3JpY2FsTGVnZW5kLCBoYXZpbmcgdHlwZSBDYXRlZ29yaWNhbExlZ2VuZFByZXNNb2RlbFxuICBDYXRlZ29yaWNhbExlZ2VuZCA9ICdjYXRlZ29yaWNhbExlZ2VuZCcsXG5cbiAgLy8gRFBJX0NhdGVnb3JpY2FsTGVnZW5kcywgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxMZWdlbmRQcmVzTW9kZWxbXVxuICBDYXRlZ29yaWNhbExlZ2VuZHMgPSAnY2F0ZWdvcmljYWxMZWdlbmRzJyxcblxuICAvLyBEUElfQ2F0ZWdvcmljYWxDb2xvckxlZ2VuZCwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxDb2xvckxlZ2VuZFByZXNNb2RlbFxuICBDYXRlZ29yaWNhbENvbG9yTGVnZW5kID0gJ2NvbG9yTGVnZW5kJyxcblxuICAvLyBEUElfQ29sb3JMZWdlbmRJdGVtLCBoYXZpbmcgdHlwZSBDYXRlZ29yaWNhbENvbG9yTGVnZW5kSXRlbVByZXNNb2RlbFxuICBDb2xvckxlZ2VuZEl0ZW0gPSAnY29sb3JMZWdlbmRJdGVtJyxcblxuICAvLyBEUElfQ29sb3JMZWdlbmRJdGVtcywgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxDb2xvckxlZ2VuZEl0ZW1QcmVzTW9kZWxbXVxuICBDb2xvckxlZ2VuZEl0ZW1zID0gJ2NvbG9yTGVnZW5kSXRlbXMnLFxuXG4gIC8vIERQSV9DYXRlZ29yaWNhbFNoYXBlTGVnZW5kLCBoYXZpbmcgdHlwZSBDYXRlZ29yaWNhbFNoYXBlTGVnZW5kUHJlc01vZGVsXG4gIENhdGVnb3JpY2FsU2hhcGVMZWdlbmQgPSAnY2F0ZWdvcmljYWxTaGFwZUxlZ2VuZCcsXG5cbiAgLy8gRFBJX1NoYXBlTGVnZW5kSXRlbSwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxTaGFwZUxlZ2VuZEl0ZW1QcmVzTW9kZWxcbiAgU2hhcGVMZWdlbmRJdGVtID0gJ3NoYXBlTGVnZW5kSXRlbScsXG5cbiAgLy8gRFBJX1NoYXBlTGVnZW5kSXRlbXMsIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsU2hhcGVMZWdlbmRJdGVtUHJlc01vZGVsW11cbiAgU2hhcGVMZWdlbmRJdGVtcyA9ICdzaGFwZUxlZ2VuZEl0ZW1zJyxcblxuICAvLyBEUElfQ2F0ZWdvcmljYWxIaWdobGlnaHRMZWdlbmQsIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsSGlnaGxpZ2h0TGVnZW5kUHJlc01vZGVsXG4gIENhdGVnb3JpY2FsSGlnaGxpZ2h0TGVnZW5kID0gJ2NhdGVnb3JpY2FsSGlnaGxpZ2h0TGVnZW5kJyxcblxuICAvLyBEUElfSGlnaGxpZ2h0TGVnZW5kSXRlbSwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxMZWdlbmRJdGVtUHJlc01vZGVsXG4gIEhpZ2hsaWdodExlZ2VuZEl0ZW0gPSAnaGlnaGxpZ2h0TGVnZW5kSXRlbScsXG5cbiAgLy8gRFBJX0hpZ2hsaWdodExlZ2VuZEl0ZW1zLCBoYXZpbmcgdHlwZSBDYXRlZ29yaWNhbExlZ2VuZEl0ZW1QcmVzTW9kZWxbXVxuICBIaWdobGlnaHRMZWdlbmRJdGVtcyA9ICdoaWdobGlnaHRMZWdlbmRJdGVtcycsXG5cbiAgLy8gRFBJX0NhdGVnb3JpY2FsU2l6ZUxlZ2VuZCwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxTaXplTGVnZW5kUHJlc01vZGVsXG4gIENhdGVnb3JpY2FsU2l6ZUxlZ2VuZCA9ICdjYXRlZ29yaWNhbFNpemVMZWdlbmQnLFxuXG4gIC8vIERQSV9TaXplTGVnZW5kSXRlbSwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxTaXplTGVnZW5kSXRlbVByZXNNb2RlbFxuICBTaXplTGVnZW5kSXRlbSA9ICdzaXplTGVnZW5kSXRlbScsXG5cbiAgLy8gRFBJX1NpemVMZWdlbmRJdGVtcywgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxTaXplTGVnZW5kSXRlbVByZXNNb2RlbFtdXG4gIFNpemVMZWdlbmRJdGVtcyA9ICdzaXplTGVnZW5kSXRlbXMnLFxuXG4gIC8vIERQSV9DYXRlZ29yaWNhbE1hcExlZ2VuZCwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxNYXBMZWdlbmRQcmVzTW9kZWxcbiAgQ2F0ZWdvcmljYWxNYXBMZWdlbmQgPSAnY2F0ZWdvcmljYWxNYXBMZWdlbmQnLFxuXG4gIC8vIERQSV9RdWFudGl0YXRpdmVDb2xvckxlZ2VuZCwgaGF2aW5nIHR5cGUgUXVhbnRpdGF0aXZlQ29sb3JMZWdlbmRQcmVzTW9kZWxcbiAgUXVhbnRpdGF0aXZlQ29sb3JMZWdlbmQgPSAncXVhbnRpdGF0aXZlQ29sb3JMZWdlbmQnLFxuXG4gIC8vIERQSV9RdWFudGl0YXRpdmVDb2xvckxlZ2VuZHMsIGhhdmluZyB0eXBlIFF1YW50aXRhdGl2ZUNvbG9yTGVnZW5kUHJlc01vZGVsW11cbiAgUXVhbnRpdGF0aXZlQ29sb3JMZWdlbmRzID0gJ3F1YW50aXRhdGl2ZUNvbG9yTGVnZW5kcycsXG5cbiAgLy8gRFBJX1F1YW50aXRhdGl2ZUxlZ2VuZExheW91dCwgaGF2aW5nIHR5cGUgUXVhbnRpdGF0aXZlTGVnZW5kTGF5b3V0UHJlc01vZGVsXG4gIFF1YW50aXRhdGl2ZUxlZ2VuZExheW91dCA9ICdxdWFudGl0YXRpdmVMZWdlbmRMYXlvdXQnLFxuXG4gIC8vIERQSV9TZXJ2ZXJSZW5kZXJlZExlZ2VuZCwgaGF2aW5nIHR5cGUgU2VydmVyUmVuZGVyZWRMZWdlbmRQcmVzTW9kZWxcbiAgU2VydmVyUmVuZGVyZWRMZWdlbmQgPSAnc2VydmVyUmVuZGVyZWRMZWdlbmQnLFxuXG4gIC8vIERQSV9DYXRlZ29yaWNhbEZpbHRlciwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxGaWx0ZXJQcmVzTW9kZWxcbiAgQ2F0ZWdvcmljYWxGaWx0ZXIgPSAnY2F0ZWdvcmljYWxGaWx0ZXInLFxuXG4gIC8vIERQSV9DYXRlZ29yaWNhbEZpbHRlclJlbGF0aW9uYWwsIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsRmlsdGVyUmVsYXRpb25hbFByZXNNb2RlbFxuICBDYXRlZ29yaWNhbEZpbHRlclJlbGF0aW9uYWwgPSAnY2F0ZWdvcmljYWxGaWx0ZXJSZWxhdGlvbmFsJyxcblxuICAvLyBEUElfQ2F0ZWdvcmljYWxGaWx0ZXJNZW1iZXJEb21haW5QYWdlLCBoYXZpbmcgdHlwZSBDYXRlZ29yaWNhbEZpbHRlck1lbWJlckRvbWFpblBhZ2VQcmVzTW9kZWxcbiAgQ2F0ZWdvcmljYWxGaWx0ZXJNZW1iZXJEb21haW5QYWdlID0gJ2NhdGVnb3JpY2FsRmlsdGVyTWVtYmVyRG9tYWluUGFnZScsXG5cbiAgLy8gRFBJX0NhdGVnb3JpY2FsRmlsdGVyQ2FjaGVJbmZvLCBoYXZpbmcgdHlwZSBDYXRlZ29yaWNhbEZpbHRlckNhY2hlSW5mb1ByZXNNb2RlbFxuICBDYXRlZ29yaWNhbEZpbHRlckNhY2hlSW5mbyA9ICdjYXRlZ29yaWNhbEZpbHRlckNhY2hlSW5mbycsXG5cbiAgLy8gRFBJX0NhdGVnb3JpY2FsRmlsdGVyUGF0dGVybkRpc3BsYXksIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsRmlsdGVyUGF0dGVybkRpc3BsYXlQcmVzTW9kZWxcbiAgQ2F0ZWdvcmljYWxGaWx0ZXJQYXR0ZXJuRGlzcGxheSA9ICdjYXRlZ29yaWNhbEZpbHRlclBhdHRlcm5EaXNwbGF5JyxcblxuICAvLyBEUElfQ2F0ZWdvcmljYWxGaWx0ZXJQYXR0ZXJuVXBkYXRlLCBoYXZpbmcgdHlwZSBDYXRlZ29yaWNhbEZpbHRlclBhdHRlcm5VcGRhdGVQcmVzTW9kZWxcbiAgQ2F0ZWdvcmljYWxGaWx0ZXJQYXR0ZXJuVXBkYXRlID0gJ2NhdGVnb3JpY2FsRmlsdGVyUGF0dGVyblVwZGF0ZScsXG5cbiAgLy8gRFBJX0NhdGVnb3JpY2FsRmlsdGVyQ29uZGl0aW9uRGlzcGxheSwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxGaWx0ZXJDb25kaXRpb25EaXNwbGF5UHJlc01vZGVsXG4gIENhdGVnb3JpY2FsRmlsdGVyQ29uZGl0aW9uRGlzcGxheSA9ICdjYXRlZ29yaWNhbEZpbHRlckNvbmRpdGlvbkRpc3BsYXknLFxuXG4gIC8vIERQSV9DYXRlZ29yaWNhbEZpbHRlckNvbmRpdGlvblVwZGF0ZSwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxGaWx0ZXJDb25kaXRpb25VcGRhdGVQcmVzTW9kZWxcbiAgQ2F0ZWdvcmljYWxGaWx0ZXJDb25kaXRpb25VcGRhdGUgPSAnY2F0ZWdvcmljYWxGaWx0ZXJDb25kaXRpb25VcGRhdGUnLFxuXG4gIC8vIERQSV9DYXRlZ29yaWNhbEZpbHRlckxpbWl0RGlzcGxheSwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxGaWx0ZXJMaW1pdERpc3BsYXlQcmVzTW9kZWxcbiAgQ2F0ZWdvcmljYWxGaWx0ZXJMaW1pdERpc3BsYXkgPSAnY2F0ZWdvcmljYWxGaWx0ZXJMaW1pdERpc3BsYXknLFxuXG4gIC8vIERQSV9DYXRlZ29yaWNhbEZpbHRlckxpbWl0VXBkYXRlLCBoYXZpbmcgdHlwZSBDYXRlZ29yaWNhbEZpbHRlckxpbWl0VXBkYXRlUHJlc01vZGVsXG4gIENhdGVnb3JpY2FsRmlsdGVyTGltaXRVcGRhdGUgPSAnY2F0ZWdvcmljYWxGaWx0ZXJMaW1pdFVwZGF0ZScsXG5cbiAgLy8gRFBJX0NhdGVnb3JpY2FsRmlsdGVyTmV3LCBoYXZpbmcgdHlwZSBDYXRlZ29yaWNhbEZpbHRlcl9OZXdQcmVzTW9kZWxcbiAgQ2F0ZWdvcmljYWxGaWx0ZXJOZXcgPSAnY2F0ZWdvcmljYWxGaWx0ZXJOZXcnLFxuXG4gIC8vIERQSV9DYXRlZ29yaWNhbEZpbHRlckhpZXJhcmNoeSwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxGaWx0ZXJIaWVyYXJjaHlQcmVzTW9kZWxcbiAgQ2F0ZWdvcmljYWxGaWx0ZXJIaWVyYXJjaHkgPSAnY2F0ZWdvcmljYWxGaWx0ZXJIaXJlcmFyY2h5JyxcblxuICAvLyBEUElfQ2F0ZWdvcmljYWxGaWx0ZXJVcGRhdGUsIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsRmlsdGVyVXBkYXRlUHJlc01vZGVsXG4gIENhdGVnb3JpY2FsRmlsdGVyVXBkYXRlID0gJ2NhdGVnb3JpY2FsRmlsdGVyVXBkYXRlJyxcblxuICAvLyBEUElfQ2F0ZWdvcmljYWxGaWx0ZXJSZWxhdGlvbmFsU3RhdGUsIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsRmlsdGVyUmVsYXRpb25hbFN0YXRlUHJlc01vZGVsXG4gIENhdGVnb3JpY2FsRmlsdGVyUmVsYXRpb25hbFN0YXRlID0gJ2NhdGVnb3JpY2FsUmVsYXRpb25hbFN0YXRlJyxcblxuICAvLyBEUElfQ2F0ZWdvcmljYWxGaWx0ZXJSZWxhdGlvbmFsVXBkYXRlZFN0YXRlLCBoYXZpbmcgdHlwZSBDYXRlZ29yaWNhbEZpbHRlclJlbGF0aW9uYWxTdGF0ZVByZXNNb2RlbFxuICBDYXRlZ29yaWNhbEZpbHRlclJlbGF0aW9uYWxVcGRhdGVkU3RhdGUgPSAnY2F0ZWdvcmljYWxSZWxhdGlvbmFsVXBkYXRlZFN0YXRlJyxcblxuICAvLyBEUElfQ2F0ZWdvcmljYWxGaWx0ZXJSZWxhdGlvbmFsRG9tYWluSW5mbywgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxGaWx0ZXJSZWxhdGlvbmFsRG9tYWluSW5mb1ByZXNNb2RlbFxuICBDYXRlZ29yaWNhbEZpbHRlclJlbGF0aW9uYWxEb21haW5JbmZvID0gJ2NhdGVnb3JpY2FsRmlsdGVyUmVsYXRpb25hbERvbWFpbkluZm8nLFxuXG4gIC8vIERQSV9DYXRlZ29yaWNhbEZpbHRlclJlbGF0aW9uYWxEaXNwbGF5LCBoYXZpbmcgdHlwZSBDYXRlZ29yaWNhbEZpbHRlclJlbGF0aW9uYWxEaXNwbGF5UHJlc01vZGVsXG4gIENhdGVnb3JpY2FsRmlsdGVyUmVsYXRpb25hbERpc3BsYXkgPSAnY2F0ZWdvcmljYWxGaWx0ZXJSZWxhdGlvbmFsRGlzcGxheScsXG5cbiAgLy8gRFBJX0V4cHJlc3Npb25Ub2tlbiwgaGF2aW5nIHR5cGUgRXhwcmVzc2lvblRva2VuUHJlc01vZGVsXG4gIEV4cHJlc3Npb25Ub2tlbiA9ICdleHByZXNzaW9uVG9rZW4nLFxuXG4gIC8vIERQSV9FeHByZXNzaW9uVG9rZW5zLCBoYXZpbmcgdHlwZSBFeHByZXNzaW9uVG9rZW5QcmVzTW9kZWxbXVxuICBFeHByZXNzaW9uVG9rZW5zID0gJ2V4cHJlc3Npb25Ub2tlbnMnLFxuXG4gIC8vIERQSV9Gb3JtdWxhVmFsaWRhdGlvbiwgaGF2aW5nIHR5cGUgRm9ybXVsYVZhbGlkYXRpb25QcmVzTW9kZWxcbiAgRm9ybXVsYVZhbGlkYXRpb24gPSAnZm9ybXVsYVZhbGlkYXRpb24nLFxuXG4gIC8vIERQSV9DYXB0aW9uZWRGaWx0ZXJWYWx1ZSwgaGF2aW5nIHR5cGUgRmlsdGVyVmFsdWVQcmVzTW9kZWxcbiAgQ2FwdGlvbmVkRmlsdGVyVmFsdWUgPSAnY2FwdGlvbmVkRmlsdGVyVmFsdWUnLFxuXG4gIC8vIERQSV9DYXB0aW9uZWRSYW5nZU1pbiwgaGF2aW5nIHR5cGUgRmlsdGVyVmFsdWVQcmVzTW9kZWxcbiAgQ2FwdGlvbmVkUmFuZ2VNaW4gPSAnY2FwdGlvbmVkUmFuZ2VNaW4nLFxuXG4gIC8vIERQSV9DYXB0aW9uZWRSYW5nZU1heCwgaGF2aW5nIHR5cGUgRmlsdGVyVmFsdWVQcmVzTW9kZWxcbiAgQ2FwdGlvbmVkUmFuZ2VNYXggPSAnY2FwdGlvbmVkUmFuZ2VNYXgnLFxuXG4gIC8vIERQSV9DYXB0aW9uZWRBbmNob3JEYXRlLCBoYXZpbmcgdHlwZSBGaWx0ZXJWYWx1ZVByZXNNb2RlbFxuICBDYXB0aW9uZWRBbmNob3JEYXRlID0gJ2NhcHRpb25lZEFuY2hvckRhdGUnLFxuXG4gIC8vIERQSV9DYXB0aW9uZWRGaWx0ZXJWYWx1ZUxpc3QsIGhhdmluZyB0eXBlIEZpbHRlclZhbHVlUHJlc01vZGVsW11cbiAgQ2FwdGlvbmVkRmlsdGVyVmFsdWVMaXN0ID0gJ2NhcHRpb25lZEZpbHRlclZhbHVlTGlzdCcsXG5cbiAgLy8gRFBJX0NhdGVnb3JpY2FsRmlsdGVySW5mbywgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxGaWx0ZXJJbmZvUHJlc01vZGVsXG4gIENhdGVnb3JpY2FsRmlsdGVySW5mbyA9ICdjYXRlZ29yaWNhbEZpbHRlckluZm8nLFxuXG4gIC8vIERQSV9RdWFudGl0YXRpdmVGaWx0ZXJJbmZvLCBoYXZpbmcgdHlwZSBRdWFudGl0YXRpdmVGaWx0ZXJJbmZvUHJlc01vZGVsXG4gIFF1YW50aXRhdGl2ZUZpbHRlckluZm8gPSAncXVhbnRpdGF0aXZlRmlsdGVySW5mbycsXG5cbiAgLy8gRFBJX1JlbGF0aXZlRGF0ZUZpbHRlckluZm8sIGhhdmluZyB0eXBlIFJlbGF0aXZlRGF0ZUZpbHRlckluZm9QcmVzTW9kZWxcbiAgUmVsYXRpdmVEYXRlRmlsdGVySW5mbyA9ICdyZWxhdGl2ZURhdGVGaWx0ZXJJbmZvJyxcblxuICAvLyBEUElfRmlsdGVySW5mbywgaGF2aW5nIHR5cGUgRmlsdGVySW5mb1ByZXNNb2RlbFxuICBGaWx0ZXJJbmZvID0gJ2ZpbHRlckluZm8nLFxuXG4gIC8vIERQSV9GaWx0ZXJzSW5mbywgaGF2aW5nIHR5cGUgRmlsdGVySW5mb3JQcmVzTW9kZWxbXVxuICBGaWx0ZXJzSW5mbyA9ICdmaWx0ZXJzSW5mbycsXG5cbiAgLy8gRFBJX0NhdGVnb3JpY2FsRG9tYWluLCBoYXZpbmcgdHlwZSBDYXRlZ29yaWNhbERvbWFpblByZXNNb2RlbFxuICBDYXRlZ29yaWNhbERvbWFpbiA9ICdjYXRlZ29yaWNhbERvbWFpbicsXG5cbiAgLy8gRFBJX1F1YW50aXRhdGl2ZURvbWFpbiwgaGF2aW5nIHR5cGUgUXVhbnRpdGF0aXZlRG9tYWluUHJlc01vZGVsXG4gIFF1YW50aXRhdGl2ZURvbWFpbiA9ICdxdWFudGl0YXRpdmVEb21haW4nLFxuXG4gIC8vIERQSV9WYWxpZGF0aW9uUmVzdWx0cywgaGF2aW5nIHR5cGUgVmFsaWRhdGlvblJlc3VsdHNQcmVzTW9kZWxcbiAgVmFsaWRhdGlvblJlc3VsdHMgPSAndmFsaWRhdGlvblJlc3VsdHMnLFxuXG4gIC8vIERQSV9Eb21haW5NZW1iZXIsIGhhdmluZyB0eXBlIERvbWFpbk1lbWJlclByZXNNb2RlbFxuICBEb21haW5NZW1iZXIgPSAnZG9tYWluTWVtYmVyJyxcblxuICAvLyBEUElfRG9tYWluTWVtYmVycywgaGF2aW5nIHR5cGUgRG9tYWluTWVtYmVyUHJlc01vZGVsW11cbiAgRG9tYWluTWVtYmVycyA9ICdkb21haW5NZW1iZXJzJyxcblxuICAvLyBEUElfUXVpY2tGaWx0ZXJEaXNwbGF5LCBoYXZpbmcgdHlwZSBRdWlja0ZpbHRlckRpc3BsYXlQcmVzTW9kZWxcbiAgUXVpY2tGaWx0ZXJEaXNwbGF5ID0gJ3F1aWNrRmlsdGVyRGlzcGxheScsXG5cbiAgLy8gRFBJX1F1aWNrRmlsdGVyLCBoYXZpbmcgdHlwZSBRdWlja0ZpbHRlclByZXNNb2RlbFxuICBRdWlja0ZpbHRlciA9ICdxdWlja0ZpbHRlcicsXG5cbiAgLy8gRFBJX1F1YW50aXRhdGl2ZVF1aWNrRmlsdGVyLCBoYXZpbmcgdHlwZSBRdWFudGl0YXRpdmVRdWlja0ZpbHRlclByZXNNb2RlbFxuICBRdWFudGl0YXRpdmVRdWlja0ZpbHRlciA9ICdxdWFudGl0YXRpdmVRdWlja0ZpbHRlcicsXG5cbiAgLy8gRFBJX1JlbGF0aXZlRGF0ZVF1aWNrRmlsdGVyLCBoYXZpbmcgdHlwZSBSZWxhdGl2ZURhdGVRdWlja0ZpbHRlclByZXNNb2RlbFxuICBSZWxhdGl2ZURhdGVRdWlja0ZpbHRlciA9ICdyZWxhdGl2ZURhdGVRdWlja0ZpbHRlcicsXG5cbiAgLy8gRFBJX0NhdGVnb3JpY2FsUXVpY2tGaWx0ZXIsIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsUXVpY2tGaWx0ZXJQcmVzTW9kZWxcbiAgQ2F0ZWdvcmljYWxRdWlja0ZpbHRlciA9ICdjYXRlZ29yaWNhbFF1aWNrRmlsdGVyJyxcblxuICAvLyBEUElfSGllcmFyY2hpY2FsUXVpY2tGaWx0ZXIsIGhhdmluZyB0eXBlIEhpZXJhcmNoaWNhbFF1aWNrRmlsdGVyUHJlc01vZGVsXG4gIEhpZXJhcmNoaWNhbFF1aWNrRmlsdGVyID0gJ2hpZXJhcmNoaWNhbFF1aWNrRmlsdGVyJyxcblxuICAvLyBEUElfRG9tYWluVGFibGUsIGhhdmluZyB0eXBlIERvbWFpblRhYmxlUHJlc01vZGVsXG4gIERvbWFpblRhYmxlID0gJ2RvbWFpblRhYmxlJyxcblxuICAvLyBEUElfRG9tYWluVGFibGVzLCBoYXZpbmcgdHlwZSBEb21haW5UYWJsZVByZXNNb2RlbFtdXG4gIERvbWFpblRhYmxlcyA9ICdkb21haW5UYWJsZXMnLFxuXG4gIC8vIERQSV9Eb21haW5UdXBsZXMsIGhhdmluZyB0eXBlIFR1cGxlc1xuICBEb21haW5UdXBsZXMgPSAnZG9tYWluVHVwbGVzJyxcblxuICAvLyBEUElfU2VhcmNoVHVwbGVzLCBoYXZpbmcgdHlwZSBUdXBsZXNcbiAgU2VhcmNoVHVwbGVzID0gJ3NlYXJjaFR1cGxlcycsXG5cbiAgLy8gRFBJX1NlbGVjdGVkVHVwbGVzLCBoYXZpbmcgdHlwZSBUdXBsZUhhc2hcbiAgU2VsZWN0ZWRUdXBsZXMgPSAnc2VsZWN0ZWRUdXBsZXMnLFxuXG4gIC8vIERQSV9QZW5kaW5nVHVwbGVzLCBoYXZpbmcgdHlwZSBUdXBsZUhhc2hcbiAgUGVuZGluZ1R1cGxlcyA9ICdwZW5kaW5nVHVwbGVzJyxcblxuICAvLyBEUElfRG9tYWluLCBoYXZpbmcgdHlwZSBNdWx0aURvbWFpblxuICBEb21haW4gPSAnZG9tYWluJyxcblxuICAvLyBEUElfRGF0ZU9wdGlvbiwgaGF2aW5nIHR5cGUgRGF0ZUJpbkRpYWxvZ09wdGlvblByZXNNb2RlbFxuICBEYXRlT3B0aW9uID0gJ2RhdGVPcHRpb24nLFxuXG4gIC8vIERQSV9EYXRlT3B0aW9ucywgaGF2aW5nIHR5cGUgRGF0ZUJpbkRpYWxvZ09wdGlvblByZXNNb2RlbFtdXG4gIERhdGVPcHRpb25zID0gJ2RhdGVPcHRpb25zJyxcblxuICAvLyBEUElfRmlsdGVyUmFuZ2VBZGQsIGhhdmluZyB0eXBlIEZpbHRlclJhbmdlUHJlc01vZGVsXG4gIEZpbHRlclJhbmdlQWRkID0gJ2ZpbHRlclJhbmdlQWRkJyxcblxuICAvLyBEUElfRmlsdGVyUmFuZ2VSZW1vdmUsIGhhdmluZyB0eXBlIEZpbHRlclJhbmdlUHJlc01vZGVsXG4gIEZpbHRlclJhbmdlUmVtb3ZlID0gJ2ZpbHRlclJhbmdlUmVtb3ZlJyxcblxuICAvLyBEUElfRmlsdGVyT3B0aW9ucywgaGF2aW5nIHR5cGUgRmlsdGVyT3B0aW9uc1ByZXNNb2RlbFxuICBGaWx0ZXJPcHRpb25zID0gJ2ZpbHRlck9wdGlvbnMnLFxuXG4gIC8vIERQSV9MYXllciwgaGF2aW5nIHR5cGUgTGF5ZXJQcmVzTW9kZWxcbiAgTGF5ZXIgPSAnbGF5ZXInLFxuXG4gIC8vIERQSV9MYXllcnMsIGhhdmluZyB0eXBlIExheWVyUHJlc01vZGVsW11cbiAgTGF5ZXJzID0gJ2xheWVycycsXG5cbiAgLy8gRFBJX01hcmtzQ2FyZFByZXNNb2RlbCwgaGF2aW5nIHR5cGUgTWFya3NDYXJkUHJlc01vZGVsXG4gIE1hcmtzQ2FyZFByZXNNb2RlbCA9ICdtYXJrc0NhcmRQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9VSUl0ZW0sIGhhdmluZyB0eXBlIFVJSXRlbVByZXNNb2RlbFxuICBVSUl0ZW0gPSAndWlJdGVtJyxcblxuICAvLyBEUElfRW5jb2RpbmdVSUl0ZW0sIGhhdmluZyB0eXBlIEVuY29kaW5nVUlJdGVtUHJlc01vZGVsXG4gIEVuY29kaW5nVUlJdGVtID0gJ2VuY29kaW5nVWlJdGVtJyxcblxuICAvLyBEUElfRW5jb2RpbmdVSUl0ZW1zLCBoYXZpbmcgdHlwZSBFbmNvZGluZ1VJSXRlbVByZXNNb2RlbFtdXG4gIEVuY29kaW5nVUlJdGVtcyA9ICdlbmNvZGluZ1VpSXRlbXMnLFxuXG4gIC8vIERQSV9QcmltVHlwZVVJSXRlbSwgaGF2aW5nIHR5cGUgUHJpbWl0aXZlVHlwZVVJSXRlbVByZXNNb2RlbFxuICBQcmltVHlwZVVJSXRlbSA9ICdwcmltaXRpdmVUeXBlVWlJdGVtJyxcblxuICAvLyBEUElfUHJpbVR5cGVVSUl0ZW1zLCBoYXZpbmcgdHlwZSBQcmltaXRpdmVUeXBlVUlJdGVtUHJlc01vZGVsW11cbiAgUHJpbVR5cGVVSUl0ZW1zID0gJ3ByaW1pdGl2ZVR5cGVVaUl0ZW1zJyxcblxuICAvLyBEUElfUHJpbWl0aXZlVHlwZVVJSXRlbU9wdGlvbnMsIGhhdmluZyB0eXBlIFByaW1pdGl2ZVR5cGVVSUl0ZW1PcHRpb25zUHJlc01vZGVsXG4gIFByaW1pdGl2ZVR5cGVVSUl0ZW1PcHRpb25zID0gJ3ByaW1pdGl2ZVR5cGVVaUl0ZW1PcHRpb25zJyxcblxuICAvLyBEUElfTGluZVVJSXRlbU9wdGlvbnMsIGhhdmluZyB0eXBlIExpbmVVSUl0ZW1PcHRpb25zUHJlc01vZGVsXG4gIExpbmVVSUl0ZW1PcHRpb25zID0gJ2xpbmVVaUl0ZW1PcHRpb25zJyxcblxuICAvLyBEUElfTGluZUludGVycG9sYXRpb25Nb2RlVUlJdGVtLCBoYXZpbmcgdHlwZSBMaW5lSW50ZXJwb2xhdGlvbk1vZGVVSUl0ZW1QcmVzTW9kZWxcbiAgTGluZUludGVycG9sYXRpb25Nb2RlVUlJdGVtID0gJ2xpbmVJbnRlcnBvbGF0aW9uTW9kZVVpSXRlbScsXG5cbiAgLy8gRFBJX0xpbmVJbnRlcnBvbGF0aW9uTW9kZVVJSXRlbVNldCwgaGF2aW5nIHR5cGUgTGluZUludGVycG9sYXRpb25Nb2RlVUlJdGVtUHJlc01vZGVsW11cbiAgTGluZUludGVycG9sYXRpb25Nb2RlVUlJdGVtU2V0ID0gJ2xpbmVJbnRlcnBvbGF0aW9uTW9kZVVpSXRlbVNldCcsXG5cbiAgLy8gRFBJX0xpbmVNYXJrZXJQb3NpdGlvblVJSXRlbSwgaGF2aW5nIHR5cGUgTGluZU1hcmtlclBvc2l0aW9uVUlJdGVtUHJlc01vZGVsXG4gIExpbmVNYXJrZXJQb3NpdGlvblVJSXRlbSA9ICdsaW5lTWFya2VyUG9zaXRpb25VaUl0ZW0nLFxuXG4gIC8vIERQSV9MaW5lTWFya2VyUG9zaXRpb25VSUl0ZW1TZXQsIGhhdmluZyB0eXBlIExpbmVNYXJrZXJQb3NpdGlvblVJSXRlbVByZXNNb2RlbFtdXG4gIExpbmVNYXJrZXJQb3NpdGlvblVJSXRlbVNldCA9ICdsaW5lTWFya2VyUG9zaXRpb25VaUl0ZW1TZXQnLFxuXG4gIC8vIERQSV9NYXJrc0NhcmREcm9wZG93bkl0ZW0sIGhhdmluZyB0eXBlIE1hcmtzQ2FyZERyb3Bkb3duSXRlbVByZXNNb2RlbFxuICBNYXJrc0NhcmREcm9wZG93bkl0ZW0gPSAnbWFya3NDYXJkRHJvcGRvd25JdGVtJyxcblxuICAvLyBEUElfVG9vbHRpcERyb3Bkb3duSXRlbSwgaGF2aW5nIHR5cGUgVG9vbHRpcERyb3Bkb3duSXRlbVByZXNNb2RlbFxuICBUb29sdGlwRHJvcGRvd25JdGVtID0gJ3Rvb2x0aXBEcm9wZG93bkl0ZW0nLFxuXG4gIC8vIERQSV9UZXh0RHJvcGRvd25JdGVtLCBoYXZpbmcgdHlwZSBUZXh0RHJvcGRvd25JdGVtUHJlc01vZGVsXG4gIFRleHREcm9wZG93bkl0ZW0gPSAndGV4dERyb3Bkb3duSXRlbScsXG5cbiAgLy8gRFBJX0NvbG9yRHJvcGRvd25JdGVtLCBoYXZpbmcgdHlwZSBDb2xvckRyb3Bkb3duSXRlbVByZXNNb2RlbFxuICBDb2xvckRyb3Bkb3duSXRlbSA9ICdjb2xvckRyb3Bkb3duSXRlbScsXG5cbiAgLy8gRFBJX1NpemVTbGlkZXJQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFNpemVTbGlkZXJQcmVzTW9kZWxcbiAgU2l6ZVNsaWRlclByZXNNb2RlbCA9ICdzaXplU2xpZGVyUHJlc01vZGVsJyxcblxuICAvLyBEUElfSW5mbGVjdGlvblBvaW50LCBoYXZpbmcgdHlwZSBJbmZsZWN0aW9uUG9pbnRQcmVzTW9kZWxcbiAgSW5mbGVjdGlvblBvaW50ID0gJ2luZmxlY3Rpb25Qb2ludCcsXG5cbiAgLy8gRFBJX0luZmxlY3Rpb25Qb2ludHMsIGhhdmluZyB0eXBlIEluZmxlY3Rpb25Qb2ludFByZXNNb2RlbFtdXG4gIEluZmxlY3Rpb25Qb2ludHMgPSAnaW5mbGVjdGlvblBvaW50cycsXG5cbiAgLy8gRFBJX05vdGNoLCBoYXZpbmcgdHlwZSBOb3RjaFByZXNNb2RlbFxuICBOb3RjaCA9ICdub3RjaCcsXG5cbiAgLy8gRFBJX05vdGNoZXMsIGhhdmluZyB0eXBlIE5vdGNoUHJlc01vZGVsW11cbiAgTm90Y2hlcyA9ICdub3RjaGVzJyxcblxuICAvLyBEUElfTWFya1NpemVPcHRpb25zUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBNYXJrU2l6ZU9wdGlvbnNQcmVzTW9kZWxcbiAgTWFya1NpemVPcHRpb25zUHJlc01vZGVsID0gJ21hcmtTaXplT3B0aW9uc1ByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX01vZGlmeU1hcmtzSW5TZXQsIGhhdmluZyB0eXBlIEFkZE9yUmVtb3ZlTWFya3NcbiAgTW9kaWZ5TWFya3NJblNldCA9ICdhZGRPclJlbW92ZU1hcmtzJyxcblxuICAvLyBEUElfTWFya0xhYmVsc1NwZWNpZmljYXRpb24sIGhhdmluZyB0eXBlIE1hcmtMYWJlbHNTcGVjaWZpY2F0aW9uUHJlc01vZGVsXG4gIE1hcmtMYWJlbHNTcGVjaWZpY2F0aW9uID0gJ21hcmtMYWJlbHNTcGVjaWZpY2F0aW9uJyxcblxuICAvLyBEUElfQ29sb3JQYWxldHRlLCBoYXZpbmcgdHlwZSBDb2xvclBhbGV0dGVQcmVzTW9kZWxcbiAgQ29sb3JQYWxldHRlID0gJ2NvbG9yUGFsZXR0ZScsXG5cbiAgLy8gRFBJX1NlbGVjdGVkQ29sb3JQYWxldHRlLCBoYXZpbmcgdHlwZSBDb2xvclBhbGV0dGVQcmVzTW9kZWxcbiAgU2VsZWN0ZWRDb2xvclBhbGV0dGUgPSAnc2VsZWN0ZWRDb2xvclBhbGV0dGUnLFxuXG4gIC8vIERQSV9Db2xvclBhbGV0dGVzLCBoYXZpbmcgdHlwZSBDb2xvclBhbGV0dGVQcmVzTW9kZWxbXVxuICBDb2xvclBhbGV0dGVzID0gJ2NvbG9yUGFsZXR0ZXMnLFxuXG4gIC8vIERQSV9Db2xvclBhbGV0dGVHcm91cCwgaGF2aW5nIHR5cGUgQ29sb3JQYWxldHRlR3JvdXBQcmVzTW9kZWxcbiAgQ29sb3JQYWxldHRlR3JvdXAgPSAnY29sb3JQYWxldHRlR3JvdXAnLFxuXG4gIC8vIERQSV9DYXRDb2xvclBhbGV0dGVHcm91cHMsIGhhdmluZyB0eXBlIENvbG9yUGFsZXR0ZUdyb3VwUHJlc01vZGVsW11cbiAgQ2F0Q29sb3JQYWxldHRlR3JvdXBzID0gJ2NhdENvbG9yUGFsZXR0ZUdyb3VwcycsXG5cbiAgLy8gRFBJX1FDb2xvclBhbGV0dGVHcm91cHMsIGhhdmluZyB0eXBlIENvbG9yUGFsZXR0ZUdyb3VwUHJlc01vZGVsW11cbiAgUUNvbG9yUGFsZXR0ZUdyb3VwcyA9ICdxQ29sb3JQYWxldHRlR3JvdXBzJyxcblxuICAvLyBEUElfQ29sb3JQYWxldHRlQ29sbGVjdGlvbiwgaGF2aW5nIHR5cGUgQ29sb3JQYWxldHRlQ29sbGVjdGlvblByZXNNb2RlbFxuICBDb2xvclBhbGV0dGVDb2xsZWN0aW9uID0gJ2NvbG9yUGFsZXR0ZUNvbGxlY3Rpb24nLFxuXG4gIC8vIERQSV9RdWFudGl0YXRpdmVDb2xvciwgaGF2aW5nIHR5cGUgUXVhbnRpdGF0aXZlQ29sb3JQcmVzTW9kZWxcbiAgUXVhbnRpdGF0aXZlQ29sb3IgPSAncXVhbnRpdGF0aXZlQ29sb3InLFxuXG4gIC8vIERQSV9DYXRlZ29yaWNhbENvbG9yLCBoYXZpbmcgdHlwZSBDYXRlZ29yaWNhbENvbG9yUHJlc01vZGVsXG4gIENhdGVnb3JpY2FsQ29sb3IgPSAnY2F0ZWdvcmljYWxDb2xvcicsXG5cbiAgLy8gRFBJX0l0ZW1Db2xvclBhaXIsIGhhdmluZyB0eXBlIEl0ZW1Db2xvclBhaXJQcmVzTW9kZWxcbiAgSXRlbUNvbG9yUGFpciA9ICdpdGVtQ29sb3JQYWlyJyxcblxuICAvLyBEUElfSXRlbUNvbG9yUGFpcnMsIGhhdmluZyB0eXBlIEl0ZW1Db2xvclBhaXJQcmVzTW9kZWxbXVxuICBJdGVtQ29sb3JQYWlycyA9ICdpdGVtQ29sb3JQYWlycycsXG5cbiAgLy8gRFBJX1ZRTENvbW1hbmRSZXNwb25zZSwgaGF2aW5nIHR5cGUgVlFMQ29tbWFuZFJlc3BvbnNlUHJlc01vZGVsXG4gIFZRTENvbW1hbmRSZXNwb25zZSA9ICd2cWxDbWRSZXNwb25zZScsXG5cbiAgLy8gRFBJX0xheW91dFN0YXR1cywgaGF2aW5nIHR5cGUgTGF5b3V0U3RhdHVzUHJlc01vZGVsXG4gIExheW91dFN0YXR1cyA9ICdsYXlvdXRTdGF0dXMnLFxuXG4gIC8vIERQSV9WaXpTdGF0ZSwgaGF2aW5nIHR5cGUgVml6U3RhdGVQcmVzTW9kZWxcbiAgVml6U3RhdGUgPSAndml6U3RhdGUnLFxuXG4gIC8vIERQSV9WaXpTdGF0ZUxpc3QsIGhhdmluZyB0eXBlIFZpelN0YXRlUHJlc01vZGVsW11cbiAgVml6U3RhdGVMaXN0ID0gJ3ZpelN0YXRlTGlzdCcsXG5cbiAgLy8gRFBJX0NvbW1hbmRSZXN1bHQsIGhhdmluZyB0eXBlIENvbW1hbmRSZXN1bHRQcmVzTW9kZWxcbiAgQ29tbWFuZFJlc3VsdCA9ICdjbWRSZXN1bHQnLFxuXG4gIC8vIERQSV9Db21tYW5kUmVzdWx0TGlzdCwgaGF2aW5nIHR5cGUgQ29tbWFuZFJlc3VsdFByZXNNb2RlbFtdXG4gIENvbW1hbmRSZXN1bHRMaXN0ID0gJ2NtZFJlc3VsdExpc3QnLFxuXG4gIC8vIERQSV9VUkxBY3Rpb24sIGhhdmluZyB0eXBlIFVSTEFjdGlvblByZXNNb2RlbFxuICBVUkxBY3Rpb24gPSAndXJsQWN0aW9uJyxcblxuICAvLyBEUElfVVJMQWN0aW9uTGlzdCwgaGF2aW5nIHR5cGUgVVJMQWN0aW9uUHJlc01vZGVsW11cbiAgVVJMQWN0aW9uTGlzdCA9ICd1cmxBY3Rpb25MaXN0JyxcblxuICAvLyBEUElfTGVnYWN5TWVudSwgaGF2aW5nIHR5cGUgTGVnYWN5TWVudVByZXNNb2RlbFxuICBMZWdhY3lNZW51ID0gJ2xlZ2FjeU1lbnUnLFxuXG4gIC8vIERQSV9MZWdhY3lNZW51cywgaGF2aW5nIHR5cGUgTGVnYWN5TWVudVByZXNNb2RlbFtdXG4gIExlZ2FjeU1lbnVzID0gJ2xlZ2FjeU1lbnVzJyxcblxuICAvLyBEUElfQ29ubmVjdGlvbkF0dGVtcHRJbmZvLCBoYXZpbmcgdHlwZSBDb25uZWN0aW9uQXR0ZW1wdEluZm9QcmVzTW9kZWxcbiAgQ29ubmVjdGlvbkF0dGVtcHRJbmZvID0gJ2Nvbm5lY3Rpb25BdHRlbXB0SW5mbycsXG5cbiAgLy8gRFBJX0RhdGFTb3VyY2VDb25uZWN0aW9uQXR0ZW1wdEluZm8sIGhhdmluZyB0eXBlIERhdGFTb3VyY2VDb25uZWN0aW9uQXR0ZW1wdEluZm9QcmVzTW9kZWxcbiAgRGF0YVNvdXJjZUNvbm5lY3Rpb25BdHRlbXB0SW5mbyA9ICdkYXRhU291cmNlQ29ubmVjdGlvbkF0dGVtcHRJbmZvJyxcblxuICAvLyBEUElfRGF0YVNvdXJjZUNvbm5lY3Rpb25BdHRlbXB0SW5mb3MsIGhhdmluZyB0eXBlIERhdGFTb3VyY2VDb25uZWN0aW9uQXR0ZW1wdEluZm9QcmVzTW9kZWxbXVxuICBEYXRhU291cmNlQ29ubmVjdGlvbkF0dGVtcHRJbmZvcyA9ICdkYXRhU291cmNlQ29ubmVjdGlvbkF0dGVtcHRJbmZvcycsXG5cbiAgLy8gRFBJX0NvbW1hbmRWYWxpZGF0aW9uUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBDb21tYW5kVmFsaWRhdGlvblByZXNNb2RlbFxuICBDb21tYW5kVmFsaWRhdGlvblByZXNNb2RlbCA9ICdjb21tYW5kVmFsaWRhdGlvblByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX1dhcm5pbmdNZXNzYWdlLCBoYXZpbmcgdHlwZSBXYXJuaW5nTWVzc2FnZVByZXNNb2RlbFxuICBXYXJuaW5nTWVzc2FnZSA9ICd3YXJuaW5nTWVzc2FnZVByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX0FwcGxpY2F0aW9uUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBBcHBsaWNhdGlvblByZXNNb2RlbFxuICBBcHBsaWNhdGlvblByZXNNb2RlbCA9ICdhcHBsaWNhdGlvblByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX1Rvb2xiYXJQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFRvb2xiYXJQcmVzTW9kZWxcbiAgVG9vbGJhclByZXNNb2RlbCA9ICd0b29sYmFyUHJlc01vZGVsJyxcblxuICAvLyBEUElfV29ya2Jvb2tQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFdvcmtib29rUHJlc01vZGVsXG4gIFdvcmtib29rUHJlc01vZGVsID0gJ3dvcmtib29rUHJlc01vZGVsJyxcblxuICAvLyBEUElfU2VydmVyRm9udHMsIGhhdmluZyB0eXBlIFNlcnZlckZvbnRzUHJlc01vZGVsXG4gIFNlcnZlckZvbnRzID0gJ3NlcnZlckZvbnRzJyxcblxuICAvLyBEUElfUHVibGlzaERhdGFTb3VyY2VNZXRhZGF0YVByZXNNb2RlbCwgaGF2aW5nIHR5cGUgUHVibGlzaERhdGFTb3VyY2VNZXRhZGF0YVByZXNNb2RlbFxuICBQdWJsaXNoRGF0YVNvdXJjZU1ldGFkYXRhUHJlc01vZGVsID0gJ3B1Ymxpc2hEYXRhU291cmNlTWV0YWRhdGFQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9EYXNoYm9hcmRQcmVzTW9kZWwsIGhhdmluZyB0eXBlIERhc2hib2FyZFByZXNNb2RlbFxuICBEYXNoYm9hcmRQcmVzTW9kZWwgPSAnZGFzaGJvYXJkUHJlc01vZGVsJyxcblxuICAvLyBEUElfRGFzaGJvYXJkU2l6ZVByZXNNb2RlbCwgaGF2aW5nIHR5cGUgRGFzaGJvYXJkU2l6ZVByZXNNb2RlbFxuICBEYXNoYm9hcmRTaXplUHJlc01vZGVsID0gJ2Rhc2hib2FyZFNpemVQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9EYXNoYm9hcmRTaXplV2l0aFZhbGlkYXRpb25QcmVzTW9kZWwsIGhhdmluZyB0eXBlIERhc2hib2FyZFNpemVXaXRoVmFsaWRhdGlvblByZXNNb2RlbFxuICBEYXNoYm9hcmRTaXplV2l0aFZhbGlkYXRpb25QcmVzTW9kZWwgPSAnZGFzaGJvYXJkU2l6ZVdpdGhWYWxpZGF0aW9uUHJlc01vZGVsJyxcblxuICAvLyBEUElfRGFzaGJvYXJkSW5mb1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgRGFzaGJvYXJkSW5mb1ByZXNNb2RlbFxuICBEYXNoYm9hcmRJbmZvUHJlc01vZGVsID0gJ2Rhc2hib2FyZEluZm9QcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9WaXN1YWxQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFZpc3VhbFByZXNNb2RlbFxuICBWaXN1YWxQcmVzTW9kZWwgPSAndmlzdWFsJyxcblxuICAvLyBEUElfVmlzdWFsUHJlc01vZGVscywgaGF2aW5nIHR5cGUgVmlzdWFsUHJlc01vZGVsW11cbiAgVmlzdWFsUHJlc01vZGVscyA9ICd2aXN1YWxzJyxcblxuICAvLyBEUElfRHJvcExpbmVzUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBEcm9wTGluZXNQcmVzTW9kZWxcbiAgRHJvcExpbmVzUHJlc01vZGVsID0gJ2Ryb3BMaW5lc1ByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX0Ryb3BGaWVsZFByZXNNb2RlbCwgaGF2aW5nIHR5cGUgRHJvcEZpZWxkUHJlc01vZGVsXG4gIERyb3BGaWVsZFByZXNNb2RlbCA9ICdkcm9wRmllbGRQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9Ecm9wRmllbGRSZXN1bHRQcmVzTW9kZWwsIGhhdmluZyB0eXBlIERyb3BGaWVsZFJlc3VsdFByZXNNb2RlbFxuICBEcm9wRmllbGRSZXN1bHRQcmVzTW9kZWwgPSAnZHJvcEZpZWxkUmVzdWx0UHJlc01vZGVsJyxcblxuICAvLyBEUElfQ3VycmVudEF4aXNSYW5nZSwgaGF2aW5nIHR5cGUgRGF0YVZhbHVlUmFuZ2VQcmVzTW9kZWxcbiAgQ3VycmVudEF4aXNSYW5nZSA9ICdjdXJyZW50QXhpc1JhbmdlJyxcblxuICAvLyBEUElfQ3VycmVudEF4aXNSYW5nZU5vVGltZSwgaGF2aW5nIHR5cGUgRGF0YVZhbHVlUmFuZ2VQcmVzTW9kZWxcbiAgQ3VycmVudEF4aXNSYW5nZU5vVGltZSA9ICdjdXJyZW50QXhpc1JhbmdlTm9UaW1lJyxcblxuICAvLyBEUElfRGVmYXVsdEF4aXNSYW5nZSwgaGF2aW5nIHR5cGUgRGF0YVZhbHVlUmFuZ2VQcmVzTW9kZWxcbiAgRGVmYXVsdEF4aXNSYW5nZSA9ICdkZWZhdWx0QXhpc1JhbmdlJyxcblxuICAvLyBEUElfTmV3QXhpc1JhbmdlLCBoYXZpbmcgdHlwZSBEYXRhVmFsdWVSYW5nZVByZXNNb2RlbFxuICBOZXdBeGlzUmFuZ2UgPSAnbmV3QXhpc1JhbmdlJyxcblxuICAvLyBEUElfQXhpc09wdGlvbnMsIGhhdmluZyB0eXBlIEF4aXNPcHRpb25zUHJlc01vZGVsXG4gIEF4aXNPcHRpb25zID0gJ2F4aXMnLFxuXG4gIC8vIERQSV9BeGlzTWFqb3JUaWNrcywgaGF2aW5nIHR5cGUgVGlja01hcmtJbmZvUHJlc01vZGVsXG4gIEF4aXNNYWpvclRpY2tzID0gJ2F4aXNNYWpvclRpY2tzJyxcblxuICAvLyBEUElfQXhpc01pbm9yVGlja3MsIGhhdmluZyB0eXBlIFRpY2tNYXJrSW5mb1ByZXNNb2RlbFxuICBBeGlzTWlub3JUaWNrcyA9ICdheGlzTWlub3JUaWNrcycsXG5cbiAgLy8gRFBJX0VkaXRBeGlzRGlhbG9nLCBoYXZpbmcgdHlwZSBFZGl0QXhpc0RpYWxvZ1ByZXNNb2RlbFxuICBFZGl0QXhpc0RpYWxvZyA9ICdlZGl0QXhpc0RpYWxvZycsXG5cbiAgLy8gRFBJX01hcmtMYWJlbHMsIGhhdmluZyB0eXBlIFNjZW5lUHJlc01vZGVsXG4gIE1hcmtMYWJlbHMgPSAnbWFya0xhYmVscycsXG5cbiAgLy8gRFBJX1NjZW5lLCBoYXZpbmcgdHlwZSBTY2VuZVByZXNNb2RlbFxuICBTY2VuZSA9ICdzY2VuZScsXG5cbiAgLy8gRFBJX01hcFNlcnZlciwgaGF2aW5nIHR5cGUgTWFwU2VydmVyUHJlc01vZGVsXG4gIE1hcFNlcnZlciA9ICdtYXBTZXJ2ZXInLFxuXG4gIC8vIERQSV9WaXN1YWxMaXN0LCBoYXZpbmcgdHlwZSBWaXN1YWxMaXN0UHJlc01vZGVsXG4gIFZpc3VhbExpc3QgPSAndmlzdWFsTGlzdCcsXG5cbiAgLy8gRFBJX0RyYXdGaXJzdCwgaGF2aW5nIHR5cGUgVmlzdWFsTGlzdFByZXNNb2RlbFtdXG4gIERyYXdGaXJzdCA9ICdkcmF3Rmlyc3QnLFxuXG4gIC8vIERQSV9EcmF3TGFzdCwgaGF2aW5nIHR5cGUgVmlzdWFsTGlzdFByZXNNb2RlbFtdXG4gIERyYXdMYXN0ID0gJ2RyYXdMYXN0JyxcblxuICAvLyBEUElfRHJhd1BhbmUsIGhhdmluZyB0eXBlIFZpc3VhbExpc3RQcmVzTW9kZWxbXVxuICBEcmF3UGFuZSA9ICdkcmF3UGFuZScsXG5cbiAgLy8gRFBJX1VzZXJQYW5lSW5mbywgaGF2aW5nIHR5cGUgVXNlclBhbmVJbmZvUHJlc01vZGVsXG4gIFVzZXJQYW5lSW5mbyA9ICd1c2VyUGFuZUluZm8nLFxuXG4gIC8vIERQSV9BbmFseXRpY3NQYW5lLCBoYXZpbmcgdHlwZSBBbmFseXRpY3NQYW5lUHJlc01vZGVsXG4gIEFuYWx5dGljc1BhbmUgPSAnYW5hbHl0aWNzUGFuZScsXG5cbiAgLy8gRFBJX0FuYWx5dGljc09iamVjdEl0ZW0sIGhhdmluZyB0eXBlIEFuYWx5dGljc09iamVjdEl0ZW1QcmVzTW9kZWxcbiAgQW5hbHl0aWNzT2JqZWN0SXRlbSA9ICdhbmFseXRpY3NPYmplY3RJdGVtJyxcblxuICAvLyBEUElfQW5hbHl0aWNzT2JqZWN0SXRlbXMsIGhhdmluZyB0eXBlIEFuYWx5dGljc09iamVjdEl0ZW1QcmVzTW9kZWxbXVxuICBBbmFseXRpY3NPYmplY3RJdGVtcyA9ICdhbmFseXRpY3NPYmplY3RJdGVtcycsXG5cbiAgLy8gRFBJX0FuYWx5dGljc09iamVjdEdyb3VwLCBoYXZpbmcgdHlwZSBBbmFseXRpY3NPYmplY3RHcm91cFByZXNNb2RlbFxuICBBbmFseXRpY3NPYmplY3RHcm91cCA9ICdhbmFseXRpY3NPYmplY3RHcm91cCcsXG5cbiAgLy8gRFBJX0FuYWx5dGljc09iamVjdEdyb3VwcywgaGF2aW5nIHR5cGUgQW5hbHl0aWNzT2JqZWN0R3JvdXBQcmVzTW9kZWxbXVxuICBBbmFseXRpY3NPYmplY3RHcm91cHMgPSAnYW5hbHl0aWNzT2JqZWN0R3JvdXBzJyxcblxuICAvLyBEUElfRHJvcFpvbmVJdGVtLCBoYXZpbmcgdHlwZSBEcm9wWm9uZUl0ZW1QcmVzTW9kZWxcbiAgRHJvcFpvbmVJdGVtID0gJ2Ryb3Bab25lSXRlbScsXG5cbiAgLy8gRFBJX0Ryb3Bab25lSXRlbXMsIGhhdmluZyB0eXBlIERyb3Bab25lSXRlbVByZXNNb2RlbFtdXG4gIERyb3Bab25lSXRlbXMgPSAnZHJvcFpvbmVJdGVtcycsXG5cbiAgLy8gRFBJX0Ryb3BUYXJnZXRJbmZvLCBoYXZpbmcgdHlwZSBEcm9wVGFyZ2V0SW5mb1ByZXNNb2RlbFxuICBEcm9wVGFyZ2V0SW5mbyA9ICdkcm9wVGFyZ2V0SW5mbycsXG5cbiAgLy8gRFBJX1BhbmUsIGhhdmluZyB0eXBlIFBhbmVQcmVzTW9kZWxcbiAgUGFuZSA9ICdwYW5lJyxcblxuICAvLyBEUElfUGFuZXMsIGhhdmluZyB0eXBlIFBhbmVQcmVzTW9kZWxbXVxuICBQYW5lcyA9ICdwYW5lcycsXG5cbiAgLy8gRFBJX1JhZGlhbFNlbGVjdGlvbkRpc3RhbmNlSW5mbywgaGF2aW5nIHR5cGUgUmFkaWFsU2VsZWN0aW9uRGlzdGFuY2VJbmZvUHJlc01vZGVsXG4gIFJhZGlhbFNlbGVjdGlvbkRpc3RhbmNlSW5mbyA9ICdyYWRpYWxTZWxlY3Rpb25EaXN0YW5jZUluZm8nLFxuXG4gIC8vIERQSV9NYXBTY2FsZUluZm8sIGhhdmluZyB0eXBlIE1hcFNjYWxlSW5mb1ByZXNNb2RlbFxuICBNYXBTY2FsZUluZm8gPSAnbWFwU2NhbGVJbmZvJyxcblxuICAvLyBEUElfUmVuZGVyTm9kZSwgaGF2aW5nIHR5cGUgUmVuZGVyTm9kZVByZXNNb2RlbFxuICBSZW5kZXJOb2RlID0gJ3JlbmRlck5vZGUnLFxuXG4gIC8vIERQSV9SZW5kZXJOb2RlcywgaGF2aW5nIHR5cGUgUmVuZGVyTm9kZVByZXNNb2RlbFtdXG4gIFJlbmRlck5vZGVzID0gJ3JlbmRlck5vZGVzJyxcblxuICAvLyBEUElfUHJlZGljdGlvbkJhbmQsIGhhdmluZyB0eXBlIFByZWRpY3Rpb25CYW5kUHJlc01vZGVsXG4gIFByZWRpY3Rpb25CYW5kID0gJ3ByZWRpY3Rpb25CYW5kJyxcblxuICAvLyBEUElfUHJlZGljdGlvbldoaXNrZXIsIGhhdmluZyB0eXBlIFByZWRpY3Rpb25XaGlza2VyUHJlc01vZGVsXG4gIFByZWRpY3Rpb25XaGlza2VyID0gJ3ByZWRpY3Rpb25XaGlza2VyJyxcblxuICAvLyBEUElfRHJhd0dyb3VwLCBoYXZpbmcgdHlwZSBEcmF3UG9pbnRzUHJlc01vZGVsXG4gIERyYXdHcm91cCA9ICdkcmF3R3JvdXAnLFxuXG4gIC8vIERQSV9DbGlwUmVzZXQsIGhhdmluZyB0eXBlIERyYXdJdGVtUHJlc01vZGVsXG4gIENsaXBSZXNldCA9ICdjbGlwUmVzZXQnLFxuXG4gIC8vIERQSV9EcmF3SXRlbSwgaGF2aW5nIHR5cGUgRHJhd0l0ZW1QcmVzTW9kZWxcbiAgRHJhd0l0ZW0gPSAnZHJhd0l0ZW0nLFxuXG4gIC8vIERQSV9UcmFuc2Zvcm1Qb3AsIGhhdmluZyB0eXBlIERyYXdJdGVtUHJlc01vZGVsXG4gIFRyYW5zZm9ybVBvcCA9ICd0cmFuc2Zvcm1Qb3AnLFxuXG4gIC8vIERQSV9UcmFuc2Zvcm1QdXNoLCBoYXZpbmcgdHlwZSBEcmF3SXRlbVByZXNNb2RlbFxuICBUcmFuc2Zvcm1QdXNoID0gJ3RyYW5zZm9ybVB1c2gnLFxuXG4gIC8vIERQSV9EcmF3SXRlbXMsIGhhdmluZyB0eXBlIERyYXdJdGVtUHJlc01vZGVsW11cbiAgRHJhd0l0ZW1zID0gJ2RyYXdJdGVtcycsXG5cbiAgLy8gRFBJX0NsaXBSZWN0LCBoYXZpbmcgdHlwZSBEcmF3UG9pbnRzUHJlc01vZGVsXG4gIENsaXBSZWN0ID0gJ2NsaXBSZWN0JyxcblxuICAvLyBEUElfRHJhd0VsbGlwc2UsIGhhdmluZyB0eXBlIERyYXdQb2ludHNQcmVzTW9kZWxcbiAgRHJhd0VsbGlwc2UgPSAnZHJhd0VsbGlwc2UnLFxuXG4gIC8vIERQSV9EcmF3RmlsbEVsbGlwc2UsIGhhdmluZyB0eXBlIERyYXdQb2ludHNQcmVzTW9kZWxcbiAgRHJhd0ZpbGxFbGxpcHNlID0gJ2RyYXdGaWxsRWxsaXBzZScsXG5cbiAgLy8gRFBJX0RyYXdGaWxsUG9seWdvbiwgaGF2aW5nIHR5cGUgRHJhd1BvaW50c1ByZXNNb2RlbFxuICBEcmF3RmlsbFBvbHlnb24gPSAnZHJhd0ZpbGxQb2x5Z29uJyxcblxuICAvLyBEUElfRHJhd0ZpbGxSZWN0LCBoYXZpbmcgdHlwZSBEcmF3UG9pbnRzUHJlc01vZGVsXG4gIERyYXdGaWxsUmVjdCA9ICdkcmF3RmlsbFJlY3QnLFxuXG4gIC8vIERQSV9EcmF3UG9seWdvbiwgaGF2aW5nIHR5cGUgRHJhd1BvaW50c1ByZXNNb2RlbFxuICBEcmF3UG9seWdvbiA9ICdkcmF3UG9seWdvbicsXG5cbiAgLy8gRFBJX0RyYXdQb2x5bGluZSwgaGF2aW5nIHR5cGUgRHJhd1BvaW50c1ByZXNNb2RlbFxuICBEcmF3UG9seWxpbmUgPSAnZHJhd1BvbHlsaW5lJyxcblxuICAvLyBEUElfRHJhd1JlY3QsIGhhdmluZyB0eXBlIERyYXdQb2ludHNQcmVzTW9kZWxcbiAgRHJhd1JlY3QgPSAnZHJhd1JlY3QnLFxuXG4gIC8vIERQSV9EcmF3RmlsbFBhdGgsIGhhdmluZyB0eXBlIERyYXdQYXRoUHJlc01vZGVsXG4gIERyYXdGaWxsUGF0aCA9ICdkcmF3RmlsbFBhdGgnLFxuXG4gIC8vIERQSV9EcmF3UGF0aCwgaGF2aW5nIHR5cGUgRHJhd1BhdGhQcmVzTW9kZWxcbiAgRHJhd1BhdGggPSAnZHJhd1BhdGgnLFxuXG4gIC8vIERQSV9EcmF3VGV4dCwgaGF2aW5nIHR5cGUgRHJhd1RleHRQcmVzTW9kZWxcbiAgRHJhd1RleHQgPSAnZHJhd1RleHQnLFxuXG4gIC8vIERQSV9EcmF3SW1hZ2UsIGhhdmluZyB0eXBlIERyYXdJbWFnZVByZXNNb2RlbFxuICBEcmF3SW1hZ2UgPSAnZHJhd0ltYWdlJyxcblxuICAvLyBEUElfSW1hZ2VUaWxlSW5mbywgaGF2aW5nIHR5cGUgSW1hZ2VUaWxlSW5mb1ByZXNNb2RlbFxuICBJbWFnZVRpbGVJbmZvID0gJ3RpbGVJbmZvJyxcblxuICAvLyBEUElfSW1hZ2VUaWxlSW5mb3MsIGhhdmluZyB0eXBlIEltYWdlVGlsZUluZm9QcmVzTW9kZWxbXVxuICBJbWFnZVRpbGVJbmZvcyA9ICd0aWxlSW5mb3MnLFxuXG4gIC8vIERQSV9EcmF3SW1hZ2VUaWxlcywgaGF2aW5nIHR5cGUgRHJhd0ltYWdlVGlsZXNQcmVzTW9kZWxcbiAgRHJhd0ltYWdlVGlsZXMgPSAnZHJhd0ltYWdlVGlsZXMnLFxuXG4gIC8vIERQSV9EcmF3UGVuLCBoYXZpbmcgdHlwZSBEcmF3UGVuUHJlc01vZGVsXG4gIERyYXdQZW4gPSAnZHJhd1BlbicsXG5cbiAgLy8gRFBJX0RyYXdTb2xpZEJydXNoLCBoYXZpbmcgdHlwZSBEcmF3U29saWRCcnVzaFByZXNNb2RlbFxuICBEcmF3U29saWRCcnVzaCA9ICdkcmF3U29saWRCcnVzaCcsXG5cbiAgLy8gRFBJX0RyYXdUZXh0UHJvcGVydGllcywgaGF2aW5nIHR5cGUgRHJhd1RleHRQcm9wZXJ0aWVzUHJlc01vZGVsXG4gIERyYXdUZXh0UHJvcGVydGllcyA9ICdkcmF3VGV4dFByb3BzJyxcblxuICAvLyBEUElfRHJhd0dyYWRpZW50QnJ1c2gsIGhhdmluZyB0eXBlIERyYXdHcmFkaWVudEJydXNoUHJlc01vZGVsXG4gIERyYXdHcmFkaWVudEJydXNoID0gJ2RyYXdHcmFkaWVudEJydXNoJyxcblxuICAvLyBEUElfRHJhd1RyYW5zZm9ybSwgaGF2aW5nIHR5cGUgRHJhd1RyYW5zZm9ybVByZXNNb2RlbFxuICBEcmF3VHJhbnNmb3JtID0gJ3RyYW5zZm9ybScsXG5cbiAgLy8gRFBJX0RyYXdBbnRpYWxpYXMsIGhhdmluZyB0eXBlIERyYXdBbnRpYWxpYXNQcmVzTW9kZWxcbiAgRHJhd0FudGlhbGlhcyA9ICdkcmF3QW50aWFsaWFzJyxcblxuICAvLyBEUElfSW1hZ2VEaWN0aW9uYXJ5LCBoYXZpbmcgdHlwZSBJbWFnZURpY3Rpb25hcnlQcmVzTW9kZWxcbiAgSW1hZ2VEaWN0aW9uYXJ5ID0gJ2ltYWdlRGljdGlvbmFyeScsXG5cbiAgLy8gRFBJX0NvbG9yRGljdGlvbmFyeSwgaGF2aW5nIHR5cGUgQ29sb3JEaWN0aW9uYXJ5UHJlc01vZGVsXG4gIENvbG9yRGljdGlvbmFyeSA9ICdjb2xvckRpY3Rpb25hcnknLFxuXG4gIC8vIERQSV9NYXJrU2hhcGUsIGhhdmluZyB0eXBlIE1hcmtTaGFwZVByZXNNb2RlbFxuICBNYXJrU2hhcGUgPSAnbWFya1NoYXBlJyxcblxuICAvLyBEUElfTWFya1NoYXBlTGlzdCwgaGF2aW5nIHR5cGUgTWFya1NoYXBlUHJlc01vZGVsW11cbiAgTWFya1NoYXBlTGlzdCA9ICdtYXJrU2hhcGVMaXN0JyxcblxuICAvLyBEUElfUGFuZURlc2NyaXB0b3IsIGhhdmluZyB0eXBlIFBhbmVEZXNjcmlwdG9yUHJlc01vZGVsXG4gIFBhbmVEZXNjcmlwdG9yID0gJ3BhbmVEZXNjcmlwdG9yJyxcblxuICAvLyBEUElfUERNYXJrcywgaGF2aW5nIHR5cGUgUERNYXJrc1ByZXNNb2RlbFxuICBQRE1hcmtzID0gJ3BkTWFya3MnLFxuXG4gIC8vIERQSV9QRE1hcmtzTWFwLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIFBETWFya3NQcmVzTW9kZWwpXG4gIFBETWFya3NNYXAgPSAncGRNYXJrc01hcCcsXG5cbiAgLy8gRFBJX0xhYmVsVGV4dFRhYmxlLCBoYXZpbmcgdHlwZSBMYWJlbFRleHRUYWJsZVxuICBMYWJlbFRleHRUYWJsZSA9ICdsYWJlbFRleHRUYWJsZScsXG5cbiAgLy8gRFBJX1RleHRUYWJsZUhlbHBlciwgaGF2aW5nIHR5cGUgVGV4dFRhYmxlSGVscGVyXG4gIFRleHRUYWJsZUhlbHBlciA9ICd0ZXh0VGFibGVIZWxwZXInLFxuXG4gIC8vIERQSV9HZW9tZXRyeVRhYmxlLCBoYXZpbmcgdHlwZSBHZW9tZXRyeVRhYmxlXG4gIEdlb21ldHJ5VGFibGUgPSAnZ2VvbWV0cnlUYWJsZScsXG5cbiAgLy8gRFBJX1BhbmVNYXJrcywgaGF2aW5nIHR5cGUgUGFuZU1hcmtzUHJlc01vZGVsXG4gIFBhbmVNYXJrcyA9ICdwYW5lTWFya3MnLFxuXG4gIC8vIERQSV9QYW5lTWFya3NMaXN0LCBoYXZpbmcgdHlwZSBQYW5lTWFya3NQcmVzTW9kZWxbXVxuICBQYW5lTWFya3NMaXN0ID0gJ3BhbmVNYXJrc0xpc3QnLFxuXG4gIC8vIERQSV9CcnVzaGluZ1NlbGVjdGlvbiwgaGF2aW5nIHR5cGUgU2VsZWN0aW9uUHJlc01vZGVsXG4gIEJydXNoaW5nU2VsZWN0aW9uID0gJ2JydXNoaW5nJyxcblxuICAvLyBEUElfU2VsZWN0aW9uLCBoYXZpbmcgdHlwZSBTZWxlY3Rpb25QcmVzTW9kZWxcbiAgU2VsZWN0aW9uID0gJ3NlbGVjdGlvbicsXG5cbiAgLy8gRFBJX0JydXNoaW5nU2VsZWN0aW9uTGlzdCwgaGF2aW5nIHR5cGUgU2VsZWN0aW9uUHJlc01vZGVsW11cbiAgQnJ1c2hpbmdTZWxlY3Rpb25MaXN0ID0gJ2JydXNoaW5nU2VsZWN0aW9uTGlzdCcsXG5cbiAgLy8gRFBJX1NlbGVjdGlvbkxpc3QsIGhhdmluZyB0eXBlIFNlbGVjdGlvblByZXNNb2RlbFtdXG4gIFNlbGVjdGlvbkxpc3QgPSAnc2VsZWN0aW9uTGlzdCcsXG5cbiAgLy8gRFBJX1NoZWxmU2VsZWN0aW9uTW9kZWwsIGhhdmluZyB0eXBlIFNoZWxmU2VsZWN0aW9uUHJlc01vZGVsXG4gIFNoZWxmU2VsZWN0aW9uTW9kZWwgPSAnc2hlbGZTZWxlY3Rpb25Nb2RlbCcsXG5cbiAgLy8gRFBJX1NoZWxmU2VsZWN0aW9uTW9kZWxzLCBoYXZpbmcgdHlwZSBTaGVsZlNlbGVjdGlvblByZXNNb2RlbFtdXG4gIFNoZWxmU2VsZWN0aW9uTW9kZWxzID0gJ3NoZWxmU2VsZWN0aW9uTW9kZWxzJyxcblxuICAvLyBEUElfU2hlbGZTZWxlY3Rpb25zTW9kZWwsIGhhdmluZyB0eXBlIFNoZWxmU2VsZWN0aW9uc1ByZXNNb2RlbFxuICBTaGVsZlNlbGVjdGlvbnNNb2RlbCA9ICdzaGVsZlNlbGVjdGlvbnNNb2RlbCcsXG5cbiAgLy8gRFBJX0RpbVZhbFNlbGVjdGlvbk1vZGVsLCBoYXZpbmcgdHlwZSBEaW1lbnNpb25WYWx1ZVNlbGVjdGlvblByZXNNb2RlbFxuICBEaW1WYWxTZWxlY3Rpb25Nb2RlbCA9ICdkaW1lbnNpb25WYWx1ZVNlbGVjdGlvbk1vZGVsJyxcblxuICAvLyBEUElfRGltVmFsU2VsZWN0aW9uTW9kZWxzLCBoYXZpbmcgdHlwZSBEaW1lbnNpb25WYWx1ZVNlbGVjdGlvblByZXNNb2RlbFtdXG4gIERpbVZhbFNlbGVjdGlvbk1vZGVscyA9ICdkaW1lbnNpb25WYWx1ZVNlbGVjdGlvbk1vZGVscycsXG5cbiAgLy8gRFBJX0hpZXJWYWxTZWxlY3Rpb25Nb2RlbCwgaGF2aW5nIHR5cGUgSGllcmFyY2hpY2FsVmFsdWVTZWxlY3Rpb25QcmVzTW9kZWxcbiAgSGllclZhbFNlbGVjdGlvbk1vZGVsID0gJ2hpZXJhcmNoaWNhbFZhbHVlU2VsZWN0aW9uTW9kZWwnLFxuXG4gIC8vIERQSV9IaWVyVmFsU2VsZWN0aW9uTW9kZWxzLCBoYXZpbmcgdHlwZSBIaWVyYXJjaGljYWxWYWx1ZVNlbGVjdGlvblByZXNNb2RlbFtdXG4gIEhpZXJWYWxTZWxlY3Rpb25Nb2RlbHMgPSAnaGllcmFyY2hpY2FsVmFsdWVTZWxlY3Rpb25Nb2RlbHMnLFxuXG4gIC8vIERQSV9RdWFudFJhbmdlU2VsZWN0aW9uTW9kZWwsIGhhdmluZyB0eXBlIFF1YW50YXRpdmVSYW5nZVNlbGVjdGlvblByZXNNb2RlbFxuICBRdWFudFJhbmdlU2VsZWN0aW9uTW9kZWwgPSAncXVhbnRhdGl2ZVJhbmdlU2VsZWN0aW9uTW9kZWwnLFxuXG4gIC8vIERQSV9RdWFudFJhbmdlU2VsZWN0aW9uTW9kZWxzLCBoYXZpbmcgdHlwZSBRdWFudGF0aXZlUmFuZ2VTZWxlY3Rpb25QcmVzTW9kZWxbXVxuICBRdWFudFJhbmdlU2VsZWN0aW9uTW9kZWxzID0gJ3F1YW50YXRpdmVSYW5nZVNlbGVjdGlvbk1vZGVscycsXG5cbiAgLy8gRFBJX1F1YW50VmFsdWVTZWxlY3Rpb25Nb2RlbCwgaGF2aW5nIHR5cGUgUXVhbnRhdGl2ZVZhbHVlU2VsZWN0aW9uUHJlc01vZGVsXG4gIFF1YW50VmFsdWVTZWxlY3Rpb25Nb2RlbCA9ICdxdWFudGF0aXZlVmFsdWVTZWxlY3Rpb25Nb2RlbCcsXG5cbiAgLy8gRFBJX1F1YW50VmFsdWVTZWxlY3Rpb25Nb2RlbHMsIGhhdmluZyB0eXBlIFF1YW50YXRpdmVWYWx1ZVNlbGVjdGlvblByZXNNb2RlbFtdXG4gIFF1YW50VmFsdWVTZWxlY3Rpb25Nb2RlbHMgPSAncXVhbnRhdGl2ZVZhbHVlU2VsZWN0aW9uTW9kZWxzJyxcblxuICAvLyBEUElfTGVnZW5kU2VsZWN0aW9uSW5mbywgaGF2aW5nIHR5cGUgTGVnZW5kU2VsZWN0aW9uSW5mb1ByZXNNb2RlbFxuICBMZWdlbmRTZWxlY3Rpb25JbmZvID0gJ2xlZ2VuZFNlbGVjdGlvbkluZm8nLFxuXG4gIC8vIERQSV9Ob2RlUmVmZXJlbmNlLCBoYXZpbmcgdHlwZSBOb2RlUmVmZXJlbmNlUHJlc01vZGVsXG4gIE5vZGVSZWZlcmVuY2UgPSAnbm9kZVJlZmVyZW5jZScsXG5cbiAgLy8gRFBJX1BhZ2VSZWZlcmVuY2UsIGhhdmluZyB0eXBlIFBhZ2VSZWZlcmVuY2VQcmVzTW9kZWxcbiAgUGFnZVJlZmVyZW5jZSA9ICdwYWdlUmVmZXJlbmNlJyxcblxuICAvLyBEUElfT3JpZW50ZWROb2RlUmVmZXJlbmNlLCBoYXZpbmcgdHlwZSBPcmllbnRlZE5vZGVSZWZlcmVuY2VQcmVzTW9kZWxcbiAgT3JpZW50ZWROb2RlUmVmZXJlbmNlID0gJ29yaWVudGVkTm9kZVJlZmVyZW5jZScsXG5cbiAgLy8gRFBJX09yaWVudGVkTm9kZVJlZmVyZW5jZXMsIGhhdmluZyB0eXBlIE9yaWVudGVkTm9kZVJlZmVyZW5jZVByZXNNb2RlbFtdXG4gIE9yaWVudGVkTm9kZVJlZmVyZW5jZXMgPSAnb3JpZW50ZWROb2RlUmVmZXJlbmNlcycsXG5cbiAgLy8gRFBJX1NlbGVjdGlvbkRhdGEsIGhhdmluZyB0eXBlIFNlbGVjdGlvbkRhdGFQcmVzTW9kZWxcbiAgU2VsZWN0aW9uRGF0YSA9ICdzZWxlY3Rpb25EYXRhJyxcblxuICAvLyBEUElfSGlnaGxpZ2h0ZWREYXRhLCBoYXZpbmcgdHlwZSBIaWdobGlnaHRlZERhdGFQcmVzTW9kZWxcbiAgSGlnaGxpZ2h0ZWREYXRhID0gJ2hpZ2hsaWdodGVkRGF0YScsXG5cbiAgLy8gRFBJX05vZGUsIGhhdmluZyB0eXBlIE5vZGVQcmVzTW9kZWxcbiAgTm9kZSA9ICdub2RlJyxcblxuICAvLyBEUElfTm9kZXMsIGhhdmluZyB0eXBlIE5vZGVQcmVzTW9kZWxbXVxuICBOb2RlcyA9ICdub2RlcycsXG5cbiAgLy8gRFBJX1NlbGVjdGVkTm9kZXMsIGhhdmluZyB0eXBlIE5vZGVQcmVzTW9kZWxbXVxuICBTZWxlY3RlZE5vZGVzID0gJ3NlbGVjdGVkTm9kZXMnLFxuXG4gIC8vIERQSV9Vc2VyQWN0aW9uLCBoYXZpbmcgdHlwZSBBY3Rpb25QcmVzTW9kZWxcbiAgVXNlckFjdGlvbiA9ICd1c2VyQWN0aW9uJyxcblxuICAvLyBEUElfVXNlckFjdGlvbnMsIGhhdmluZyB0eXBlIEFjdGlvblByZXNNb2RlbFtdXG4gIFVzZXJBY3Rpb25zID0gJ3VzZXJBY3Rpb25zJyxcblxuICAvLyBEUElfTGlua1NwZWMsIGhhdmluZyB0eXBlIExpbmtTcGVjUHJlc01vZGVsXG4gIExpbmtTcGVjID0gJ2xpbmtTcGVjJyxcblxuICAvLyBEUElfQWN0aW9uU3BlY2lmaWNhdGlvbk1vZGVsLCBoYXZpbmcgdHlwZSBBY3Rpb25TcGVjaWZpY2F0aW9uUHJlc01vZGVsXG4gIEFjdGlvblNwZWNpZmljYXRpb25Nb2RlbCA9ICdhY3Rpb25TcGVjaWZpY2F0aW9uJyxcblxuICAvLyBEUElfTGlua1NwZWNpZmljYXRpb24sIGhhdmluZyB0eXBlIExpbmtTcGVjaWZpY2F0aW9uUHJlc01vZGVsXG4gIExpbmtTcGVjaWZpY2F0aW9uID0gJ2xpbmtTcGVjaWZpY2F0aW9uJyxcblxuICAvLyBEUElfU2NyaXB0RGVzY3JpcHRpb24sIGhhdmluZyB0eXBlIFNjcmlwdERlc2NyaXB0aW9uUHJlc01vZGVsXG4gIFNjcmlwdERlc2NyaXB0aW9uID0gJ3NjcmlwdERlc2NyaXB0aW9uJyxcblxuICAvLyBEUElfQWN0aW9uU291cmNlLCBoYXZpbmcgdHlwZSBBY3Rpb25Tb3VyY2VQcmVzTW9kZWxcbiAgQWN0aW9uU291cmNlID0gJ2FjdGlvblNvdXJjZScsXG5cbiAgLy8gRFBJX0ZpZWxkRXhwckl0ZW0sIGhhdmluZyB0eXBlIEZpZWxkRXhwckl0ZW1QcmVzTW9kZWxcbiAgRmllbGRFeHBySXRlbSA9ICdmaWVsZEV4cHJlc3Npb25JdGVtJyxcblxuICAvLyBEUElfRmllbGRFeHByVmVjdG9yLCBoYXZpbmcgdHlwZSBGaWVsZEV4cHJJdGVtUHJlc01vZGVsW11cbiAgRmllbGRFeHByVmVjdG9yID0gJ2ZpZWxkRXhwcmVzc2lvblZlY3RvcicsXG5cbiAgLy8gRFBJX0FjdGlvbkNvbWJvSXRlbSwgaGF2aW5nIHR5cGUgQWN0aW9uQ29tYm9JdGVtUHJlc01vZGVsXG4gIEFjdGlvbkNvbWJvSXRlbSA9ICdhY3Rpb25Db21ib0l0ZW0nLFxuXG4gIC8vIERQSV9BY3Rpb25Db21ib1ZlY3RvciwgaGF2aW5nIHR5cGUgQWN0aW9uQ29tYm9JdGVtUHJlc01vZGVsW11cbiAgQWN0aW9uQ29tYm9WZWN0b3IgPSAnYWN0aW9uQ29tYm9WZWN0b3InLFxuXG4gIC8vIERQSV9BY3Rpb25Tb3VyY2VDb21ibywgaGF2aW5nIHR5cGUgQWN0aW9uU291cmNlQ29tYm9QcmVzTW9kZWxcbiAgQWN0aW9uU291cmNlQ29tYm8gPSAnYWN0aW9uU291cmNlQ29tYm8nLFxuXG4gIC8vIERQSV9BY3Rpb25EZXN0Q29tYm8sIGhhdmluZyB0eXBlIEFjdGlvbkNvbWJvUHJlc01vZGVsXG4gIEFjdGlvbkRlc3RDb21ibyA9ICdhY3Rpb25EZXN0Q29tYm8nLFxuXG4gIC8vIERQSV9BY3Rpb25GaWVsZExpc3QsIGhhdmluZyB0eXBlIEFjdGlvbkZpZWxkTGlzdFByZXNNb2RlbFxuICBBY3Rpb25GaWVsZExpc3QgPSAnYWN0aW9uRmllbGRMaXN0JyxcblxuICAvLyBEUElfRWRpdEJydXNoQWN0aW9uLCBoYXZpbmcgdHlwZSBFZGl0QnJ1c2hBY3Rpb25QcmVzTW9kZWxcbiAgRWRpdEJydXNoQWN0aW9uID0gJ2VkaXRCcnVzaEFjdGlvbicsXG5cbiAgLy8gRFBJX1VwZGF0ZUFjdGlvblNvdXJjZSwgaGF2aW5nIHR5cGUgVXBkYXRlQWN0aW9uU291cmNlUHJlc01vZGVsXG4gIFVwZGF0ZUFjdGlvblNvdXJjZSA9ICd1cGRhdGVBY3Rpb25Tb3VyY2UnLFxuXG4gIC8vIERQSV9VcGRhdGVCcnVzaEFjdGlvbiwgaGF2aW5nIHR5cGUgVXBkYXRlQnJ1c2hBY3Rpb25QcmVzTW9kZWxcbiAgVXBkYXRlQnJ1c2hBY3Rpb24gPSAndXBkYXRlQnJ1c2hBY3Rpb24nLFxuXG4gIC8vIERQSV9BY3Rpb25XYXJuaW5ncywgaGF2aW5nIHR5cGUgQWN0aW9uV2FybmluZ3NQcmVzTW9kZWxcbiAgQWN0aW9uV2FybmluZ3MgPSAnYWN0aW9uV2FybmluZ3MnLFxuXG4gIC8vIERQSV9FZGl0SHlwZXJsaW5rQWN0aW9uLCBoYXZpbmcgdHlwZSBFZGl0SHlwZXJsaW5rQWN0aW9uUHJlc01vZGVsXG4gIEVkaXRIeXBlcmxpbmtBY3Rpb24gPSAnZWRpdEh5cGVybGlua0FjdGlvbicsXG5cbiAgLy8gRFBJX1VwZGF0ZUh5cGVybGlua0FjdGlvbiwgaGF2aW5nIHR5cGUgVXBkYXRlSHlwZXJsaW5rQWN0aW9uUHJlc01vZGVsXG4gIFVwZGF0ZUh5cGVybGlua0FjdGlvbiA9ICd1cGRhdGVIeXBlcmxpbmtBY3Rpb24nLFxuXG4gIC8vIERQSV9FZGl0U2hlZXRMaW5rQWN0aW9uLCBoYXZpbmcgdHlwZSBFZGl0U2hlZXRMaW5rQWN0aW9uUHJlc01vZGVsXG4gIEVkaXRTaGVldExpbmtBY3Rpb24gPSAnZWRpdFNoZWV0bGlua0FjdGlvbicsXG5cbiAgLy8gRFBJX1VwZGF0ZVNoZWV0TGlua0FjdGlvbiwgaGF2aW5nIHR5cGUgVXBkYXRlU2hlZXRMaW5rQWN0aW9uUHJlc01vZGVsXG4gIFVwZGF0ZVNoZWV0TGlua0FjdGlvbiA9ICd1cGRhdGVTaGVldGxpbmtBY3Rpb24nLFxuXG4gIC8vIERQSV9BY3Rpb25JdGVtLCBoYXZpbmcgdHlwZSBBY3Rpb25JdGVtUHJlc01vZGVsXG4gIEFjdGlvbkl0ZW0gPSAnYWN0aW9uSXRlbScsXG5cbiAgLy8gRFBJX0FjdGlvbkl0ZW1MaXN0LCBoYXZpbmcgdHlwZSBBY3Rpb25JdGVtUHJlc01vZGVsW11cbiAgQWN0aW9uSXRlbUxpc3QgPSAnYWN0aW9uSXRlbUxpc3QnLFxuXG4gIC8vIERQSV9EYXRhU2VnbWVudCwgaGF2aW5nIHR5cGUgRGF0YVNlZ21lbnRQcmVzTW9kZWxcbiAgRGF0YVNlZ21lbnQgPSAnZGF0YVNlZ21lbnQnLFxuXG4gIC8vIERQSV9EYXRhU2VnbWVudHMsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2YgRGF0YVNlZ21lbnRQcmVzTW9kZWwpXG4gIERhdGFTZWdtZW50cyA9ICdkYXRhU2VnbWVudHMnLFxuXG4gIC8vIERQSV9EYXRhRGljdGlvbmFyeSwgaGF2aW5nIHR5cGUgRGF0YURpY3Rpb25hcnlQcmVzTW9kZWxcbiAgRGF0YURpY3Rpb25hcnkgPSAnZGF0YURpY3Rpb25hcnknLFxuXG4gIC8vIERQSV9WaXpEYXRhLCBoYXZpbmcgdHlwZSBWaXpEYXRhUHJlc01vZGVsXG4gIFZpekRhdGEgPSAndml6RGF0YScsXG5cbiAgLy8gRFBJX1ZpekNvbHVtbiwgaGF2aW5nIHR5cGUgVml6Q29sdW1uUHJlc01vZGVsXG4gIFZpekNvbHVtbiA9ICd2aXpDb2x1bW4nLFxuXG4gIC8vIERQSV9WaXpDb2x1bW5zLCBoYXZpbmcgdHlwZSBWaXpDb2x1bW5QcmVzTW9kZWxbXVxuICBWaXpDb2x1bW5zID0gJ3ZpekNvbHVtbnMnLFxuXG4gIC8vIERQSV9WaXpEYXRhQ29sdW1uLCBoYXZpbmcgdHlwZSBWaXpEYXRhQ29sdW1uUHJlc01vZGVsXG4gIFZpekRhdGFDb2x1bW4gPSAndml6RGF0YUNvbHVtbicsXG5cbiAgLy8gRFBJX1ZpekRhdGFDb2x1bW5zLCBoYXZpbmcgdHlwZSBWaXpEYXRhQ29sdW1uUHJlc01vZGVsW11cbiAgVml6RGF0YUNvbHVtbnMgPSAndml6RGF0YUNvbHVtbnMnLFxuXG4gIC8vIERQSV9WaXpQYW5lQ29sdW1uLCBoYXZpbmcgdHlwZSBWaXpQYW5lQ29sdW1uUHJlc01vZGVsXG4gIFZpelBhbmVDb2x1bW4gPSAndml6UGFuZUNvbHVtbicsXG5cbiAgLy8gRFBJX1ZpelBhbmVDb2x1bW5zLCBoYXZpbmcgdHlwZSBWaXpQYW5lQ29sdW1uUHJlc01vZGVsW11cbiAgVml6UGFuZUNvbHVtbnMgPSAndml6UGFuZUNvbHVtbnMnLFxuXG4gIC8vIERQSV9QYW5lQ29sdW1ucywgaGF2aW5nIHR5cGUgUGFuZUNvbHVtbnNQcmVzTW9kZWxcbiAgUGFuZUNvbHVtbnMgPSAncGFuZUNvbHVtbnMnLFxuXG4gIC8vIERQSV9QYW5lQ29sdW1uc0xpc3QsIGhhdmluZyB0eXBlIFBhbmVDb2x1bW5zUHJlc01vZGVsW11cbiAgUGFuZUNvbHVtbnNMaXN0ID0gJ3BhbmVDb2x1bW5zTGlzdCcsXG5cbiAgLy8gRFBJX1BhbmVDb2x1bW5zRGF0YSwgaGF2aW5nIHR5cGUgUGFuZUNvbHVtbnNEYXRhUHJlc01vZGVsXG4gIFBhbmVDb2x1bW5zRGF0YSA9ICdwYW5lQ29sdW1uc0RhdGEnLFxuXG4gIC8vIERQSV9GaWx0ZXJDb250ZXh0LCBoYXZpbmcgdHlwZSBGaWx0ZXJDb250ZXh0UHJlc01vZGVsXG4gIEZpbHRlckNvbnRleHQgPSAnZmlsdGVyQ29udGV4dCcsXG5cbiAgLy8gRFBJX1ViZXJUaXBQYW5lRGF0YSwgaGF2aW5nIHR5cGUgVWJlclRpcFBhbmVEYXRhUHJlc01vZGVsXG4gIFViZXJUaXBQYW5lRGF0YSA9ICd1YmVydGlwUGFuZURhdGEnLFxuXG4gIC8vIERQSV9VYmVyVGlwUGFuZURhdGFzLCBoYXZpbmcgdHlwZSBVYmVyVGlwUGFuZURhdGFQcmVzTW9kZWxbXVxuICBVYmVyVGlwUGFuZURhdGFzID0gJ3ViZXJ0aXBQYW5lRGF0YXMnLFxuXG4gIC8vIERQSV9VYmVyVGlwRGF0YSwgaGF2aW5nIHR5cGUgVWJlclRpcERhdGFQcmVzTW9kZWxcbiAgVWJlclRpcERhdGEgPSAndWJlcnRpcERhdGEnLFxuXG4gIC8vIERQSV9SZWZMaW5lVGlwLCBoYXZpbmcgdHlwZSBSZWZMaW5lVGlwUHJlc01vZGVsXG4gIFJlZkxpbmVUaXAgPSAncmVmTGluZVRpcCcsXG5cbiAgLy8gRFBJX1JlZkxpbmVUaXBzLCBoYXZpbmcgdHlwZSBSZWZMaW5lVGlwUHJlc01vZGVsW11cbiAgUmVmTGluZVRpcHMgPSAncmVmTGluZVRpcHMnLFxuXG4gIC8vIERQSV9OdW1lcmljQmluLCBoYXZpbmcgdHlwZSBOdW1lcmljQmluUHJlc01vZGVsXG4gIE51bWVyaWNCaW4gPSAnbnVtZXJpY0JpbicsXG5cbiAgLy8gRFBJX051bWVyaWNCaW5EaWFsb2csIGhhdmluZyB0eXBlIE51bWVyaWNCaW5EaWFsb2dQcmVzTW9kZWxcbiAgTnVtZXJpY0JpbkRpYWxvZyA9ICdudW1lcmljQmluRGlhbG9nJyxcblxuICAvLyBEUElfRG9tYWluUmFuZ2UsIGhhdmluZyB0eXBlIERvbWFpblJhbmdlUHJlc01vZGVsXG4gIERvbWFpblJhbmdlID0gJ2RvbWFpblJhbmdlJyxcblxuICAvLyBEUElfQmluU2l6ZUluZm8sIGhhdmluZyB0eXBlIEJpblNpemVJbmZvUHJlc01vZGVsXG4gIEJpblNpemVJbmZvID0gJ2JpblNpemVJbmZvJyxcblxuICAvLyBEUElfRGV0YWlsZWRFcnJvckRpYWxvZywgaGF2aW5nIHR5cGUgRGV0YWlsZWRFcnJvclByZXNNb2RlbFxuICBEZXRhaWxlZEVycm9yRGlhbG9nID0gJ2RldGFpbGVkRXJyb3JEaWFsb2cnLFxuXG4gIC8vIERQSV9EcmFnU291cmNlUG9zaXRpb24sIGhhdmluZyB0eXBlIFNoZWxmRHJvcFBvc2l0aW9uUHJlc01vZGVsXG4gIERyYWdTb3VyY2VQb3NpdGlvbiA9ICdzaGVsZkRyYWdTb3VyY2VQb3NpdGlvbicsXG5cbiAgLy8gRFBJX0Ryb3BUYXJnZXRQb3NpdGlvbiwgaGF2aW5nIHR5cGUgU2hlbGZEcm9wUG9zaXRpb25QcmVzTW9kZWxcbiAgRHJvcFRhcmdldFBvc2l0aW9uID0gJ3NoZWxmRHJvcFRhcmdldFBvc2l0aW9uJyxcblxuICAvLyBEUElfU2hlbGZEcm9wUG9zaXRpb24sIGhhdmluZyB0eXBlIFNoZWxmRHJvcFBvc2l0aW9uUHJlc01vZGVsXG4gIFNoZWxmRHJvcFBvc2l0aW9uID0gJ3NoZWxmRHJvcFBvc2l0aW9uJyxcblxuICAvLyBEUElfU2hlbGZEcm9wUG9zaXRpb25zLCBoYXZpbmcgdHlwZSBTaGVsZkRyb3BQb3NpdGlvblByZXNNb2RlbFtdXG4gIFNoZWxmRHJvcFBvc2l0aW9ucyA9ICdzaGVsZkRyb3BQb3NpdGlvbnMnLFxuXG4gIC8vIERQSV9TaGVsZkRyb3BNb2RlbCwgaGF2aW5nIHR5cGUgU2hlbGZEcm9wUHJlc01vZGVsXG4gIFNoZWxmRHJvcE1vZGVsID0gJ3NoZWxmRHJvcE1vZGVsJyxcblxuICAvLyBEUElfU2hlbGZEcm9wTW9kZWxzLCBoYXZpbmcgdHlwZSBTaGVsZkRyb3BQcmVzTW9kZWxbXVxuICBTaGVsZkRyb3BNb2RlbHMgPSAnc2hlbGZEcm9wTW9kZWxzJyxcblxuICAvLyBEUElfRHJhZywgaGF2aW5nIHR5cGUgRHJhZ1ByZXNNb2RlbFxuICBEcmFnID0gJ2RyYWcnLFxuXG4gIC8vIERQSV9TY2VuZUVsZW1lbnQsIGhhdmluZyB0eXBlIFNjZW5lRWxlbWVudFByZXNNb2RlbFxuICBTY2VuZUVsZW1lbnQgPSAnc2NlbmVFbGVtZW50JyxcblxuICAvLyBEUElfU2NlbmVFbGVtZW50cywgaGF2aW5nIHR5cGUgU2NlbmVFbGVtZW50UHJlc01vZGVsW11cbiAgU2NlbmVFbGVtZW50cyA9ICdzY2VuZUVsZW1lbnRzJyxcblxuICAvLyBEUElfUXVpY2tGaWx0ZXJUeXBlLCBoYXZpbmcgdHlwZSBRdWlja0ZpbHRlclR5cGVcbiAgUXVpY2tGaWx0ZXJUeXBlID0gJ3F1aWNrRmlsdGVyVHlwZScsXG5cbiAgLy8gRFBJX0NhdE1vZGUsIGhhdmluZyB0eXBlIFF1aWNrRmlsdGVyQ2F0ZWdvcmljYWxNb2RlXG4gIENhdE1vZGUgPSAnY2F0ZWdvcmljYWxNb2RlJyxcblxuICAvLyBEUElfQ2F0Q3RybCwgaGF2aW5nIHR5cGUgUXVpY2tGaWx0ZXJDYXRlZ29yaWNhbEN0cmxcbiAgQ2F0Q3RybCA9ICdjYXRlZ29yaWNhbENvbnRyb2wnLFxuXG4gIC8vIERQSV9RdWFudE1vZGUsIGhhdmluZyB0eXBlIFF1aWNrRmlsdGVyUXVhbnRpdGF0aXZlTW9kZVxuICBRdWFudE1vZGUgPSAncXVhbnRpdGF0aXZlTW9kZScsXG5cbiAgLy8gRFBJX1F1YW50Q3RybCwgaGF2aW5nIHR5cGUgUXVpY2tGaWx0ZXJRdWFudGl0YXRpdmVDdHJsXG4gIFF1YW50Q3RybCA9ICdxdWFudGl0YXRpdmVDb250cm9sJyxcblxuICAvLyBEUElfWm9uZUNvbW1vbiwgaGF2aW5nIHR5cGUgWm9uZUNvbW1vblByZXNNb2RlbFxuICBab25lQ29tbW9uID0gJ3pvbmVDb21tb24nLFxuXG4gIC8vIERQSV9ab25lQ29tbW9uTGlzdEl0ZW1zLCBoYXZpbmcgdHlwZSBab25lQ29tbW9uUHJlc01vZGVsW11cbiAgWm9uZUNvbW1vbkxpc3RJdGVtcyA9ICd6b25lQ29tbW9uTGlzdEl0ZW1zJyxcblxuICAvLyBEUElfWm9uZSwgaGF2aW5nIHR5cGUgWm9uZVByZXNNb2RlbFxuICBab25lID0gJ3pvbmUnLFxuXG4gIC8vIERQSV9ab25lcywgaGF2aW5nIHR5cGUgRGljdGlvbmFyeShvZiBab25lUHJlc01vZGVsKVxuICBab25lcyA9ICd6b25lcycsXG5cbiAgLy8gRFBJX0ltYWdlWm9uZSwgaGF2aW5nIHR5cGUgSW1hZ2Vab25lUHJlc01vZGVsXG4gIEltYWdlWm9uZSA9ICdpbWFnZVpvbmUnLFxuXG4gIC8vIERQSV9XZWJab25lLCBoYXZpbmcgdHlwZSBXZWJab25lUHJlc01vZGVsXG4gIFdlYlpvbmUgPSAnd2ViWm9uZScsXG5cbiAgLy8gRFBJX0J1dHRvblpvbmVQcmVzTW9kZWwsIGhhdmluZyB0eXBlIEJ1dHRvblpvbmVQcmVzTW9kZWxcbiAgQnV0dG9uWm9uZVByZXNNb2RlbCA9ICdidXR0b25ab25lJyxcblxuICAvLyBEUElfWm9uZUVkZ2VNb3ZlVHlwZSwgaGF2aW5nIHR5cGUgWm9uZUVkZ2VNb3ZlXG4gIFpvbmVFZGdlTW92ZVR5cGUgPSAnem9uZUVkZ2VNb3ZlVHlwZScsXG5cbiAgLy8gRFBJX1pvbmVTaWRlLCBoYXZpbmcgdHlwZSBTaWRlVHlwZVxuICBab25lU2lkZSA9ICd6b25lU2lkZScsXG5cbiAgLy8gRFBJX1NuYXBQb2ludCwgaGF2aW5nIHR5cGUgU25hcFBvaW50UHJlc01vZGVsXG4gIFNuYXBQb2ludCA9ICdzbmFwUG9pbnQnLFxuXG4gIC8vIERQSV9TbmFwUG9pbnRzLCBoYXZpbmcgdHlwZSBTbmFwUG9pbnRQcmVzTW9kZWxbXVxuICBTbmFwUG9pbnRzID0gJ3NuYXBQb2ludHMnLFxuXG4gIC8vIERQSV9UYXJnZXRQcmV2aWV3UGFpciwgaGF2aW5nIHR5cGUgRHJhZ0Ryb3BUYXJnZXRQcmV2aWV3UGFpclByZXNNb2RlbFxuICBUYXJnZXRQcmV2aWV3UGFpciA9ICd0YXJnZXRQcmV2aWV3UGFpcicsXG5cbiAgLy8gRFBJX1RhcmdldFByZXZpZXdQYWlycywgaGF2aW5nIHR5cGUgRHJhZ0Ryb3BUYXJnZXRQcmV2aWV3UGFpclByZXNNb2RlbFtdXG4gIFRhcmdldFByZXZpZXdQYWlycyA9ICd0YXJnZXRQcmV2aWV3UGFpcnMnLFxuXG4gIC8vIERQSV9Db250YWluZXJHdWlkZSwgaGF2aW5nIHR5cGUgRHJhZ0Ryb3BDb250YWluZXJHdWlkZVByZXNNb2RlbFxuICBDb250YWluZXJHdWlkZSA9ICdjb250YWluZXJHdWlkZScsXG5cbiAgLy8gRFBJX0NvbnRhaW5lckd1aWRlcywgaGF2aW5nIHR5cGUgRHJhZ0Ryb3BDb250YWluZXJHdWlkZVByZXNNb2RlbFtdXG4gIENvbnRhaW5lckd1aWRlcyA9ICdjb250YWluZXJHdWlkZXMnLFxuXG4gIC8vIERQSV9ab25lQm9yZGVyLCBoYXZpbmcgdHlwZSBEcmFnRHJvcFpvbmVCb3JkZXJQcmVzTW9kZWxcbiAgWm9uZUJvcmRlciA9ICd6b25lQm9yZGVyJyxcblxuICAvLyBEUElfWm9uZUJvcmRlcnMsIGhhdmluZyB0eXBlIERyYWdEcm9wWm9uZUJvcmRlclByZXNNb2RlbFtdXG4gIFpvbmVCb3JkZXJzID0gJ3pvbmVCb3JkZXJzJyxcblxuICAvLyBEUElfRGFzaGJvYXJkRHJhZ0Ryb3AsIGhhdmluZyB0eXBlIERhc2hib2FyZERyYWdEcm9wUHJlc01vZGVsXG4gIERhc2hib2FyZERyYWdEcm9wID0gJ3pvbmVEcmFnRHJvcCcsXG5cbiAgLy8gRFBJX0RyYWdab25lUmVzaXplLCBoYXZpbmcgdHlwZSBEcmFnWm9uZVJlc2l6ZVByZXNNb2RlbFxuICBEcmFnWm9uZVJlc2l6ZSA9ICd6b25lUmVzaXplJyxcblxuICAvLyBEUElfRGFzaGJvYXJkVGV4dCwgaGF2aW5nIHR5cGUgVGV4dFJlZ2lvblByZXNNb2RlbFxuICBEYXNoYm9hcmRUZXh0ID0gJ2Rhc2hib2FyZFRleHQnLFxuXG4gIC8vIERQSV9EYXNoYm9hcmRUaXRsZSwgaGF2aW5nIHR5cGUgVGV4dFJlZ2lvblByZXNNb2RlbFxuICBEYXNoYm9hcmRUaXRsZSA9ICdkYXNoYm9hcmRUaXRsZScsXG5cbiAgLy8gRFBJX1F1aWNrRmlsdGVyVGl0bGUsIGhhdmluZyB0eXBlIFRleHRSZWdpb25QcmVzTW9kZWxcbiAgUXVpY2tGaWx0ZXJUaXRsZSA9ICdxdWlja0ZpbHRlclRpdGxlJyxcblxuICAvLyBEUElfVmlzdWFsQ2FwdGlvbiwgaGF2aW5nIHR5cGUgVGV4dFJlZ2lvblByZXNNb2RlbFxuICBWaXN1YWxDYXB0aW9uID0gJ3Zpc3VhbENhcHRpb24nLFxuXG4gIC8vIERQSV9WaXN1YWxUaXRsZSwgaGF2aW5nIHR5cGUgVGV4dFJlZ2lvblByZXNNb2RlbFxuICBWaXN1YWxUaXRsZSA9ICd2aXN1YWxUaXRsZScsXG5cbiAgLy8gRFBJX1pvbmVUaXRsZVJlZ2lvbiwgaGF2aW5nIHR5cGUgVGV4dFJlZ2lvblByZXNNb2RlbFxuICBab25lVGl0bGVSZWdpb24gPSAnem9uZVRpdGxlJyxcblxuICAvLyBEUElfRm9yZWNhc3RPcHRpb25zLCBoYXZpbmcgdHlwZSBGb3JlY2FzdFByZXNNb2RlbFxuICBGb3JlY2FzdE9wdGlvbnMgPSAnZm9yZWNhc3RPcHRpb25zJyxcblxuICAvLyBEUElfRm9yZWNhc3REZXNjcmlwdGlvbiwgaGF2aW5nIHR5cGUgRm9yZWNhc3REZXNjcmliZVByZXNNb2RlbFxuICBGb3JlY2FzdERlc2NyaXB0aW9uID0gJ2ZvcmVjYXN0RGVzY3JpcHRpb24nLFxuXG4gIC8vIERQSV9Xb3JrZ3JvdXBQdWJsaXNoT2JqZWN0LCBoYXZpbmcgdHlwZSBXb3JrZ3JvdXBQdWJsaXNoT2JqZWN0UHJlc01vZGVsXG4gIFdvcmtncm91cFB1Ymxpc2hPYmplY3QgPSAncHVibGlzaERhdGFTb3VyY2UnLFxuXG4gIC8vIERQSV9QdWJsaXNoUGVybWlzc2lvbnNTdW1tYXJ5LCBoYXZpbmcgdHlwZSBQdWJsaXNoUGVybWlzc2lvbnNTdW1tYXJ5UHJlc01vZGVsXG4gIFB1Ymxpc2hQZXJtaXNzaW9uc1N1bW1hcnkgPSAncHVibGlzaFBlcm1pc3Npb25zU3VtbWFyeScsXG5cbiAgLy8gRFBJX0NoZWNrTmFtZVJlc3VsdHMsIGhhdmluZyB0eXBlIENoZWNrTmFtZVJlc3VsdHNQcmVzTW9kZWxcbiAgQ2hlY2tOYW1lUmVzdWx0cyA9ICdjaGVja05hbWVSZXN1bHRzJyxcblxuICAvLyBEUElfVmFsaWRhdGVQdWJsaXNoVmlld3NSZXN1bHQsIGhhdmluZyB0eXBlIFZhbGlkYXRlUHVibGlzaFZpZXdzUmVzdWx0UHJlc01vZGVsXG4gIFZhbGlkYXRlUHVibGlzaFZpZXdzUmVzdWx0ID0gJ3ZhbGlkYXRlUHVibGlzaFZpZXdzUmVzdWx0JyxcblxuICAvLyBEUElfUHVibGlzaEF1dGhlbnRpY2F0aW9uU2V0dGluZ3MsIGhhdmluZyB0eXBlIFB1Ymxpc2hBdXRoZW50aWNhdGlvblNldHRpbmdzUHJlc01vZGVsXG4gIFB1Ymxpc2hBdXRoZW50aWNhdGlvblNldHRpbmdzID0gJ3B1Ymxpc2hBdXRoZW50aWNhdGlvblNldHRpbmdzJyxcblxuICAvLyBEUElfTWFuYWdlRGF0YXNvdXJjZXMsIGhhdmluZyB0eXBlIE1hbmFnZURhdGFzb3VyY2VzUHJlc01vZGVsXG4gIE1hbmFnZURhdGFzb3VyY2VzID0gJ21hbmFnZURhdGFzb3VyY2VzJyxcblxuICAvLyBEUElfQ3JlZGVudGlhbHNBdXRoU2V0dGluZ3MsIGhhdmluZyB0eXBlIENyZWRlbnRpYWxzQXV0aFNldHRpbmdzUHJlc01vZGVsXG4gIENyZWRlbnRpYWxzQXV0aFNldHRpbmdzID0gJ2NyZWRlbnRpYWxzQXV0aFNldHRpbmdzJyxcblxuICAvLyBEUElfQ29ubmVjdGlvbkNyZWRlbnRpYWxzQXV0aFNldHRpbmdzLCBoYXZpbmcgdHlwZSBDb25uZWN0aW9uQ3JlZGVudGlhbHNBdXRoU2V0dGluZ3NQcmVzTW9kZWxcbiAgQ29ubmVjdGlvbkNyZWRlbnRpYWxzQXV0aFNldHRpbmdzID0gJ2Nvbm5lY3Rpb25DcmVkZW50aWFsc0F1dGhTZXR0aW5ncycsXG5cbiAgLy8gRFBJX0Nvbm5lY3Rpb25DcmVkZW50aWFsc0F1dGhTZXR0aW5nc0xpc3QsIGhhdmluZyB0eXBlIENvbm5lY3Rpb25DcmVkZW50aWFsc0F1dGhTZXR0aW5nc1ByZXNNb2RlbFtdXG4gIENvbm5lY3Rpb25DcmVkZW50aWFsc0F1dGhTZXR0aW5nc0xpc3QgPSAnY29ubmVjdGlvbkNyZWRlbnRpYWxzQXV0aFNldHRpbmdzTGlzdCcsXG5cbiAgLy8gRFBJX1B1Ymxpc2hEYXRhc291cmNlRnJvbVdvcmtib29rSW5mbywgaGF2aW5nIHR5cGUgUHVibGlzaERhdGFzb3VyY2VGcm9tV29ya2Jvb2tJbmZvUHJlc01vZGVsXG4gIFB1Ymxpc2hEYXRhc291cmNlRnJvbVdvcmtib29rSW5mbyA9ICdwdWJsaXNoRGF0YXNvdXJjZUZyb21Xb3JrYm9va0luZm8nLFxuXG4gIC8vIERQSV9QdWJsaXNoRGF0YXNvdXJjZXNGcm9tV29ya2Jvb2tJbmZvLCBoYXZpbmcgdHlwZSBQdWJsaXNoRGF0YXNvdXJjZUZyb21Xb3JrYm9va0luZm9QcmVzTW9kZWxbXVxuICBQdWJsaXNoRGF0YXNvdXJjZXNGcm9tV29ya2Jvb2tJbmZvID0gJ3B1Ymxpc2hEYXRhc291cmNlc0Zyb21Xb3JrYm9va0luZm8nLFxuXG4gIC8vIERQSV9QdWJsaXNoU2hlZXQsIGhhdmluZyB0eXBlIFB1Ymxpc2hTaGVldFByZXNNb2RlbFxuICBQdWJsaXNoU2hlZXQgPSAncHVibGlzaFNoZWV0JyxcblxuICAvLyBEUElfUHVibGlzaFNoZWV0cywgaGF2aW5nIHR5cGUgUHVibGlzaFNoZWV0UHJlc01vZGVsW11cbiAgUHVibGlzaFNoZWV0cyA9ICdwdWJsaXNoU2hlZXRzJyxcblxuICAvLyBEUElfUHVibGlzaE9iamVjdFZpZXdzLCBoYXZpbmcgdHlwZSBQdWJsaXNoT2JqZWN0Vmlld3NQcmVzTW9kZWxcbiAgUHVibGlzaE9iamVjdFZpZXdzID0gJ3B1Ymxpc2hPYmplY3RWaWV3cycsXG5cbiAgLy8gRFBJX1B1Ymxpc2hPYmplY3RQdWJsaXNoU2hlZXRSZXN1bHRzLCBoYXZpbmcgdHlwZSBQdWJsaXNoT2JqZWN0UHVibGlzaFNoZWV0UmVzdWx0c1ByZXNNb2RlbFxuICBQdWJsaXNoT2JqZWN0UHVibGlzaFNoZWV0UmVzdWx0cyA9ICdwdWJsaXNoT2JqZWN0UHVibGlzaFNoZWV0UmVzdWx0cycsXG5cbiAgLy8gRFBJX1JlZnJlc2hFeHRyYWN0U2NoZWR1bGluZ1NldHRpbmdzLCBoYXZpbmcgdHlwZSBSZWZyZXNoRXh0cmFjdFNjaGVkdWxpbmdTZXR0aW5nc1ByZXNNb2RlbFxuICBSZWZyZXNoRXh0cmFjdFNjaGVkdWxpbmdTZXR0aW5ncyA9ICdyZWZyZXNoRXh0cmFjdFNjaGVkdWxpbmdTZXR0aW5ncycsXG5cbiAgLy8gRFBJX1NldFJlZnJlc2hFeHRyYWN0U2NoZWR1bGVSZXN1bHQsIGhhdmluZyB0eXBlIFNldFJlZnJlc2hFeHRyYWN0U2NoZWR1bGVSZXN1bHRQcmVzTW9kZWxcbiAgU2V0UmVmcmVzaEV4dHJhY3RTY2hlZHVsZVJlc3VsdCA9ICdzZXRSZWZyZXNoRXh0cmFjdFNjaGVkdWxlUmVzdWx0JyxcblxuICAvLyBEUElfQ2hlY2tQdWJsaXNoT2JqZWN0TmFtZVdhcm5pbmdzUmVzdWx0cywgaGF2aW5nIHR5cGUgQ2hlY2tQdWJsaXNoT2JqZWN0TmFtZVdhcm5pbmdzUmVzdWx0c1ByZXNNb2RlbFxuICBDaGVja1B1Ymxpc2hPYmplY3ROYW1lV2FybmluZ3NSZXN1bHRzID0gJ2NoZWNrUHVibGlzaE9iamVjdE5hbWVXYXJuaW5nc1Jlc3VsdHMnLFxuXG4gIC8vIERQSV9QdWJsaXNoRGF0YXNvdXJjZU9uV29ya2Jvb2tQdWJsaXNoUmVzdWx0cywgaGF2aW5nIHR5cGUgUHVibGlzaERhdGFzb3VyY2VPbldvcmtib29rUHVibGlzaFJlc3VsdHNQcmVzTW9kZWxcbiAgUHVibGlzaERhdGFzb3VyY2VPbldvcmtib29rUHVibGlzaFJlc3VsdHMgPSAncHVibGlzaERhdGFzb3VyY2VPbldvcmtib29rUHVibGlzaFJlc3VsdCcsXG5cbiAgLy8gRFBJX1B1Ymxpc2hEYXRhU291cmNlUmVzdWx0LCBoYXZpbmcgdHlwZSBQdWJsaXNoRGF0YVNvdXJjZVJlc3VsdFByZXNNb2RlbFxuICBQdWJsaXNoRGF0YVNvdXJjZVJlc3VsdCA9ICdwdWJsaXNoRGF0YVNvdXJjZVJlc3VsdCcsXG5cbiAgLy8gRFBJX1B1Ymxpc2hXYXJuaW5nTWVzc2FnZSwgaGF2aW5nIHR5cGUgUHVibGlzaFdhcm5pbmdNZXNzYWdlUHJlc01vZGVsXG4gIFB1Ymxpc2hXYXJuaW5nTWVzc2FnZSA9ICdwdWJsaXNoV2FybmluZ01lc3NhZ2UnLFxuXG4gIC8vIERQSV9NdXN0RG93bmdyYWRlVG9QdWJsaXNoV2FybmluZ01lc3NhZ2VQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFB1Ymxpc2hXYXJuaW5nTWVzc2FnZVByZXNNb2RlbFxuICBNdXN0RG93bmdyYWRlVG9QdWJsaXNoV2FybmluZ01lc3NhZ2VQcmVzTW9kZWwgPSAnbXVzdERvd25ncmFkZVRvUHVibGlzaFdhcm5pbmdNZXNzYWdlUHJlc01vZGVsJyxcblxuICAvLyBEUElfUHVibGlzaFNlbGVjdGVkQXR0cmlidXRlcywgaGF2aW5nIHR5cGUgUHVibGlzaFNlbGVjdGVkQXR0cmlidXRlc1ByZXNNb2RlbFxuICBQdWJsaXNoU2VsZWN0ZWRBdHRyaWJ1dGVzID0gJ3B1Ymxpc2hTZWxlY3RlZEF0dHJpYnV0ZXMnLFxuXG4gIC8vIERQSV9BdXRvc2F2ZUZpbGUsIGhhdmluZyB0eXBlIEF1dG9zYXZlRmlsZVByZXNNb2RlbFxuICBBdXRvc2F2ZUZpbGUgPSAnYXV0b3NhdmVGaWxlJyxcblxuICAvLyBEUElfQXV0b3NhdmVGaWxlcywgaGF2aW5nIHR5cGUgQXV0b3NhdmVGaWxlUHJlc01vZGVsW11cbiAgQXV0b3NhdmVGaWxlcyA9ICdhdXRvc2F2ZUZpbGVzJyxcblxuICAvLyBEUElfRnVuY3Rpb25Hcm91cCwgaGF2aW5nIHR5cGUgRnVuY3Rpb25Hcm91cFxuICBGdW5jdGlvbkdyb3VwID0gJ2Z1bmNHcnAnLFxuXG4gIC8vIERQSV9GdW5jdGlvbkdyb3VwcywgaGF2aW5nIHR5cGUgRnVuY3Rpb25Hcm91cFtdXG4gIEZ1bmN0aW9uR3JvdXBzID0gJ2Z1bmNHcnBzJyxcblxuICAvLyBEUElfRnVuY3Rpb25BcmdUeXBlLCBoYXZpbmcgdHlwZSBGdW5jdGlvbkFyZ1R5cGVcbiAgRnVuY3Rpb25BcmdUeXBlID0gJ2Z1bmNBcmdUeXBlJyxcblxuICAvLyBEUElfRnVuY3Rpb25BcmdUeXBlcywgaGF2aW5nIHR5cGUgRnVuY3Rpb25BcmdUeXBlW11cbiAgRnVuY3Rpb25BcmdUeXBlcyA9ICdmdW5jQXJnVHlwZXMnLFxuXG4gIC8vIERQSV9DYWxjdWxhdGlvblN0eWxlLCBoYXZpbmcgdHlwZSBDYWxjU3R5bGVcbiAgQ2FsY3VsYXRpb25TdHlsZSA9ICdjYWxjdWxhdGlvblN0eWxlJyxcblxuICAvLyBEUElfQ2FsY3VsYXRpb24sIGhhdmluZyB0eXBlIENhbGN1bGF0aW9uUHJlc01vZGVsXG4gIENhbGN1bGF0aW9uID0gJ2NhbGN1bGF0aW9uJyxcblxuICAvLyBEUElfVHlwZUluUGlsbCwgaGF2aW5nIHR5cGUgQ2FsY3VsYXRpb25QcmVzTW9kZWxcbiAgVHlwZUluUGlsbCA9ICd0eXBlSW5QaWxsJyxcblxuICAvLyBEUElfQ2FsY0Vycm9ySW5mbywgaGF2aW5nIHR5cGUgQ2FsY0Vycm9ySW5mb1ByZXNNb2RlbFxuICBDYWxjRXJyb3JJbmZvID0gJ2Vycm9ySW5mbycsXG5cbiAgLy8gRFBJX0NhbGNFcnJvckluZm9zLCBoYXZpbmcgdHlwZSBDYWxjRXJyb3JJbmZvUHJlc01vZGVsW11cbiAgQ2FsY0Vycm9ySW5mb3MgPSAnZXJyb3JJbmZvTGlzdCcsXG5cbiAgLy8gRFBJX0NhbGN1YWx0aW9uVmFsaWRhdGlvbiwgaGF2aW5nIHR5cGUgQ2FsY3VsYXRpb25WYWxpZGF0aW9uUHJlc01vZGVsXG4gIENhbGN1YWx0aW9uVmFsaWRhdGlvbiA9ICdjYWxjdWxhdGlvblZhbGlkYXRpb24nLFxuXG4gIC8vIERQSV9FeHByZXNzaW9uRnVuY3Rpb24sIGhhdmluZyB0eXBlIEV4cHJlc3Npb25GdW5jdGlvblByZXNNb2RlbFxuICBFeHByZXNzaW9uRnVuY3Rpb24gPSAnZXhwcmVzc2lvbkZ1bmMnLFxuXG4gIC8vIERQSV9FeHByZXNzaW9uRnVuY3Rpb25zLCBoYXZpbmcgdHlwZSBFeHByZXNzaW9uRnVuY3Rpb25QcmVzTW9kZWxbXVxuICBFeHByZXNzaW9uRnVuY3Rpb25zID0gJ2V4cHJlc3Npb25GdW5jTGlzdCcsXG5cbiAgLy8gRFBJX0V4cHJlc3Npb25GdW5jdGlvbnNQTSwgaGF2aW5nIHR5cGUgRXhwcmVzc2lvbkZ1bmN0aW9uc1ByZXNNb2RlbFxuICBFeHByZXNzaW9uRnVuY3Rpb25zUE0gPSAnZXhwcmVzc2lvbkZ1bmNQbScsXG5cbiAgLy8gRFBJX1N0eWxlVG9rZW4sIGhhdmluZyB0eXBlIFN0eWxlVG9rZW5QcmVzTW9kZWxcbiAgU3R5bGVUb2tlbiA9ICdzdHlsZVRva2VuJyxcblxuICAvLyBEUElfU3R5bGVUb2tlbnMsIGhhdmluZyB0eXBlIFN0eWxlVG9rZW5QcmVzTW9kZWxbXVxuICBTdHlsZVRva2VucyA9ICdzdHlsZVRva2VuTGlzdCcsXG5cbiAgLy8gRFBJX0NhbGNFZGl0b3JUZXh0U2VsZWN0aW9uLCBoYXZpbmcgdHlwZSBDYWxjRWRpdG9yVGV4dFNlbGVjdGlvblByZXNNb2RlbFxuICBDYWxjRWRpdG9yVGV4dFNlbGVjdGlvbiA9ICdjYWxjRWRpdG9yVGV4dFNlbGVjdGlvbicsXG5cbiAgLy8gRFBJX0F1dG9Db21wbGV0ZUl0ZW1UeXBlLCBoYXZpbmcgdHlwZSBBdXRvQ29tcGxldGVJdGVtVHlwZVxuICBBdXRvQ29tcGxldGVJdGVtVHlwZSA9ICdhdXRvY29tcGxldGVUeXBlJyxcblxuICAvLyBEUElfQXV0b0NvbXBsZXRlSXRlbSwgaGF2aW5nIHR5cGUgQXV0b0NvbXBsZXRlSXRlbVByZXNNb2RlbFxuICBBdXRvQ29tcGxldGVJdGVtID0gJ2F1dG9jb21wbGV0ZUl0ZW0nLFxuXG4gIC8vIERQSV9BdXRvQ29tcGxldGVJdGVtcywgaGF2aW5nIHR5cGUgQXV0b0NvbXBsZXRlSXRlbVByZXNNb2RlbFtdXG4gIEF1dG9Db21wbGV0ZUl0ZW1zID0gJ2F1dG9jb21wbGV0ZUl0ZW1MaXN0JyxcblxuICAvLyBEUElfQ2FsY3VsYXRpb25BdXRvQ29tcGxldGVDb250ZXh0TWVudSwgaGF2aW5nIHR5cGUgQ2FsY3VsYXRpb25BdXRvQ29tcGxldGVDb250ZXh0TWVudVByZXNNb2RlbFxuICBDYWxjdWxhdGlvbkF1dG9Db21wbGV0ZUNvbnRleHRNZW51ID0gJ2NhbGN1bGF0aW9uQXV0b2NvbXBsZXRlQ29udGV4dE1lbnUnLFxuXG4gIC8vIERQSV9DYWxjQXBwbHlSZXN1bHQsIGhhdmluZyB0eXBlIENhbGNBcHBseVJlc3VsdFxuICBDYWxjQXBwbHlSZXN1bHQgPSAnY2FsY3VsYXRpb25BcHBseVJlc3VsdCcsXG5cbiAgLy8gRFBJX1JhbXBCb3JkZXJTdHlsZWRCb3gsIGhhdmluZyB0eXBlIFN0eWxlZEJveFByZXNNb2RlbFxuICBSYW1wQm9yZGVyU3R5bGVkQm94ID0gJ3JhbXBCb3JkZXJTdHlsZWRCb3gnLFxuXG4gIC8vIERQSV9TdHlsZWRCb3gsIGhhdmluZyB0eXBlIFN0eWxlZEJveFByZXNNb2RlbFxuICBTdHlsZWRCb3ggPSAnc3R5bGVkQm94JyxcblxuICAvLyBEUElfR2xvYmFsU3R5bGVkQm94LCBoYXZpbmcgdHlwZSBTdHlsZWRCb3hQcmVzTW9kZWxcbiAgR2xvYmFsU3R5bGVkQm94ID0gJ2dsb2JhbFN0eWxlZEJveCcsXG5cbiAgLy8gRFBJX1N0eWxlQ29udGV4dCwgaGF2aW5nIHR5cGUgU3R5bGVDb250ZXh0UHJlc01vZGVsXG4gIFN0eWxlQ29udGV4dCA9ICdzdHlsZUNvbnRleHQnLFxuXG4gIC8vIERQSV9DdXJyZW50VGV4dFN0eWxlLCBoYXZpbmcgdHlwZSBUZXh0U3R5bGVQcmVzTW9kZWxcbiAgQ3VycmVudFRleHRTdHlsZSA9ICdjdXJyZW50VGV4dFN0eWxlJyxcblxuICAvLyBEUElfTGFiZWxUZXh0U3R5bGUsIGhhdmluZyB0eXBlIFRleHRTdHlsZVByZXNNb2RlbFxuICBMYWJlbFRleHRTdHlsZSA9ICdsYWJlbFRleHRTdHlsZScsXG5cbiAgLy8gRFBJX09yaWdpbmFsVGV4dFN0eWxlLCBoYXZpbmcgdHlwZSBUZXh0U3R5bGVQcmVzTW9kZWxcbiAgT3JpZ2luYWxUZXh0U3R5bGUgPSAnb3JpZ2luYWxUZXh0U3R5bGUnLFxuXG4gIC8vIERQSV9TZWxlY3RlZFRleHRTdHlsZU1vZGVsLCBoYXZpbmcgdHlwZSBUZXh0U3R5bGVQcmVzTW9kZWxcbiAgU2VsZWN0ZWRUZXh0U3R5bGVNb2RlbCA9ICdzZWxlY3RlZFRleHRTdHlsZU1vZGVsJyxcblxuICAvLyBEUElfU3dhdGNoVGV4dFN0eWxlTW9kZWwsIGhhdmluZyB0eXBlIFRleHRTdHlsZVByZXNNb2RlbFxuICBTd2F0Y2hUZXh0U3R5bGVNb2RlbCA9ICdzd2F0Y2hUZXh0U3R5bGUnLFxuXG4gIC8vIERQSV9UZXh0U3R5bGVNb2RlbCwgaGF2aW5nIHR5cGUgVGV4dFN0eWxlUHJlc01vZGVsXG4gIFRleHRTdHlsZU1vZGVsID0gJ3RleHRTdHlsZScsXG5cbiAgLy8gRFBJX1RpdGxlU3R5bGVNb2RlbCwgaGF2aW5nIHR5cGUgVGV4dFN0eWxlUHJlc01vZGVsXG4gIFRpdGxlU3R5bGVNb2RlbCA9ICd0aXRsZVN0eWxlTW9kZWwnLFxuXG4gIC8vIERQSV9Qcm9wZXJ0eUJhZywgaGF2aW5nIHR5cGUgUHJvcGVydHlCYWdQcmVzTW9kZWxcbiAgUHJvcGVydHlCYWcgPSAncHJvcEJhZ1dyYXBwZXInLFxuXG4gIC8vIERQSV9QcmVzTW9kZWxNYXAsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2YgUHJvcGVydHlCYWdQcmVzTW9kZWwpXG4gIFByZXNNb2RlbE1hcCA9ICdwcmVzTW9kZWxNYXAnLFxuXG4gIC8vIERQSV9QcmVzZW50YXRpb25MYXllck5vdGlmaWNhdGlvbnMsIGhhdmluZyB0eXBlIFByZXNNb2RlbE1hcFByZXNNb2RlbFxuICBQcmVzZW50YXRpb25MYXllck5vdGlmaWNhdGlvbnMgPSAncHJlc2VudGF0aW9uTGF5ZXJOb3RpZmljYXRpb25zJyxcblxuICAvLyBEUElfU2Vjb25kYXJ5SW5mbywgaGF2aW5nIHR5cGUgUHJlc01vZGVsTWFwUHJlc01vZGVsXG4gIFNlY29uZGFyeUluZm8gPSAnc2Vjb25kYXJ5SW5mbycsXG5cbiAgLy8gRFBJX0NsaWVudERhc2hib2FyZFVJTWV0cmljLCBoYXZpbmcgdHlwZSBDbGllbnREYXNoYm9hcmRVSU1ldHJpY1ByZXNNb2RlbFxuICBDbGllbnREYXNoYm9hcmRVSU1ldHJpYyA9ICdjbGllbnREYXNoYm9hcmRVaU1ldHJpYycsXG5cbiAgLy8gRFBJX0NsaWVudERhc2hib2FyZFVJTWV0cmljcywgaGF2aW5nIHR5cGUgQ2xpZW50RGFzaGJvYXJkVUlNZXRyaWNQcmVzTW9kZWxbXVxuICBDbGllbnREYXNoYm9hcmRVSU1ldHJpY3MgPSAnY2xpZW50RGFzaGJvYXJkVWlNZXRyaWNzJyxcblxuICAvLyBEUElfQ2xpZW50RGFzaGJvYXJkVUlNZXRyaWNDb250YWluZXIsIGhhdmluZyB0eXBlIENsaWVudERhc2hib2FyZFVJTWV0cmljQ29udGFpbmVyUHJlc01vZGVsXG4gIENsaWVudERhc2hib2FyZFVJTWV0cmljQ29udGFpbmVyID0gJ2NsaWVudERhc2hib2FyZFVpTWV0cmljQ29udGFpbmVyJyxcblxuICAvLyBEUElfRXh0U3ZjQ29uZmlnLCBoYXZpbmcgdHlwZSBFeHRTdmNDb25maWdQcmVzTW9kZWxcbiAgRXh0U3ZjQ29uZmlnID0gJ2V4dFN2Y0NvbmZpZycsXG5cbiAgLy8gRFBJX1N0b3J5Ym9hcmRTaGVldEl0ZW0sIGhhdmluZyB0eXBlIFN0b3J5Ym9hcmRTaGVldEl0ZW1QcmVzTW9kZWxcbiAgU3Rvcnlib2FyZFNoZWV0SXRlbSA9ICdzdG9yeWJvYXJkU2hlZXRJdGVtJyxcblxuICAvLyBEUElfU3Rvcnlib2FyZFNoZWV0SXRlbXMsIGhhdmluZyB0eXBlIFN0b3J5Ym9hcmRTaGVldEl0ZW1QcmVzTW9kZWxbXVxuICBTdG9yeWJvYXJkU2hlZXRJdGVtcyA9ICdzdG9yeWJvYXJkU2hlZXRJdGVtcycsXG5cbiAgLy8gRFBJX1N0b3J5Ym9hcmRTaGVldExpc3QsIGhhdmluZyB0eXBlIFN0b3J5Ym9hcmRTaGVldExpc3RQcmVzTW9kZWxcbiAgU3Rvcnlib2FyZFNoZWV0TGlzdCA9ICdzdG9yeWJvYXJkU2hlZXRMaXN0JyxcblxuICAvLyBEUElfRml0VG9TdG9yeUJvYXJkT3B0aW9uSXRlbSwgaGF2aW5nIHR5cGUgRml0VG9TdG9yeUJvYXJkT3B0aW9uSXRlbVByZXNNb2RlbFxuICBGaXRUb1N0b3J5Qm9hcmRPcHRpb25JdGVtID0gJ2ZpdFRvU3Rvcnlib2FyZE9wdGlvbkl0ZW0nLFxuXG4gIC8vIERQSV9GaXRUb1N0b3J5Qm9hcmRPcHRpb25JdGVtcywgaGF2aW5nIHR5cGUgRml0VG9TdG9yeUJvYXJkT3B0aW9uSXRlbVByZXNNb2RlbFtdXG4gIEZpdFRvU3RvcnlCb2FyZE9wdGlvbkl0ZW1zID0gJ2ZpdFRvU3Rvcnlib2FyZE9wdGlvbkl0ZW1zJyxcblxuICAvLyBEUElfRml0VG9TdG9yeUJvYXJkT3B0aW9uTGlzdCwgaGF2aW5nIHR5cGUgRml0VG9TdG9yeUJvYXJkT3B0aW9uTGlzdFByZXNNb2RlbFxuICBGaXRUb1N0b3J5Qm9hcmRPcHRpb25MaXN0ID0gJ2ZpdFRvU3Rvcnlib2FyZE9wdGlvbkxpc3QnLFxuXG4gIC8vIERQSV9TdG9yeVBvaW50TmF2SXRlbSwgaGF2aW5nIHR5cGUgU3RvcnlQb2ludE5hdkl0ZW1QcmVzTW9kZWxcbiAgU3RvcnlQb2ludE5hdkl0ZW0gPSAnc3Rvcnlwb2ludE5hdkl0ZW0nLFxuXG4gIC8vIERQSV9TdG9yeVBvaW50TmF2SXRlbXMsIGhhdmluZyB0eXBlIFN0b3J5UG9pbnROYXZJdGVtUHJlc01vZGVsW11cbiAgU3RvcnlQb2ludE5hdkl0ZW1zID0gJ3N0b3J5cG9pbnROYXZJdGVtcycsXG5cbiAgLy8gRFBJX0ZsaXBib2FyZE5hdiwgaGF2aW5nIHR5cGUgRmxpcGJvYXJkTmF2UHJlc01vZGVsXG4gIEZsaXBib2FyZE5hdiA9ICdmbGlwYm9hcmROYXYnLFxuXG4gIC8vIERQSV9TY3JvbGxCYXJTdHlsZSwgaGF2aW5nIHR5cGUgU2Nyb2xsQmFyU3R5bGVQcmVzTW9kZWxcbiAgU2Nyb2xsQmFyU3R5bGUgPSAnc2Nyb2xsQmFyU3R5bGUnLFxuXG4gIC8vIERQSV9EYXNoYm9hcmRab25lTGF5b3V0UGFuZSwgaGF2aW5nIHR5cGUgRGFzaGJvYXJkWm9uZUxheW91dFBhbmVQcmVzTW9kZWxcbiAgRGFzaGJvYXJkWm9uZUxheW91dFBhbmUgPSAnZGFzaGJvYXJkWm9uZUxheW91dFBhbmUnLFxuXG4gIC8vIERQSV9TZWxlY3RlZFN0b3J5UG9pbnRTdHlsZSwgaGF2aW5nIHR5cGUgU3RvcnlQb2ludENhcHRpb25TdHlsZVByZXNNb2RlbFxuICBTZWxlY3RlZFN0b3J5UG9pbnRTdHlsZSA9ICdzZWxlY3RlZFN0b3J5UG9pbnRTdHlsZScsXG5cbiAgLy8gRFBJX1Vuc2VsZWN0ZWRTdG9yeVBvaW50U3R5bGUsIGhhdmluZyB0eXBlIFN0b3J5UG9pbnRDYXB0aW9uU3R5bGVQcmVzTW9kZWxcbiAgVW5zZWxlY3RlZFN0b3J5UG9pbnRTdHlsZSA9ICd1bnNlbGVjdGVkU3RvcnlQb2ludFN0eWxlJyxcblxuICAvLyBEUElfRmxpcGJvYXJkTmF2U3R5bGUsIGhhdmluZyB0eXBlIEZsaXBib2FyZE5hdlN0eWxlUHJlc01vZGVsXG4gIEZsaXBib2FyZE5hdlN0eWxlID0gJ2ZsaXBib2FyZE5hdlN0eWxlJyxcblxuICAvLyBEUElfU3RvcnlQb2ludCwgaGF2aW5nIHR5cGUgU3RvcnlQb2ludFByZXNNb2RlbFxuICBTdG9yeVBvaW50ID0gJ3N0b3J5UG9pbnQnLFxuXG4gIC8vIERQSV9TdG9yeVBvaW50cywgaGF2aW5nIHR5cGUgRGljdGlvbmFyeShvZiBTdG9yeVBvaW50UHJlc01vZGVsKVxuICBTdG9yeVBvaW50cyA9ICdzdG9yeVBvaW50cycsXG5cbiAgLy8gRFBJX0ZsaXBib2FyZCwgaGF2aW5nIHR5cGUgRmxpcGJvYXJkUHJlc01vZGVsXG4gIEZsaXBib2FyZCA9ICdmbGlwYm9hcmQnLFxuXG4gIC8vIERQSV9TdG9yeVBhaXIsIGhhdmluZyB0eXBlIFN0b3J5UGFpclByZXNNb2RlbFxuICBTdG9yeVBhaXIgPSAnc3RvcnlQYWlyJyxcblxuICAvLyBEUElfU3RvcnlQYWlycywgaGF2aW5nIHR5cGUgU3RvcnlQYWlyUHJlc01vZGVsW11cbiAgU3RvcnlQYWlycyA9ICdzdG9yeVBhaXJzJyxcblxuICAvLyBEUElfU3Rvcnlib2FyZFBNLCBoYXZpbmcgdHlwZSBTdG9yeWJvYXJkUHJlc01vZGVsXG4gIFN0b3J5Ym9hcmRQTSA9ICdzdG9yeWJvYXJkUG0nLFxuXG4gIC8vIERQSV9IaURwaUljb25EaWN0aW9uYXJ5LCBoYXZpbmcgdHlwZSBJbWFnZUNvbGxlY3Rpb25QcmVzTW9kZWxcbiAgSGlEcGlJY29uRGljdGlvbmFyeSA9ICdoaURwaUljb25EaWN0aW9uYXJ5JyxcblxuICAvLyBEUElfSWNvbkRpY3Rpb25hcnksIGhhdmluZyB0eXBlIEltYWdlQ29sbGVjdGlvblByZXNNb2RlbFxuICBJY29uRGljdGlvbmFyeSA9ICdpY29uRGljdGlvbmFyeScsXG5cbiAgLy8gRFBJX0ljb25SZXNvdXJjZURpY3Rpb25hcnksIGhhdmluZyB0eXBlIEltYWdlUmVzb3VyY2VDb2xsZWN0aW9uUHJlc01vZGVsXG4gIEljb25SZXNvdXJjZURpY3Rpb25hcnkgPSAnaWNvblJlc0RpY3Rpb25hcnknLFxuXG4gIC8vIERQSV9EYXRhUHJldmlld1dpbmRvd01lc3NhZ2UsIGhhdmluZyB0eXBlIERhdGFQcmV2aWV3V2luZG93TWVzc2FnZVByZXNNb2RlbFxuICBEYXRhUHJldmlld1dpbmRvd01lc3NhZ2UgPSAnZGF0YVByZXZpZXdXaW5kb3dNZXNzYWdlJyxcblxuICAvLyBEUElfRGF0YVNvdXJjZURhdGEsIGhhdmluZyB0eXBlIERhdGFTb3VyY2VEYXRhUHJlc01vZGVsXG4gIERhdGFTb3VyY2VEYXRhID0gJ2RhdGFTcmNEYXRhJyxcblxuICAvLyBEUElfRGF0YVNvdXJjZVNvcnQsIGhhdmluZyB0eXBlIERhdGFTb3VyY2VTb3J0UHJlc01vZGVsXG4gIERhdGFTb3VyY2VTb3J0ID0gJ2RhdGFTcmNTb3J0JyxcblxuICAvLyBEUElfQ29sdW1uSW5mbywgaGF2aW5nIHR5cGUgRFNDb2x1bW5JbmZvUHJlc01vZGVsXG4gIENvbHVtbkluZm8gPSAnY29sdW1uSW5mbycsXG5cbiAgLy8gRFBJX0NvbHVtbkluZm9zLCBoYXZpbmcgdHlwZSBEU0NvbHVtbkluZm9QcmVzTW9kZWxbXVxuICBDb2x1bW5JbmZvcyA9ICdjb2x1bW5JbmZvcycsXG5cbiAgLy8gRFBJX0RhdGFGb3JtYXR0ZXIsIGhhdmluZyB0eXBlIERWRm9ybWF0dGVyXG4gIERhdGFGb3JtYXR0ZXIgPSAnZGF0YUZvcm1hdHRlcicsXG5cbiAgLy8gRFBJX0pvaW5EZXNjcmlwdGlvbiwgaGF2aW5nIHR5cGUgSm9pbkRlc2NyaXB0aW9uUHJlc01vZGVsXG4gIEpvaW5EZXNjcmlwdGlvbiA9ICdqb2luRGVzY3JpcHRpb24nLFxuXG4gIC8vIERQSV9Kb2luRGVzY3JpcHRpb25zLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIEpvaW5EZXNjcmlwdGlvblByZXNNb2RlbClcbiAgSm9pbkRlc2NyaXB0aW9ucyA9ICdqb2luRGVzY3JpcHRpb25zJyxcblxuICAvLyBEUElfRmlsZVRhYmxlSW5mbywgaGF2aW5nIHR5cGUgRmlsZVRhYmxlSW5mb1ByZXNNb2RlbFxuICBGaWxlVGFibGVJbmZvID0gJ2ZpbGVUYWJsZUluZm8nLFxuXG4gIC8vIERQSV9GaWVsZE1hcHBpbmcsIGhhdmluZyB0eXBlIEZpZWxkTWFwcGluZ1ByZXNNb2RlbFxuICBGaWVsZE1hcHBpbmcgPSAnZmllbGRNYXBwaW5nJyxcblxuICAvLyBEUElfRmllbGRNYXBwaW5nRGF0YSwgaGF2aW5nIHR5cGUgRmllbGRNYXBwaW5nRGF0YVByZXNNb2RlbFxuICBGaWVsZE1hcHBpbmdEYXRhID0gJ2ZpZWxkTWFwcGluZ0RhdGEnLFxuXG4gIC8vIERQSV9GaWVsZE1hcHBpbmdEYXRhVmVjdG9yLCBoYXZpbmcgdHlwZSBGaWVsZE1hcHBpbmdEYXRhUHJlc01vZGVsW11cbiAgRmllbGRNYXBwaW5nRGF0YVZlY3RvciA9ICdmaWVsZE1hcHBpbmdEYXRhVmVjdG9yJyxcblxuICAvLyBEUElfRnJhbWVGaW5kZXIsIGhhdmluZyB0eXBlIEZyYW1lRmluZGVyUHJlc01vZGVsXG4gIEZyYW1lRmluZGVyID0gJ2ZyYW1lRmluZGVyJyxcblxuICAvLyBEUElfU2hlZXRMaW5rRmllbGRNYXBwaW5nLCBoYXZpbmcgdHlwZSBTaGVldExpbmtGaWVsZE1hcHBpbmdQcmVzTW9kZWxcbiAgU2hlZXRMaW5rRmllbGRNYXBwaW5nID0gJ3NoZWV0TGlua0ZpZWxkTWFwcGluZycsXG5cbiAgLy8gRFBJX1VuaW9uSW5mbywgaGF2aW5nIHR5cGUgVW5pb25JbmZvUHJlc01vZGVsXG4gIFVuaW9uSW5mbyA9ICd1bmlvbkluZm8nLFxuXG4gIC8vIERQSV9VbmlvblRhYmxlSW5mbywgaGF2aW5nIHR5cGUgVW5pb25UYWJsZUluZm9QcmVzTW9kZVxuICBVbmlvblRhYmxlSW5mbyA9ICd1bmlvblRhYmxlSW5mbycsXG5cbiAgLy8gRFBJX1VuaW9uVGFibGVJbmZvcywgaGF2aW5nIHR5cGUgVW5pb25UYWJsZUluZm9QcmVzTW9kZWxbXVxuICBVbmlvblRhYmxlSW5mb3MgPSAndW5pb25UYWJsZUluZm9zJyxcblxuICAvLyBEUElfQ29ubmVjdGlvblBCVW5pb25JbmZvLCBoYXZpbmcgdHlwZSBQQlVuaW9uSW5mb1ByZXNNb2RlbFxuICBDb25uZWN0aW9uUEJVbmlvbkluZm8gPSAnY29ubmVjdGlvblBidW5pb25JbmZvJyxcblxuICAvLyBEUElfQ29ubmVjdGlvblBCVW5pb25JbmZvcywgaGF2aW5nIHR5cGUgUEJVbmlvbkluZm9QcmVzTW9kZWxbXVxuICBDb25uZWN0aW9uUEJVbmlvbkluZm9zID0gJ2Nvbm5lY3Rpb25QYnVuaW9uSW5mb3MnLFxuXG4gIC8vIERQSV9Kb2luQ2xhdXNlLCBoYXZpbmcgdHlwZSBKb2luQ2xhdXNlUHJlc01vZGVsXG4gIEpvaW5DbGF1c2UgPSAnam9pbkNsYXVzZScsXG5cbiAgLy8gRFBJX0pvaW5DbGF1c2VzLCBoYXZpbmcgdHlwZSBKb2luQ2xhdXNlUHJlc01vZGVsW11cbiAgSm9pbkNsYXVzZXMgPSAnam9pbkNsYXVzZXMnLFxuXG4gIC8vIERQSV9Kb2luVmFsaWRhdGlvblJlc3VsdCwgaGF2aW5nIHR5cGUgSm9pblZhbGlkYXRpb25SZXN1bHRQcmVzTW9kZWxcbiAgSm9pblZhbGlkYXRpb25SZXN1bHQgPSAnam9pblZhbGlkYXRpb25SZXN1bHQnLFxuXG4gIC8vIERQSV9Kb2luVGFibGVJbmZvLCBoYXZpbmcgdHlwZSBKb2luVGFibGVJbmZvUHJlc01vZGVsXG4gIEpvaW5UYWJsZUluZm8gPSAnam9pblRhYmxlSW5mbycsXG5cbiAgLy8gRFBJX1BhcmFtZXRlckluZm8sIGhhdmluZyB0eXBlIEpvaW5UYWJsZUluZm9QcmVzTW9kZWxcbiAgUGFyYW1ldGVySW5mbyA9ICdwYXJhbWV0ZXJJbmZvJyxcblxuICAvLyBEUElfSm9pblRhYmxlSW5mb3MsIGhhdmluZyB0eXBlIEpvaW5UYWJsZUluZm9QcmVzTW9kZWxbXVxuICBKb2luVGFibGVJbmZvcyA9ICdqb2luVGFibGVJbmZvcycsXG5cbiAgLy8gRFBJX0pvaW5PbkNhbGNJbmZvLCBoYXZpbmcgdHlwZSBKb2luT25DYWxjSW5mb1ByZXNNb2RlbFxuICBKb2luT25DYWxjSW5mbyA9ICdqb2luT25DYWxjSW5mbycsXG5cbiAgLy8gRFBJX0Nvbm5lY3Rpb25TdW1tYXJ5LCBoYXZpbmcgdHlwZSBDb25uZWN0aW9uU3VtbWFyeVByZXNNb2RlbFxuICBDb25uZWN0aW9uU3VtbWFyeSA9ICdjb25uZWN0aW9uU3VtbWFyeScsXG5cbiAgLy8gRFBJX0Nvbm5lY3Rpb25TdW1tYXJpZXMsIGhhdmluZyB0eXBlIENvbm5lY3Rpb25TdW1tYXJ5UHJlc01vZGVsW11cbiAgQ29ubmVjdGlvblN1bW1hcmllcyA9ICdjb25uZWN0aW9uU3VtbWFyaWVzJyxcblxuICAvLyBEUElfVG9wTGV2ZWxDb25uZWN0aW9uRGVzY3JpcHRpb24sIGhhdmluZyB0eXBlIFRvcExldmVsQ29ubmVjdGlvbkRlc2NyaXB0aW9uUHJlc01vZGVsXG4gIFRvcExldmVsQ29ubmVjdGlvbkRlc2NyaXB0aW9uID0gJ3RvcExldmVsQ29ubmVjdGlvbkRlc2NyaXB0aW9uJyxcblxuICAvLyBEUElfRGF0YUNvbm5lY3Rpb25UYWJsZVZpZXdNZXNzYWdlcywgaGF2aW5nIHR5cGUgRGF0YUNvbm5lY3Rpb25UYWJsZVZpZXdNZXNzYWdlc1ByZXNNb2RlbFxuICBEYXRhQ29ubmVjdGlvblRhYmxlVmlld01lc3NhZ2VzID0gJ2RhdGFDb25uZWN0aW9uVGFibGVWaWV3TWVzc2FnZXMnLFxuXG4gIC8vIERQSV9UZXh0VHJhbnNmb3JtU2NyaXB0LCBoYXZpbmcgdHlwZSBUZXh0VHJhbnNmb3JtU2NyaXB0UHJlc01vZGVsXG4gIFRleHRUcmFuc2Zvcm1TY3JpcHQgPSAndGV4dFRyYW5zZm9ybVNjcmlwdCcsXG5cbiAgLy8gRFBJX0NhbGVuZGFyRGF0ZU9wdGlvbnMsIGhhdmluZyB0eXBlIENhbGVuZGFyRGF0ZU9wdGlvbnNQcmVzTW9kZWxcbiAgQ2FsZW5kYXJEYXRlT3B0aW9ucyA9ICdjYWxlbmRhckRhdGVPcHRpb25zJyxcblxuICAvLyBEUElfR29Ub1dvcmtzaGVldFRvb2x0aXBQcmVzTW9kZWwsIGhhdmluZyB0eXBlIEdvVG9Xb3Jrc2hlZXRUb29sdGlwUHJlc01vZGVsXG4gIEdvVG9Xb3Jrc2hlZXRUb29sdGlwUHJlc01vZGVsID0gJ2dvVG9Xb3Jrc2hlZXRUb29sdGlwUHJlc01vZGVsJyxcblxuICAvLyBEUElfVGFibGVDbGVhbmluZ1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgVGFibGVDbGVhbmluZ1ByZXNNb2RlbFxuICBUYWJsZUNsZWFuaW5nUHJlc01vZGVsID0gJ3RhYmxlQ2xlYW5pbmdQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9QaXZvdFByZXNNb2RlbCwgaGF2aW5nIHR5cGUgUGl2b3RQcmVzTW9kZWxcbiAgUGl2b3RQcmVzTW9kZWwgPSAncGl2b3RQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9QaXZvdFRyZWVJdGVtUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBQaXZvdFRyZWVJdGVtUHJlc01vZGVsXG4gIFBpdm90VHJlZUl0ZW1QcmVzTW9kZWwgPSAncGl2b3RUcmVlSXRlbVByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX1Bpdm90VHJlZUl0ZW1zLCBoYXZpbmcgdHlwZSBQaXZvdFRyZWVJdGVtUHJlc01vZGVsW11cbiAgUGl2b3RUcmVlSXRlbXMgPSAncGl2b3RUcmVlSXRlbXNQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9QaXZvdERpc3BsYXksIGhhdmluZyB0eXBlIFBpdm90RGlzcGxheVByZXNNb2RlbFxuICBQaXZvdERpc3BsYXkgPSAncGl2b3REaXNwbGF5JyxcblxuICAvLyBEUElfUGl2b3RUYWcsIGhhdmluZyB0eXBlIE5hbWVDb2x1bW5zUGFpclByZXNNb2RlbFxuICBQaXZvdFRhZyA9ICdwaXZvdFRhZycsXG5cbiAgLy8gRFBJX1Bpdm90R3JvdXBzLCBoYXZpbmcgdHlwZSBOYW1lQ29sdW1uc1BhaXJQcmVzTW9kZWxbXVxuICBQaXZvdEdyb3VwcyA9ICdwaXZvdEdyb3VwcycsXG5cbiAgLy8gRFBJX0RhdGFTb3VyY2VEcm9wZG93biwgaGF2aW5nIHR5cGUgRGF0YVNvdXJjZURyb3Bkb3duUHJlc01vZGVsXG4gIERhdGFTb3VyY2VEcm9wZG93biA9ICdkYXRhU291cmNlRHJvcGRvd24nLFxuXG4gIC8vIERQSV9Db25uZWN0aW9uRHJvcGRvd24sIGhhdmluZyB0eXBlIENvbm5lY3Rpb25Ecm9wZG93blByZXNNb2RlbFxuICBDb25uZWN0aW9uRHJvcGRvd24gPSAnY29ubmVjdGlvbkRyb3Bkb3duJyxcblxuICAvLyBEUElfQWN0aXZpdHlFdmVudCwgaGF2aW5nIHR5cGUgQWN0aXZpdHlFdmVudFByZXNNb2RlbFxuICBBY3Rpdml0eUV2ZW50ID0gJ2FjdGl2aXR5RXZlbnQnLFxuXG4gIC8vIERQSV9VSUF1dG9tYXRpb24sIGhhdmluZyB0eXBlIFVJQXV0b21hdGlvblByZXNNb2RlbFxuICBVSUF1dG9tYXRpb24gPSAndWlBdXRvbWF0aW9uJyxcblxuICAvLyBEUElfVUlBdXRvbWF0aW9uSW5kZXgsIGhhdmluZyB0eXBlIFVJQXV0b21hdGlvbkluZGV4UHJlc01vZGVsXG4gIFVJQXV0b21hdGlvbkluZGV4ID0gJ3VpQXV0b21hdGlvbkluZGV4JyxcblxuICAvLyBEUElfVUlBdXRvbWF0aW9uSW5kZXhMaXN0LCBoYXZpbmcgdHlwZSBVSUF1dG9tYXRpb25JbmRleFByZXNNb2RlbFtdXG4gIFVJQXV0b21hdGlvbkluZGV4TGlzdCA9ICd1aUF1dG9tYXRpb25JbmRleExpc3QnLFxuXG4gIC8vIERQSV9VSUF1dG9tYXRpb25Db21wb25lbnRJbmZvLCBoYXZpbmcgdHlwZSBVSUF1dG9tYXRpb25Db21wb25lbnRJbmZvUHJlc01vZGVsXG4gIFVJQXV0b21hdGlvbkNvbXBvbmVudEluZm8gPSAndWlBdXRvbWF0aW9uQ29tcG9uZW50SW5mbycsXG5cbiAgLy8gRFBJX1VJQXV0b21hdGlvbkNvbXBvbmVudEluZm9MaXN0LCBoYXZpbmcgdHlwZSBVSUF1dG9tYXRpb25Db21wb25lbnRJbmZvUHJlc01vZGVsW11cbiAgVUlBdXRvbWF0aW9uQ29tcG9uZW50SW5mb0xpc3QgPSAndWlBdXRvbWF0aW9uQ29tcG9uZW50SW5mb0xpc3QnLFxuXG4gIC8vIERQSV9HZW9tZXRyeSwgaGF2aW5nIHR5cGUgR2VvbWV0cnlQcmVzTW9kZWxcbiAgR2VvbWV0cnkgPSAnZ2VvbWV0cnknLFxuXG4gIC8vIERQSV9NdWx0aVBvaW50LCBoYXZpbmcgdHlwZSBNdWx0aVBvaW50UHJlc01vZGVsXG4gIE11bHRpUG9pbnQgPSAnbXVsdGlQb2ludCcsXG5cbiAgLy8gRFBJX011bHRpTGluZSwgaGF2aW5nIHR5cGUgTXVsdGlMaW5lUHJlc01vZGVsXG4gIE11bHRpTGluZSA9ICdtdWx0aUxpbmUnLFxuXG4gIC8vIERQSV9NdWx0aVBvbHlnb24sIGhhdmluZyB0eXBlIE11bHRpUG9seWdvblByZXNNb2RlbFxuICBNdWx0aVBvbHlnb24gPSAnbXVsdGlQb2x5Z29uJyxcblxuICAvLyBEUElfUG9seWdvbiwgaGF2aW5nIHR5cGUgUG9seWdvblByZXNNb2RlbFxuICBQb2x5Z29uID0gJ3BvbHlnb24nLFxuXG4gIC8vIERQSV9Qb2x5Z29uTGlzdCwgaGF2aW5nIHR5cGUgUG9seWdvblByZXNNb2RlbFtdXG4gIFBvbHlnb25MaXN0ID0gJ3BvbHlnb25MaXN0JyxcblxuICAvLyBEUElfTGluZSwgaGF2aW5nIHR5cGUgTGluZVByZXNNb2RlbFxuICBMaW5lID0gJ2xpbmUnLFxuXG4gIC8vIERQSV9MaW5lTGlzdCwgaGF2aW5nIHR5cGUgTGluZVByZXNNb2RlbFtdXG4gIExpbmVMaXN0ID0gJ2xpbmVMaXN0JyxcblxuICAvLyBEUElfVGFiYmVkQXV0aGVudGljYXRpb24sIGhhdmluZyB0eXBlIFRhYmJlZEF1dGhlbnRpY2F0aW9uUHJlc01vZGVsXG4gIFRhYmJlZEF1dGhlbnRpY2F0aW9uID0gJ3RhYmJlZEF1dGhlbnRpY2F0aW9uJyxcblxuICAvLyBEUElfVGFiYmVkQXV0aGVudGljYXRpb25UYWJJbmZvLCBoYXZpbmcgdHlwZSBUYWJiZWRBdXRoZW50aWNhdGlvblRhYkluZm9QcmVzTW9kZWxcbiAgVGFiYmVkQXV0aGVudGljYXRpb25UYWJJbmZvID0gJ3RhYmJlZEF1dGhlbnRpY2F0aW9uVGFiSW5mbycsXG5cbiAgLy8gRFBJX1RhYmJlZEF1dGhlbnRpY2F0aW9uVGFiSW5mb3MsIGhhdmluZyB0eXBlIFRhYmJlZEF1dGhlbnRpY2F0aW9uVGFiSW5mb1ByZXNNb2RlbFtdXG4gIFRhYmJlZEF1dGhlbnRpY2F0aW9uVGFiSW5mb3MgPSAndGFiYmVkQXV0aGVudGljYXRpb25UYWJJbmZvcycsXG5cbiAgLy8gRFBJX0dlb2dyYXBoaWNTZWFyY2hDYW5kaWRhdGUsIGhhdmluZyB0eXBlIEdlb2dyYXBoaWNTZWFyY2hDYW5kaWRhdGVQcmVzTW9kZWxcbiAgR2VvZ3JhcGhpY1NlYXJjaENhbmRpZGF0ZSA9ICdnZW9ncmFwaGljU2VhcmNoQ2FuZGlkYXRlJyxcblxuICAvLyBEUElfR2VvZ3JhcGhpY1NlYXJjaENhbmRpZGF0ZUxpc3QsIGhhdmluZyB0eXBlIEdlb2dyYXBoaWNTZWFyY2hDYW5kaWRhdGVQcmVzTW9kZWxbXVxuICBHZW9ncmFwaGljU2VhcmNoQ2FuZGlkYXRlTGlzdCA9ICdnZW9ncmFwaGljU2VhcmNoQ2FuZGlkYXRlTGlzdCcsXG5cbiAgLy8gRFBJX0dlb2dyYXBoaWNTZWFyY2hSZXN1bHRzLCBoYXZpbmcgdHlwZSBHZW9ncmFwaGljU2VhcmNoUHJlc01vZGVsXG4gIEdlb2dyYXBoaWNTZWFyY2hSZXN1bHRzID0gJ2dlb2dyYXBoaWNTZWFyY2hSZXN1bHRzJyxcblxuICAvLyBEUElfUGFyYW1JbmZvLCBoYXZpbmcgdHlwZSBQYXJhbWV0ZXJJbmZvUHJlc01vZGVsXG4gIFBhcmFtSW5mbyA9ICdwYXJhbUluZm8nLFxuXG4gIC8vIERQSV9QYXJhbUluZm9zLCBoYXZpbmcgdHlwZSBQYXJhbWV0ZXJJbmZvUHJlc01vZGVsW11cbiAgUGFyYW1JbmZvcyA9ICdwYXJhbUluZm9zJyxcblxuICAvLyBEUElfUGFyYW1OYW1lc3BhY2VJbmZvLCBoYXZpbmcgdHlwZSBQYXJhbWV0ZXJOYW1lc3BhY2VJbmZvSW5mb1ByZXNNb2RlbFxuICBQYXJhbU5hbWVzcGFjZUluZm8gPSAncGFyYW1OYW1lc3BhY2VJbmZvJyxcblxuICAvLyBEUElfUGFyYW1OYW1lc3BhY2VJbmZvcywgaGF2aW5nIHR5cGUgUGFyYW1ldGVyTmFtZXNwYWNlSW5mb1ByZXNNb2RlbFtdXG4gIFBhcmFtTmFtZXNwYWNlSW5mb3MgPSAncGFyYW1OYW1lc3BhY2VJbmZvcycsXG5cbiAgLy8gRFBJX1BhcmFtUmVnaXN0cnlJbmZvLCBoYXZpbmcgdHlwZSBQYXJhbWV0ZXJSZWdpc3RyeUluZm9QcmVzTW9kZWxcbiAgUGFyYW1SZWdpc3RyeUluZm8gPSAncGFyYW1SZWdpc3RyeUluZm8nLFxuXG4gIC8vIERQSV9EYXRhU291cmNlUHJvcGVydGllcywgaGF2aW5nIHR5cGUgRGF0YVNvdXJjZVByb3BlcnRpZXNQcmVzTW9kZWxcbiAgRGF0YVNvdXJjZVByb3BlcnRpZXMgPSAnY29ubmVjdGlvblByb3BlcnRpZXMnLFxuXG4gIC8vIERQSV9Db25uZWN0aW9uVHlwZVByZXNNb2RlbCwgaGF2aW5nIHR5cGUgQ29ubmVjdGlvblR5cGVQcmVzTW9kZWxcbiAgQ29ubmVjdGlvblR5cGVQcmVzTW9kZWwgPSAnY29ubmVjdGlvblR5cGVQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9Db25uZWN0aW9uVHlwZXMsIGhhdmluZyB0eXBlIENvbm5lY3Rpb25UeXBlUHJlc01vZGVsW11cbiAgQ29ubmVjdGlvblR5cGVzID0gJ2Nvbm5lY3Rpb25UeXBlcycsXG5cbiAgLy8gRFBJX0Nvbm5lY3Rpb25UeXBlR3JvdXBQcmVzTW9kZWwsIGhhdmluZyB0eXBlIENvbm5lY3Rpb25UeXBlR3JvdXBQcmVzTW9kZWxcbiAgQ29ubmVjdGlvblR5cGVHcm91cFByZXNNb2RlbCA9ICdjb25uZWN0aW9uVHlwZUdyb3VwUHJlc01vZGVsJyxcblxuICAvLyBEUElfU2F2ZWREYXRhU291cmNlUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBTYXZlZERhdGFTb3VyY2VQcmVzTW9kZWxcbiAgU2F2ZWREYXRhU291cmNlUHJlc01vZGVsID0gJ3NhdmVkRGF0YXNvdXJjZVByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX1NhdmVkRGF0YVNvdXJjZXMsIGhhdmluZyB0eXBlIFNhdmVkRGF0YVNvdXJjZVByZXNNb2RlbFtdXG4gIFNhdmVkRGF0YVNvdXJjZXMgPSAnc2F2ZWREYXRhc291cmNlcycsXG5cbiAgLy8gRFBJX1NhdmVkRGF0YVNvdXJjZXNQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFNhdmVkRGF0YVNvdXJjZXNQcmVzTW9kZWxcbiAgU2F2ZWREYXRhU291cmNlc1ByZXNNb2RlbCA9ICdzYXZlZERhdGFzb3VyY2VzUHJlc01vZGVsJyxcblxuICAvLyBEUElfT3BlblBhbmVJdGVtUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBPcGVuUGFuZUl0ZW1QcmVzTW9kZWxcbiAgT3BlblBhbmVJdGVtUHJlc01vZGVsID0gJ29wZW5QYW5lSXRlbVByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX09wZW5QYW5lSXRlbXMsIGhhdmluZyB0eXBlIE9wZW5QYW5lSXRlbVByZXNNb2RlbFtdXG4gIE9wZW5QYW5lSXRlbXMgPSAnb3BlblBhbmVJdGVtcycsXG5cbiAgLy8gRFBJX09wZW5QYW5lSXRlbXNQcmVzTW9kZWwsIGhhdmluZyB0eXBlIE9wZW5QYW5lSXRlbXNQcmVzTW9kZWxcbiAgT3BlblBhbmVJdGVtc1ByZXNNb2RlbCA9ICdvcGVuUGFuZUl0ZW1zUHJlc01vZGVsJyxcblxuICAvLyBEUElfVmFyaWFibGVWYWx1ZSwgaGF2aW5nIHR5cGUgVmFyaWFibGVWYWx1ZVByZXNNb2RlbFxuICBWYXJpYWJsZVZhbHVlID0gJ3ZhcmlhYmxlVmFsdWUnLFxuXG4gIC8vIERQSV9WYXJpYWJsZVZhbHVlcywgaGF2aW5nIHR5cGUgVmFyaWFibGVWYWx1ZVByZXNNb2RlbFtdXG4gIFZhcmlhYmxlVmFsdWVzID0gJ3ZhcmlhYmxlVmFsdWVzJyxcblxuICAvLyBEUElfU2VydmVyVmFyaWFibGVWYWx1ZSwgaGF2aW5nIHR5cGUgU2VydmVyVmFyaWFibGVWYWx1ZVByZXNNb2RlbFxuICBTZXJ2ZXJWYXJpYWJsZVZhbHVlID0gJ3NlcnZlclZhcmlhYmxlVmFsdWUnLFxuXG4gIC8vIERQSV9FZGl0YWJsZVZhcmlhYmxlVmFsdWUsIGhhdmluZyB0eXBlIEVkaXRhYmxlVmFyaWFibGVWYWx1ZVByZXNNb2RlbFxuICBFZGl0YWJsZVZhcmlhYmxlVmFsdWUgPSAnZWRpdGFibGVWYXJpYWJsZVZhbHVlJyxcblxuICAvLyBEUElfU2VydmVyVmFyaWFibGVNZXRhZGF0YSwgaGF2aW5nIHR5cGUgU2VydmVyVmFyaWFibGVNZXRhZGF0YVByZXNNb2RlbFxuICBTZXJ2ZXJWYXJpYWJsZU1ldGFkYXRhID0gJ3NlcnZlclZhcmlhYmxlTWV0YWRhdGEnLFxuXG4gIC8vIERQSV9Qcm9tcHRWYXJpYWJsZSwgaGF2aW5nIHR5cGUgUHJvbXB0VmFyaWFibGVQcmVzTW9kZWxcbiAgUHJvbXB0VmFyaWFibGUgPSAncHJvbXB0VmFyaWFibGUnLFxuXG4gIC8vIERQSV9Qcm9tcHRWYXJpYWJsZXMsIGhhdmluZyB0eXBlIFByb21wdFZhcmlhYmxlUHJlc01vZGVsW11cbiAgUHJvbXB0VmFyaWFibGVzID0gJ3Byb21wdFZhcmlhYmxlcycsXG5cbiAgLy8gRFBJX1ZhcmlhYmxlUHJvbXB0RGlhbG9nLCBoYXZpbmcgdHlwZSBWYXJpYWJsZVByb21wdERpYWxvZ1ByZXNNb2RlbFxuICBWYXJpYWJsZVByb21wdERpYWxvZyA9ICd2YXJpYWJsZVByb21wdERpYWxvZycsXG5cbiAgLy8gRFBJX1ZhcmlhYmxlVmFsdWVPcGVyYXRpb24sIGhhdmluZyB0eXBlIFZhcmlhYmxlVmFsdWVPcGVyYXRpb25QcmVzTW9kZWxcbiAgVmFyaWFibGVWYWx1ZU9wZXJhdGlvbiA9ICd2YXJpYWJsZVZhbHVlT3BlcmF0aW9uJyxcblxuICAvLyBEUElfVmFyaWFibGVWYWx1ZU9wZXJhdGlvbnMsIGhhdmluZyB0eXBlIFZhcmlhYmxlVmFsdWVPcGVyYXRpb25QcmVzTW9kZWxbXVxuICBWYXJpYWJsZVZhbHVlT3BlcmF0aW9ucyA9ICd2YXJpYWJsZVZhbHVlT3BlcmF0aW9ucycsXG5cbiAgLy8gRFBJX1RhYmxlT3B0aW9uc1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgVGFibGVPcHRpb25zUHJlc01vZGVsXG4gIFRhYmxlT3B0aW9uc1ByZXNNb2RlbCA9ICd0YWJsZU9wdGlvbnNQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9DbGllbnRJbmZvUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBDbGllbnRJbmZvUHJlc01vZGVsXG4gIENsaWVudEluZm9QcmVzTW9kZWwgPSAnY2xpZW50SW5mb1ByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX1RhYmxlYXVGaWxlSW5mb1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgVGFibGVhdUZpbGVJbmZvUHJlc01vZGVsXG4gIFRhYmxlYXVGaWxlSW5mb1ByZXNNb2RlbCA9ICd0YWJsZWF1RmlsZUluZm9QcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9EZWJ1Z2dpbmdJbmZvUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBEZWJ1Z2dpbmdJbmZvUHJlc01vZGVsXG4gIERlYnVnZ2luZ0luZm9QcmVzTW9kZWwgPSAnZGVidWdnaW5nSW5mb1ByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX1J1bm5pbmdUaHJlYWRJbmZvUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBSdW5uaW5nVGhyZWFkSW5mb1ByZXNNb2RlbFxuICBSdW5uaW5nVGhyZWFkSW5mb1ByZXNNb2RlbCA9ICdydW5uaW5nVGhyZWFkSW5mb1ByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX0Fib3V0RGlhbG9nSW5mb1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgQWJvdXREaWFsb2dJbmZvUHJlc01vZGVsXG4gIEFib3V0RGlhbG9nSW5mb1ByZXNNb2RlbCA9ICdhYm91dERpYWxvZ0luZm9QcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9IeWJyaWRVSVNob3djYXNlUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBIeWJyaWRVSVNob3djYXNlUHJlc01vZGVsXG4gIEh5YnJpZFVJU2hvd2Nhc2VQcmVzTW9kZWwgPSAnaHlicmlkVWlTaG93Y2FzZVByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX01lbnVDb25maWd1cmF0aW9uLCBoYXZpbmcgdHlwZSBNZW51Q29uZmlndXJhdGlvblByZXNNb2RlbFxuICBNZW51Q29uZmlndXJhdGlvbiA9ICdtZW51Q29uZmlndXJhdGlvbicsXG5cbiAgLy8gRFBJX01lbnVJdGVtLCBoYXZpbmcgdHlwZSBNZW51SXRlbVByZXNNb2RlbFxuICBNZW51SXRlbSA9ICdtZW51SXRlbScsXG5cbiAgLy8gRFBJX01lbnVJdGVtTW9kZWxzLCBoYXZpbmcgdHlwZSBNZW51SXRlbVByZXNNb2RlbFtdXG4gIE1lbnVJdGVtTW9kZWxzID0gJ21lbnVJdGVtTW9kZWxzJyxcblxuICAvLyBEUElfRGVmYXVsdFRleHRGb3JtYXQsIGhhdmluZyB0eXBlIERlZmF1bHRUZXh0Rm9ybWF0UHJlc01vZGVsXG4gIERlZmF1bHRUZXh0Rm9ybWF0ID0gJ2RlZmF1bHRUZXh0Rm9ybWF0JyxcblxuICAvLyBEUElfTWFwQm94U2VydmVySW5mb1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgTWFwQm94U2VydmVySW5mb1ByZXNNb2RlbFxuICBNYXBCb3hTZXJ2ZXJJbmZvUHJlc01vZGVsID0gJ21hcGJveFNlcnZlckluZm9QcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9XTVNTZXJ2ZXJJbmZvUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBXTVNTZXJ2ZXJJbmZvUHJlc01vZGVsXG4gIFdNU1NlcnZlckluZm9QcmVzTW9kZWwgPSAnd21zU2VydmVySW5mb1ByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX01hcFNvdXJjZUNvbmZsaWN0UHJlc01vZGVsLCBoYXZpbmcgdHlwZSBNYXBTb3VyY2VDb25mbGljdFByZXNNb2RlbFxuICBNYXBTb3VyY2VDb25mbGljdFByZXNNb2RlbCA9ICdtYXBTb3VyY2VDb25mbGljdFByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX0VudW1lcmF0ZWRTZXREaWFsb2dQcmVzTW9kZWwsIGhhdmluZyB0eXBlIEVudW1lcmF0ZWRTZXREaWFsb2dQcmVzTW9kZWxcbiAgRW51bWVyYXRlZFNldERpYWxvZ1ByZXNNb2RlbCA9ICdlbnVtZXJhdGVkU2V0RGlhbG9nUHJlc01vZGVsJyxcblxuICAvLyBEUElfRWRpdEFsaWFzZXNEaWFsb2csIGhhdmluZyB0eXBlIEVkaXRBbGlhc2VzRGlhbG9nUHJlc01vZGVsXG4gIEVkaXRBbGlhc2VzRGlhbG9nID0gJ2VkaXRBbGlhc2VzRGlhbG9nUHJlc01vZGVsJyxcblxuICAvLyBEUElfQWxpYXNlc1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgQWxpYXNlc1ByZXNNb2RlbFxuICBBbGlhc2VzUHJlc01vZGVsID0gJ2FsaWFzZXNQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9DbGVhckFsaWFzZXNQcmVzTW9kZWwsIGhhdmluZyB0eXBlIEFsaWFzZXNQcmVzTW9kZWxcbiAgQ2xlYXJBbGlhc2VzUHJlc01vZGVsID0gJ2NsZWFyQWxpYXNlc1ByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX05ld0FsaWFzZXNQcmVzTW9kZWwsIGhhdmluZyB0eXBlIE5ld0FsaWFzZXNQcmVzTW9kZWxcbiAgTmV3QWxpYXNlc1ByZXNNb2RlbCA9ICduZXdBbGlhc2VzUHJlc01vZGVsJyxcblxuICAvLyBEUElfQWxpYXNQcmVzTW9kZWwsIGhhdmluZyB0eXBlIEFsaWFzUHJlc01vZGVsXG4gIEFsaWFzUHJlc01vZGVsID0gJ2FsaWFzUHJlc01vZGVsJyxcblxuICAvLyBEUElfQWxpYXNJdGVtLCBoYXZpbmcgdHlwZSBBbGlhc0l0ZW1QcmVzTW9kZWxcbiAgQWxpYXNJdGVtID0gJ2FsaWFzSXRlbScsXG5cbiAgLy8gRFBJX0R1cGxpY2F0ZUFsaWFzSXRlbSwgaGF2aW5nIHR5cGUgQWxpYXNJdGVtUHJlc01vZGVsXG4gIER1cGxpY2F0ZUFsaWFzSXRlbSA9ICdkdXBsaWNhdGVBbGlhc0l0ZW0nLFxuXG4gIC8vIERQSV9BbGlhc0xpc3QsIGhhdmluZyB0eXBlIEFsaWFzSXRlbVByZXNNb2RlbFtdXG4gIEFsaWFzTGlzdCA9ICdhbGlhc0xpc3QnLFxuXG4gIC8vIERQSV9BbGlhc1Jlc3VsdEl0ZW0sIGhhdmluZyB0eXBlIEFsaWFzUmVzdWx0SXRlbVByZXNNb2RlbFxuICBBbGlhc1Jlc3VsdEl0ZW0gPSAnYWxpYXNSZXN1bHRJdGVtJyxcblxuICAvLyBEUElfQWxpYXNSZXN1bHRMaXN0LCBoYXZpbmcgdHlwZSBBbGlhc1Jlc3VsdEl0ZW1QcmVzTW9kZWxbXVxuICBBbGlhc1Jlc3VsdExpc3QgPSAnYWxpYXNSZXN1bHRMaXN0JyxcblxuICAvLyBEUElfQWxpYXNSZXN1bHRzLCBoYXZpbmcgdHlwZSBBbGlhc1Jlc3VsdHNQcmVzTW9kZWxcbiAgQWxpYXNSZXN1bHRzID0gJ2FsaWFzUmVzdWx0cycsXG5cbiAgLy8gRFBJX0VkaXRTZXREaWFsb2dQcmVzTW9kZWwsIGhhdmluZyB0eXBlIEVkaXRTZXREaWFsb2dQcmVzTW9kZWxcbiAgRWRpdFNldERpYWxvZ1ByZXNNb2RlbCA9ICdlZGl0U2V0RGlhbG9nUHJlc01vZGVsJyxcblxuICAvLyBEUElfQ29uZmlybWF0aW9uUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBDb25maXJtYXRpb25QcmVzTW9kZWxcbiAgQ29uZmlybWF0aW9uUHJlc01vZGVsID0gJ2NvbmZpcm1hdGlvblByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX05vdGlmaWNhdGlvblByZXNNb2RlbCwgaGF2aW5nIHR5cGUgTm90aWZpY2F0aW9uUHJlc01vZGVsXG4gIE5vdGlmaWNhdGlvblByZXNNb2RlbCA9ICdub3RpZmljYXRpb25QcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9SZXRhcmdldERhdGFTb3VyY2VEaWFsb2dQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFJldGFyZ2V0RGF0YVNvdXJjZURpYWxvZ1ByZXNNb2RlbFxuICBSZXRhcmdldERhdGFTb3VyY2VEaWFsb2dQcmVzTW9kZWwgPSAncmV0YXJnZXREYXRhc291cmNlRGlhbG9nUHJlc01vZGVsJyxcblxuICAvLyBEUElfU2hhcmVkRmlsdGVyUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBTaGFyZWRGaWx0ZXJQcmVzTW9kZWxcbiAgU2hhcmVkRmlsdGVyUHJlc01vZGVsID0gJ3NoYXJlZEZpbHRlclByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX1NoYXJlZEZpbHRlcldvcmtzaGVldEluZm8sIGhhdmluZyB0eXBlIFNoYXJlZEZpbHRlcldvcmtzaGVldEluZm9QcmVzTW9kZWxcbiAgU2hhcmVkRmlsdGVyV29ya3NoZWV0SW5mbyA9ICdzaGFyZWRGaWx0ZXJXb3Jrc2hlZXRJbmZvJyxcblxuICAvLyBEUElfU2hhcmVkRmlsdGVyV29ya3NoZWV0SW5mb0xpc3QsIGhhdmluZyB0eXBlIFNoYXJlZEZpbHRlcldvcmtzaGVldEluZm9QcmVzTW9kZWxbXVxuICBTaGFyZWRGaWx0ZXJXb3Jrc2hlZXRJbmZvTGlzdCA9ICdzaGFyZWRGaWx0ZXJXb3Jrc2hlZXRJbmZvTGlzdCcsXG5cbiAgLy8gRFBJX0ZpZWxkUGlja2VyVHJlZVByZXNNb2RlbCwgaGF2aW5nIHR5cGUgRmllbGRQaWNrZXJUcmVlUHJlc01vZGVsXG4gIEZpZWxkUGlja2VyVHJlZVByZXNNb2RlbCA9ICdmaWVsZFBpY2tlclRyZWVQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9GaWVsZFBpY2tlclRyZWVQcmVzTW9kZWxTb3VyY2UsIGhhdmluZyB0eXBlIEZpZWxkUGlja2VyVHJlZVByZXNNb2RlbFxuICBGaWVsZFBpY2tlclRyZWVQcmVzTW9kZWxTb3VyY2UgPSAnZmllbGRQaWNrZXJUcmVlUHJlc01vZGVsU291cmNlJyxcblxuICAvLyBEUElfRmllbGRQaWNrZXJUcmVlUHJlc01vZGVsVGFyZ2V0LCBoYXZpbmcgdHlwZSBGaWVsZFBpY2tlclRyZWVQcmVzTW9kZWxcbiAgRmllbGRQaWNrZXJUcmVlUHJlc01vZGVsVGFyZ2V0ID0gJ2ZpZWxkUGlja2VyVHJlZVByZXNNb2RlbFRhcmdldCcsXG5cbiAgLy8gRFBJX0Vycm9ySW5mbywgaGF2aW5nIHR5cGUgRXJyb3JJbmZvUHJlc01vZGVsXG4gIEVycm9ySW5mbyA9ICdlcnJvckluZm9QcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9DdXN0b21TcGxpdFByZXNNb2RlbCwgaGF2aW5nIHR5cGUgQ3VzdG9tU3BsaXRQcmVzTW9kZWxcbiAgQ3VzdG9tU3BsaXRQcmVzTW9kZWwgPSAnY3VzdG9tU3BsaXRQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9QYWdlU2V0dXAsIGhhdmluZyB0eXBlIFBhZ2VTZXR1cFByZXNNb2RlbFxuICBQYWdlU2V0dXAgPSAncGFnZVNldHVwJyxcblxuICAvLyBEUElfU2VydmVyQ29ubmVjdFN0YXR1cywgaGF2aW5nIHR5cGUgU2VydmVyQ29ubmVjdGlvblN0YXR1c1xuICBTZXJ2ZXJDb25uZWN0U3RhdHVzID0gJ3NlcnZlckNvbm5lY3Rpb25TdGF0dXMnLFxuXG4gIC8vIERQSV9HZXRGaWx0ZXJJdGVtc1Jlc3BvbnNlLCBoYXZpbmcgdHlwZSBHZXRGaWx0ZXJJdGVtc1Jlc3BvbnNlUHJlc01vZGVsXG4gIEdldEZpbHRlckl0ZW1zUmVzcG9uc2UgPSAnZ2V0RmlsdGVySXRlbXNSZXNwb25zZScsXG5cbiAgLy8gRFBJX0ZpbHRlclNlYXJjaFJlc3BvbnNlLCBoYXZpbmcgdHlwZSBGaWx0ZXJTZWFyY2hSZXNwb25zZVByZXNNb2RlbFxuICBGaWx0ZXJTZWFyY2hSZXNwb25zZSA9ICdmaWx0ZXJTZWFyY2hSZXNwb25zZScsXG5cbiAgLy8gRFBJX0ZpbHRlclNlYXJjaFdpdGhJbmRleFJlc3BvbnNlLCBoYXZpbmcgdHlwZSBGaWx0ZXJTZWFyY2hXaXRoSW5kZXhSZXNwb25zZVByZXNNb2RlbFxuICBGaWx0ZXJTZWFyY2hXaXRoSW5kZXhSZXNwb25zZSA9ICdmaWx0ZXJTZWFyY2hXaXRoSW5kZXhSZXNwb25zZScsXG5cbiAgLy8gRFBJX0ZpbHRlclNob3dDaGlsZHJlblJlc3BvbnNlLCBoYXZpbmcgdHlwZSBGaWx0ZXJTaG93Q2hpbGRyZW5SZXNwb25zZVByZXNNb2RlbFxuICBGaWx0ZXJTaG93Q2hpbGRyZW5SZXNwb25zZSA9ICdmaWx0ZXJTaG93Q2hpbGRyZW5SZXNwb25zZScsXG5cbiAgLy8gRFBJX0VkaXREYXRhU2VydmVyQ29ubmVjdGlvbiwgaGF2aW5nIHR5cGUgRWRpdERhdGFTZXJ2ZXJDb25uZWN0aW9uUHJlc01vZGVsXG4gIEVkaXREYXRhU2VydmVyQ29ubmVjdGlvbiA9ICdlZGl0RGF0YVNlcnZlckNvbm5lY3Rpb24nLFxuXG4gIC8vIERQSV9JbWFnZXNFZGl0LCBoYXZpbmcgdHlwZSBJbWFnZXNFZGl0UHJlc01vZGVsXG4gIEltYWdlc0VkaXQgPSAnaW1hZ2VzRWRpdCcsXG5cbiAgLy8gRFBJX0JhY2tncm91bmRJbWFnZSwgaGF2aW5nIHR5cGUgQmFja2dyb3VuZEltYWdlUHJlc01vZGVsXG4gIEJhY2tncm91bmRJbWFnZSA9ICdiYWNrZ3JvdW5kSW1hZ2UnLFxuXG4gIC8vIERQSV9CYWNrZ3JvdW5kSW1hZ2VzLCBoYXZpbmcgdHlwZSBCYWNrZ3JvdW5kSW1hZ2VQcmVzTW9kZWxbXVxuICBCYWNrZ3JvdW5kSW1hZ2VzID0gJ2JhY2tncm91bmRJbWFnZXMnLFxuXG4gIC8vIERQSV9QcmVkaWNhdGUsIGhhdmluZyB0eXBlIFByZWRpY2F0ZVByZXNNb2RlbFxuICBQcmVkaWNhdGUgPSAncHJlZGljYXRlJyxcblxuICAvLyBEUElfUHJlZGljYXRlcywgaGF2aW5nIHR5cGUgUHJlZGljYXRlUHJlc01vZGVsW11cbiAgUHJlZGljYXRlcyA9ICdwcmVkaWNhdGVzJyxcblxuICAvLyBEUElfSW1hZ2VzRWRpdFJlc3VsdCwgaGF2aW5nIHR5cGUgSW1hZ2VzRWRpdFJlc3VsdFByZXNNb2RlbFxuICBJbWFnZXNFZGl0UmVzdWx0ID0gJ2ltYWdlc0VkaXRSZXN1bHQnLFxuXG4gIC8vIERQSV9Tb3J0RGlhbG9nUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBTb3J0RGlhbG9nUHJlc01vZGVsXG4gIFNvcnREaWFsb2dQcmVzTW9kZWwgPSAnc29ydERpYWxvZ1ByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX0NvbXBvdW5kVGFibGVDYWxjLCBoYXZpbmcgdHlwZSBDb21wb3VuZFRhYmxlQ2FsY3VsYXRpb25QcmVzTW9kZWxcbiAgQ29tcG91bmRUYWJsZUNhbGMgPSAnY29tcG91bmRUYWJsZUNhbGN1bGF0aW9uUHJlc01vZGVsJyxcblxuICAvLyBEUElfVGFibGVDYWxjLCBoYXZpbmcgdHlwZSBUYWJsZUNhbGN1bGF0aW9uUHJlc01vZGVsXG4gIFRhYmxlQ2FsYyA9ICd0YWJsZUNhbGN1bGF0aW9uUHJlc01vZGVsJyxcblxuICAvLyBEUElfVGFibGVDYWxjcywgaGF2aW5nIHR5cGUgVGFibGVDYWxjdWxhdGlvblByZXNNb2RlbFtdXG4gIFRhYmxlQ2FsY3MgPSAndGFibGVDYWxjdWxhdGlvblByZXNNb2RlbHMnLFxuXG4gIC8vIERQSV9UYWJsZUNhbGNJZGVudGlmaWVyLCBoYXZpbmcgdHlwZSBUYWJsZUNhbGNJZGVudGlmaWVyUHJlc01vZGVsXG4gIFRhYmxlQ2FsY0lkZW50aWZpZXIgPSAndGFibGVDYWxjSWRlbnRpZmllcicsXG5cbiAgLy8gRFBJX05lc3RlZFRhYmxlQ2FsY0luZm8sIGhhdmluZyB0eXBlIE5lc3RlZFRhYmxlQ2FsY0luZm9QcmVzTW9kZWxcbiAgTmVzdGVkVGFibGVDYWxjSW5mbyA9ICduZXN0ZWRUYWJsZUNhbGNJbmZvJyxcblxuICAvLyBEUElfTmVzdGVkVGFibGVDYWxjSW5mb3MsIGhhdmluZyB0eXBlIE5lc3RlZFRhYmxlQ2FsY0luZm9QcmVzTW9kZWxbXVxuICBOZXN0ZWRUYWJsZUNhbGNJbmZvcyA9ICduZXN0ZWRUYWJsZUNhbGNJbmZvcycsXG5cbiAgLy8gRFBJX09yZGVyaW5nLCBoYXZpbmcgdHlwZSBUYWJsZUNhbGNPcmRlcmluZ1ByZXNNb2RlbFxuICBPcmRlcmluZyA9ICd0YWJsZUNhbGNPcmRlcmluZ1ByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX0N1bXVsYXRpdmUsIGhhdmluZyB0eXBlIEN1bXVsYXRpdmVUYWJsZUNhbGNQcmVzTW9kZWxcbiAgQ3VtdWxhdGl2ZSA9ICdjdW11bGF0aXZlVGFibGVDYWxjUHJlc01vZGVsJyxcblxuICAvLyBEUElfUmVmZXJlbmNlT3B0aW9ucywgaGF2aW5nIHR5cGUgVGFibGVDYWxjUmVmZXJlbmNlT3B0aW9uc1ByZXNNb2RlbFxuICBSZWZlcmVuY2VPcHRpb25zID0gJ3RhYmxlQ2FsY1JlZmVyZW5jZU9wdGlvbnNQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9EaWZmZXJlbmNlLCBoYXZpbmcgdHlwZSBEaWZmZXJlbmNlVGFibGVDYWxjUHJlc01vZGVsXG4gIERpZmZlcmVuY2UgPSAnZGlmZmVyZW5jZVRhYmxlQ2FsY1ByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX1dpbmRvdywgaGF2aW5nIHR5cGUgV2luZG93VGFibGVDYWxjUHJlc01vZGVsXG4gIFdpbmRvdyA9ICd3aW5kb3dUYWJsZUNhbGNQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9QZXJjZW50VG90YWwsIGhhdmluZyB0eXBlIFBlcmNlbnRUb3RhbFRhYmxlQ2FsY1ByZXNNb2RlbFxuICBQZXJjZW50VG90YWwgPSAncGVyY2VudFRvdGFsVGFibGVDYWxjUHJlc01vZGVsJyxcblxuICAvLyBEUElfUmFuaywgaGF2aW5nIHR5cGUgUmFua1RhYmxlQ2FsY1ByZXNNb2RlbFxuICBSYW5rID0gJ3JhbmtUYWJsZUNhbGNQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9DdXN0b20sIGhhdmluZyB0eXBlIEN1c3RvbVRhYmxlQ2FsY1ByZXNNb2RlbFxuICBDdXN0b20gPSAnY3VzdG9tVGFibGVDYWxjUHJlc01vZGVsJyxcblxuICAvLyBEUElfV2ViRGF0YVVybCwgaGF2aW5nIHR5cGUgV2ViRGF0YVVybFByZXNNb2RlbFxuICBXZWJEYXRhVXJsID0gJ3dlYkRhdGFVcmwnLFxuXG4gIC8vIERQSV9WaXNpdGVkV2ViRGF0YUNvbm5lY3RvcnMsIGhhdmluZyB0eXBlIFdlYkRhdGFVcmxQcmVzTW9kZWxbXVxuICBWaXNpdGVkV2ViRGF0YUNvbm5lY3RvcnMgPSAndmlzaXRlZFdlYkRhdGFDb25uZWN0b3JzJyxcblxuICAvLyBEUElfV2ViRGF0YVNlc3Npb25VcmxzLCBoYXZpbmcgdHlwZSBXZWJEYXRhVXJsUHJlc01vZGVsW11cbiAgV2ViRGF0YVNlc3Npb25VcmxzID0gJ3dlYkRhdGFTZXNzaW9uVXJscycsXG5cbiAgLy8gRFBJX1dlYkRhdGFVcmxzLCBoYXZpbmcgdHlwZSBXZWJEYXRhVXJsUHJlc01vZGVsW11cbiAgV2ViRGF0YVVybHMgPSAnd2ViRGF0YVVybHMnLFxuXG4gIC8vIERQSV9GaWVsZFBpY2tlciwgaGF2aW5nIHR5cGUgRmllbGRQaWNrZXJQcmVzTW9kZWxcbiAgRmllbGRQaWNrZXIgPSAnZmllbGRQaWNrZXInLFxuXG4gIC8vIERQSV9EZXNjcmliZUZpZWxkLCBoYXZpbmcgdHlwZSBEZXNjcmliZUZpZWxkUHJlc01vZGVsXG4gIERlc2NyaWJlRmllbGQgPSAnZGVzY3JpYmVGaWVsZCcsXG5cbiAgLy8gRFBJX1Nob3dEYXRhUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBTaG93RGF0YVByZXNNb2RlbFxuICBTaG93RGF0YVByZXNNb2RlbCA9ICdzaG93RGF0YVByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX0RhdGFUYWJsZVByZXNNb2RlbCwgaGF2aW5nIHR5cGUgU2hvd0RhdGFUYWJsZVByZXNNb2RlbFxuICBEYXRhVGFibGVQcmVzTW9kZWwgPSAnZGF0YVRhYmxlUHJlc01vZGVsJyxcblxuICAvLyBEUElfRGF0YVRhYmxlUHJlc01vZGVscywgaGF2aW5nIHR5cGUgU2hvd0RhdGFUYWJsZVByZXNNb2RlbFtdXG4gIERhdGFUYWJsZVByZXNNb2RlbHMgPSAnZGF0YVRhYmxlUHJlc01vZGVscycsXG5cbiAgLy8gRFBJX1N1bW1hcnlUYWJsZVByZXNNb2RlbHMsIGhhdmluZyB0eXBlIFNob3dEYXRhVGFibGVQcmVzTW9kZWxbXVxuICBTdW1tYXJ5VGFibGVQcmVzTW9kZWxzID0gJ3N1bW1hcnlUYWJsZVByZXNNb2RlbHMnLFxuXG4gIC8vIERQSV9SZWZyZXNoQWxsRXh0cmFjdHNQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFJlZnJlc2hBbGxFeHRyYWN0c1ByZXNNb2RlbFxuICBSZWZyZXNoQWxsRXh0cmFjdHNQcmVzTW9kZWwgPSAncmVmZXNoQWxsRXh0cmFjdHNQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9SZWZyZXNoRXh0cmFjdERhdGFTb3VyY2VQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFJlZnJlc2hFeHRyYWN0RGF0YVNvdXJjZVByZXNNb2RlbFxuICBSZWZyZXNoRXh0cmFjdERhdGFTb3VyY2VQcmVzTW9kZWwgPSAncmVmcmVzaEV4dHJhY3REYXRhc291cmNlUHJlc01vZGVsJyxcblxuICAvLyBEUElfUmVmcmVzaEV4dHJhY3REYXRhU291cmNlTGlzdCwgaGF2aW5nIHR5cGUgUmVmcmVzaEV4dHJhY3REYXRhU291cmNlUHJlc01vZGVsW11cbiAgUmVmcmVzaEV4dHJhY3REYXRhU291cmNlTGlzdCA9ICdyZWZyZXNoRXh0cmFjdERhdGFzb3VyY2VMaXN0JyxcblxuICAvLyBEUElfRXh0cmFjdEhpc3RvcnlQcmVzTW9kZWwsIGhhdmluZyB0eXBlIEV4dHJhY3RIaXN0b3J5UHJlc01vZGVsXG4gIEV4dHJhY3RIaXN0b3J5UHJlc01vZGVsID0gJ2V4dHJhY3RIaXN0b3J5UHJlc01vZGVsJyxcblxuICAvLyBEUElfRXh0cmFjdEhpc3RvcnlJdGVtUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBFeHRyYWN0SGlzdG9yeUl0ZW1QcmVzTW9kZWxcbiAgRXh0cmFjdEhpc3RvcnlJdGVtUHJlc01vZGVsID0gJ2V4dHJhY3RIaXN0b3J5SXRlbScsXG5cbiAgLy8gRFBJX0V4dHJhY3RIaXN0b3J5TGlzdCwgaGF2aW5nIHR5cGUgRXh0cmFjdEhpc3RvcnlJdGVtUHJlc01vZGVsW11cbiAgRXh0cmFjdEhpc3RvcnlMaXN0ID0gJ2V4dHJhY3RIaXN0b3J5TGlzdCcsXG5cbiAgLy8gRFBJX0RhdGFQcm92aWRlclByZXNNb2RlbCwgaGF2aW5nIHR5cGUgRGF0YVByb3ZpZGVyUHJlc01vZGVsXG4gIERhdGFQcm92aWRlclByZXNNb2RlbCA9ICdkYXRhUHJvdmlkZXJQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9Gb3JtYXRJdGVtLCBoYXZpbmcgdHlwZSBGb3JtYXRJdGVtUHJlc01vZGVsXG4gIEZvcm1hdEl0ZW0gPSAnZm9ybWF0SXRlbScsXG5cbiAgLy8gRFBJX0Zvcm1hdEl0ZW1MaXN0LCBoYXZpbmcgdHlwZSBGb3JtYXRJdGVtUHJlc01vZGVsW11cbiAgRm9ybWF0SXRlbUxpc3QgPSAnZm9ybWF0SXRlbUxpc3QnLFxuXG4gIC8vIERQSV9Gb3JtYXRDb250YWluZXIsIGhhdmluZyB0eXBlIEZvcm1hdENvbnRhaW5lclByZXNNb2RlbFxuICBGb3JtYXRDb250YWluZXIgPSAnZm9ybWF0Q29udGFpbmVyJyxcblxuICAvLyBEUElfRm9ybWF0UGFuZSwgaGF2aW5nIHR5cGUgRm9ybWF0UGFuZVByZXNNb2RlbFxuICBGb3JtYXRQYW5lID0gJ2Zvcm1hdFBhbmUnLFxuXG4gIC8vIERQSV9Gb3JtYXRTZWN0aW9uLCBoYXZpbmcgdHlwZSBGb3JtYXRTZWN0aW9uUHJlc01vZGVsXG4gIEZvcm1hdFNlY3Rpb24gPSAnZm9ybWF0U2VjdGlvbicsXG5cbiAgLy8gRFBJX0NvbGxhcHNpYmxlU2VjdGlvbiwgaGF2aW5nIHR5cGUgQ29sbGFwc2libGVTZWN0aW9uUHJlc01vZGVsXG4gIENvbGxhcHNpYmxlU2VjdGlvbiA9ICdjb2xsYXBzaWJsZVNlY3Rpb24nLFxuXG4gIC8vIERQSV9Db21wb3NpdGVDb250YWluZXIsIGhhdmluZyB0eXBlIENvbXBvc2l0ZUNvbnRhaW5lclByZXNNb2RlbFxuICBDb21wb3NpdGVDb250YWluZXIgPSAnY29tcG9zaXRlQ29udGFpbmVyJyxcblxuICAvLyBEUElfVW5pdENvbnRhaW5lciwgaGF2aW5nIHR5cGUgVW5pdENvbnRhaW5lclByZXNNb2RlbFxuICBVbml0Q29udGFpbmVyID0gJ3VuaXRDb250YWluZXInLFxuXG4gIC8vIERQSV9UYWJHcm91cCwgaGF2aW5nIHR5cGUgVGFiR3JvdXBQcmVzTW9kZWxcbiAgVGFiR3JvdXAgPSAndGFiR3JvdXAnLFxuXG4gIC8vIERQSV9UYWIsIGhhdmluZyB0eXBlIFRhYlByZXNNb2RlbFxuICBUYWIgPSAndGFiJyxcblxuICAvLyBEUElfRm9ybWF0Q29udHJvbCwgaGF2aW5nIHR5cGUgRm9ybWF0Q29udHJvbFByZXNNb2RlbFxuICBGb3JtYXRDb250cm9sID0gJ2Zvcm1hdENvbnRyb2wnLFxuXG4gIC8vIERQSV9UZXh0Q29udHJvbCwgaGF2aW5nIHR5cGUgVGV4dENvbnRyb2xQcmVzTW9kZWxcbiAgVGV4dENvbnRyb2wgPSAndGV4dENvbnRyb2wnLFxuXG4gIC8vIERQSV9OdW1lcmljQ29udHJvbCwgaGF2aW5nIHR5cGUgTnVtZXJpY0NvbnRyb2xQcmVzTW9kZWxcbiAgTnVtZXJpY0NvbnRyb2wgPSAnbnVtZXJpY0NvbnRyb2wnLFxuXG4gIC8vIERQSV9Db2xvckNvbnRyb2wsIGhhdmluZyB0eXBlIENvbG9yQ29udHJvbFByZXNNb2RlbFxuICBDb2xvckNvbnRyb2wgPSAnY29sb3JDb250cm9sJyxcblxuICAvLyBEUElfVG9nZ2xlQ29udHJvbCwgaGF2aW5nIHR5cGUgVG9nZ2xlQ29udHJvbFByZXNNb2RlbFxuICBUb2dnbGVDb250cm9sID0gJ3RvZ2dsZUNvbnRyb2wnLFxuXG4gIC8vIERQSV9TZWxlY3RvckNvbnRyb2wsIGhhdmluZyB0eXBlIFNlbGVjdG9yQ29udHJvbFByZXNNb2RlbFxuICBTZWxlY3RvckNvbnRyb2wgPSAnZW51bVN0cmluZ1N0eWxlJyxcblxuICAvLyBEUElfU3RhdHNBbmFseXRpY1NwZWMsIGhhdmluZyB0eXBlIFN0YXRzQW5hbHl0aWNTcGVjUHJlc01vZGVsXG4gIFN0YXRzQW5hbHl0aWNTcGVjID0gJ3N0YXRzQW5hbHl0aWNTcGVjJyxcblxuICAvLyBEUElfQ2x1c3RlclNwZWMsIGhhdmluZyB0eXBlIENsdXN0ZXJTcGVjUHJlc01vZGVsXG4gIENsdXN0ZXJTcGVjID0gJ2NsdXN0ZXJpbmdTcGVjJyxcblxuICAvLyBEUElfQ2x1c3RlclJlc3VsdHMsIGhhdmluZyB0eXBlIENsdXN0ZXJSZXN1bHRzUHJlc01vZGVsXG4gIENsdXN0ZXJSZXN1bHRzID0gJ2NsdXN0ZXJSZXN1bHRzJyxcblxuICAvLyBEUElfQ2x1c3RlclVuaXQsIGhhdmluZyB0eXBlIENsdXN0ZXJVbml0UHJlc01vZGVsXG4gIENsdXN0ZXJVbml0ID0gJ2NsdXN0ZXInLFxuXG4gIC8vIERQSV9DbHVzdGVyVW5pdHMsIGhhdmluZyB0eXBlIENsdXN0ZXJVbml0UHJlc01vZGVsW11cbiAgQ2x1c3RlclVuaXRzID0gJ2NsdXN0ZXJVbml0UHJlc01vZGVscycsXG5cbiAgLy8gRFBJX0NsdXN0ZXJGaWVsZEFOT1ZBLCBoYXZpbmcgdHlwZSBDbHVzdGVyRmllbGRBTk9WQVByZXNNb2RlbFxuICBDbHVzdGVyRmllbGRBTk9WQSA9ICdjbHVzdGVyRmllbGRBbm92YScsXG5cbiAgLy8gRFBJX0NsdXN0ZXJGaWVsZEFOT1ZBVGFibGUsIGhhdmluZyB0eXBlIENsdXN0ZXJGaWVsZEFOT1ZBUHJlc01vZGVsW11cbiAgQ2x1c3RlckZpZWxkQU5PVkFUYWJsZSA9ICdjbHVzdGVyRmllbGRBbm92YVRhYmxlUHJlc01vZGVsJyxcblxuICAvLyBEUElfQ2x1c3RlckVkaXQsIGhhdmluZyB0eXBlIENsdXN0ZXJFZGl0UHJlc01vZGVsXG4gIENsdXN0ZXJFZGl0ID0gJ2NsdXN0ZXJFZGl0UHJlc01vZGVsJyxcblxuICAvLyBEUElfQ2x1c3RlckRlc2NyaXB0aW9uLCBoYXZpbmcgdHlwZSBDbHVzdGVyRGVzY3JpYmVQcmVzTW9kZWxcbiAgQ2x1c3RlckRlc2NyaXB0aW9uID0gJ2NsdXN0ZXJEZXNjcmlwdGlvbicsXG5cbiAgLy8gRFBJX091dGxpZXJSZXN1bHRzLCBoYXZpbmcgdHlwZSBPdXRsaWVyUmVzdWx0c1ByZXNNb2RlbFxuICBPdXRsaWVyUmVzdWx0cyA9ICdvdXRsaWVyUmVzdWx0cycsXG5cbiAgLy8gRFBJX0Nvbm5lY3RUb0RhdGFTZXJ2ZXJTb3VyY2VSZXN1bHQsIGhhdmluZyB0eXBlIENvbm5lY3RUb0RhdGFTZXJ2ZXJTb3VyY2VSZXN1bHRQcmVzTW9kZWxcbiAgQ29ubmVjdFRvRGF0YVNlcnZlclNvdXJjZVJlc3VsdCA9ICdjb25uZWN0VG9EYXRhU2VydmVyU291cmNlUmVzdWx0JyxcblxuICAvLyBEUElfRGF0YVNlcnZlckNvbm5lY3Rpb25SZXR1cm5TdGF0dXMsIGhhdmluZyB0eXBlIENvbm5lY3RUb0RhdGFTZXJ2ZXJTb3VyY2VSZXN1bHRQcmVzTW9kZWxcbiAgRGF0YVNlcnZlckNvbm5lY3Rpb25SZXR1cm5TdGF0dXMgPSAnZGF0YVNlcnZlckNvbm5lY3Rpb25SZXR1cm5TdGF0dXMnLFxuXG4gIC8vIERQSV9XZWJRdWFudGl0YXRpdmVDb2xvckRpYWxvZywgaGF2aW5nIHR5cGUgV2ViUXVhbnRpdGF0aXZlQ29sb3JEaWFsb2dQcmVzTW9kZWxcbiAgV2ViUXVhbnRpdGF0aXZlQ29sb3JEaWFsb2cgPSAncXVhbnRpdGF0aXZlQ29sb3JEaWFsb2cnLFxuXG4gIC8vIERQSV9XZWJDYXRlZ29yaWNhbENvbG9yRGlhbG9nLCBoYXZpbmcgdHlwZSBXZWJDYXRlZ29yaWNhbENvbG9yRGlhbG9nUHJlc01vZGVsXG4gIFdlYkNhdGVnb3JpY2FsQ29sb3JEaWFsb2cgPSAnY2F0ZWdvcmljYWxDb2xvckRpYWxvZycsXG5cbiAgLy8gRFBJX1dlYlNhdmVEYXRhc291cmNlRGlhbG9nLCBoYXZpbmcgdHlwZSBXZWJTYXZlRGF0YXNvdXJjZURpYWxvZ1ByZXNNb2RlbFxuICBXZWJTYXZlRGF0YXNvdXJjZURpYWxvZyA9ICdzYXZlRGF0YXNvdXJjZURpYWxvZycsXG5cbiAgLy8gRFBJX0JvcmRlclN0eWxlU3BlYywgaGF2aW5nIHR5cGUgU3R5bGVTcGVjUHJlc01vZGVsXG4gIEJvcmRlclN0eWxlU3BlYyA9ICdib3JkZXJTdHlsZVNwZWMnLFxuXG4gIC8vIERQSV9IYWxvU3R5bGVTcGVjLCBoYXZpbmcgdHlwZSBTdHlsZVNwZWNQcmVzTW9kZWxcbiAgSGFsb1N0eWxlU3BlYyA9ICdoYWxvU3R5bGVTcGVjJyxcblxuICAvLyBEUElfTWFya3NDb2xvclViZXJFZmZlY3RzLCBoYXZpbmcgdHlwZSBNYXJrc0NvbG9yVWJlckVmZmVjdHNQcmVzTW9kZWxcbiAgTWFya3NDb2xvclViZXJFZmZlY3RzID0gJ21hcmtzQ29sb3JVYmVyRWZmZWN0cycsXG5cbiAgLy8gRFBJX0NhdGVnb3JpY2FsQ29sb3JFbmNvZGluZywgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxDb2xvckVuY29kaW5nUHJlc01vZGVsXG4gIENhdGVnb3JpY2FsQ29sb3JFbmNvZGluZyA9ICdjYXRlZ29yaWNhbENvbG9yRW5jb2RpbmcnLFxuXG4gIC8vIERQSV9DYXRlZ29yaWNhbFNoYXBlRW5jb2RpbmcsIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsU2hhcGVFbmNvZGluZ1ByZXNNb2RlbFxuICBDYXRlZ29yaWNhbFNoYXBlRW5jb2RpbmcgPSAnY2F0ZWdvcmljYWxTaGFwZUVuY29kaW5nJyxcblxuICAvLyBEUElfU2hhcGVQYWxldHRlUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBTaGFwZVBhbGV0dGVQcmVzTW9kZWxcbiAgU2hhcGVQYWxldHRlUHJlc01vZGVsID0gJ3NoYXBlUGFsZXR0ZVByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX1NoYXBlUGFsZXR0ZVByZXNNb2RlbHMsIGhhdmluZyB0eXBlIFNoYXBlUGFsZXR0ZVByZXNNb2RlbFtdXG4gIFNoYXBlUGFsZXR0ZVByZXNNb2RlbHMgPSAnc2hhcGVQYWxldHRlUHJlc01vZGVscycsXG5cbiAgLy8gRFBJX0RhdGFTb3VyY2VEYXRlUHJvcGVydGllcywgaGF2aW5nIHR5cGUgRGF0YVNvdXJjZURhdGVQcm9wZXJ0aWVzUHJlc01vZGVsXG4gIERhdGFTb3VyY2VEYXRlUHJvcGVydGllcyA9ICdkYXRhc291cmNlRGF0ZVByb3BlcnRpZXMnLFxuXG4gIC8vIERQSV9EYXRlUHJvcGVydGllc0RhdGVGb3JtYXQsIGhhdmluZyB0eXBlIERhdGVQcm9wZXJ0aWVzRGF0ZUZvcm1hdFByZXNNb2RlbFxuICBEYXRlUHJvcGVydGllc0RhdGVGb3JtYXQgPSAnZGF0ZVByb3BlcnRpZXNEYXRlRm9ybWF0JyxcblxuICAvLyBEUElfRGF0ZVByb3BlcnRpZXNEYXRlRm9ybWF0cywgaGF2aW5nIHR5cGUgRGF0ZVByb3BlcnRpZXNEYXRlRm9ybWF0UHJlc01vZGVsW11cbiAgRGF0ZVByb3BlcnRpZXNEYXRlRm9ybWF0cyA9ICdkYXRlUHJvcGVydGllc0RhdGVGb3JtYXRzJyxcblxuICAvLyBEUElfSGllcmFyY2h5U2VsZWN0LCBoYXZpbmcgdHlwZSBIaWVyYXJjaHlTZWxlY3RNb2RlbFxuICBIaWVyYXJjaHlTZWxlY3QgPSAnaGllcmFyY2h5U2VsZWN0JyxcblxuICAvLyBEUElfSGllcmFyY2h5U2VsZWN0TWVtYmVyLCBoYXZpbmcgdHlwZSBIaWVyYXJjaHlTZWxlY3RNZW1iZXJQcmVzTW9kZWxcbiAgSGllcmFyY2h5U2VsZWN0TWVtYmVyID0gJ2hpZXJhcmNoeVNlbGVjdE1lbWJlcicsXG5cbiAgLy8gRFBJX0hpZXJhcmNoeVNlbGVjdE1lbWJlckxpc3QsIGhhdmluZyB0eXBlIEhpZXJhcmNoeVNlbGVjdE1lbWJlclByZXNNb2RlbFtdXG4gIEhpZXJhcmNoeVNlbGVjdE1lbWJlckxpc3QgPSAnaGllcmFyY2h5U2VsZWN0TWVtYmVyTGlzdCcsXG5cbiAgLy8gRFBJX0hpZXJhcmNoeVNldERlZmF1bHRNZW1iZXIsIGhhdmluZyB0eXBlIEhpZXJhcmNoeVNldERlZmF1bHRNZW1iZXJQcmVzTW9kZWxcbiAgSGllcmFyY2h5U2V0RGVmYXVsdE1lbWJlciA9ICdoaWVyYXJjaHlTZXREZWZhdWx0TWVtYmVyJyxcblxuICAvLyBEUElfU2VtaVN0cnVjdFNjaGVtYSwgaGF2aW5nIHR5cGUgU2VtaVN0cnVjdFNjaGVtYVByZXNNb2RlbFxuICBTZW1pU3RydWN0U2NoZW1hID0gJ3NlbWlTdHJ1Y3RTY2hlbWEnLFxuXG4gIC8vIERQSV9TZW1pU3RydWN0U2NoZW1hTWVtYmVyLCBoYXZpbmcgdHlwZSBTZW1pU3RydWN0U2NoZW1hTWVtYmVyUHJlc01vZGVsXG4gIFNlbWlTdHJ1Y3RTY2hlbWFNZW1iZXIgPSAnc2VtaVN0cnVjdFNjaGVtYU1lbWJlcicsXG5cbiAgLy8gRFBJX1NlbWlTdHJ1Y3RTY2hlbWFNZW1iZXJMaXN0LCBoYXZpbmcgdHlwZSBTZW1pU3RydWN0U2NoZW1hTWVtYmVyUHJlc01vZGVsW11cbiAgU2VtaVN0cnVjdFNjaGVtYU1lbWJlckxpc3QgPSAnc2VtaVN0cnVjdFNjaGVtYU1lbWJlckxpc3QnLFxuXG4gIC8vIERQSV9QYXJhbWV0ZXJFZGl0SW5mbywgaGF2aW5nIHR5cGUgUGFyYW1ldGVyRWRpdEluZm9QcmVzTW9kZWxcbiAgUGFyYW1ldGVyRWRpdEluZm8gPSAncGFyYW1ldGVyRWRpdEluZm8nLFxuXG4gIC8vIERQSV9Qcm9kdWN0UGFyYW1ldGVySW5mbywgaGF2aW5nIHR5cGUgUHJvZHVjdFBhcmFtZXRlckluZm9QcmVzTW9kZWxcbiAgUHJvZHVjdFBhcmFtZXRlckluZm8gPSAncHJvZHVjdFBhcmFtZXRlckluZm8nLFxuXG4gIC8vIERQSV9DYXB0aW9uZWREYXRhc291cmNlRmllbGQsIGhhdmluZyB0eXBlIENhcHRpb25lZERhdGFzb3VyY2VJbmZvUHJlc01vZGVsXG4gIENhcHRpb25lZERhdGFzb3VyY2VGaWVsZCA9ICdjYXB0aW9uZWREYXRhc291cmNlRmllbGQnLFxuXG4gIC8vIERQSV9DYXB0aW9uZWREYXRhc291cmNlRmllbGRzLCBoYXZpbmcgdHlwZSBDYXB0aW9uZWREYXRhc291cmNlSW5mb1ByZXNNb2RlbFtdXG4gIENhcHRpb25lZERhdGFzb3VyY2VGaWVsZHMgPSAnY2FwdGlvbmVkRGF0YXNvdXJjZUZpZWxkcycsXG5cbiAgLy8gRFBJX0VkaXRlZFBhcmFtZXRlclJhbmdlRG9tYWluLCBoYXZpbmcgdHlwZSBQYXJhbWV0ZXJSYW5nZURvbWFpblByZXNNb2RlbFxuICBFZGl0ZWRQYXJhbWV0ZXJSYW5nZURvbWFpbiA9ICdlZGl0ZWRQYXJhbWV0ZXJSYW5nZURvbWFpbicsXG5cbiAgLy8gRFBJX1BhcmFtZXRlclJhbmdlRG9tYWluLCBoYXZpbmcgdHlwZSBQYXJhbWV0ZXJSYW5nZURvbWFpblByZXNNb2RlbFxuICBQYXJhbWV0ZXJSYW5nZURvbWFpbiA9ICdwYXJhbWV0ZXJSYW5nZURvbWFpbicsXG5cbiAgLy8gRFBJX1BhcmFtZXRlckxpc3REb21haW4sIGhhdmluZyB0eXBlIFBhcmFtZXRlckxpc3REb21haW5QcmVzTW9kZWxcbiAgUGFyYW1ldGVyTGlzdERvbWFpbiA9ICdwYXJhbWV0ZXJMaXN0RG9tYWluJyxcblxuICAvLyBEUElfUGFyYW1ldGVyTGlzdERvbWFpbk1lbWJlciwgaGF2aW5nIHR5cGUgUGFyYW1ldGVyTGlzdERvbWFpbk1lbWJlclByZXNNb2RlbFxuICBQYXJhbWV0ZXJMaXN0RG9tYWluTWVtYmVyID0gJ3BhcmFtZXRlckxpc3REb21haW5NZW1iZXInLFxuXG4gIC8vIERQSV9QYXJhbWV0ZXJMaXN0RG9tYWluTWVtYmVycywgaGF2aW5nIHR5cGUgUGFyYW1ldGVyTGlzdERvbWFpbk1lbWJlclByZXNNb2RlbFtdXG4gIFBhcmFtZXRlckxpc3REb21haW5NZW1iZXJzID0gJ3BhcmFtZXRlckxpc3REb21haW5NZW1iZXJzJyxcblxuICAvLyBEUElfSW5kZXhlZERvbWFpbk1lbWJlciwgaGF2aW5nIHR5cGUgSW5kZXhlZERvbWFpbk1lbWJlclByZXNNb2RlbFxuICBJbmRleGVkRG9tYWluTWVtYmVyID0gJ2luZGV4ZWREb21haW5NZW1iZXInLFxuXG4gIC8vIERQSV9JbmRleGVkRG9tYWluTWVtYmVycywgaGF2aW5nIHR5cGUgSW5kZXhlZERvbWFpbk1lbWJlclByZXNNb2RlbFtdXG4gIEluZGV4ZWREb21haW5NZW1iZXJzID0gJ2luZGV4ZWREb21haW5NZW1iZXJzJyxcblxuICAvLyBEUElfTmV3SW5kZXhlZERvbWFpbk1lbWJlcnMsIGhhdmluZyB0eXBlIEluZGV4ZWREb21haW5NZW1iZXJQcmVzTW9kZWxbXVxuICBOZXdJbmRleGVkRG9tYWluTWVtYmVycyA9ICduZXdJbmRleGVkRG9tYWluTWVtYmVycycsXG5cbiAgLy8gRFBJX1BhcmFtZXRlckxpc3REb21haW5EaWZmLCBoYXZpbmcgdHlwZSBwYXJhbWV0ZXItbGlzdC1kb21haW4tZGlmZlxuICBQYXJhbWV0ZXJMaXN0RG9tYWluRGlmZiA9ICdwYXJhbWV0ZXJMaXN0RG9tYWluRGlmZicsXG5cbiAgLy8gRFBJX0luZGV4UmFuZ2UsIGhhdmluZyB0eXBlIEluZGV4UmFuZ2VQcmVzTW9kZWxcbiAgSW5kZXhSYW5nZSA9ICdpbmRleFJhbmdlJyxcblxuICAvLyBEUElfSW5kZXhSYW5nZXMsIGhhdmluZyB0eXBlIEluZGV4UmFuZ2VQcmVzTW9kZWxbXVxuICBJbmRleFJhbmdlcyA9ICdpbmRleFJhbmdlcycsXG5cbiAgLy8gRFBJX0NhdGVnb3JpY2FsRmluZCwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxGaW5kUHJlc01vZGVsXG4gIENhdGVnb3JpY2FsRmluZCA9ICdjYXRlZ29yaWNhbEZpbmQnLFxuXG4gIC8vIERQSV9DYXB0aW9uZWREYXRhVmFsdWUsIGhhdmluZyB0eXBlIENhcHRpb25lZERhdGFWYWx1ZVByZXNNb2RlbFxuICBDYXB0aW9uZWREYXRhVmFsdWUgPSAnY2FwdGlvbmVkRGF0YVZhbHVlJyxcblxuICAvLyBEUElfU2VsZWN0ZWRWYWx1ZUNhcHRpb24sIGhhdmluZyB0eXBlIENhcHRpb25lZERhdGFWYWx1ZVByZXNNb2RlbFxuICBTZWxlY3RlZFZhbHVlQ2FwdGlvbiA9ICdzZWxlY3RlZFZhbHVlQ2FwdGlvbicsXG5cbiAgLy8gRFBJX0RhdGFWYWx1ZUNhcHRpb25MaXN0LCBoYXZpbmcgdHlwZSBDYXB0aW9uZWREYXRhVmFsdWVQcmVzTW9kZWxbXVxuICBEYXRhVmFsdWVDYXB0aW9uTGlzdCA9ICdkYXRhVmFsdWVDYXRwaW9uTGlzdCcsXG5cbiAgLy8gRFBJX1JhbmdlRGF0YVZhbHVlLCBoYXZpbmcgdHlwZSBSYW5nZURhdGFWYWx1ZVByZXNNb2RlbFxuICBSYW5nZURhdGFWYWx1ZSA9ICdyYW5nZURhdGFWYWx1ZScsXG5cbiAgLy8gRFBJX1BhcmFtZXRlclJhbmdlRGF0YVZhbHVlLCBoYXZpbmcgdHlwZSBSYW5nZURhdGFWYWx1ZVByZXNNb2RlbFxuICBQYXJhbWV0ZXJSYW5nZURhdGFWYWx1ZSA9ICdwYXJhbWV0ZXJSYW5nZURhdGFWYWx1ZScsXG5cbiAgLy8gRFBJX0RhdGFWYWx1ZVJhbmdlQ2FwdGlvbnMsIGhhdmluZyB0eXBlIERhdGFWYWx1ZVJhbmdlQ2FwdGlvbnNQcmVzTW9kZWxcbiAgRGF0YVZhbHVlUmFuZ2VDYXB0aW9ucyA9ICdkYXRhVmFsdWVSYW5nZUNhcHRpb25zJyxcblxuICAvLyBEUElfSW5kZXBlbmRlbnREaW1lbnNpb24sIGhhdmluZyB0eXBlIEluZGVwZW5kZW50RGltZW5zaW9uUHJlc01vZGVsXG4gIEluZGVwZW5kZW50RGltZW5zaW9uID0gJ2luZGVwZW5kZW50RGltZW5zaW9uJyxcblxuICAvLyBEUElfSW5kZXBlbmRlbnREaW1lbnNpb25zLCBoYXZpbmcgdHlwZSBJbmRlcGVuZGVudERpbWVuc2lvblByZXNNb2RlbFtdXG4gIEluZGVwZW5kZW50RGltZW5zaW9ucyA9ICdpbmRlcGVuZGVudERpbWVuc2lvbnMnLFxuXG4gIC8vIERQSV9BdHRyaWJ1dGVQZXJzcGVjdGl2ZSwgaGF2aW5nIHR5cGUgUGVyc3BlY3RpdmVQcmVzTW9kZWxcbiAgQXR0cmlidXRlUGVyc3BlY3RpdmUgPSAnYXR0cmlidXRlUGVyc3BlY3RpdmUnLFxuXG4gIC8vIERQSV9DdWJlUGVyc3BlY3RpdmUsIGhhdmluZyB0eXBlIFBlcnNwZWN0aXZlUHJlc01vZGVsXG4gIEN1YmVQZXJzcGVjdGl2ZSA9ICdjdWJlUGVyc3BlY3RpdmUnLFxuXG4gIC8vIERQSV9BdHRyaWJ1dGVQZXJzcGVjdGl2ZXMsIGhhdmluZyB0eXBlIFBlcnNwZWN0aXZlUHJlc01vZGVsW11cbiAgQXR0cmlidXRlUGVyc3BlY3RpdmVzID0gJ2F0dHJpYnV0ZVBlcnNwZWN0aXZlcycsXG5cbiAgLy8gRFBJX0NhbGN1bGF0ZWRNZW1iZXJzRm9yRWRpdGluZ1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgRWRpdENhbGN1bGF0ZWRNZW1iZXJzUHJlc01vZGVsXG4gIENhbGN1bGF0ZWRNZW1iZXJzRm9yRWRpdGluZ1ByZXNNb2RlbCA9ICdjYWxjdWxhdGVkTWVtYmVyc0ZvckVkaXRpbmdQcmVzbW9kZWwnLFxuXG4gIC8vIERQSV9DYWxjdWxhdGVkTWVtYmVyLCBoYXZpbmcgdHlwZSBDYWxjdWxhdGVkTWVtYmVyUHJlc01vZGVsXG4gIENhbGN1bGF0ZWRNZW1iZXIgPSAnY2FsY3VsYXRlZE1lbWJlcicsXG5cbiAgLy8gRFBJX05ld0NhbGN1bGF0ZWRNZW1iZXIsIGhhdmluZyB0eXBlIENhbGN1bGF0ZWRNZW1iZXJQcmVzTW9kZWxcbiAgTmV3Q2FsY3VsYXRlZE1lbWJlciA9ICduZXdDYWxjdWxhdGVkTWVtYmVyJyxcblxuICAvLyBEUElfVXBkYXRlZENhbGN1bGF0ZWRNZW1iZXIsIGhhdmluZyB0eXBlIENhbGN1bGF0ZWRNZW1iZXJQcmVzTW9kZWxcbiAgVXBkYXRlZENhbGN1bGF0ZWRNZW1iZXIgPSAndXBkYXRlZENhbGN1bGF0ZWRNZW1iZXInLFxuXG4gIC8vIERQSV9DYWxjdWxhdGVkTWVtYmVyc0xpc3QsIGhhdmluZyB0eXBlIENhbGN1bGF0ZWRNZW1iZXJQcmVzTW9kZWxbXVxuICBDYWxjdWxhdGVkTWVtYmVyc0xpc3QgPSAnY2FsY3VsYXRlZE1lbWJlcnNMaXN0JyxcblxuICAvLyBEUElfQ2FsY3VsYXRlZE1lbWJlckhpZXJhcmNoeUl0ZW0sIGhhdmluZyB0eXBlIENhbGN1bGF0ZWRNZW1iZXJIaWVyYXJjaHlJdGVtUHJlc01vZGVsXG4gIENhbGN1bGF0ZWRNZW1iZXJIaWVyYXJjaHlJdGVtID0gJ2NhbGN1bGF0ZWRNZW1iZXJIaWVyYXJjaHlJdGVtJyxcblxuICAvLyBEUElfQ2FsY3VsYXRlZE1lbWJlckhpZXJhcmNoeUxpc3QsIGhhdmluZyB0eXBlIENhbGN1bGF0ZWRNZW1iZXJIaWVyYXJjaHlJdGVtUHJlc01vZGVsW11cbiAgQ2FsY3VsYXRlZE1lbWJlckhpZXJhcmNoeUxpc3QgPSAnY2FsY3VsYXRlZE1lbWJlckhpZXJhcmNoeUxpc3QnLFxuXG4gIC8vIERQSV9TdW1tYXJ5Q2FyZFByZXNNb2RlbCwgaGF2aW5nIHR5cGUgU3VtbWFyeUNhcmRQcmVzTW9kZWxcbiAgU3VtbWFyeUNhcmRQcmVzTW9kZWwgPSAnc3VtbWFyeUNhcmQnLFxuXG4gIC8vIERQSV9NZWFzdXJlU3VtbWFyeSwgaGF2aW5nIHR5cGUgTWVhc3VyZVN1bW1hcnlQcmVzTW9kZWxcbiAgTWVhc3VyZVN1bW1hcnkgPSAnbWVhc3VyZVN1bW1hcnknLFxuXG4gIC8vIERQSV9NZWFzdXJlU3VtbWFyeUxpc3QsIGhhdmluZyB0eXBlIE1lYXN1cmVTdW1tYXJ5UHJlc01vZGVsW11cbiAgTWVhc3VyZVN1bW1hcnlMaXN0ID0gJ21lYXN1cmVTdW1tYXJ5TGlzdCcsXG5cbiAgLy8gRFBJX0Fubm90YXRpb25QcmVzTW9kZWwsIGhhdmluZyB0eXBlIEFubm90YXRpb25QcmVzTW9kZWxcbiAgQW5ub3RhdGlvblByZXNNb2RlbCA9ICdhbm5vdGF0aW9uJyxcblxuICAvLyBEUElfQW5ub3RhdGlvbkxpc3QsIGhhdmluZyB0eXBlIEFubm90YXRpb25QcmVzTW9kZWxbXVxuICBBbm5vdGF0aW9uTGlzdCA9ICdhbm5vdGF0aW9uTGlzdCcsXG5cbiAgLy8gRFBJX0Fubm90YXRpb25TaGFwZVN0eWxlLCBoYXZpbmcgdHlwZSBBbm5vdGF0aW9uU2hhcGVTdHlsZVByZXNNb2RlbFxuICBBbm5vdGF0aW9uU2hhcGVTdHlsZSA9ICdhbm5vdGF0aW9uU2hhcGVTdHlsZScsXG5cbiAgLy8gRFBJX1RlbGVtZXRyeSwgaGF2aW5nIHR5cGUgVGVsZW1ldHJ5UHJlc01vZGVsXG4gIFRlbGVtZXRyeSA9ICd0ZWxlbWV0cnknLFxuXG4gIC8vIERQSV9EYXRhU291cmNlVGVsZW1ldHJ5LCBoYXZpbmcgdHlwZSBEYXRhU291cmNlVGVsZW1ldHJ5UHJlc01vZGVsXG4gIERhdGFTb3VyY2VUZWxlbWV0cnkgPSAnZGF0YVNvdXJjZVRlbGVtZXRyeScsXG5cbiAgLy8gRFBJX0RhdGFTb3VyY2VUZWxlbWV0cnlMaXN0LCBoYXZpbmcgdHlwZSBEYXRhU291cmNlVGVsZW1ldHJ5UHJlc01vZGVsW11cbiAgRGF0YVNvdXJjZVRlbGVtZXRyeUxpc3QgPSAnZGF0YVNvdXJjZVRlbGVtZXRyeUxpc3QnLFxuXG4gIC8vIERQSV9WaXN1YWxTcGVjaWZpY2F0aW9uVGVsZW1ldHJ5LCBoYXZpbmcgdHlwZSBWaXN1YWxTcGVjaWZpY2F0aW9uVGVsZW1ldHJ5UHJlc01vZGVsXG4gIFZpc3VhbFNwZWNpZmljYXRpb25UZWxlbWV0cnkgPSAndmlzdWFsU3BlY2lmaWNhdGlvblRlbGVtZXRyeScsXG5cbiAgLy8gRFBJX1Zpc3VhbFNwZWNpZmljYXRpb25UZWxlbWV0cnlMaXN0LCBoYXZpbmcgdHlwZSBWaXN1YWxTcGVjaWZpY2F0aW9uVGVsZW1ldHJ5UHJlc01vZGVsW11cbiAgVmlzdWFsU3BlY2lmaWNhdGlvblRlbGVtZXRyeUxpc3QgPSAndmlzdWFsU3BlY2lmaWNhdGlvblRlbGVtZXRyeUxpc3QnLFxuXG4gIC8vIERQSV9VbmRlcmx5aW5nRGF0YVRhYmxlLCBoYXZpbmcgdHlwZSBVbmRlcmx5aW5nRGF0YVRhYmxlUHJlc01vZGVsXG4gIFVuZGVybHlpbmdEYXRhVGFibGUgPSAndW5kZXJseWluZ0RhdGFUYWJsZScsXG5cbiAgLy8gRFBJX1VuZGVybHlpbmdEYXRhVGFibGVzLCBoYXZpbmcgdHlwZSBVbmRlcmx5aW5nRGF0YVRhYmxlUHJlc01vZGVsW11cbiAgVW5kZXJseWluZ0RhdGFUYWJsZXMgPSAndW5kZXJseWluZ0RhdGFUYWJsZXMnLFxuXG4gIC8vIERQSV9VbmRlcmx5aW5nRGF0YVRhYmxlQ29sdW1uLCBoYXZpbmcgdHlwZSBVbmRlcmx5aW5nRGF0YVRhYmxlQ29sdW1uUHJlc01vZGVsXG4gIFVuZGVybHlpbmdEYXRhVGFibGVDb2x1bW4gPSAndW5kZXJseWluZ0RhdGFUYWJsZUNvbHVtbicsXG5cbiAgLy8gRFBJX1VuZGVybHlpbmdEYXRhVGFibGVDb2x1bW5zLCBoYXZpbmcgdHlwZSBVbmRlcmx5aW5nRGF0YVRhYmxlQ29sdW1uUHJlc01vZGVsW11cbiAgVW5kZXJseWluZ0RhdGFUYWJsZUNvbHVtbnMgPSAndW5kZXJseWluZ0RhdGFUYWJsZUNvbHVtbnMnLFxuXG4gIC8vIERQSV9QYWdlQ2FjaGVJRCwgaGF2aW5nIHR5cGUgUGFnZUNhY2hlSURQcmVzTW9kZWxcbiAgUGFnZUNhY2hlSUQgPSAncGFnZUNhY2hlSWQnLFxuXG4gIC8vIERQSV9SZWxhdGlvbmFsUGFnZUNhY2hlSUQsIGhhdmluZyB0eXBlIFBhZ2VDYWNoZUlEUHJlc01vZGVsXG4gIFJlbGF0aW9uYWxQYWdlQ2FjaGVJRCA9ICdyZWxhdGlvbmFsUGFnZUNhY2hlSWQnLFxuXG4gIC8vIERQSV9TZWFyY2hSZXN1bHRzQ2FjaGVJRCwgaGF2aW5nIHR5cGUgUGFnZUNhY2hlSURQcmVzTW9kZWxcbiAgU2VhcmNoUmVzdWx0c0NhY2hlSUQgPSAnc2VhcmNoUmVzdWx0c0NhY2hlSWQnLFxuXG4gIC8vIERQSV9QYWdlSW5mbywgaGF2aW5nIHR5cGUgUGFnZUluZm9QcmVzTW9kZWxcbiAgUGFnZUluZm8gPSAncGFnZUluZm8nLFxuXG4gIC8vIERQSV9Sb3dDb2xQYWlyLCBoYXZpbmcgdHlwZSBSb3dDb2xQYWlyUHJlc01vZGVsXG4gIFJvd0NvbFBhaXIgPSAncm93Q29sUGFpcicsXG5cbiAgLy8gRFBJX1RvcExlZnRSb3dDb2wsIGhhdmluZyB0eXBlIFJvd0NvbFBhaXJQcmVzTW9kZWxcbiAgVG9wTGVmdFJvd0NvbCA9ICd0b3BMZWZ0Um93Q29sJyxcblxuICAvLyBEUElfQm90UmlnaHRSb3dDb2wsIGhhdmluZyB0eXBlIFJvd0NvbFBhaXJQcmVzTW9kZWxcbiAgQm90UmlnaHRSb3dDb2wgPSAnYm90UmlnaHRSb3dDb2wnLFxuXG4gIC8vIERQSV9Sb3dDb2xQYWlycywgaGF2aW5nIHR5cGUgUm93Q29sUGFpclByZXNNb2RlbFtdXG4gIFJvd0NvbFBhaXJzID0gJ3Jvd0NvbFBhaXJzJyxcblxuICAvLyBEUElfVGFibGVWaWV3Q2FjaGVJbmZvLCBoYXZpbmcgdHlwZSBUYWJsZVZpZXdDYWNoZVByZXNNb2RlbFxuICBUYWJsZVZpZXdDYWNoZUluZm8gPSAndGFibGVWaWV3Q2FjaGVJbmZvJyxcblxuICAvLyBEUElfVGFibGVWaWV3SW5mbywgaGF2aW5nIHR5cGUgdGFibGVWaWV3SW5mb1ByZXNNb2RlbFxuICBUYWJsZVZpZXdJbmZvID0gJ3RhYmxlVmlld0luZm8nLFxuXG4gIC8vIERQSV9UYWJsZVZpZXdDb2x1bW5JbmZvLCBoYXZpbmcgdHlwZSBUYWJsZVZpZXdDb2x1bW5JbmZvUHJlc01vZGVsXG4gIFRhYmxlVmlld0NvbHVtbkluZm8gPSAndGFibGVWaWV3Q29sdW1uSW5mbycsXG5cbiAgLy8gRFBJX1RhYmxlVmlld0NvbHVtbnMsIGhhdmluZyB0eXBlIFRhYmxlVmlld0NvbHVtbkluZm9QcmVzTW9kZWxbXVxuICBUYWJsZVZpZXdDb2x1bW5zID0gJ3RhYmxlVmlld0NvbHVtbnMnLFxuXG4gIC8vIERQSV9UYWJsZVZpZXdQYWdlSXRlbSwgaGF2aW5nIHR5cGUgVGFibGVWaWV3UGFnZUl0ZW1QcmVzTW9kZWxcbiAgVGFibGVWaWV3UGFnZUl0ZW0gPSAndGFibGVWaWV3UGFnZUl0ZW0nLFxuXG4gIC8vIERQSV9UYWJsZVZpZXdQYWdlQ29sdW1ucywgaGF2aW5nIHR5cGUgVGFibGVWaWV3UGFnZUl0ZW1QcmVzTW9kZWxbXVxuICBUYWJsZVZpZXdQYWdlQ29sdW1ucyA9ICd0YWJsZVZpZXdQYWdlQ29sdW1ucycsXG5cbiAgLy8gRFBJX1RhYmxlVmlld1BhZ2VSb3csIGhhdmluZyB0eXBlIFRhYmxlVmlld1BhZ2VSb3dQcmVzTW9kZWxcbiAgVGFibGVWaWV3UGFnZVJvdyA9ICd0YWJsZVZpZXdQYWdlUm93JyxcblxuICAvLyBEUElfVGFibGVWaWV3UGFnZVJvd3MsIGhhdmluZyB0eXBlIFRhYmxlVmlld1BhZ2VSb3dQcmVzTW9kZWxbXVxuICBUYWJsZVZpZXdQYWdlUm93cyA9ICd0YWJsZVZpZXdQYWdlUm93cycsXG5cbiAgLy8gRFBJX1RhYmxlVmlld1BhZ2UsIGhhdmluZyB0eXBlIFRhYmxlVmlld1BhZ2VQcmVzTW9kZWxcbiAgVGFibGVWaWV3UGFnZSA9ICd0YWJsZVZpZXdQYWdlJyxcblxuICAvLyBEUElfQ2F0ZWdvcmljYWxWYWx1ZVBpY2tlciwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxWYWx1ZVBpY2tlclByZXNNb2RlbFxuICBDYXRlZ29yaWNhbFZhbHVlUGlja2VyID0gJ2NhdGVnb3JpY2FsVmFsdWVQaWNrZXInLFxuXG4gIC8vIERQSV9Bbm5vdGF0aW9uU2hhcGVCb3JkZXJTdHlsZSwgaGF2aW5nIHR5cGUgTGluZVN0eWxlUHJlc01vZGVsXG4gIEFubm90YXRpb25TaGFwZUJvcmRlclN0eWxlID0gJ2Fubm90YXRpb25TaGFwZUJvcmRlclN0eWxlJyxcblxuICAvLyBEUElfQW5vdGF0aW9uU2hhcGVTdHJva2VTdHlsZSwgaGF2aW5nIHR5cGUgTGluZVN0eWxlUHJlc01vZGVsXG4gIEFub3RhdGlvblNoYXBlU3Ryb2tlU3R5bGUgPSAnYW5ub3RhdGlvblNoYXBlU3Ryb2tlU3R5bGUnLFxuXG4gIC8vIERQSV9DYXRlZ29yaWNhbEJpbkVkaXRvclByZXNNb2RlbCwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxCaW5FZGl0b3JQcmVzTW9kZWxcbiAgQ2F0ZWdvcmljYWxCaW5FZGl0b3JQcmVzTW9kZWwgPSAnY2F0ZWdvcmljYWxCaW5FZGl0b3InLFxuXG4gIC8vIERQSV9DYXRlZ29yaWNhbEJpbkl0ZW0sIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsQmluSXRlbVByZXNNb2RlbFxuICBDYXRlZ29yaWNhbEJpbkl0ZW0gPSAnY2F0ZWdvcmljYWxCaW5JdGVtUHJlc01vZGVsJyxcblxuICAvLyBEUElfQ2F0ZWdvcmljYWxCaW5JdGVtcywgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxCaW5JdGVtUHJlc01vZGVsW11cbiAgQ2F0ZWdvcmljYWxCaW5JdGVtcyA9ICdjYXRlZ29yaWNhbEJpbkl0ZW1QcmVzTW9kZWxzJyxcblxuICAvLyBEUElfTWVhc3VyZVBpY2tlckZpZWxkSW5mbywgaGF2aW5nIHR5cGUgTWVhc3VyZVBpY2tlckZpZWxkSW5mb1ByZXNNb2RlbFxuICBNZWFzdXJlUGlja2VyRmllbGRJbmZvID0gJ21lYXN1cmVQaWNrZXJGaWVsZEluZm8nLFxuXG4gIC8vIERQSV9NZWFzdXJlUGlja2VyRmllbGRzLCBoYXZpbmcgdHlwZSBNZWFzdXJlUGlja2VyRmllbGRJbmZvUHJlc01vZGVsW11cbiAgTWVhc3VyZVBpY2tlckZpZWxkcyA9ICdtZWFzdXJlUGlja2VyRmllbGRzJyxcblxuICAvLyBEUElfTWVhc3VyZUFnZ3JlZ2F0aW9uSW5mbywgaGF2aW5nIHR5cGUgTWVhc3VyZUFnZ3JlZ2F0aW9uSW5mb1ByZXNNb2RlbFxuICBNZWFzdXJlQWdncmVnYXRpb25JbmZvID0gJ21lYXN1cmVBZ2dyZWdhdGlvbkluZm8nLFxuXG4gIC8vIERQSV9NZWFzdXJlQWdncmVnYXRpb25zLCBoYXZpbmcgdHlwZSBNZWFzdXJlQWdncmVnYXRpb25JbmZvUHJlc01vZGVsW11cbiAgTWVhc3VyZUFnZ3JlZ2F0aW9ucyA9ICdtZWFzdXJlQWdncmVnYXRpb25zJyxcblxuICAvLyBEUElfVHVwbGVQYWlyLCBoYXZpbmcgdHlwZSBUdXBsZVBhaXJQcmVzTW9kZWxcbiAgVHVwbGVQYWlyID0gJ3R1cGxlUGFpcicsXG5cbiAgLy8gRFBJX0RpbWVuc2lvbkJvdW5kLCBoYXZpbmcgdHlwZSBEaW1lbnNpb25Cb3VuZFByZXNNb2RlbFxuICBEaW1lbnNpb25Cb3VuZCA9ICdkaW1lbnNpb25Cb3VuZCcsXG5cbiAgLy8gRFBJX1BlcnNwZWN0aXZlQm91bmRzLCBoYXZpbmcgdHlwZSBEaW1lbnNpb25Cb3VuZFByZXNNb2RlbFtdXG4gIFBlcnNwZWN0aXZlQm91bmRzID0gJ3BlcnNwZWN0aXZlQm91bmRzJyxcblxuICAvLyBEUElfRmlsdGVyUGVyc3BlY3RpdmVJbmZvUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBGaWx0ZXJQZXJzcGVjdGl2ZUluZm9QcmVzTW9kZWxcbiAgRmlsdGVyUGVyc3BlY3RpdmVJbmZvUHJlc01vZGVsID0gJ2ZpbHRlclBlcnNwZWN0aXZlSW5mbycsXG5cbiAgLy8gRFBJX1RhYmxlUmVsZXZhbmNlLCBoYXZpbmcgdHlwZSBUYWJsZVJlbGV2YW5jZVByZXNNb2RlbFxuICBUYWJsZVJlbGV2YW5jZSA9ICd0YWJsZVJlbGV2YW5jZScsXG5cbiAgLy8gRFBJX0FkZEluUmVnaXN0cmF0aW9uUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBBZGRJblJlZ2lzdHJhdGlvblByZXNNb2RlbFxuICBBZGRJblJlZ2lzdHJhdGlvblByZXNNb2RlbCA9ICdhZGRJblJlZ2lzdHJhdGlvblByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX0FkZEluUmVnaXN0cmF0aW9uUHJlc01vZGVsTGlzdCwgaGF2aW5nIHR5cGUgQWRkSW5SZWdpc3RyYXRpb25QcmVzTW9kZWxbXVxuICBBZGRJblJlZ2lzdHJhdGlvblByZXNNb2RlbExpc3QgPSAnYWRkSW5SZWdpc3RyYXRpb25QcmVzTW9kZWxMaXN0JyxcblxuICAvLyBEUElfQWRkSW5EYXNoYm9hcmRBdXRob3JpbmdXaWRnZXQsIGhhdmluZyB0eXBlIEFkZEluRGFzaGJvYXJkV2lkZ2V0UHJlc01vZGVsXG4gIEFkZEluRGFzaGJvYXJkQXV0aG9yaW5nV2lkZ2V0ID0gJ2FkZEluRGFzaGJvYXJkQXV0aG9yaW5nV2lkZ2V0UHJlc01vZGVsJyxcblxuICAvLyBEUElfQWRkSW5JbnN0YW5jZSwgaGF2aW5nIHR5cGUgQWRkSW5JbnN0YW5jZVByZXNNb2RlbFxuICBBZGRJbkluc3RhbmNlID0gJ2FkZEluSW5zdGFuY2VQcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9BZGRJbkxvY2F0b3IsIGhhdmluZyB0eXBlIEFkZEluTG9jYXRvclByZXNNb2RlbFxuICBBZGRJbkxvY2F0b3IgPSAnYWRkSW5Mb2NhdG9yUHJlc01vZGVsJyxcblxuICAvLyBEUElfQWRkSW5Db250ZXh0LCBoYXZpbmcgdHlwZSBBZGRJbkNvbnRleHRcbiAgQWRkSW5Db250ZXh0ID0gJ2FkZEluQ29udGV4dCcsXG5cbiAgLy8gRFBJX0FkZEluTW9kZSwgaGF2aW5nIHR5cGUgQWRkSW5Nb2RlXG4gIEFkZEluTW9kZSA9ICdhZGRJbk1vZGUnLFxuXG4gIC8vIERQSV9TZXRBeGlzUmFuZ2VSZXN1bHQsIGhhdmluZyB0eXBlIFNldEF4aXNSYW5nZVJlc3VsdFxuICBTZXRBeGlzUmFuZ2VSZXN1bHQgPSAnc2V0QXhpc1JhbmdlUmVzdWx0JyxcblxuICAvLyBEUElfU2V0VGlja09yaWdpblJlc3VsdCwgaGF2aW5nIHR5cGUgU2V0VGlja09yaWdpblJlc3VsdFxuICBTZXRUaWNrT3JpZ2luUmVzdWx0ID0gJ3NldFRpY2tPcmlnaW5SZXN1bHQnLFxuXG4gIC8vIERQSV9TZXRUaWNrU3BhY2luZ1Jlc3VsdCwgaGF2aW5nIHR5cGUgU2V0VGlja1NwYWNpbmdSZXN1bHRcbiAgU2V0VGlja1NwYWNpbmdSZXN1bHQgPSAnc2V0VGlja1NwYWNpbmdSZXN1bHQnLFxuXG4gIC8vIERQSV9BeGlzRXh0ZW50U3RhcnRUeXBlLCBoYXZpbmcgdHlwZSBBeGlzRXh0ZW50VHlwZVxuICBBeGlzRXh0ZW50U3RhcnRUeXBlID0gJ2F4aXNFeHRlbnRTdGFydFR5cGUnLFxuXG4gIC8vIERQSV9BeGlzRXh0ZW50RW5kVHlwZSwgaGF2aW5nIHR5cGUgQXhpc0V4dGVudFR5cGVcbiAgQXhpc0V4dGVudEVuZFR5cGUgPSAnYXhpc0V4dGVudEVuZFR5cGUnLFxuXG4gIC8vIERQSV9BeGlzRXh0ZW50c1R5cGUsIGhhdmluZyB0eXBlIEF4aXNFeHRlbnRUeXBlXG4gIEF4aXNFeHRlbnRzVHlwZSA9ICdheGlzRXh0ZW50c1R5cGUnLFxuXG4gIC8vIERQSV9BZGRJbkVudmlyb25tZW50LCBoYXZpbmcgdHlwZSBBZGRJbkVudmlyb25tZW50UHJlc01vZGVsXG4gIEFkZEluRW52aXJvbm1lbnQgPSAnYWRkSW5FbnZpcm9ubWVudFByZXNNb2RlbCcsXG5cbiAgLy8gRFBJX0FkZEluRGFzaGJvYXJkSW5mbywgaGF2aW5nIHR5cGUgQWRkSW5EYXNoYm9hcmRJbmZvUHJlc01vZGVsXG4gIEFkZEluRGFzaGJvYXJkSW5mbyA9ICdhZGRJbkRhc2hib2FyZEluZm9QcmVzTW9kZWwnLFxuXG4gIC8vIERQSV9BZGRJblNldHRpbmdzSW5mbywgaGF2aW5nIHR5cGUgQWRkSW5TZXR0aW5nc0luZm9QcmVzTW9kZWxcbiAgQWRkSW5TZXR0aW5nc0luZm8gPSAnYWRkSW5TZXR0aW5nc0luZm8nLFxuXG4gIC8vIERQSV9BZGRJbkJvb3RzdHJhcEluZm8sIGhhdmluZyB0eXBlIEFkZEluQm9vdHN0cmFwSW5mb1ByZXNNb2RlbFxuICBBZGRJbkJvb3RzdHJhcEluZm8gPSAnYWRkSW5Cb290c3RyYXBJbmZvJyxcblxuICAvLyBEUElfQWRkSW5EZWJ1Z1NldHRpbmdzLCBoYXZpbmcgdHlwZSBBZGRJbkRlYnVnU2V0dGluZ3NQcmVzTW9kZWxcbiAgQWRkSW5EZWJ1Z1NldHRpbmdzID0gJ2FkZEluRGVidWdTZXR0aW5ncycsXG5cbiAgLy8gRFBJX1JpY2hUZXh0LCBoYXZpbmcgdHlwZSBSaWNoVGV4dFByZXNNb2RlbFxuICBSaWNoVGV4dCA9ICdyaWNoVGV4dCcsXG5cbiAgLy8gRFBJX1JpY2hUZXh0S2V5d29yZFN1Ykxpc3QsIGhhdmluZyB0eXBlIFJpY2hUZXh0S2V5d29yZFN1Ykxpc3RQcmVzTW9kZWxcbiAgUmljaFRleHRLZXl3b3JkU3ViTGlzdCA9ICdyaWNoVGV4dEtleXdvcmRzU3VibGlzdCcsXG5cbiAgLy8gRFBJX1JpY2hUZXh0S2V5d29yZFN1Ykxpc3RzLCBoYXZpbmcgdHlwZSBSaWNoVGV4dEtleXdvcmRTdWJMaXN0UHJlc01vZGVsW11cbiAgUmljaFRleHRLZXl3b3JkU3ViTGlzdHMgPSAncmljaFRleHRLZXl3b3JkU3VibGlzdHMnLFxuXG4gIC8vIERQSV9SaWNoVGV4dEtleXdvcmRMaXN0LCBoYXZpbmcgdHlwZSBSaWNoVGV4dEtleXdvcmRMaXN0UHJlc01vZGVsXG4gIFJpY2hUZXh0S2V5d29yZExpc3QgPSAncmljaFRleHRLZXl3b3Jkc0xpc3QnLFxuXG4gIC8vIERQSV9SaWNoVGV4dEJsb2NrU3R5bGUsIGhhdmluZyB0eXBlIFJpY2hUZXh0QmxvY2tTdHlsZVByZXNNb2RlbFxuICBSaWNoVGV4dEJsb2NrU3R5bGUgPSAncmljaFRleHRCbG9ja1N0eWxlJyxcblxuICAvLyBEUElfUmljaFRleHRDb250ZW50U3R5bGUsIGhhdmluZyB0eXBlIFJpY2hUZXh0Q29udGVudFN0eWxlUHJlc01vZGVsXG4gIFJpY2hUZXh0Q29udGVudFN0eWxlID0gJ3JpY2hUZXh0Q29udGVudFN0eWxlJ1xufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLWNvcmUvZ2VuLXNyYy9wcmVzbGF5ZXIvUGFyYW1zLnRzXG4gKiovIiwiaW1wb3J0IHsgUGFyYW1ldGVySWQgYXMgQXBpLCBWZXJiSWQgYXMgQXBpVmVyYklkLCBWZXJzaW9uTnVtYmVyIH0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcblxuaW1wb3J0IHsgRG9jQ29tbWFuZHMgYXMgUHJlc0xheWVyRG9jQ29tbWFuZElkLCBVSUNvbW1hbmRzIGFzIFByZXNMYXllclVJQ29tbWFuZElkIH0gZnJvbSAnLi4vLi4vZ2VuLXNyYy9wcmVzbGF5ZXIvQ29tbWFuZElkcyc7XG5pbXBvcnQgeyBQYXJhbWV0ZXJJZCBhcyBQTCB9IGZyb20gJy4uLy4uL2dlbi1zcmMvcHJlc2xheWVyL1BhcmFtcyc7XG5pbXBvcnQgeyBDb21tYW5kTWFwcGluZ1JlZ2lzdHJ5IH0gZnJvbSAnLi9Db21tYW5kTWFwcGluZ1JlZ2lzdHJ5JztcbmltcG9ydCB7IENvbW1hbmROYW1lc3BhY2UsIENvbW1hbmRQYXJhbWV0ZXIsIENvbW1hbmRSZWdpc3RyYXRpb24gfSBmcm9tICcuL0NvbW1hbmRSZWdpc3RyYXRpb24nO1xuXG5leHBvcnQgY2xhc3MgQ29tbWFuZE1hcHBpbmdSZWdpc3RyeUZhY3Rvcnkge1xuICAvKipcbiAgICogQ3JlYXRlcyBhbmQgcG9wdWxhdGVzIGEgbmV3IENvbW1hbmRNYXBwaW5nUmVnaXN0cnkgZm9yIHRoZSBzcGVjaWZpYyB2ZXJzaW9uIG51bWJlciByZXF1ZXN0ZWRcbiAgICpcbiAgICogQHN0YXRpY1xuICAgKiBAcGFyYW0ge1ZlcnNpb25OdW1iZXJ9IHZlcnNpb25OdW1iZXJcbiAgICogQHJldHVybnMge0NvbW1hbmRNYXBwaW5nUmVnaXN0cnl9XG4gICAqIEBtZW1iZXJvZiBDb21tYW5kTWFwcGluZ1JlZ2lzdHJ5RmFjdG9yeVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjcmVhdGVDb21tYW5kTWFwcGluZ1JlZ2lzdHJ5KHZlcnNpb25OdW1iZXI6IFZlcnNpb25OdW1iZXIpOiBDb21tYW5kTWFwcGluZ1JlZ2lzdHJ5IHtcbiAgICBsZXQgcmVzdWx0ID0gbmV3IENvbW1hbmRNYXBwaW5nUmVnaXN0cnkoKTtcblxuICAgIHJlc3VsdC5hZGRDb21tYW5kKG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uKFxuICAgICAgQXBpVmVyYklkLkluaXRpYWxpemVFeHRlbnNpb24sXG4gICAgICBQcmVzTGF5ZXJEb2NDb21tYW5kSWQuSW5pdGlhbGl6ZUFkZEluSW5zdGFuY2UsXG4gICAgICBbIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5FeHRlbnNpb25Mb2NhdG9yLCBQTC5BZGRJbkxvY2F0b3IpIF0sXG4gICAgICBuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuRXh0ZW5zaW9uQm9vdHN0cmFwSW5mbywgUEwuQWRkSW5Cb290c3RyYXBJbmZvKSkpO1xuXG4gICAgcmVzdWx0LmFkZENvbW1hbmQobmV3IENvbW1hbmRSZWdpc3RyYXRpb24oXG4gICAgICBBcGlWZXJiSWQuR2V0VW5kZXJseWluZ0RhdGEsXG4gICAgICBQcmVzTGF5ZXJEb2NDb21tYW5kSWQuR2V0VW5kZXJseWluZ0RhdGEsXG4gICAgICBbIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5JZ25vcmVBbGlhc2VzLCBQTC5JZ25vcmVBbGlhc2VzKSxcbiAgICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLklnbm9yZVNlbGVjdGlvbiwgUEwuSWdub3JlU2VsZWN0aW9uKSxcbiAgICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLkluY2x1ZGVBbGxDb2x1bW5zLCBQTC5JbmNsdWRlQWxsQ29sdW1ucyksXG4gICAgICAgIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5NYXhSb3dzLCBQTC5NYXhSb3dzKSxcbiAgICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLlZpc3VhbElkLCBQTC5WaXN1YWxJRFBNKSBdLFxuICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLlVuZGVybHlpbmdEYXRhVGFibGUsIFBMLlVuZGVybHlpbmdEYXRhVGFibGUpKSk7XG5cbiAgICByZXN1bHQuYWRkQ29tbWFuZChuZXcgQ29tbWFuZFJlZ2lzdHJhdGlvbihcbiAgICAgIEFwaVZlcmJJZC5HZXREYXRhU3VtbWFyeURhdGEsXG4gICAgICBQcmVzTGF5ZXJEb2NDb21tYW5kSWQuR2V0U3VtbWFyeURhdGEsXG4gICAgICBbIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5JZ25vcmVBbGlhc2VzLCBQTC5JZ25vcmVBbGlhc2VzKSxcbiAgICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLklnbm9yZVNlbGVjdGlvbiwgUEwuSWdub3JlU2VsZWN0aW9uKSxcbiAgICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLlZpc3VhbElkLCBQTC5WaXN1YWxJRFBNKSBdLFxuICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLlVuZGVybHlpbmdTdW1tYXJ5RGF0YVRhYmxlLCBQTC5VbmRlcmx5aW5nRGF0YVRhYmxlKSkpO1xuXG4gICAgcmVzdWx0LmFkZENvbW1hbmQobmV3IENvbW1hbmRSZWdpc3RyYXRpb24oXG4gICAgICBBcGlWZXJiSWQuR2V0RGF0YVNvdXJjZURhdGEsXG4gICAgICBQcmVzTGF5ZXJEb2NDb21tYW5kSWQuR2V0RGF0YVNvdXJjZURhdGEsXG4gICAgICBbIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5EYXRhU291cmNlSWQsIFBMLkRhdGFzb3VyY2UpLFxuICAgICAgICBuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuSWdub3JlQWxpYXNlcywgUEwuSWdub3JlQWxpYXNlcyksXG4gICAgICAgIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5NYXhSb3dzLCBQTC5NYXhSb3dzKSxcbiAgICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLkNvbHVtbnNUb0luY2x1ZGUsIFBMLkZpZWxkRGlzcGxheU5hbWVzKSBdLFxuICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLkRhdGFTb3VyY2VEYXRhVGFibGUsIFBMLlVuZGVybHlpbmdEYXRhVGFibGUpKSk7XG5cbiAgICByZXN1bHQuYWRkQ29tbWFuZChuZXcgQ29tbWFuZFJlZ2lzdHJhdGlvbihcbiAgICAgIEFwaVZlcmJJZC5BcHBseUNhdGVnb3JpY2FsRmlsdGVyLFxuICAgICAgUHJlc0xheWVyRG9jQ29tbWFuZElkLkNhdGVnb3JpY2FsRmlsdGVyLFxuICAgICAgWyBuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuRmllbGROYW1lLCBQTC5RdWFsaWZpZWRGaWVsZENhcHRpb24pLFxuICAgICAgICBuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuRmlsdGVyVmFsdWVzLCBQTC5GaWx0ZXJBbGlhc2VzKSxcbiAgICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLkZpbHRlclVwZGF0ZVR5cGUsIFBMLkZpbHRlclVwZGF0ZVR5cGUpLFxuICAgICAgICBuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuSXNFeGNsdWRlTW9kZSwgUEwuRXhjbHVkZSwgdHJ1ZSksXG4gICAgICAgIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5WaXN1YWxJZCwgUEwuV29ya3NoZWV0KSxcbiAgICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLlZpc3VhbElkLCBQTC5EYXNoYm9hcmQpXSxcbiAgICAgIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5GaWVsZE5hbWUsIFBMLkZpZWxkQ2FwdGlvbikpKTtcblxuICAgIHJlc3VsdC5hZGRDb21tYW5kKG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uKFxuICAgICAgQXBpVmVyYklkLkFwcGx5UmFuZ2VGaWx0ZXIsXG4gICAgICBQcmVzTGF5ZXJEb2NDb21tYW5kSWQuUmFuZ2VGaWx0ZXIsXG4gICAgICBbIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5GaWVsZE5hbWUsIFBMLlF1YWxpZmllZEZpZWxkQ2FwdGlvbiksXG4gICAgICAgIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5GaWx0ZXJSYW5nZU1pbiwgUEwuUmFuZ2VNaW4sIHRydWUpLFxuICAgICAgICBuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuRmlsdGVyUmFuZ2VNYXgsIFBMLlJhbmdlTWF4LCB0cnVlKSxcbiAgICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLkZpbHRlclJhbmdlTnVsbE9wdGlvbiwgUEwuSW5jbHVkZWQsIHRydWUpLFxuICAgICAgICBuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuVmlzdWFsSWQsIFBMLldvcmtzaGVldCksXG4gICAgICAgIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5WaXN1YWxJZCwgUEwuRGFzaGJvYXJkKV0sXG4gICAgICBuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuRmllbGROYW1lLCBQTC5GaWVsZENhcHRpb24pKSk7XG5cbiAgICByZXN1bHQuYWRkQ29tbWFuZChuZXcgQ29tbWFuZFJlZ2lzdHJhdGlvbihcbiAgICAgIEFwaVZlcmJJZC5DbGVhckZpbHRlcixcbiAgICAgIFByZXNMYXllckRvY0NvbW1hbmRJZC5DbGVhckV4aXN0aW5nRmlsdGVyLFxuICAgICAgWyBuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuRmllbGROYW1lLCBQTC5RdWFsaWZpZWRGaWVsZENhcHRpb24pLFxuICAgICAgICBuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuVmlzdWFsSWQsIFBMLldvcmtzaGVldCksXG4gICAgICAgIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5WaXN1YWxJZCwgUEwuRGFzaGJvYXJkKV0sXG4gICAgICBuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuRmllbGROYW1lLCBQTC5GaWVsZENhcHRpb24pKSk7XG5cbiAgICByZXN1bHQuYWRkQ29tbWFuZChuZXcgQ29tbWFuZFJlZ2lzdHJhdGlvbihcbiAgICAgIEFwaVZlcmJJZC5HZXRTZWxlY3RlZE1hcmtzLFxuICAgICAgUHJlc0xheWVyRG9jQ29tbWFuZElkLkdldFNlbGVjdGlvbkRhdGEsXG4gICAgICBbIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5WaXN1YWxJZCwgUEwuVmlzdWFsSURQTSkgXSxcbiAgICAgIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5TZWxlY3RlZERhdGEsIFBMLlNlbGVjdGlvbkRhdGEpKSk7XG5cbiAgICByZXN1bHQuYWRkQ29tbWFuZChuZXcgQ29tbWFuZFJlZ2lzdHJhdGlvbihcbiAgICAgIEFwaVZlcmJJZC5HZXRIaWdobGlnaHRlZE1hcmtzLFxuICAgICAgUHJlc0xheWVyRG9jQ29tbWFuZElkLkdldEhpZ2hsaWdodGVkRGF0YSxcbiAgICAgIFsgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLlZpc3VhbElkLCBQTC5WaXN1YWxJRFBNKSBdLFxuICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLkhpZ2hsaWdodGVkRGF0YSwgUEwuSGlnaGxpZ2h0ZWREYXRhKSkpO1xuXG4gICAgcmVzdWx0LmFkZENvbW1hbmQobmV3IENvbW1hbmRSZWdpc3RyYXRpb24oXG4gICAgICBBcGlWZXJiSWQuU2F2ZUV4dGVuc2lvblNldHRpbmdzLFxuICAgICAgUHJlc0xheWVyRG9jQ29tbWFuZElkLlNhdmVBZGRJblNldHRpbmdzLFxuICAgICAgWyBuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuRXh0ZW5zaW9uTG9jYXRvciwgUEwuQWRkSW5Mb2NhdG9yKSxcbiAgICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLlNldHRpbmdzVmFsdWVzLCBQTC5BZGRJblNldHRpbmdzKV0sXG4gICAgICBuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuRXh0ZW5zaW9uU2V0dGluZ3NJbmZvLCBQTC5BZGRJblNldHRpbmdzSW5mbykpKTtcblxuICAgIHJlc3VsdC5hZGRDb21tYW5kKG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uKFxuICAgICAgQXBpVmVyYklkLkdldFBhcmFtZXRlcnNGb3JTaGVldCxcbiAgICAgIFByZXNMYXllckRvY0NvbW1hbmRJZC5HZXRQYXJhbWV0ZXJNb2RlbHMsXG4gICAgICBbXSxcbiAgICAgIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5QYXJhbWV0ZXJJbmZvcywgUEwuUGFyYW1ldGVyQ3RybHMpKSk7XG5cbiAgICByZXN1bHQuYWRkQ29tbWFuZChuZXcgQ29tbWFuZFJlZ2lzdHJhdGlvbihcbiAgICAgIEFwaVZlcmJJZC5GaW5kUGFyYW1ldGVyLFxuICAgICAgUHJlc0xheWVyRG9jQ29tbWFuZElkLkZpbmRQYXJhbWV0ZXJNb2RlbCxcbiAgICAgIFsgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLlBhcmFtZXRlckNhcHRpb24sIFBMLkZpZWxkQ2FwdGlvbiwgdHJ1ZSksXG4gICAgICAgIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5QYXJhbWV0ZXJGaWVsZE5hbWUsIFBMLkZpZWxkTmFtZVN0cmluZywgdHJ1ZSldLFxuICAgICAgLy8gV2UgbWlnaHQgbm90IGdldCBhIHJlc3BvbnNlIGlmIHRoZSBwYXJhbWV0ZXIgaXNuJ3QgZm91bmRcbiAgICAgIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5QYXJhbWV0ZXJJbmZvLCBQTC5QYXJhbWV0ZXJDdHJsLCB0cnVlKSkpO1xuXG4gICAgcmVzdWx0LmFkZENvbW1hbmQobmV3IENvbW1hbmRSZWdpc3RyYXRpb24oXG4gICAgICBBcGlWZXJiSWQuQ2hhbmdlUGFyYW1ldGVyVmFsdWUsXG4gICAgICBQcmVzTGF5ZXJEb2NDb21tYW5kSWQuU2V0UGFyYW1ldGVyVmFsdWUsXG4gICAgICBbIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5QYXJhbWV0ZXJGaWVsZE5hbWUsIFBMLkdsb2JhbEZpZWxkTmFtZSksXG4gICAgICAgIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5QYXJhbWV0ZXJWYWx1ZSwgUEwuVmFsdWVTdHIpXSxcbiAgICAgIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5QYXJhbWV0ZXJJbmZvLCBQTC5QYXJhbWV0ZXJDdHJsKSkpO1xuXG4gICAgcmVzdWx0LmFkZENvbW1hbmQobmV3IENvbW1hbmRSZWdpc3RyYXRpb24oXG4gICAgICBBcGlWZXJiSWQuQ2xlYXJTZWxlY3RlZE1hcmtzLFxuICAgICAgUHJlc0xheWVyRG9jQ29tbWFuZElkLkNsZWFyU2VsZWN0ZWRNYXJrcyxcbiAgICAgIFtuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuVmlzdWFsSWQsIFBMLlZpc3VhbElEUE0pXSkpO1xuXG4gICAgcmVzdWx0LmFkZENvbW1hbmQobmV3IENvbW1hbmRSZWdpc3RyYXRpb24oXG4gICAgICBBcGlWZXJiSWQuU2VsZWN0QnlWYWx1ZSxcbiAgICAgIFByZXNMYXllckRvY0NvbW1hbmRJZC5TZWxlY3RCeVZhbHVlLFxuICAgICAgW25ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5WaXN1YWxJZCwgUEwuVmlzdWFsSURQTSksXG4gICAgICAgIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5TZWxlY3Rpb24sIFBMLlNlbGVjdGlvbiwgdHJ1ZSksXG4gICAgICAgIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5TZWxlY3Rpb25VcGRhdGVUeXBlLCBQTC5TZWxlY3Rpb25VcGRhdGVUeXBlKSxcbiAgICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLkhpZXJWYWxTZWxlY3Rpb25Nb2RlbHMsIFBMLkhpZXJWYWxTZWxlY3Rpb25Nb2RlbHMsIHRydWUpLFxuICAgICAgICBuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuRGltVmFsU2VsZWN0aW9uTW9kZWxzLCBQTC5EaW1WYWxTZWxlY3Rpb25Nb2RlbHMsIHRydWUpLFxuICAgICAgICBuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuUXVhbnRSYW5nZVNlbGVjdGlvbk1vZGVscywgUEwuUXVhbnRSYW5nZVNlbGVjdGlvbk1vZGVscywgdHJ1ZSldKSk7XG5cbiAgICByZXN1bHQuYWRkQ29tbWFuZChuZXcgQ29tbWFuZFJlZ2lzdHJhdGlvbihcbiAgICAgIEFwaVZlcmJJZC5HZXREYXRhU291cmNlcyxcbiAgICAgIFByZXNMYXllckRvY0NvbW1hbmRJZC5HZXRTY2hlbWEsXG4gICAgICBbXSxcbiAgICAgIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5EYXRhU2NoZW1hLCBQTC5EYXRhU2NoZW1hKSkpO1xuXG4gICAgcmVzdWx0LmFkZENvbW1hbmQobmV3IENvbW1hbmRSZWdpc3RyYXRpb24oXG4gICAgICBBcGlWZXJiSWQuUmVmcmVzaERhdGFTb3VyY2UsXG4gICAgICBQcmVzTGF5ZXJVSUNvbW1hbmRJZC5SZWZyZXNoRGF0YVNvdXJjZVVJLFxuICAgICAgW25ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5EYXRhU291cmNlSWQsIFBMLkRhdGFzb3VyY2UpXSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIENvbW1hbmROYW1lc3BhY2UuVGFiVUkpKTtcblxuICAgIHJlc3VsdC5hZGRDb21tYW5kKG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uKFxuICAgICAgQXBpVmVyYklkLkdldEZpbHRlcnMsXG4gICAgICBQcmVzTGF5ZXJEb2NDb21tYW5kSWQuR2V0V29ya3NoZWV0RmlsdGVycyxcbiAgICAgIFtuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuVmlzdWFsSWQsIFBMLlZpc3VhbElEUE0pXSxcbiAgICAgIG5ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5Xb3Jrc2hlZXRGaWx0ZXJzLCBQTC5GaWx0ZXJzSW5mbykpKTtcblxuICAgIHJlc3VsdC5hZGRDb21tYW5kKG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uKFxuICAgICAgQXBpVmVyYklkLkdldENhdGVnb3JpY2FsRG9tYWluLFxuICAgICAgUHJlc0xheWVyRG9jQ29tbWFuZElkLkdldENhdGVnb3JpY2FsRG9tYWluLFxuICAgICAgW25ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5WaXN1YWxJZCwgUEwuVmlzdWFsSURQTSksXG4gICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLkZpZWxkSWQsIFBMLkZpZWxkTmFtZSksXG4gICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLkRvbWFpblR5cGUsIFBMLkZpbHRlckRvbWFpblR5cGUpXSxcbiAgICAgICBuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuQ2F0ZWdvcmljYWxEb21haW4sIFBMLkNhdGVnb3JpY2FsRG9tYWluKSkpO1xuXG4gICAgcmVzdWx0LmFkZENvbW1hbmQobmV3IENvbW1hbmRSZWdpc3RyYXRpb24oXG4gICAgICBBcGlWZXJiSWQuR2V0UmFuZ2VEb21haW4sXG4gICAgICBQcmVzTGF5ZXJEb2NDb21tYW5kSWQuR2V0UXVhbnRpdGF0aXZlRG9tYWluLFxuICAgICAgW25ldyBDb21tYW5kUGFyYW1ldGVyKEFwaS5WaXN1YWxJZCwgUEwuVmlzdWFsSURQTSksXG4gICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLkZpZWxkSWQsIFBMLkZpZWxkTmFtZSksXG4gICAgICAgbmV3IENvbW1hbmRQYXJhbWV0ZXIoQXBpLkRvbWFpblR5cGUsIFBMLkZpbHRlckRvbWFpblR5cGUpXSxcbiAgICAgICBuZXcgQ29tbWFuZFBhcmFtZXRlcihBcGkuUXVhbnRpdGF0aXZlRG9tYWluLCBQTC5RdWFudGl0YXRpdmVEb21haW4pKSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktY29yZS9zcmMvbWFwcGluZ3MvQ29tbWFuZE1hcHBpbmdSZWdpc3RyeUZhY3RvcnkudHNcbiAqKi8iLCIvKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vXG4vLyBUaGlzIGZpbGUgaXMgdGhlIGNvcHlyaWdodGVkIHByb3BlcnR5IG9mIFRhYmxlYXUgU29mdHdhcmUgYW5kIGlzIHByb3RlY3RlZFxuLy8gYnkgcmVnaXN0ZXJlZCBwYXRlbnRzIGFuZCBvdGhlciBhcHBsaWNhYmxlIFUuUy4gYW5kIGludGVybmF0aW9uYWwgbGF3cyBhbmRcbi8vIHJlZ3VsYXRpb25zLlxuLy9cbi8vIFVubGljZW5zZWQgdXNlIG9mIHRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgaXMgcHJvaGliaXRlZC4gUGxlYXNlIHJlZmVyIHRvXG4vLyB0aGUgTk9USUNFUy50eHQgZmlsZSBmb3IgZnVydGhlciBkZXRhaWxzLlxuLy9cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBXQVJOSU5HOiBDb21wdXRlciBnZW5lcmF0ZWQgZmlsZS4gIERvIG5vdCBoYW5kIG1vZGlmeS5cbi8vIERFUEVORFMgT046IFsnLi4vdHlwZXNjcmlwdC9qcy1hcGkvYXBpLWNvcmUvbm9kZV9tb2R1bGVzL0B0YWJsZWF1L3ByZXNsYXllci1jb2RlZ2VuLXR5cGVzY3JpcHQvdGVtcGxhdGVzL2NvbW1hbmRzLWVudW0tdHMudGVtcGxhdGUnLCB1Jy4uL3R5cGVzY3JpcHQvanMtYXBpL2FwaS1jb3JlL3RlbXAtcHJlcy1sYXllci9hbGwtY21kLXdyYXBwZXJzLmRhdGEnXVxuXG5leHBvcnQgZW51bSBEb2NDb21tYW5kcyB7XG5cbiAgICAvLyBTYXZlcyB0aGUgc2V0dGluZ3MgZm9yIHRoZSBzcGVjaWZpZWQgYWRkLWluIGlkXG4gICAgU2F2ZUFkZEluU2V0dGluZ3MgPSAnc2F2ZS1hZGQtaW4tc2V0dGluZ3MnLFxuXG4gICAgLy8gR2V0cyB0aGUgcHJlcyBtb2RlbCBmb3IgYW4gYWRkLWluIGluc3RhbmNlLlxuICAgIEdldEFkZEluSW5zdGFuY2VQcmVzTW9kZWwgPSAnZ2V0LWFkZC1pbi1pbnN0YW5jZS1wcmVzLW1vZGVsJyxcblxuICAgIC8vIEdldHMgdGhlIHByZXMgbW9kZWwgZm9yIHRoZSBkYXNoYm9hcmQgYXV0aG9yaW5nIHdpZGdldCBmb3IgYWRkLWlucy5cbiAgICBHZXRBZGRJbkRhc2hib2FyZEF1dGhvcmluZ1dpZGdldFByZXNNb2RlbCA9ICdnZXQtYWRkLWluLWRhc2hib2FyZC1hdXRob3Jpbmctd2lkZ2V0LXByZXMtbW9kZWwnLFxuXG4gICAgLy8gR2V0cyB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIGZvciBhbiBhZGQtaW4gdG8gaW5pdGlhbGl6ZSBpdHNlbGYuXG4gICAgSW5pdGlhbGl6ZUFkZEluSW5zdGFuY2UgPSAnaW5pdGlhbGl6ZS1hZGQtaW4taW5zdGFuY2UnLFxuXG4gICAgLy8gRW5hYmxlcyBvciBkaXNhYmxlIGphdmFzY3JpcHQgZGVidWdnaW5nIG9mIGFuIGFkZC1pbi5cbiAgICBTZXRBZGRJbkpzRGVidWdnaW5nRW5hYmxlZCA9ICdzZXQtYWRkLWluLWpzLWRlYnVnZ2luZy1lbmFibGVkJyxcblxuICAgIC8vIFdoZXRoZXIgb3Igbm90IHdlIHNob3VsZCBwYXVzZSBiZWZvcmUgbG9hZGluZy4gSWYgbWlzc2luZywgdG9nZ2xlIHRoZSB2YWx1ZVxuICAgIFNldFBhdXNlQmVmb3JlTG9hZGluZ0FkZEluID0gJ3NldC1wYXVzZS1iZWZvcmUtbG9hZGluZy1hZGQtaW4nLFxuXG4gICAgLy8gUmVsb2FkcyB0aGUgQWRkLUluIHdpZGdldCBhbmQgd2ViIHBhZ2UuXG4gICAgUmVsb2FkQWRkSW4gPSAncmVsb2FkLWFkZC1pbicsXG5cbiAgICAvLyBSZXRyaWV2ZXMgdGhlIGNvbnRleHQgbWVudSBmb3IgYSBkYXNoYm9hcmQgYWRkLWluLlxuICAgIEdldEFkZEluWm9uZUNvbnRleHRNZW51ID0gJ2dldC1hZGQtaW4tem9uZS1jb250ZXh0LW1lbnUnLFxuXG4gICAgLy8gR2V0cyB0aGUgcHJlcyBtb2RlbCB3aGljaCBpbmRpY2F0ZXMgd2hhdCB0aGUgZGVidWcgc2V0dGluZ3MgZm9yIGFkZC1pbnMgaXMuXG4gICAgR2V0QWRkSW5EZWJ1Z1NldHRpbmdzUHJlc01vZGVsID0gJ2dldC1hZGQtaW4tZGVidWctc2V0dGluZ3MtcHJlcy1tb2RlbCcsXG5cbiAgICAvLyBQcmltYXJ5IHVzZSBpcyBmb3IgYnVpbGRpbmcgY29udGV4dCBtZW51c1xuICAgIElzU2VsZWN0aW9uQW5FZGl0YWJsZVBhcmFtZXRlciA9ICdpcy1zZWxlY3Rpb24tYW4tZWRpdGFibGUtcGFyYW1ldGVyJyxcblxuICAgIC8vIENoZWNrIGlmIHNlbGVjdGlvbiBjYW4gYmUgdXNlZCBhcyBiYXNlIGZvciBjcmVhdGluZyBhIG5ldyBwYXJhbWV0ZXIuIFByaW1hcnkgdXNlIGlzIGZvciBidWlsZGluZyBjb250ZXh0IG1lbnVzXG4gICAgR2V0Q3JlYXRlUGFyYW1ldGVyU3RhdGUgPSAnZ2V0LWNyZWF0ZS1wYXJhbWV0ZXItc3RhdGUnLFxuXG4gICAgLy8gVXNlcyBFZGl0UGFyYW1ldGVyIHRvIGdldCBhbmQgcmV0dXJuIGluZm8gYWJvdXQgdGhlIHByZXNtb2RlbCB3aXRob3V0IG1haW50YWluaW5nIHRoZSBjb250cm9sbGVyXG4gICAgR2V0UGFyYW1ldGVyRWRpdEluZm8gPSAnZ2V0LXBhcmFtZXRlci1lZGl0LWluZm8nLFxuXG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgY29udHJvbGxlciBhbmQgaXRzIHN0b3JlZCBwYXJhbWV0ZXIgdGhlbiByZXR1cm4gYSBwb3B1bGF0ZWQgcHJlc21vZGVsXG4gICAgQ3JlYXRlUGFyYW1ldGVyID0gJ2NyZWF0ZS1wYXJhbWV0ZXInLFxuXG4gICAgLy8gU2FtZSB1bmRlcmx5aW5nIGxvZ2ljIGFzIENyZWF0ZVBhcmFtZXRlciBidXQgZWRpdHMgcmF0aGVyIHRoYW4gY3JlYXRpbmcgYSBuZXcgcGFyYW1ldGVyXG4gICAgRWRpdFBhcmFtZXRlcl9OZXcgPSAnZWRpdC1wYXJhbWV0ZXItbmV3JyxcblxuICAgIC8vIEFkZCBhIG1lbWJlciBvZiBhIHBhcmFtZXRlciBkb21haW4uIENoYW5nZXMgYXJlIGFwcGxpZWQgdG8gaW50ZXJtZWRpYXRlIHN0YXRlIGFuZCBzYXZlZCBvbiBjb21taXRcbiAgICBBZGRQYXJhbWV0ZXJNZW1iZXIgPSAnYWRkLXBhcmFtZXRlci1tZW1iZXInLFxuXG4gICAgLy8gRWRpdCBhIG1lbWJlciBvZiBhIHBhcmFtZXRlciBkb21haW4uIENoYW5nZXMgYXJlIGFwcGxpZWQgdG8gaW50ZXJtZWRpYXRlIHN0YXRlIGFuZCBzYXZlZCBvbiBjb21taXRcbiAgICBFZGl0UGFyYW1ldGVyTWVtYmVyID0gJ2VkaXQtcGFyYW1ldGVyLW1lbWJlcicsXG5cbiAgICAvLyBEZWxldGUgYSBzZXJpZXMgb2YgcmFuZ2VzIG9mIG1lbWJlcnMgZnJvbSB0aGUgcGFyYW1ldGVyIGxpc3QuXG4gICAgRGVsZXRlUGFyYW1ldGVyTWVtYmVycyA9ICdkZWxldGUtcGFyYW1ldGVyLW1lbWJlcnMnLFxuXG4gICAgLy8gQ29weSBhIHNlcmllcyBvZiByYW5nZXMgb2YgbWVtYmVycyBvZiBhIHBhcmFtZXRlciBsaXN0XG4gICAgQ29weVBhcmFtZXRlck1lbWJlcnMgPSAnY29weS1wYXJhbWV0ZXItbWVtYmVycycsXG5cbiAgICAvLyBNb3ZlIGEgc2VyaWVzIG9mIHJhbmdlcyBvZiBtZW1iZXJzIG9mIGEgcGFyYW1ldGVyIGxpc3RcbiAgICBNb3ZlUGFyYW1ldGVyTWVtYmVycyA9ICdtb3ZlLXBhcmFtZXRlci1tZW1iZXJzJyxcblxuICAgIC8vIENoYW5nZSBkb21haW4gb2YgYSBwYXJhbWV0ZXIuIENoYW5nZXMgYXJlIGFwcGxpZWQgdG8gaW50ZXJtZWRpYXRlIHN0YXRlIGFuZCBzYXZlZCBvbiBjb21taXRcbiAgICBFZGl0UGFyYW1ldGVyRG9tYWluVHlwZSA9ICdlZGl0LXBhcmFtZXRlci1kb21haW4tdHlwZScsXG5cbiAgICAvLyBDaGFuZ2UgZGF0YXR5cGUgb2YgYSBwYXJhbWV0ZXIuIENoYW5nZXMgYXJlIGFwcGxpZWQgdG8gaW50ZXJtZWRpYXRlIHN0YXRlIGFuZCBzYXZlZCBvbiBjb21taXRcbiAgICBFZGl0UGFyYW1ldGVyRGF0YVR5cGUgPSAnZWRpdC1wYXJhbWV0ZXItZGF0YS10eXBlJyxcblxuICAgIC8vIENoYW5nZSBkaXNwbGF5IGZvcm1hdCBvZiBhIHBhcmFtZXRlci4gQ2hhbmdlcyBhcmUgYXBwbGllZCB0byBpbnRlcm1lZGlhdGUgc3RhdGUgYW5kIHNhdmVkIG9uIGNvbW1pdFxuICAgIEVkaXRQYXJhbWV0ZXJGb3JtYXQgPSAnZWRpdC1wYXJhbWV0ZXItZm9ybWF0JyxcblxuICAgIC8vIFZhbGlkYXRlIGNoYW5nZXMgdG8gYSBwYXJhbWV0ZXIncyByYW5nZSBkb21haW4gYW5kIGFwcGx5IHRvIGludGVybWVkaWF0ZSBzdGF0ZS4gQ2hhbmdlcyBhcmUgc2F2ZWQgb24gY29tbWl0XG4gICAgRWRpdFBhcmFtZXRlclJhbmdlID0gJ2VkaXQtcGFyYW1ldGVyLXJhbmdlJyxcblxuICAgIC8vIEVkaXQgdGhlIHZhbHVlIG9mIGEgbm9uLWxpc3QgZG9tYWluIHBhcmFtZXRlclxuICAgIEVkaXRQYXJhbWV0ZXJWYWx1ZSA9ICdlZGl0LXBhcmFtZXRlci12YWx1ZScsXG5cbiAgICAvLyBFZGl0IHRoZSB2YWx1ZSBvZiBhIGxpc3QgZG9tYWluIHBhcmFtZXRlclxuICAgIEVkaXRQYXJhbWV0ZXJWYWx1ZUluZGV4ID0gJ2VkaXQtcGFyYW1ldGVyLXZhbHVlLWluZGV4JyxcblxuICAgIC8vIFVwZGF0ZSB0aGUgcGFyYW1ldGVyIGNhcHRpb24gYW5kIGRlc2NyaXB0aW9uIC0gdXNlZCB0byBrZWVwIGJhY2tlbmQgaW4gc3luYy4gTm8gdmVyaWZpY2F0aW9uL3JldHVybiBpcyByZXF1cmllZC5cbiAgICBFZGl0UGFyYW1ldGVyRGlzcGxheUluZm8gPSAnZWRpdC1wYXJhbWV0ZXItZGlzcGxheS1pbmZvJyxcblxuICAgIC8vIFVwZGF0ZSB0aGUgZG9tYWluIG9mIHRoZSBwYXJhbWV0ZXIgdXNpbmcgYSBmaWVsZCAoY29sdW1uIG9yIHBhcmFtZXRlcikgYXMgYSBiYXNlXG4gICAgVXBkYXRlUGFyYW1ldGVyRnJvbUZpZWxkID0gJ3VwZGF0ZS1wYXJhbWV0ZXItZnJvbS1maWVsZCcsXG5cbiAgICAvLyBVcGRhdGUgdGhlIGxpc3QgZG9tYWluIG9mIGEgcGFyYW1ldGVyIGZyb20gYSBwbGFpbiB0ZXh0IHJlcHJlc2VudGF0aW9uIG9mIHZhbHVlc1xuICAgIFBhcnNlUGFyYW1ldGVyTGlzdERvbWFpbiA9ICdwYXJzZS1wYXJhbWV0ZXItbGlzdC1kb21haW4nLFxuXG4gICAgLy8gQ2xlYXJzIHRoZSBwYXJhbWV0ZXIncyBkb21haW4gb2YgYWxsIG1lbWJlcnNcbiAgICBDbGVhclBhcmFtZXRlckxpc3REb21haW4gPSAnY2xlYXItcGFyYW1ldGVyLWxpc3QtZG9tYWluJyxcblxuICAgIC8vIENyZWF0ZXMgb3IgZWRpdHMgcGFyYW1ldGVyIGZyb20gaW50ZXJtZWRpYXRlIHN0YXRlLiBUYWtlcyBhIGZldyBwcm9wZXJ0aWVzIHRoYXQgYXJlIGNhY2hlZCBpbiBkaWFsb2cgYW5kIGFwcGxpZXMgdGhlbSBwcmUtY29tbWl0LlxuICAgIENvbW1pdFBhcmFtZXRlckVkaXRzID0gJ2NvbW1pdC1wYXJhbWV0ZXItZWRpdHMnLFxuXG4gICAgLy8gR2V0cyB0aGUgbW9kZWwgZm9yIGEgcGFydGljdWxhciBwYXJhbWV0ZXIgb3IgcmV0dXJucyBhbiBlbXB0eSByZXNwb25zZSBpZiBvbmUgaXMgbm90IGZvdW5kLlxuICAgIEZpbmRQYXJhbWV0ZXJNb2RlbCA9ICdmaW5kLXBhcmFtZXRlci1tb2RlbCcsXG5cbiAgICAvLyBHZXRzIHRoZSBwcmVzIG1vZGVsIGZvciB0aGUgc2hvdyBkYXRhIGRpYWxvZ1xuICAgIEdldFNob3dEYXRhUHJlc01vZGVsID0gJ2dldC1zaG93LWRhdGEtcHJlcy1tb2RlbCcsXG5cbiAgICAvLyBFeHBvcnQgdW5kZXJseWluZyBkYXRhIGZyb20gdGhlIFNob3dEYXRhRGlhbG9nIHRvIGEgQ1NWIGZpbGVcbiAgICBTaG93RGF0YUV4cG9ydFRvQ1NWID0gJ3Nob3ctZGF0YS1leHBvcnQtdG8tY3N2JyxcblxuICAgIC8vIEdldHMgdGhlIHN1bW1hcnkgZGF0YSBmb3IgYSB3b3Jrc2hlZXRcbiAgICBHZXRTdW1tYXJ5RGF0YSA9ICdnZXQtc3VtbWFyeS1kYXRhJyxcblxuICAgIC8vIEdldHMgdGhlIHVuZGVybHlpbmcgZGF0YSBmb3IgYSB3b3Jrc2hlZXRcbiAgICBHZXRVbmRlcmx5aW5nRGF0YSA9ICdnZXQtdW5kZXJseWluZy1kYXRhJyxcblxuICAgIC8vIEdldHMgdGhlIHVuZGVybHlpbmcgZGF0YSBmb3IgYSBzcGVjaWZpYyBkYXRhIHNvdXJjZS5cbiAgICBHZXREYXRhU291cmNlRGF0YSA9ICdnZXQtZGF0YS1zb3VyY2UtZGF0YScsXG5cbiAgICAvLyBTZWxlY3QgYWxsIG1hcmtzIHRoYXQgaGF2ZSB0aGUgdHVwbGUncyB2YWx1ZSBmb3IgdGhlIGdpdmVuIGZpZWxkIC5cbiAgICBTZWxlY3RCeVR1cGxlVmFsdWUgPSAnc2VsZWN0LWJ5LXR1cGxlLXZhbHVlJyxcblxuICAgIC8vIENsZWFyIGFsbCB0aGUgc2VsZWN0ZWQgbWFya3MgZm9yIHRoZSBnaXZlbiB3b3Jrc2hlZXRcbiAgICBDbGVhclNlbGVjdGVkTWFya3MgPSAnY2xlYXItc2VsZWN0ZWQtbWFya3MnLFxuXG4gICAgLy8gQ3JlYXRlcyBvciB1cGRhdGVzIGFuZCBleGlzdGluZyBmaWx0ZXIgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHVwZGF0ZXMuXG4gICAgQXBwbHlDYXRlZ29yaWNhbEZpbHRlclVwZGF0ZXMgPSAnYXBwbHktY2F0ZWdvcmljYWwtZmlsdGVyLXVwZGF0ZXMnLFxuXG4gICAgLy8gU2VhcmNoIGZpbHRlciBkb21haW4gZm9yIHRleHQgYW5kIHJldHVybiBhbnkgbWF0Y2hpbmcgdHVwbGVzLlxuICAgIENhdGVnb3JpY2FsRmlsdGVyU2VhcmNoID0gJ2NhdGVnb3JpY2FsLWZpbHRlci1zZWFyY2gnLFxuXG4gICAgLy8gQ2xlYXIgYWxsIG1lbWJlcnMgZnJvbSB0aGUgdGFibGUgb2YgdGhlIGlkZW50aWZpZWQgY2FjaGUuXG4gICAgQ2F0ZWdvcmljYWxGaWx0ZXJDbGVhclJlbGF0aW9uYWxDYWNoZSA9ICdjYXRlZ29yaWNhbC1maWx0ZXItY2xlYXItcmVsYXRpb25hbC1jYWNoZScsXG5cbiAgICAvLyBDcmVhdGUgdHVwbGVzIGZvciBhbiBleGlzdGluZyBmaWx0ZXIgZnJvbSBzdXBwbGllZCB0ZXh0LlxuICAgIEdldENhdGVnb3JpY2FsRmlsdGVyVHVwbGVzRnJvbVRleHQgPSAnZ2V0LWNhdGVnb3JpY2FsLWZpbHRlci10dXBsZXMtZnJvbS10ZXh0JyxcblxuICAgIC8vIFJldHVybnMgYSBwcmVzbW9kZWwgYmFja2luZyBhIGNhdGVnb3JpY2FsIGZpbHRlciwgaW5pdGlhbGl6aW5nIGEgZGF0YSBjYWNoZSBmb3IgZmFzdCBsb29rdXAgb2YgdGhlIGZpbHRlcidzIG1lbWJlciBkb21haW4uXG4gICAgR2V0Q2F0ZWdvcmljYWxGaWx0ZXIgPSAnZ2V0LWNhdGVnb3JpY2FsLWZpbHRlcicsXG5cbiAgICAvLyBSZXRyaWV2ZXMgYSBwYWdlIG9mIGRhdGEgdG8gZGlzcGxheSBpbiB0aGUgZmlsdGVyJ3MgbGlzdCBkb21haW5cbiAgICBHZXRDYXRlZ29yaWNhbEZpbHRlckRvbWFpblBhZ2UgPSAnZ2V0LWNhdGVnb3JpY2FsLWZpbHRlci1kb21haW4tcGFnZScsXG5cbiAgICAvLyBSZXNldCBmaWx0ZXIgdG8gY29tbWl0dGVkIHN0YXRlXG4gICAgUmVzZXRDYXRlZ29yaWNhbEZpbHRlckRlZmVycmVkID0gJ3Jlc2V0LWNhdGVnb3JpY2FsLWZpbHRlci1kZWZlcnJlZCcsXG5cbiAgICAvLyBVc2UgdW5jb21taXR0ZWQgc3RhdGUgdG8gcmVzZXQgdGhlIGZpbHRlcidzIGNvbnRyb2xsZXJcbiAgICBSZWNyZWF0ZUNhdGVnb3JpY2FsRmlsdGVyQ29udHJvbGxlciA9ICdyZWNyZWF0ZS1jYXRlZ29yaWNhbC1maWx0ZXItY29udHJvbGxlcicsXG5cbiAgICAvLyBWYWxpZGF0ZXMgYSBDYXRlZ3JvaWNhbCBGaWx0ZXIgbmFtZS5cbiAgICBWYWxpZGF0ZUNhdGVnb3JpY2FsRmlsdGVyTmFtZSA9ICd2YWxpZGF0ZS1jYXRlZ29yaWNhbC1maWx0ZXItbmFtZScsXG5cbiAgICAvLyBHZXRzIGEgc3VtbWFyeSBvZiB0aGUgZmlsdGVyIHBhdHRlcm4uXG4gICAgR2V0Q2F0ZWdvcmljYWxGaWx0ZXJQYXR0ZXJuU3VtbWFyeSA9ICdnZXQtY2F0ZWdvcmljYWwtZmlsdGVyLXBhdHRlcm4tc3VtbWFyeScsXG5cbiAgICAvLyBHZXRzIGEgc3VtbWVyeSBvZiB0aGUgZmlsdGVyIGNvbmRpdGlvbi5cbiAgICBHZXRDYXRlZ29yaWNhbEZpbHRlckNvbmRpdGlvblN1bW1hcnkgPSAnZ2V0LWNhdGVnb3JpY2FsLWZpbHRlci1jb25kaXRpb24tc3VtbWFyeScsXG5cbiAgICAvLyBMb2FkIHRoZSBjdXJyZW50IG1pbmltdW0gYW5kIG1heGltdW0gZGF0YSB2YWx1ZSByYW5nZSBmb3IgdGhlIGNvbmRpdGlvbiBmaWVsZC5cbiAgICBMb2FkQ2F0ZWdvcmljYWxGaWx0ZXJDb25kaXRpb25GaWVsZFZhbHVlUmFuZ2UgPSAnbG9hZC1jYXRlZ29yaWNhbC1maWx0ZXItY29uZGl0aW9uLWZpZWxkLXZhbHVlLXJhbmdlJyxcblxuICAgIC8vIFZhbGlkYXRlcyBhIENhdGVnb3JpY2FsIEZpbHRlcidzIGNvbmRpdGlvbiBmb3JtdWxhIGFuZCByZS13cml0ZXMgaXQuXG4gICAgVmFsaWRhdGVDYXRlZ29yaWNhbEZpbHRlckNvbmRpdGlvbkZvcm11bGEgPSAndmFsaWRhdGUtY2F0ZWdvcmljYWwtZmlsdGVyLWNvbmRpdGlvbi1mb3JtdWxhJyxcblxuICAgIC8vIEdldHMgYSBzdW1tZXJ5IG9mIHRoZSBmaWx0ZXIgbGltaXQuXG4gICAgR2V0Q2F0ZWdvcmljYWxGaWx0ZXJMaW1pdFN1bW1hcnkgPSAnZ2V0LWNhdGVnb3JpY2FsLWZpbHRlci1saW1pdC1zdW1tYXJ5JyxcblxuICAgIC8vIFZhbGlkYXRlcyBhIENhdGVnb3JpY2FsIEZpbHRlcidzIGxpbWl0IGNvdW50LlxuICAgIFZhbGlkYXRlQ2F0ZWdvcmljYWxGaWx0ZXJMaW1pdENvdW50ID0gJ3ZhbGlkYXRlLWNhdGVnb3JpY2FsLWZpbHRlci1saW1pdC1jb3VudCcsXG5cbiAgICAvLyBWYWxpZGF0ZXMgYSBDYXRlZ29yaWNhbCBGaWx0ZXIncyBsaW1pdCBmb3JtdWxhLCBhbmQgcmUtd3JpdGVzIHRoZSBmb3JtdWxhLlxuICAgIFZhbGlkYXRlQ2F0ZWdvcmljYWxGaWx0ZXJMaW1pdEZvcm11bGEgPSAndmFsaWRhdGUtY2F0ZWdvcmljYWwtZmlsdGVyLWxpbWl0LWZvcm11bGEnLFxuXG4gICAgLy8gVmFsaWRhdGVzIGEgQ2F0ZWdvcmljYWwgRmlsdGVyJ3MgbGltaXQuXG4gICAgVmFsaWRhdGVDYXRlZ29yaWNhbEZpbHRlckxpbWl0ID0gJ3ZhbGlkYXRlLWNhdGVnb3JpY2FsLWZpbHRlci1saW1pdCcsXG5cbiAgICAvLyBJbmZvcm0gY2FjaGUgd2hlbiBhIHVzZXIgY2hhbmdlcyB0aGUgcmFuZ2VcbiAgICBDYXRlZ29yaWNhbEZpbHRlclNldFJhbmdlVHlwZURlZmVycmVkID0gJ2NhdGVnb3JpY2FsLWZpbHRlci1zZXQtcmFuZ2UtdHlwZS1kZWZlcnJlZCcsXG5cbiAgICAvLyBJbmZvcm0gY2FjaGUgd2hlbiBhIHVzZXIgY2hhbmdlcyB3aGV0aGVyIHRoZSBzZWxlY3Rpb24gaXMgZXhjbHVzaXZlXG4gICAgQ2F0ZWdvcmljYWxGaWx0ZXJTZXRTZWxlY3Rpb25FeGNsdXNpdmVEZWZlcnJlZCA9ICdjYXRlZ29yaWNhbC1maWx0ZXItc2V0LXNlbGVjdGlvbi1leGNsdXNpdmUtZGVmZXJyZWQnLFxuXG4gICAgLy8gSW5mb3JtIGNhY2hlIHdoZW4gYSB1c2VyIGNoYW5nZXMgd2hldGhlciBhbiBlbXB0eSBzZWxlY3Rpb24gc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSBzZWxlY3Rpb24gb2YgJ0FsbCcgaW4gYSBNYW51YWwgc2VsZWN0aW9uIG1vZGVcbiAgICBDYXRlZ29yaWNhbEZpbHRlclNldFVzZUFsbFdoZW5NYW51YWxJc0VtcHR5RGVmZXJyZWQgPSAnY2F0ZWdvcmljYWwtZmlsdGVyLXNldC11c2UtYWxsLXdoZW4tbWFudWFsLWlzLWVtcHR5LWRlZmVycmVkJyxcblxuICAgIC8vIEluZm9ybSBjYWNoZSB3aGVuIGEgdXNlciBhbHRlcnMgdGhlIHByZXNldCB0eXBlXG4gICAgQ2F0ZWdvcmljYWxGaWx0ZXJTZXRQcmVzZXRUeXBlRGVmZXJyZWQgPSAnY2F0ZWdvcmljYWwtZmlsdGVyLXNldC1wcmVzZXQtdHlwZS1kZWZlcnJlZCcsXG5cbiAgICAvLyBJbmZvcm0gY2FjaGUgdGhlIHVzZXIgaGFzIHNlbGVjdGVkIG9uZSBvciBtb3JlIG1lbWJlcnNcbiAgICBDYXRlZ29yaWNhbEZpbHRlclNlbGVjdFJlbGF0aW9uYWxNZW1iZXJzRGVmZXJyZWQgPSAnY2F0ZWdvcmljYWwtZmlsdGVyLXNlbGVjdC1yZWxhdGlvbmFsLW1lbWJlcnMtZGVmZXJyZWQnLFxuXG4gICAgLy8gSW5mb3JtIGNhY2hlIHRoZSB1c2VyIGhhcyBkZXNlbGVjdGVkIG9uZSBvciBtb3JlIG1lbWJlcnNcbiAgICBDYXRlZ29yaWNhbEZpbHRlckRlc2VsZWN0UmVsYXRpb25hbE1lbWJlcnNEZWZlcnJlZCA9ICdjYXRlZ29yaWNhbC1maWx0ZXItZGVzZWxlY3QtcmVsYXRpb25hbC1tZW1iZXJzLWRlZmVycmVkJyxcblxuICAgIC8vIEluZm9ybSBjYWNoZSB3aGVuIGEgdXNlciBzZWxlY3RzIGV2ZXJ5dGhpbmcgaW4gdGhlIGRvbWFpblxuICAgIENhdGVnb3JpY2FsRmlsdGVyU2VsZWN0QWxsUmVsYXRpb25hbE1lbWJlcnNEZWZlcnJlZCA9ICdjYXRlZ29yaWNhbC1maWx0ZXItc2VsZWN0LWFsbC1yZWxhdGlvbmFsLW1lbWJlcnMtZGVmZXJyZWQnLFxuXG4gICAgLy8gSW5mb3JtIGNhY2hlIHdoZW4gYSB1c2VyIGRlc2VsZWN0cyBldmVyeXRoaW5nIGluIHRoZSBkb21haW5cbiAgICBDYXRlZ29yaWNhbEZpbHRlckRlc2VsZWN0QWxsUmVsYXRpb25hbE1lbWJlcnNEZWZlcnJlZCA9ICdjYXRlZ29yaWNhbC1maWx0ZXItZGVzZWxlY3QtYWxsLXJlbGF0aW9uYWwtbWVtYmVycy1kZWZlcnJlZCcsXG5cbiAgICAvLyBJbmZvcm0gY2FjaGUgdGhlIHVzZXIgd2FudHMgdG8gc2VlIGEgZGlmZmVyZW50IGRvbWFpbiAoZS5nLiByZWxldmFudCB2YWx1ZXMgb25seSlcbiAgICBDYXRlZ29yaWNhbEZpbHRlclNldERvbWFpblR5cGVEZWZlcnJlZCA9ICdjYXRlZ29yaWNhbC1maWx0ZXItc2V0LWRvbWFpbi10eXBlLWRlZmVycmVkJyxcblxuICAgIC8vIFNldCB3aGV0aGVyIGZpbHRlcnMgYXBwbHkgdG8gdG90YWxzIGFzIHdlbGwgYXMgbm9uLXRvdGFscyB0YWJsZSBjYWxjc1xuICAgIEZpbHRlckFwcGx5VG9Ub3RhbFRhYmxlQ2FsY3MgPSAnZmlsdGVyLWFwcGx5LXRvLXRvdGFsLXRhYmxlLWNhbGNzJyxcblxuICAgIC8vIEdldHMgdGhlIGxpc3Qgb2YgZmlsdGVycyB1c2VkIGluIGEgd29ya3NoZWV0XG4gICAgR2V0V29ya3NoZWV0RmlsdGVycyA9ICdnZXQtd29ya3NoZWV0LWZpbHRlcnMnLFxuXG4gICAgLy8gR2V0cyB0aGUgZG9tYWluIGZvciBhIGNhdGVnb3JpY2FsIEZpbHRlclxuICAgIEdldENhdGVnb3JpY2FsRG9tYWluID0gJ2dldC1jYXRlZ29yaWNhbC1kb21haW4nLFxuXG4gICAgLy8gR2V0cyB0aGUgZG9tYWluIGZvciBhIHF1YW50aXRhdGl2ZSBGaWx0ZXJcbiAgICBHZXRRdWFudGl0YXRpdmVEb21haW4gPSAnZ2V0LXF1YW50aXRhdGl2ZS1kb21haW4nLFxuXG5cbiAgICAvLyBcbiAgICBHZXRIaWdobGlnaHRlZERhdGEgPSAnZ2V0LWhpZ2hsaWdodGVkLWRhdGEnLFxuXG4gICAgLy8gXG4gICAgR2V0U2VsZWN0aW9uRGF0YSA9ICdnZXQtc2VsZWN0aW9uJyxcblxuICAgIC8vIFxuICAgIFNlbGVjdCA9ICdzZWxlY3QnLFxuXG4gICAgLy8gXG4gICAgU2VsZWN0QWxsID0gJ3NlbGVjdC1hbGwnLFxuXG4gICAgLy8gXG4gICAgU2VsZWN0QnlWYWx1ZSA9ICdzZWxlY3QtYnktdmFsdWUnLFxuXG4gICAgLy8gXG4gICAgU2VsZWN0Tm9uZUluY2x1ZGluZ01hc3RlciA9ICdzZWxlY3Qtbm9uZS1pbmNsdWRpbmctbWFzdGVyJyxcblxuICAgIC8vIFxuICAgIEFkZE1hbnVhbEl0ZW1zVG9GaWx0ZXIgPSAnYWRkLW1hbnVhbC1pdGVtcy10by1maWx0ZXInLFxuXG4gICAgLy8gXG4gICAgQ2F0ZWdvcmljYWxGaWx0ZXIgPSAnY2F0ZWdvcmljYWwtZmlsdGVyJyxcblxuICAgIC8vIFxuICAgIENhdGVnb3JpY2FsRmlsdGVyQnlJbmRleCA9ICdjYXRlZ29yaWNhbC1maWx0ZXItYnktaW5kZXgnLFxuXG4gICAgLy8gXG4gICAgQ2hhbmdlU2hhcmVkRmlsdGVyID0gJ2NoYW5nZS1zaGFyZWQtZmlsdGVyJyxcblxuICAgIC8vIFxuICAgIENsZWFyQ29udGV4dEZpbHRlcnMgPSAnY2xlYXItY29udGV4dC1maWx0ZXJzJyxcblxuICAgIC8vIFxuICAgIENsZWFyRXhpc3RpbmdGaWx0ZXIgPSAnY2xlYXItZXhpc3RpbmctZmlsdGVyJyxcblxuICAgIC8vIFxuICAgIERlZmF1bHRGaWx0ZXIgPSAnZGVmYXVsdC1maWx0ZXInLFxuXG4gICAgLy8gXG4gICAgRmlsdGVyR2VvID0gJ2ZpbHRlci1nZW8nLFxuXG4gICAgLy8gXG4gICAgRmlsdGVyTmVnID0gJ2ZpbHRlci1uZWcnLFxuXG4gICAgLy8gXG4gICAgRmlsdGVyTnVsbHMgPSAnZmlsdGVyLW51bGxzJyxcblxuICAgIC8vIFxuICAgIEZpbHRlclRhcmdldHMgPSAnZmlsdGVyLXRhcmdldHMnLFxuXG4gICAgLy8gXG4gICAgR2V0U2hhcmVkRmlsdGVyUHJlc01vZGVsID0gJ2dldC1zaGFyZWQtZmlsdGVyLXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgSGllcmFyY2hpY2FsRmlsdGVyID0gJ2hpZXJhcmNoaWNhbC1maWx0ZXInLFxuXG4gICAgLy8gXG4gICAgS2VlcE9ubHlPckV4Y2x1ZGUgPSAna2VlcC1vbmx5LW9yLWV4Y2x1ZGUnLFxuXG4gICAgLy8gXG4gICAgUmFuZ2VGaWx0ZXIgPSAncmFuZ2UtZmlsdGVyJyxcblxuICAgIC8vIFxuICAgIFJlbERhdGVGaWx0ZXIgPSAncmVsYXRpdmUtZGF0ZS1maWx0ZXInLFxuXG4gICAgLy8gXG4gICAgUmVzZXRGaWx0ZXIgPSAncmVzZXQtZmlsdGVyJyxcblxuICAgIC8vIFxuICAgIFNob3dHZW9BdERlZmF1bHQgPSAnc2hvdy1nZW8tYXQtZGVmYXVsdCcsXG5cbiAgICAvLyBcbiAgICBTaG93U1ZBdERlZmF1bHQgPSAnc2hvdy1zdi1hdC1kZWZhdWx0JyxcblxuICAgIC8vIFxuICAgIFRvZ2dsZUxvY2tRdWlja0ZpbHRlcnMgPSAndG9nZ2xlLWxvY2stcXVpY2stZmlsdGVycycsXG5cbiAgICAvLyBcbiAgICBBZGREYXRhQ29ubmVjdGlvbiA9ICdhZGQtZGF0YS1jb25uZWN0aW9uJyxcblxuICAgIC8vIFxuICAgIEFkZERyaWxsUGF0aCA9ICdhZGQtZHJpbGwtcGF0aCcsXG5cbiAgICAvLyBcbiAgICBBZGRDcmVkZW50aWFsc0Zyb21LZXljaGFpbiA9ICdhZGQtY3JlZGVudGlhbHMtZnJvbS1rZXljaGFpbicsXG5cbiAgICAvLyBcbiAgICBBZGRDcmVkZW50aWFsc0Zyb21LZXljaGFpbkZpbGUgPSAnYWRkLWNyZWRlbnRpYWxzLWZyb20ta2V5Y2hhaW4tZmlsZScsXG5cbiAgICAvLyBcbiAgICBBZGRGaWVsZEZvbGRlciA9ICdhZGQtZmllbGQtZm9sZGVyJyxcblxuICAgIC8vIFxuICAgIEFkZFN1YnRvdGFscyA9ICdhZGQtc3VidG90YWxzJyxcblxuICAgIC8vIFxuICAgIEFkZFRvRHJpbGxQYXRoID0gJ2FkZC10by1kcmlsbC1wYXRoJyxcblxuICAgIC8vIFxuICAgIEFkZFRvRmllbGRGb2xkZXIgPSAnYWRkLXRvLWZpZWxkLWZvbGRlcicsXG5cbiAgICAvLyBcbiAgICBBZ2dyZWdhdGVNZWFzdXJlc0ZsYWcgPSAnYWdncmVnYXRlLW1lYXN1cmVzJyxcblxuICAgIC8vIFxuICAgIEFwcGx5Q2FsY3VsYXRpb24gPSAnYXBwbHktY2FsY3VsYXRpb24nLFxuXG4gICAgLy8gXG4gICAgQXBwbHlQYWdlU2V0dXBPcHRpb25zID0gJ2FwcGx5LXBhZ2Utc2V0dXAtb3B0aW9ucycsXG5cbiAgICAvLyBcbiAgICBBcHBseVRhYmxlT3B0aW9ucyA9ICdhcHBseS10YWJsZS1vcHRpb25zJyxcblxuICAgIC8vIFxuICAgIEFwcGx5VHlwZUluUGlsbCA9ICdhcHBseS10eXBlLWluLXBpbGwnLFxuXG4gICAgLy8gXG4gICAgQXNzZXJ0ID0gJ2Fzc2VydCcsXG5cbiAgICAvLyBcbiAgICBBdHRlbXB0Q29ubmVjdERhdGFTb3VyY2VzT25TaGVldCA9ICdhdHRlbXB0LWNvbm5lY3QtZGF0YXNvdXJjZXMtb24tc2hlZXQnLFxuXG4gICAgLy8gXG4gICAgQXR0ZW1wdENvbm5lY3RXb3JrYm9vayA9ICdhdHRlbXB0LWNvbm5lY3Qtd29ya2Jvb2snLFxuXG4gICAgLy8gXG4gICAgQXR0ZW1wdERhdGFTb3VyY2VzQ29ubmVjdGlvbiA9ICdhdHRlbXB0LWRhdGFzb3VyY2VzLWNvbm5lY3Rpb24nLFxuXG4gICAgLy8gXG4gICAgQXV0b1VwZGF0ZXMgPSAnYXV0by11cGRhdGUnLFxuXG4gICAgLy8gXG4gICAgQnJ1c2ggPSAnaGlnaGxpZ2h0JyxcblxuICAgIC8vIFxuICAgIEJydXNoU3BlY2lhbCA9ICdoaWdobGlnaHQtc3BlY2lhbCcsXG5cbiAgICAvLyBcbiAgICBCdWlsZERhdGFTY2hlbWFEYXRhU291cmNlQ29udGV4dE1lbnUgPSAnYnVpbGQtZGF0YS1zY2hlbWEtZGF0YS1zb3VyY2UtY29udGV4dC1tZW51JyxcblxuICAgIC8vIFxuICAgIEJ1aWxkRGF0YVNjaGVtYUNvbnRleHRNZW51ID0gJ2J1aWxkLWRhdGEtc2NoZW1hLWNvbnRleHQtbWVudScsXG5cbiAgICAvLyBcbiAgICBCdWlsZERhdGFTY2hlbWFGaWVsZENvbnRleHRNZW51ID0gJ2J1aWxkLWRhdGEtc2NoZW1hLWZpZWxkLWNvbnRleHQtbWVudScsXG5cbiAgICAvLyBcbiAgICBCdWlsZERhdGFTY2hlbWFEcmlsbFBhdGhDb250ZXh0TWVudSA9ICdidWlsZC1kYXRhLXNjaGVtYS1kcmlsbC1wYXRoLWNvbnRleHQtbWVudScsXG5cbiAgICAvLyBcbiAgICBCdWlsZEZpbGVUYWJsZUluZm9QcmVzTW9kZWwgPSAnYnVpbGQtZmlsZS10YWJsZS1pbmZvLXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgQnVpbGRTaGVldFRhYkNvbnRleHRNZW51ID0gJ2J1aWxkLXNoZWV0LXRhYi1jb250ZXh0LW1lbnUnLFxuXG4gICAgLy8gXG4gICAgQ2FuY2VsRGF0YVNvdXJjZVByZXNNb2RlbCA9ICdjYW5jZWwtZGF0YXNvdXJjZS1wcmVzLW1vZGVsJyxcblxuICAgIC8vIFxuICAgIENhdEJpbk1lcmdlU3BsaXRMYWJlbCA9ICdjYXRlZ29yaWNhbC1iaW4tbWVyZ2Utc3BsaXQnLFxuXG4gICAgLy8gXG4gICAgQ2F0ZWdvcmljYWxRdWlja0ZpbHRlckVkaXQgPSAnY2F0ZWdvcmljYWwtcXVpY2stZmlsdGVyLWVkaXQnLFxuXG4gICAgLy8gXG4gICAgQ2F0ZWdvcmljYWxRdWlja0ZpbHRlckV4Y2x1ZGVWYWx1ZXMgPSAnY2F0ZWdvcmljYWwtcXVpY2stZmlsdGVyLWV4Y2x1ZGUtdmFsdWVzJyxcblxuICAgIC8vIFxuICAgIENhdGVnb3JpY2FsUXVpY2tGaWx0ZXJJbmNsdWRlQWxsV2hlbkVtcHR5ID0gJ2NhdGVnb3JpY2FsLXF1aWNrLWZpbHRlci1pbmNsdWRlLWFsbC13aGVuLWVtcHR5JyxcblxuICAgIC8vIFxuICAgIENhdGVnb3JpY2FsUXVpY2tGaWx0ZXJNb2RlID0gJ2NhdGVnb3JpY2FsLXF1aWNrLWZpbHRlci1tb2RlJyxcblxuICAgIC8vIFxuICAgIENhdGVnb3JpY2FsUXVpY2tGaWx0ZXJQYXR0ZXJuID0gJ2NhdGVnb3JpY2FsLXF1aWNrLWZpbHRlci1wYXR0ZXJuJyxcblxuICAgIC8vIFxuICAgIENoYW5nZUFnZ3JlZ2F0aW9uID0gJ2NoYW5nZS1hZ2dyZWdhdGlvbicsXG5cbiAgICAvLyBcbiAgICBDaGFuZ2VBbHBoYUxldmVsID0gJ2NoYW5nZS1hbHBoYS1sZXZlbCcsXG5cbiAgICAvLyBcbiAgICBDaGFuZ2VCb3JkZXIgPSAnY2hhbmdlLWJvcmRlcicsXG5cbiAgICAvLyBcbiAgICBDaGFuZ2VGaWVsZFR5cGUgPSAnY2hhbmdlLWZpZWxkLXR5cGUnLFxuXG4gICAgLy8gXG4gICAgQ2hhbmdlRm9yZWNhc3RDb2x1bW5UeXBlID0gJ2NoYW5nZS1mb3JlY2FzdC1jb2x1bW4tdHlwZScsXG5cbiAgICAvLyBcbiAgICBDaGFuZ2VIYWxvID0gJ2NoYW5nZS1oYWxvJyxcblxuICAgIC8vIFxuICAgIENoYW5nZU1hcmtlcnMgPSAnY2hhbmdlLW1hcmtlcnMnLFxuXG4gICAgLy8gXG4gICAgQ2hhbmdlU2l6ZSA9ICdjaGFuZ2Utc2l6ZScsXG5cbiAgICAvLyBcbiAgICBDaGFuZ2VTaGVldFRhYkNvbG9yID0gJ2NoYW5nZS1zaGVldC10YWItY29sb3InLFxuXG4gICAgLy8gXG4gICAgQ2xlYXJBbGxBeGlzUmFuZ2VzID0gJ2NsZWFyLWF4aXMtcmFuZ2VzJyxcblxuICAgIC8vIFxuICAgIENsZWFyQ2FsY01vZGVsID0gJ2NsZWFyLWNhbGN1bGF0aW9uLW1vZGVsJyxcblxuICAgIC8vIFxuICAgIENsZWFyRmlsdGVycyA9ICdjbGVhci1maWx0ZXJzJyxcblxuICAgIC8vIFxuICAgIENsZWFyRm9ybWF0dGluZyA9ICdjbGVhci1mb3JtYXR0aW5nJyxcblxuICAgIC8vIFxuICAgIENsZWFyRnV0dXJlID0gJ2NsZWFyLWZ1dHVyZScsXG5cbiAgICAvLyBcbiAgICBDbGVhckxheW91dCA9ICdjbGVhci1sYXlvdXQnLFxuXG4gICAgLy8gXG4gICAgQ2xlYXJRdWlja0ZpbHRlciA9ICdjbGVhci1xdWljay1maWx0ZXInLFxuXG4gICAgLy8gXG4gICAgQ2xlYXJTb3J0cyA9ICdjbGVhci1zb3J0cycsXG5cbiAgICAvLyBcbiAgICBDbG9zZUNvbm5lY3Rpb24gPSAnY2xvc2UtY29ubmVjdGlvbicsXG5cbiAgICAvLyBcbiAgICBDbG9zZURhdGFTb3VyY2UgPSAnY2xvc2UtZGF0YS1zb3VyY2UnLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvbkFkZEdvb2dsZUFuYWx5dGljc0RpbWVuc2lvbiA9ICdjb25uZWN0aW9uLWFkZC1nb29nbGUtYW5hbHl0aWNzLWRpbWVuc2lvbicsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uQWRkR29vZ2xlQW5hbHl0aWNzTWVhc3VyZSA9ICdjb25uZWN0aW9uLWFkZC1nb29nbGUtYW5hbHl0aWNzLW1lYXN1cmUnLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvbkFkZE5ld1RhYmxlID0gJ2Nvbm5lY3Rpb24tYWRkLW5ldy10YWJsZScsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uQWRkQ29hbGVzY2UgPSAnY29ubmVjdGlvbi1hZGQtY29hbGVzY2UnLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvbkFkZFBpdm90ID0gJ2Nvbm5lY3Rpb24tYWRkLXBpdm90JyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25Db252ZXJ0VG9VbmlvbkFuZEVkaXQgPSAnY29ubmVjdGlvbi1jb252ZXJ0LXRvLXVuaW9uLWFuZC1lZGl0JyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25Db252ZXJ0VG9VbmlvbiA9ICdjb25uZWN0aW9uLWNvbnZlcnQtdG8tdW5pb24nLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvbkVkaXRVbmlvbiA9ICdjb25uZWN0aW9uLWVkaXQtdW5pb24nLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvbkFkZE9yRWRpdEJhdGNoVW5pb24gPSAnY29ubmVjdGlvbi1hZGQtb3ItZWRpdC1iYXRjaC11bmlvbicsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uQ2hhbmdlVGFibGVQcm9wZXJ0eSA9ICdjb25uZWN0aW9uLWNoYW5nZS10YWJsZS1wcm9wZXJ0eScsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uQ291bnRFbnRpdHkgPSAnY29ubmVjdGlvbi1jb3VudC1lbnRpdHknLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvbkRhdGFTZXJ2ZXJGZXRjaE1vcmVEYXRhc291cmNlcyA9ICdjb25uZWN0aW9uLWRhdGFzZXJ2ZXItZmV0Y2gtbW9yZS1kYXRhc291cmNlcycsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uRGF0YVNlcnZlclByb2plY3RTZWxlY3QgPSAnY29ubmVjdGlvbi1kYXRhc2VydmVyLWNoYW5nZS1zZWxlY3RlZC1wcm9qZWN0JyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25EYXRhU2VydmVyVXBkYXRlRmV0Y2hQYXJhbWV0ZXJzID0gJ2Nvbm5lY3Rpb24tZGF0YXNlcnZlci11cGRhdGUtZmV0Y2gtcGFyYW1ldGVycycsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uRGF0YVNlcnZlckZsdXNoQ2FjaGUgPSAnY29ubmVjdGlvbi1kYXRhc2VydmVyLWZsdXNoLWNhY2hlJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25EZWxldGVBbGxUYWJsZXMgPSAnY29ubmVjdGlvbi1kZWxldGUtYWxsLXRhYmxlcycsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uRGVsZXRlVGFibGUgPSAnY29ubmVjdGlvbi1kZWxldGUtdGFibGUnLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvbkVkaXRDYXB0aW9uID0gJ2Nvbm5lY3Rpb24tZWRpdC1jYXB0aW9uJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25FZGl0R29vZ2xlQW5hbHl0aWNzQWNjb3VudCA9ICdjb25uZWN0aW9uLWVkaXQtZ29vZ2xlLWFuYWx5dGljcy1hY2NvdW50JyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25FZGl0R29vZ2xlQW5hbHl0aWNzRGF0ZVJhbmdlID0gJ2Nvbm5lY3Rpb24tZWRpdC1nb29nbGUtYW5hbHl0aWNzLWRhdGUtcmFuZ2UnLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvbkVkaXRHb29nbGVBbmFseXRpY3NNZWFzdXJlR3JvdXAgPSAnY29ubmVjdGlvbi1lZGl0LWdvb2dsZS1hbmFseXRpY3MtbWVhc3VyZS1ncm91cCcsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uVG9nZ2xlR0FRdWVyeVBhcnRpdGlvbmluZyA9ICdjb25uZWN0aW9uLXRvZ2dsZS1nYS1xdWVyeS1wYXJ0aXRpb25pbmcnLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvbkVkaXRHb29nbGVBbmFseXRpY3NQcm9wZXJ0eSA9ICdjb25uZWN0aW9uLWVkaXQtZ29vZ2xlLWFuYWx5dGljcy1wcm9wZXJ0eScsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uRWRpdEdvb2dsZUFuYWx5dGljc1ZpZXcgPSAnY29ubmVjdGlvbi1lZGl0LWdvb2dsZS1hbmFseXRpY3MtdmlldycsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uRWRpdEdvb2dsZUFuYWx5dGljc1NlZ21lbnQgPSAnY29ubmVjdGlvbi1lZGl0LWdvb2dsZS1hbmFseXRpY3Mtc2VnbWVudCcsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uRWRpdEpvaW5DbGF1c2VzID0gJ2Nvbm5lY3Rpb24tZWRpdC1qb2luLWNsYXVzZXMnLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvbkVkaXRKb2luVHlwZSA9ICdjb25uZWN0aW9uLWVkaXQtam9pbi10eXBlJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25FZGl0U1FMVGV4dCA9ICdjb25uZWN0aW9uLWVkaXQtc3FsLXRleHQnLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvbkZldGNoRW50aXR5ID0gJ2Nvbm5lY3Rpb24tZmV0Y2gtZW50aXR5JyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25TZXRGb3JjZUV4dHJhY3RSZWZyZXNoID0gJ2Nvbm5lY3Rpb24tc2V0LWZvcmNlLWV4dHJhY3QtcmVmcmVzaCcsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uUHJlcGFyZURhdGFTb3VyY2VGb3JFZGl0ID0gJ2Nvbm5lY3Rpb24tcHJlcGFyZS1kYXRhc291cmNlLWZvci1lZGl0JyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25DbGVhclJlZnJlc2hBdHRyaWJ1dGVzID0gJ2Nvbm5lY3Rpb24tY2xlYXItcmVmcmVzaC1hdHRyaWJ1dGVzJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25SZW1vdmVHb29nbGVBbmFseXRpY3NEaW1lbnNpb24gPSAnY29ubmVjdGlvbi1yZW1vdmUtZ29vZ2xlLWFuYWx5dGljcy1kaW1lbnNpb24nLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvblJlbW92ZUdvb2dsZUFuYWx5dGljc01lYXN1cmUgPSAnY29ubmVjdGlvbi1yZW1vdmUtZ29vZ2xlLWFuYWx5dGljcy1tZWFzdXJlJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25SZW1vdmVDb2FsZXNjZSA9ICdjb25uZWN0aW9uLXJlbW92ZS1jb2FsZXNjZScsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uUmVtb3ZlUGl2b3QgPSAnY29ubmVjdGlvbi1yZW1vdmUtcGl2b3QnLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvbkFkZERhdGVQYXJzZUZvcm1hdHMgPSAnY29ubmVjdGlvbi1hZGQtZGF0ZS1wYXJzZS1mb3JtYXRzJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25SZW5hbWVUYWJsZSA9ICdjb25uZWN0aW9uLXJlbmFtZS10YWJsZScsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uUmVwbGFjZVJlbGF0aW9uV2l0aFNRTFRleHQgPSAnY29ubmVjdGlvbi1yZXBsYWNlLXJlbGF0aW9uLXdpdGgtc3FsLXRleHQnLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvblJlcGxhY2VUYWJsZSA9ICdjb25uZWN0aW9uLXJlcGxhY2UtdGFibGUnLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvblJlc2V0VGFibGVBbGlhcyA9ICdjb25uZWN0aW9uLXJlc2V0LXRhYmxlLWFsaWFzJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25TZWxlY3RDYXRhbG9nID0gJ2Nvbm5lY3Rpb24tc2VsZWN0LWNhdGFsb2cnLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvblNlbGVjdEN1YmUgPSAnY29ubmVjdGlvbi1zZWxlY3QtY3ViZScsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uU2VsZWN0RGF0YWJhc2UgPSAnY29ubmVjdGlvbi1zZWxlY3QtZGF0YWJhc2UnLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvblNlbGVjdFNjaGVtYSA9ICdjb25uZWN0aW9uLXNlbGVjdC1zY2hlbWEnLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvblNlbGVjdFN0b3JlZFByb2NlZHVyZSA9ICdjb25uZWN0aW9uLXNlbGVjdC1zdG9yZWQtcHJvY2VkdXJlJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25TZWxlY3RXYXJlaG91c2UgPSAnY29ubmVjdGlvbi1zZWxlY3Qtd2FyZWhvdXNlJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25TZWxlY3RCaWdRdWVyeUxlZ2FjeVNRTENoZWNrQm94ID0gJ2Nvbm5lY3Rpb24tc2VsZWN0LWJpZ3F1ZXJ5LWxlZ2FjeS1jaGVjaycsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uVG9nZ2xlSGFzSGVhZGVyUm93ID0gJ2Nvbm5lY3Rpb24tdG9nZ2xlLWhhcy1oZWFkZXItcm93JyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25Ub2dnbGVUYWJsZUNsZWFuaW5nID0gJ2Nvbm5lY3Rpb24tdG9nZ2xlLXRhYmxlLWNsZWFuaW5nJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25Ub2dnbGVVc2VFeHRyYWN0ID0gJ2Nvbm5lY3Rpb24tdG9nZ2xlLXVzZS1leHRyYWN0JyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25WaWV3VGFibGVDbGVhbmluZ1Jlc3VsdHMgPSAnY29ubmVjdGlvbi12aWV3LXRhYmxlLWNsZWFuaW5nLXJlc3VsdHMnLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdFRvRGF0YVNlcnZlclNvdXJjZSA9ICdjb25uZWN0LWRhdGEtc2VydmVyLWRhdGFzb3VyY2UnLFxuXG4gICAgLy8gXG4gICAgQ29uc2lkZXJaZXJvc0VtcHR5RmxhZyA9ICdjb25zaWRlci16ZXJvcy1lbXB0eScsXG5cbiAgICAvLyBcbiAgICBDb252ZXJ0VW5uYW1lZEZpZWxkcyA9ICdjb252ZXJ0LXVubmFtZWQtZmllbGRzJyxcblxuICAgIC8vIFxuICAgIENyYXNoID0gJ2NyYXNoJyxcblxuICAgIC8vIFxuICAgIENyZWF0ZUFnZ3JlZ2F0ZVJvbGUgPSAnY3JlYXRlLWFnZ3JlZ2F0ZS1yb2xlJyxcblxuICAgIC8vIFxuICAgIENyZWF0ZUNvbm5lY3Rpb24gPSAnY3JlYXRlLWNvbm5lY3Rpb24nLFxuXG4gICAgLy8gXG4gICAgQ3JlYXRlRGVmYXVsdFF1aWNrRmlsdGVyID0gJ2NyZWF0ZS1kZWZhdWx0LXF1aWNrLWZpbHRlcicsXG5cbiAgICAvLyBcbiAgICBDcmVhdGVUeXBlSW5QaWxsID0gJ2NyZWF0ZS10eXBlLWluLXBpbGwnLFxuXG4gICAgLy8gXG4gICAgQ3VzdG9tRGF0YUdyaWRGaWVsZE9yZGVyID0gJ2N1c3RvbS1kYXRhZ3JpZC1maWVsZC1vcmRlcicsXG5cbiAgICAvLyBcbiAgICBDdXN0b21EYXRlQWdncmVnYXRpb24gPSAnY3VzdG9tLWRhdGUtYWdncmVnYXRpb24nLFxuXG4gICAgLy8gXG4gICAgQ3VzdG9tU3BsaXRGaWVsZCA9ICdjdXN0b20tc3BsaXQtZmllbGQnLFxuXG4gICAgLy8gXG4gICAgRGVidWdBc3NlcnRpb24gPSAnZGVidWctYXNzZXJ0aW9uJyxcblxuICAgIC8vIFxuICAgIERlY3JlbWVudFBhcmFtZXRlclZhbHVlID0gJ2RlY3ItcGFyYW1ldGVyLXZhbHVlJyxcblxuICAgIC8vIFxuICAgIERlbGV0ZUZpZWxkcyA9ICdkZWxldGUtY2FsY3VsYXRpb24tZmllbGRzLWNvbW1hbmQnLFxuXG4gICAgLy8gXG4gICAgRGVsZXRlU2hlZXQgPSAnZGVsZXRlLXNoZWV0JyxcblxuICAgIC8vIFxuICAgIERlc2NyaWJlRHJpbGxQYXRoID0gJ2Rlc2NyaWJlLWRyaWxsLXBhdGgnLFxuXG4gICAgLy8gXG4gICAgRGVzY3JpYmVTb3J0RmlsdGVyID0gJ2Rlc2NyaWJlLXNvcnQtZmlsdGVyJyxcblxuICAgIC8vIFxuICAgIERpc21pc3NOdWxsV2FydCA9ICdkaXNtaXNzLW51bGwtd2FydCcsXG5cbiAgICAvLyBcbiAgICBEb21haW5RdWlja0ZpbHRlciA9ICdkb21haW4tcXVpY2stZmlsdGVyJyxcblxuICAgIC8vIFxuICAgIERvdWJsZUZyZWVDcmFzaCA9ICdkb3VibGUtZnJlZScsXG5cbiAgICAvLyBcbiAgICBEcm9wTm93aGVyZSA9ICdkcm9wLW5vd2hlcmUnLFxuXG4gICAgLy8gXG4gICAgRHJvcE9uU2NoZW1hVmlld2VyID0gJ2Ryb3Atb24tc2NoZW1hLXZpZXdlcicsXG5cbiAgICAvLyBcbiAgICBEcm9wT25TaGVsZiA9ICdkcm9wLW9uLXNoZWxmJyxcblxuICAgIC8vIFxuICAgIERyb3BPbkNhbGNFZGl0b3IgPSAnZHJvcC1vbi1jYWxjLWVkaXRvcicsXG5cbiAgICAvLyBcbiAgICBEcm9wT25TaG93TWUgPSAnZHJvcC1vbi1zaG93bWUnLFxuXG4gICAgLy8gXG4gICAgRHJvcFByZXBhcmUgPSAnZHJvcC1wcmVwYXJlJyxcblxuICAgIC8vIFxuICAgIER1YWxBeGlzID0gJ2R1YWwtYXhpcycsXG5cbiAgICAvLyBcbiAgICBEdXBsaWNhdGVTaGVldCA9ICdkdXBsaWNhdGUtc2hlZXQnLFxuXG4gICAgLy8gXG4gICAgRWRpdENvcHlDYWxjID0gJ2VkaXQtY29weS1jYWxjJyxcblxuICAgIC8vIFxuICAgIEVkaXREcm9wTGluZXMgPSAnZWRpdC1kcm9wLWxpbmVzJyxcblxuICAgIC8vIFxuICAgIEVkaXRFbnVtZXJhdGVkR3JvdXAgPSAnZWRpdC1lbnVtZXJhdGVkLWdyb3VwJyxcblxuICAgIC8vIFxuICAgIEVkaXROZXN0ZWRHcm91cCA9ICdlZGl0LW5lc3RlZC1ncm91cCcsXG5cbiAgICAvLyBcbiAgICBFZGl0UGlsbCA9ICdlZGl0LXBpbGwnLFxuXG4gICAgLy8gXG4gICAgRWRpdFByaW1pdGl2ZVR5cGUgPSAnZWRpdC1wcmltaXRpdmUtdHlwZScsXG5cbiAgICAvLyBcbiAgICBFbmFibGVBbGxCcnVzaGluZyA9ICdlbmFibGUtYWxsLWhpZ2hsaWdodHMnLFxuXG4gICAgLy8gXG4gICAgRW5hYmxlUXVpY2tGaWx0ZXIgPSAnZW5hYmxlLXF1aWNrLWZpbHRlcicsXG5cbiAgICAvLyBcbiAgICBFbmFibGVTaGVldEJydXNoaW5nID0gJ2VuYWJsZS1zaGVldC1oaWdobGlnaHRzJyxcblxuICAgIC8vIFxuICAgIEVuYWJsZVRoZW1lZEJydXNoaW5nID0gJ2VuYWJsZS10aGVtZWQtaGlnaGxpZ2h0cycsXG5cbiAgICAvLyBcbiAgICBFbnVtZXJhdGVWYXJpYWJsZXMgPSAnZW51bWVyYXRlLXZhcmlhYmxlcycsXG5cbiAgICAvLyBcbiAgICBFbnVtZXJhdGVWYXJpYWJsZVNlbGVjdGlvblZhbHVlcyA9ICdlbnVtZXJhdGUtdmFyaWFibGUtc2VsZWN0aW9uLXZhbHVlcycsXG5cbiAgICAvLyBcbiAgICBFc3RhYmxpc2hDb25uZWN0aW9uID0gJ2VzdGFibGlzaC1jb25uZWN0aW9uJyxcblxuICAgIC8vIFxuICAgIEVzdGFibGlzaE1hdGNoaW5nQ29ubmVjdGlvbnMgPSAnZXN0YWJsaXNoLW1hdGNoaW5nLWNvbm5lY3Rpb25zJyxcblxuICAgIC8vIFxuICAgIEV4cG9ydERhdGFUb1RleHQgPSAnZXhwb3J0LWRhdGEtdG8tdGV4dCcsXG5cbiAgICAvLyBcbiAgICBFeHRTdmNDb25maWcgPSAnZXh0LXN2Yy1jb25maWcnLFxuXG4gICAgLy8gXG4gICAgRXh0U3ZjQ29uZmlnQ29ubmVjdCA9ICdleHQtc3ZjLWNvbmZpZy1jb25uZWN0JyxcblxuICAgIC8vIFxuICAgIEV4dHJhY3QgPSAnZXh0cmFjdCcsXG5cbiAgICAvLyBcbiAgICBTZXREYXRhR3JpZEN1cnJlbnRUYWJsZSA9ICdzZXQtZGF0YS1ncmlkLWN1cnJlbnQtdGFibGUnLFxuXG4gICAgLy8gXG4gICAgRmV0Y2hUYWJsZVJlbGV2YW5jZSA9ICdmZXRjaC10YWJsZS1yZWxldmFuY2UnLFxuXG4gICAgLy8gXG4gICAgRmV0Y2hDYWNoZWRUYWJsZVJlbGV2YW5jZSA9ICdmZXRjaC1jYWNoZWQtdGFibGUtcmVsZXZhbmNlJyxcblxuICAgIC8vIFxuICAgIEZsaXBMYWJlbHMgPSAnZmxpcC1sYWJlbHMnLFxuXG4gICAgLy8gXG4gICAgRmxvYXRpbmdUb29sYmFyID0gJ3pvb20tY29udHJvbHMnLFxuXG4gICAgLy8gXG4gICAgRmxvYXRpbmdUb29sYmFyVG9nZ2xlID0gJ3pvb20tY29udHJvbHMtdG9nZ2xlJyxcblxuICAgIC8vIFxuICAgIEZvcmVjYXN0Q29uZmlnID0gJ2ZvcmVjYXN0LWNvbmZpZycsXG5cbiAgICAvLyBcbiAgICBGb3JlY2FzdFRvZ2dsZSA9ICdmb3JlY2FzdC10b2dnbGUnLFxuXG4gICAgLy8gXG4gICAgRm9ybWF0V29ya2Jvb2sgPSAnZm9ybWF0LXdvcmtib29rJyxcblxuICAgIC8vIFxuICAgIEdlb2dyYXBoaWNTZWFyY2hRdWVyeSA9ICdnZW9ncmFwaGljLXNlYXJjaC1xdWVyeScsXG5cbiAgICAvLyBcbiAgICBHZW9ncmFwaGljU2VhcmNoTG9hZERhdGEgPSAnZ2VvZ3JhcGhpYy1zZWFyY2gtbG9hZC1kYXRhJyxcblxuICAgIC8vIFxuICAgIEdlb2dyYXBoaWNTZWFyY2hJc0RhdGFEb25lTG9hZGluZyA9ICdnZW9ncmFwaGljLXNlYXJjaC1kYXRhLWRvbmUtbG9hZGluZycsXG5cbiAgICAvLyBcbiAgICBHZW9ncmFwaGljU2VhcmNoVG9nZ2xlVmlzaWJpbGl0eSA9ICdnZW9ncmFwaGljLXNlYXJjaC10b2dnbGUtdmlzaWJpbGl0eScsXG5cbiAgICAvLyBcbiAgICBHZXRFZGl0Q29ubmVjdGlvblByZXNNb2RlbCA9ICdnZXQtZWRpdC1jb25uZWN0aW9uLXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgR2V0RWRpdEVudW1lcmF0ZWRHcm91cFByZXNNb2RlbCA9ICdnZXQtZWRpdC1lbnVtZXJhdGVkLWdyb3VwLXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgR2V0RWRpdE5lc3RlZEdyb3VwUHJlc01vZGVsID0gJ2dldC1lZGl0LW5lc3RlZC1ncm91cC1wcmVzLW1vZGVsJyxcblxuICAgIC8vIFxuICAgIEdldEZyYW1lRmluZGVyUHJlc01vZGVsID0gJ2dldC1mcmFtZS1maW5kZXItcHJlcy1tb2RlbCcsXG5cbiAgICAvLyBcbiAgICBHZXRHb29nbGVTaGVldHNMaXN0UHJlc01vZGVsID0gJ2dldC1nb29nbGUtc2hlZXRzLWxpc3QtcHJlcy1tb2RlbCcsXG5cbiAgICAvLyBcbiAgICBHZXRHb29nbGVTaGVldFBhbmVQcmVzTW9kZWwgPSAnZ2V0LWdvb2dsZS1zaGVldC1wYW5lLXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgR2V0SW5pdGlhbFNRTFByZXNNb2RlbCA9ICdnZXQtaW5pdGlhbC1zcWwtcHJlcy1tb2RlbCcsXG5cbiAgICAvLyBcbiAgICBHZXRRdWVyeUJhbmRpbmdQcmVzTW9kZWwgPSAnZ2V0LXF1ZXJ5LWJhbmRpbmctcHJlcy1tb2RlbCcsXG5cbiAgICAvLyBcbiAgICBHZXRUYWJiZWRBdXRoZW50aWNhdGlvblByZXNNb2RlbCA9ICdnZXQtdGFiYmVkLWF1dGhlbnRpY2F0aW9uLXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgR2V0QWN0aXZlU2hlZXQgPSAnZ2V0LWFjdGl2ZS1zaGVldCcsXG5cbiAgICAvLyBcbiAgICBHZXRBbHBoYUxldmVsID0gJ2dldC1hbHBoYS1sZXZlbCcsXG5cbiAgICAvLyBcbiAgICBHZXRBcHBDb25maWcgPSAnZ2V0LWFwcC1jb25maWcnLFxuXG4gICAgLy8gXG4gICAgR2V0RGlzYWJsZWRTZWNvbmRhcnlEU0ZpZWxkcyA9ICdnZXQtZGlzYWJsZWQtc2Vjb25kYXJ5ZHMtZmllbGRzJyxcblxuICAgIC8vIFxuICAgIEdldEJsZW5kaW5nRmllbGRzID0gJ2dldC1ibGVuZGluZy1maWVsZHMnLFxuXG4gICAgLy8gXG4gICAgR2V0Q2FsY3VsYXRpb25QcmVzTW9kZWwgPSAnZ2V0LWNhbGN1bGF0aW9uLXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgR2V0Q2F0ZWdvcmljYWxDb2xvciA9ICdnZXQtY2F0ZWdvcmljYWwtY29sb3InLFxuXG4gICAgLy8gXG4gICAgR2V0Q2xpZW50SW5mbyA9ICdnZXQtY2xpZW50LWluZm8nLFxuXG4gICAgLy8gXG4gICAgR2V0Q29tbWFuZHMgPSAnZ2V0LWNvbW1hbmRzJyxcblxuICAgIC8vIFxuICAgIEdldENvbm5lY3Rpb25EZXNjcmlwdGlvblByZXNNb2RlbCA9ICdnZXQtY29ubmVjdGlvbi1kZXNjcmlwdGlvbi1wcmVzLW1vZGVsJyxcblxuICAgIC8vIFxuICAgIEdldERTRHJvcGRvd25QcmVzTW9kZWwgPSAnZ2V0LWRzLWRyb3Bkb3duLXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgR2V0RGF0YVByZXZpZXdXaW5kb3dNZXNzYWdlUHJlc01vZGVsID0gJ2dldC1kYXRhLXByZXZpZXctd2luZG93LXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgR2V0RGF0YVNvdXJjZVByZXNNb2RlbCA9ICdnZXQtZGF0YXNvdXJjZS1wcmVzLW1vZGVsJyxcblxuICAgIC8vIFxuICAgIEdldERhdGFTb3VyY2VTb3J0UHJlc01vZGVsID0gJ2dldC1kYXRhc291cmNlLXNvcnQtcHJlcy1tb2RlbCcsXG5cbiAgICAvLyBcbiAgICBHZXREYXRhU291cmNlUHJvcGVydGllc1ByZXNNb2RlbCA9ICdnZXQtZGF0YXNvdXJjZS1wcm9wZXJ0aWVzLXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgR2V0Q29ubmVjdGlvblNldHRpbmdzUHJlc01vZGVsID0gJ2dldC1jb25uZWN0aW9uLXNldHRpbmdzLXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgR2V0RGFzaGJvYXJkID0gJ2dldC1kYXNoYm9hcmQnLFxuXG4gICAgLy8gXG4gICAgR2V0RGF0YVByZXZpZXcgPSAnZ2V0LWRhdGEtcHJldmlldycsXG5cbiAgICAvLyBcbiAgICBHZXREYXRhYmFzZUVudW1lcmF0aW9uUHJlc01vZGVsID0gJ2dldC1kYXRhYmFzZS1lbnVtZXJhdGlvbi1wcmVzLW1vZGVsJyxcblxuICAgIC8vIFxuICAgIEdldERlZmF1bHRDb2xvciA9ICdnZXQtZGVmYXVsdC1jb2xvcicsXG5cbiAgICAvLyBcbiAgICBHZXREZWZhdWx0U2hhcGUgPSAnZ2V0LWRlZmF1bHQtc2hhcGUnLFxuXG4gICAgLy8gXG4gICAgR2V0RHJhZ1ByZXNNb2RlbEZvclRleHQgPSAnZ2V0LWRyYWctcHJlcy1tb2RlbC1mb3ItdGV4dCcsXG5cbiAgICAvLyBcbiAgICBHZXREcm9wVGFyZ2V0UHJlc01vZGVsID0gJ2dldC1kcm9wLXRhcmdldC1wcmVzLW1vZGVsJyxcblxuICAgIC8vIFxuICAgIEdldEVkaXREYXRhU2VydmVyQ29ubmVjdGlvblByZXNNb2RlbCA9ICdnZXQtZWRpdC1kYXRhLXNlcnZlci1jb25uZWN0aW9uLXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgR2V0RWRpdERyb3BMaW5lc01vZGVsID0gJ2dldC1lZGl0LWRyb3AtbGluZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgR2V0RW5jb2RpbmdTdGF0ZSA9ICdnZXQtZW5jb2Rpbmctc3RhdGUnLFxuXG4gICAgLy8gXG4gICAgR2V0RW5jb2RpbmdUeXBlTWVudU1vZGVsID0gJ2dldC1lbmNvZGluZy10eXBlLW1lbnUnLFxuXG4gICAgLy8gXG4gICAgR2V0RXh0U3ZjQ29uZmlnID0gJ2dldC1leHQtc3ZjLWNvbmZpZycsXG5cbiAgICAvLyBcbiAgICBHZXRGb3JlY2FzdFByZXNNb2RlbCA9ICdnZXQtZm9yZWNhc3QtcHJlcy1tb2RlbCcsXG5cbiAgICAvLyBcbiAgICBHZXRKb2luRGVzY3JpcHRpb25QcmVzTW9kZWwgPSAnZ2V0LWpvaW4tZGVzY3JpcHRpb24tcHJlcy1tb2RlbCcsXG5cbiAgICAvLyBcbiAgICBHZXRRdWlja0ZpbHRlciA9ICdnZXQtcXVpY2stZmlsdGVyJyxcblxuICAgIC8vIFxuICAgIEdldFF1aWNrRmlsdGVycyA9ICdnZXQtcXVpY2stZmlsdGVycycsXG5cbiAgICAvLyBcbiAgICBHZXRSZWZlcmVuY2VMaW5lUHJlc01vZGVsID0gJ2dldC1yZWZlcmVuY2UtbGluZS1wcmVzLW1vZGVsJyxcblxuICAgIC8vIFxuICAgIEdldFBhcmFtZXRlcnMgPSAnZ2V0LXBhcmFtZXRlcnMnLFxuXG4gICAgLy8gXG4gICAgR2V0UGFyYW1ldGVyTW9kZWxzID0gJ2dldC1wYXJhbWV0ZXItbW9kZWxzJyxcblxuICAgIC8vIFxuICAgIEdldFBhcmFtZXRlcnNSZWdpc3RyeUluZm8gPSAnZ2V0LXBhcmFtcy1yZWdpc3RyeS1pbmZvJyxcblxuICAgIC8vIFxuICAgIEdldFBpdm90UHJlc01vZGVsID0gJ2dldC1waXZvdC1wcmVzLW1vZGVsJyxcblxuICAgIC8vIFxuICAgIEdldFNjZW5lID0gJ2dldC1zY2VuZScsXG5cbiAgICAvLyBcbiAgICBHZXRTY2hlbWFFbnVtZXJhdGlvblByZXNNb2RlbCA9ICdnZXQtc2NoZW1hLWVudW1lcmF0aW9uLXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgR2V0U2hlZXRzSW5mbyA9ICdnZXQtc2hlZXRzLWluZm8nLFxuXG4gICAgLy8gXG4gICAgR2V0U2hvd01lID0gJ2dldC1zaG93LW1lJyxcblxuICAgIC8vIFxuICAgIEdldFN0YW5kYXJkQ29ubmVjdGlvbkVudW1lcmF0aW9uUHJlc01vZGVsID0gJ2dldC1zdGFuZGFyZC1jb25uZWN0aW9uLWVudW1lcmF0aW9uLXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgR2V0U3RvcmVkUHJvY2VkdXJlRW51bWVyYXRpb25QcmVzTW9kZWwgPSAnZ2V0LXN0b3JlZC1wcm9jZWR1cmUtZW51bWVyYXRpb24tcHJlcy1tb2RlbCcsXG5cbiAgICAvLyBcbiAgICBHZXRTdG9yZWRQcm9jZWR1cmVQYXJhbWV0ZXJzUHJlc01vZGVsID0gJ2dldC1zdG9yZWQtcHJvY2VkdXJlLXBhcmFtZXRlcnMtcHJlcy1tb2RlbCcsXG5cbiAgICAvLyBcbiAgICBHZXRUYWJsZUVudW1lcmF0aW9uUHJlc01vZGVsID0gJ2dldC10YWJsZS1lbnVtZXJhdGlvbi1wcmVzLW1vZGVsJyxcblxuICAgIC8vIFxuICAgIEdldFRhYmxlQ2xlYW5pbmdQcmVzTW9kZWwgPSAnZ2V0LXRhYmxlLWNsZWFuaW5nLXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgR2V0VGFyZ2V0RmllbGRMaXN0ID0gJ2dldC10YXJnZXQtZmllbGQtbGlzdCcsXG5cbiAgICAvLyBcbiAgICBHZXRUb3BMZXZlbENvbm5lY3Rpb25EZXNjcmlwdGlvblByZXNNb2RlbCA9ICdnZXQtdG9wLWxldmVsLWNvbm5lY3Rpb24tZGVzY3JpcHRpb24tcHJlcy1tb2RlbCcsXG5cbiAgICAvLyBcbiAgICBHZXRUeXBlSW5QaWxsUHJlc01vZGVsID0gJ2dldC10eXBlLWluLXBpbGwtcHJlcy1tb2RlbCcsXG5cbiAgICAvLyBcbiAgICBHZXRVYmVyVGlwUHJlc01vZGVsID0gJ2dldC11YmVydGlwLXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgR2V0VW5pb25JbmZvUHJlc01vZGVsID0gJ2dldC11bmlvbi1pbmZvLXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgR2V0VmlzdWFsID0gJ2dldC12aXN1YWwnLFxuXG4gICAgLy8gXG4gICAgR2V0Vml6RGF0YSA9ICdnZXQtdml6LWRhdGEnLFxuXG4gICAgLy8gXG4gICAgR2V0V2FyZWhvdXNlRW51bWVyYXRpb25QcmVzTW9kZWwgPSAnZ2V0LXdhcmVob3VzZS1lbnVtZXJhdGlvbi1wcmVzLW1vZGVsJyxcblxuICAgIC8vIFxuICAgIEdldFdvcmtib29rID0gJ2dldC13b3JrYm9vaycsXG5cbiAgICAvLyBcbiAgICBHZXRXb3JsZFVwZGF0ZSA9ICdnZXQtd29ybGQtdXBkYXRlJyxcblxuICAgIC8vIFxuICAgIEdvVG9TaGVldCA9ICdnb3RvLXNoZWV0JyxcblxuICAgIC8vIFxuICAgIEhlYXBDb3JydXB0aW9uQ3Jhc2ggPSAnY29ycnVwdC1oZWFwJyxcblxuICAgIC8vIFxuICAgIEhpZGVDb2x1bW5GaWVsZExhYmVsID0gJ2hpZGUtY29sdW1uLWZpZWxkLWxhYmVsJyxcblxuICAgIC8vIFxuICAgIEhpZGVFbXB0eUNvbHNGbGFnID0gJ2hpZGUtZW1wdHktY29scycsXG5cbiAgICAvLyBcbiAgICBIaWRlRW1wdHlSb3dzRmxhZyA9ICdoaWRlLWVtcHR5LXJvd3MnLFxuXG4gICAgLy8gXG4gICAgSGlkZUxhYmVsID0gJ2hpZGUtbGFiZWwnLFxuXG4gICAgLy8gXG4gICAgSGlkZVJvd0ZpZWxkTGFiZWwgPSAnaGlkZS1yb3ctZmllbGQtbGFiZWwnLFxuXG4gICAgLy8gXG4gICAgSGllcmFyY2hpY2FsUXVpY2tGaWx0ZXJVcGRhdGVTZXRGdW5jdGlvbiA9ICdoaWVyYXJjaGljYWwtcXVpY2stZmlsdGVyLXVwZGF0ZS1zZXQtZnVuY3Rpb24nLFxuXG4gICAgLy8gXG4gICAgSW5jbHVkZUluVG9vbHRpcCA9ICdpbmNsdWRlLWluLXRvb2x0aXAnLFxuXG4gICAgLy8gXG4gICAgSW5jbHVkZU90aGVyQ2F0ZWdvcmljYWxCaW4gPSAnaW5jbHVkZS1vdGhlci1jYXQtYmluJyxcblxuICAgIC8vIFxuICAgIEluY3JlbWVudEV4dHJhY3QgPSAnaW5jcmVtZW50LWV4dHJhY3QnLFxuXG4gICAgLy8gXG4gICAgSW5jcmVtZW50UGFyYW1ldGVyVmFsdWUgPSAnaW5jci1wYXJhbWV0ZXItdmFsdWUnLFxuXG4gICAgLy8gXG4gICAgQ3JlYXRlQ2FsYyA9ICdjcmVhdGUtY2FsYycsXG5cbiAgICAvLyBcbiAgICBFZGl0Q2FsYyA9ICdlZGl0LWNhbGMnLFxuXG4gICAgLy8gXG4gICAgSW52b2tlSHlwZXJsaW5rID0gJ2ludm9rZS1oeXBlcmxpbmsnLFxuXG4gICAgLy8gXG4gICAgS2VlcE9ubHlPckV4Y2x1ZGVTZWxlY3Rpb24gPSAna2VlcC1vbmx5LW9yLWV4Y2x1ZGUtc2VsZWN0aW9uJyxcblxuICAgIC8vIFxuICAgIExhYmVsRHJpbGwgPSAnbGFiZWwtZHJpbGwnLFxuXG4gICAgLy8gXG4gICAgTGFiZWxEcmlsbEN0eCA9ICdsYWJlbC1kcmlsbC1jdHgnLFxuXG4gICAgLy8gXG4gICAgTGV2ZWxEcmlsbCA9ICdsZXZlbC1kcmlsbCcsXG5cbiAgICAvLyBcbiAgICBMb2FkVXJsID0gJ2xvYWQtdXJsJyxcblxuICAgIC8vIFxuICAgIExpc3RQdWJsaXNoZWREYXRhU291cmNlcyA9ICdsaXN0LXB1Ymxpc2hlZC1kYXRhc291cmNlcycsXG5cbiAgICAvLyBcbiAgICBNYXJrTGFiZWwgPSAnbWFyay1sYWJlbCcsXG5cbiAgICAvLyBcbiAgICBNYXJrVHJhaWwgPSAnbWFyay10cmFpbCcsXG5cbiAgICAvLyBcbiAgICBNZW1vcnlEdW1wT2JqZWN0Q291bnRzID0gJ21lbW9yeS1kdW1wLW9iamVjdC1jb3VudHMnLFxuXG4gICAgLy8gXG4gICAgTWVtb3J5TGVhayA9ICdtZW1vcnktbGVhaycsXG5cbiAgICAvLyBcbiAgICBNZXJnZSA9ICdtZXJnZS1vci1zcGxpdCcsXG5cbiAgICAvLyBcbiAgICBNaWdyYXRlRGF0YVNvdXJjZSA9ICdtaWdyYXRlLWRhdGEtc291cmNlJyxcblxuICAgIC8vIFxuICAgIE1vZGlmeU1hcmtzSW5TZXQgPSAnYWRkLW9yLXJlbW92ZS1tYXJrcycsXG5cbiAgICAvLyBcbiAgICBNb3ZlQXJlYUFubm90YXRpb25UZXh0ID0gJ21vdmUtYXJlYS1hbm5vdGF0aW9uLXRleHQnLFxuXG4gICAgLy8gXG4gICAgTW92ZUNvbHVtblRvdGFscyA9ICdtb3ZlLWNvbHVtbi10b3RhbHMnLFxuXG4gICAgLy8gXG4gICAgTW92ZU1hcmsgPSAnbW92ZS1tYXJrJyxcblxuICAgIC8vIFxuICAgIE1vdmVQb2ludEFubm90YXRpb24gPSAnbW92ZS1wb2ludC1hbm5vdGF0aW9uJyxcblxuICAgIC8vIFxuICAgIE1vdmVQb2ludEFubm90YXRpb25UYXJnZXQgPSAnbW92ZS1wb2ludC1hbm5vdGF0aW9uLXRhcmdldCcsXG5cbiAgICAvLyBcbiAgICBNb3ZlUmVmZXJlbmNlTGluZSA9ICdtb3ZlLXJlZmVyZW5jZS1saW5lJyxcblxuICAgIC8vIFxuICAgIE1vdmVSb3dUb3RhbHMgPSAnbW92ZS1yb3ctdG90YWxzJyxcblxuICAgIC8vIFxuICAgIE5hdmlnYXRlVG9TaGVldCA9ICduYXZpZ2F0ZS10by1zaGVldCcsXG5cbiAgICAvLyBcbiAgICBQb3N0Q2FsY0pvaW5DbGF1c2VSZXN1bHQgPSAncG9zdC1jYWxjLWpvaW4tY2xhdXNlLXJlc3VsdCcsXG5cbiAgICAvLyBcbiAgICBOZXdEb2NEYXNoYm9hcmQgPSAnbmV3LWRhc2hib2FyZCcsXG5cbiAgICAvLyBcbiAgICBOZXdEb2NXb3Jrc2hlZXQgPSAnbmV3LXdvcmtzaGVldCcsXG5cbiAgICAvLyBcbiAgICBOb25SYW5nZWRSZW1vdmVSZWZlcmVuY2VMaW5lID0gJ25vbi1yYW5nZWQtcmVtb3ZlLXJlZmVyZW5jZS1saW5lJyxcblxuICAgIC8vIFxuICAgIE9wdGltaXplRXh0cmFjdCA9ICdvcHRpbWl6ZS1leHRyYWN0JyxcblxuICAgIC8vIFxuICAgIE9wdE91dEFjdGlvbnMgPSAnb3B0LW91dC1hY3Rpb25zJyxcblxuICAgIC8vIFxuICAgIFBhZ2VIaXN0b3J5U2V0dGluZ3MgPSAncGFnZS1oaXN0b3J5LXNldHRpbmdzJyxcblxuICAgIC8vIFxuICAgIFBhZ2VUb2dnbGVUcmFpbHMgPSAncGFnZS10b2dnbGUtdHJhaWxzJyxcblxuICAgIC8vIFxuICAgIFBhcnNlVUlOYW1lID0gJ3BhcnNlLXVpLW5hbWUnLFxuXG4gICAgLy8gXG4gICAgUGVyY2VudGFnZXMgPSAncGVyY2VudGFnZXMnLFxuXG4gICAgLy8gXG4gICAgUGVyc3BlY3RpdmVzID0gJ3BlcnNwZWN0aXZlcycsXG5cbiAgICAvLyBcbiAgICBQb3NpdGlvblBvaW50QW5ub3RhdGlvbiA9ICdwb3NpdGlvbi1wb2ludC1hbm5vdGF0aW9uJyxcblxuICAgIC8vIFxuICAgIFByb3RvY29sUG9vbExvZyA9ICdwcm90b2NvbC1wb29sLWxvZycsXG5cbiAgICAvLyBcbiAgICBQdWJsaXNoRGF0YVNvdXJjZSA9ICdwdWJsaXNoLWRhdGFzb3VyY2UnLFxuXG4gICAgLy8gXG4gICAgUHVibGlzaERhdGFTb3VyY2VGcm9tRGF0YSA9ICdwdWJsaXNoLWRhdGEtc291cmNlLWZyb20tZGF0YScsXG5cbiAgICAvLyBcbiAgICBQdWJsaXNoRGF0YVNvdXJjZUZyb21Xb3JrYm9va0RhdGEgPSAncHVibGlzaC1kYXRhLXNvdXJjZS1mcm9tLXdvcmtib29rLWRhdGEnLFxuXG4gICAgLy8gXG4gICAgUXVhbnRpdGF0aXZlUXVpY2tGaWx0ZXJFZGl0ID0gJ3F1YW50aXRhdGl2ZS1xdWljay1maWx0ZXItZWRpdCcsXG5cbiAgICAvLyBcbiAgICBRdWFudGl0YXRpdmVNb2RlUXVpY2tGaWx0ZXIgPSAncXVhbnRpdGF0aXZlLW1vZGUtcXVpY2stZmlsdGVyJyxcblxuICAgIC8vIFxuICAgIFF1ZXJ5TWlncmF0ZURhdGFTb3VyY2VzID0gJ3F1ZXJ5LW1pZ3JhdGUtZGF0YS1zb3VyY2VzJyxcblxuICAgIC8vIFxuICAgIFF1aWNrU29ydCA9ICdxdWljay1zb3J0JyxcblxuICAgIC8vIFxuICAgIFJhbmdlZEJ5SW5kZXhNZXJnZSA9ICdyYW5nZWQtYnktaW5kZXgtbWVyZ2UnLFxuXG4gICAgLy8gXG4gICAgUmFuZ2VkQnlWYWx1ZU1lcmdlID0gJ3JhbmdlZC1ieS12YWx1ZS1tZXJnZScsXG5cbiAgICAvLyBcbiAgICBSZWNvcmQgPSAncmVjb3JkJyxcblxuICAgIC8vIFxuICAgIFJlZG8gPSAncmVkbycsXG5cbiAgICAvLyBcbiAgICBSZWZyZXNoRXh0cmFjdCA9ICdyZWZyZXNoLWV4dHJhY3QnLFxuXG4gICAgLy8gXG4gICAgUmVmcmVzaEZyb21Tb3VyY2UgPSAncmVmcmVzaC1mcm9tLXNvdXJjZScsXG5cbiAgICAvLyBcbiAgICBSZWxhdGl2ZURhdGVRdWlja0ZpbHRlckVkaXQgPSAncmVsYXRpdmUtZGF0ZS1xdWljay1maWx0ZXItZWRpdCcsXG5cbiAgICAvLyBcbiAgICBSZW1vdmVBbGxSZWZlcmVuY2VMaW5lcyA9ICdyZW1vdmUtYWxsLXJlZmVyZW5jZS1saW5lcycsXG5cbiAgICAvLyBcbiAgICBSZW1vdmVEcmlsbFBhdGggPSAncmVtb3ZlLWRyaWxsLXBhdGgnLFxuXG4gICAgLy8gXG4gICAgUmVtb3ZlRXh0cmFjdCA9ICdyZW1vdmUtZXh0cmFjdCcsXG5cbiAgICAvLyBcbiAgICBSZW1vdmVGaWVsZEZvbGRlciA9ICdyZW1vdmUtZmllbGQtZm9sZGVyJyxcblxuICAgIC8vIFxuICAgIFJlbW92ZUZpZWxkTGFiZWwgPSAncmVtb3ZlLWZpZWxkLWxhYmVsJyxcblxuICAgIC8vIFxuICAgIFJlbW92ZUZpZWxkcyA9ICdyZW1vdmUtZmllbGRzJyxcblxuICAgIC8vIFxuICAgIFJlbW92ZUZpZWxkc0Zyb21TaGVsZiA9ICdyZW1vdmUtZmllbGRzLWZyb20tc2hlbGYnLFxuXG4gICAgLy8gXG4gICAgUmVtb3ZlRnJvbURyaWxsUGF0aCA9ICdyZW1vdmUtZnJvbS1kcmlsbC1wYXRoJyxcblxuICAgIC8vIFxuICAgIFJlbW92ZUZyb21GaWVsZEZvbGRlciA9ICdyZW1vdmUtZnJvbS1maWVsZC1mb2xkZXInLFxuXG4gICAgLy8gXG4gICAgUmVtb3ZlUmVmZXJlbmNlTGluZSA9ICdyZW1vdmUtcmVmZXJlbmNlLWxpbmUnLFxuXG4gICAgLy8gXG4gICAgUmVtb3ZlU3VidG90YWxzID0gJ3JlbW92ZS1zdWJ0b3RhbHMnLFxuXG4gICAgLy8gXG4gICAgUmVuYW1lRGF0YVNvdXJjZSA9ICdyZW5hbWUtZGF0YS1zb3VyY2UnLFxuXG4gICAgLy8gXG4gICAgUmVuYW1lRHJpbGxQYXRoID0gJ3JlbmFtZS1kcmlsbC1wYXRoJyxcblxuICAgIC8vIFxuICAgIFJlbmFtZUZpZWxkRm9sZGVyID0gJ3JlbmFtZS1maWVsZC1mb2xkZXInLFxuXG4gICAgLy8gXG4gICAgUmVuYW1lU2hlZXQgPSAncmVuYW1lLXNoZWV0JyxcblxuICAgIC8vIFxuICAgIFJlb3JkZXJMYWJlbHMgPSAncmVvcmRlci1sYWJlbHMnLFxuXG4gICAgLy8gXG4gICAgUmVwb3J0QnVnID0gJ3JlcG9ydC1idWcnLFxuXG4gICAgLy8gXG4gICAgUmVxdWVzdERhdGFTb3VyY2VQcmVzTW9kZWwgPSAncmVxdWVzdC1kYXRhc291cmNlLXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgUmVzZXRQYXJhbWV0ZXJDdHJsVGl0bGUgPSAncmVzZXQtcGFyYW1ldGVyLWN0cmwtdGl0bGUnLFxuXG4gICAgLy8gXG4gICAgUmVzZXRUb29sdGlwID0gJ3Jlc2V0LXRvb2x0aXAnLFxuXG4gICAgLy8gXG4gICAgUmVzaXplQXJlYUFubm90YXRpb25UZXh0ID0gJ3Jlc2l6ZS1hcmVhLWFubm90YXRpb24tdGV4dCcsXG5cbiAgICAvLyBcbiAgICBSZXNpemVBeGlzID0gJ3Jlc2l6ZS1heGlzJyxcblxuICAgIC8vIFxuICAgIFJlc2l6ZUNlbGwgPSAncmVzaXplLWNlbGwnLFxuXG4gICAgLy8gXG4gICAgUmVzaXplSGVhZGVyID0gJ3Jlc2l6ZS1oZWFkZXInLFxuXG4gICAgLy8gXG4gICAgUmVzaXplUG9pbnRBbm5vdGF0aW9uID0gJ3Jlc2l6ZS1wb2ludC1hbm5vdGF0aW9uJyxcblxuICAgIC8vIFxuICAgIFJldmVydCA9ICdyZXZlcnQnLFxuXG4gICAgLy8gXG4gICAgUm90YXRlRmllbGRMYWJlbCA9ICdyb3RhdGUtZmllbGQtbGFiZWwnLFxuXG4gICAgLy8gXG4gICAgUm90YXRlTGFiZWwgPSAncm90YXRlLWxhYmVsJyxcblxuICAgIC8vIFxuICAgIFNwbGl0RmllbGRMYWJlbCA9ICdzcGxpdC1maWVsZC1sYWJlbCcsXG5cbiAgICAvLyBcbiAgICBSdW5BY3Rpb24gPSAncnVuLWFjdGlvbicsXG5cbiAgICAvLyBcbiAgICBSdW5TY3JpcHQgPSAncnVuLXNjcmlwdCcsXG5cbiAgICAvLyBcbiAgICBSdW5VcGRhdGVzID0gJ3J1bi11cGRhdGUnLFxuXG4gICAgLy8gXG4gICAgU2F2ZU1vZGVsID0gJ3NhdmUtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgU2F2ZVB1Ymxpc2hlZERTdG9GaWxlID0gJ3NhdmUtcHVibGlzaGVkLWRzLXRvLWZpbGUnLFxuXG4gICAgLy8gXG4gICAgU2VsZWN0RGF0YVNvdXJjZSA9ICdzZWxlY3QtZGF0YS1zb3VyY2UnLFxuXG4gICAgLy8gXG4gICAgU2VsZWN0RmllbGRzSW5TaGVsZiA9ICdzZWxlY3QtZmllbGRzLWluLXNoZWxmJyxcblxuICAgIC8vIFxuICAgIFNlbmREYXRhQ29ubmVjdGlvblRhYmxlVmlld01lc3NhZ2UgPSAnc2VuZC1kYXRhLWNvbm5lY3Rpb24tdGFibGV2aWV3LW1lc3NhZ2UnLFxuXG4gICAgLy8gXG4gICAgU2V0QWN0aXZlRGF0YVNvdXJjZU5hbWUgPSAnc2V0LWFjdGl2ZS1kYXRhLXNvdXJjZS1uYW1lJyxcblxuICAgIC8vIFxuICAgIFNldEFjdGl2ZUNvbm5lY3Rpb25OYW1lID0gJ3NldC1hY3RpdmUtY29ubmVjdGlvbi1uYW1lJyxcblxuICAgIC8vIFxuICAgIFNldEFjdGl2ZURhdGFTb3VyY2UgPSAnc2V0LWFjdGl2ZS1kYXRhc291cmNlJyxcblxuICAgIC8vIFxuICAgIFNldEJhc2VQYWxldHRlID0gJ3NldC1iYXNlLXBhbGV0dGUnLFxuXG4gICAgLy8gXG4gICAgU2V0Q2F0ZWdvcmljYWxDb2xvciA9ICdzZXQtY2F0ZWdvcmljYWwtY29sb3InLFxuXG4gICAgLy8gXG4gICAgU2V0RGF0YUNhY2hlRGVsdGEgPSAnc2V0LWRhdGEtY2FjaGUtZGVsdGEnLFxuXG4gICAgLy8gXG4gICAgU2V0RGF0YVByZXZpZXdBdXRvVXBkYXRlID0gJ3NldC1kYXRhLXByZXZpZXctYXV0by11cGRhdGUnLFxuXG4gICAgLy8gXG4gICAgU2V0RGF0YVByZXZpZXdDdXN0b21GaWVsZE9yZGVyID0gJ3NldC1kYXRhLXByZXZpZXctY3VzdG9tLWZpZWxkLW9yZGVyJyxcblxuICAgIC8vIFxuICAgIFNldERlZmF1bHRDb2xvciA9ICdzZXQtZGVmYXVsdC1jb2xvcicsXG5cbiAgICAvLyBcbiAgICBTZXREZWZhdWx0U2hhcGUgPSAnc2V0LWRlZmF1bHQtc2hhcGUnLFxuXG4gICAgLy8gXG4gICAgU2V0RmlsdGVyQ29udGV4dCA9ICdzZXQtZmlsdGVyLWNvbnRleHQnLFxuXG4gICAgLy8gXG4gICAgU2V0RmlsdGVyU2hhcmVkID0gJ3NldC1maWx0ZXItc2hhcmVkJyxcblxuICAgIC8vIFxuICAgIFNldEluaXRpYWxTUUwgPSAnc2V0LWluaXRpYWwtc3FsJyxcblxuICAgIC8vIFxuICAgIFNldEl0ZW1Db2xvciA9ICdzZXQtaXRlbS1jb2xvcicsXG5cbiAgICAvLyBcbiAgICBTZXRJdGVtQ29sb3JSZXNldEN1c3RvbWl6YXRpb24gPSAnc2V0LWl0ZW0tY29sb3ItcmVzZXQtY3VzdG9taXphdGlvbicsXG5cbiAgICAvLyBcbiAgICBTZXRJdGVtRW5jb2RpbmdUeXBlID0gJ3NldC1pdGVtLWVuY29kaW5nLXR5cGUnLFxuXG4gICAgLy8gXG4gICAgU2V0TWFya1NpemUgPSAnc2V0LW1hcmstc2l6ZScsXG5cbiAgICAvLyBcbiAgICBTZXRQYWdlTmF2RmxhZyA9ICdzZXQtcGFnZS1mbGFnJyxcblxuICAgIC8vIFxuICAgIFNldFBhcmFtZXRlckN0cmxEaXNwbGF5RmxhZ3MgPSAnc2V0LXBhcmFtZXRlci1jdHJsLWRpc3BsYXktZmxhZ3MnLFxuXG4gICAgLy8gXG4gICAgU2V0UGFyYW1ldGVyQ3RybERpc3BsYXlNb2RlID0gJ3NldC1wYXJhbWV0ZXItY3RybC1kaXNwbGF5LW1vZGUnLFxuXG4gICAgLy8gXG4gICAgU2V0UGFyYW1ldGVyQ3RybFRpdGxlID0gJ3NldC1wYXJhbWV0ZXItY3RybC10aXRsZScsXG5cbiAgICAvLyBcbiAgICBTZXRQYXJhbWV0ZXJWYWx1ZSA9ICdzZXQtcGFyYW1ldGVyLXZhbHVlJyxcblxuICAgIC8vIFxuICAgIFNldFByaW1pdGl2ZSA9ICdzZXQtcHJpbWl0aXZlJyxcblxuICAgIC8vIFxuICAgIFNldFF1ZXJ5QmFuZGluZyA9ICdzZXQtcXVlcnktYmFuZGluZycsXG5cbiAgICAvLyBcbiAgICBTZXRRdWlja0ZpbHRlckluY2x1ZGVkVmFsdWVzID0gJ3NldC1xdWljay1maWx0ZXItaW5jbHVkZWQnLFxuXG4gICAgLy8gXG4gICAgU2V0UmVmZXJlbmNlTGluZUZvcm11bGEgPSAnc2V0LXJlZmVyZW5jZS1saW5lLWZvcm11bGEnLFxuXG4gICAgLy8gXG4gICAgU2V0UmVmZXJlbmNlTGluZUNvbnN0YW50VmFsdWUgPSAnc2V0LXJlZmVyZW5jZS1saW5lLWNvbnN0YW50LXZhbHVlJyxcblxuICAgIC8vIFxuICAgIFNldFNoZWV0Rm9ybWF0dGluZyA9ICdzZXQtc2hlZXQtZm9ybWF0dGluZycsXG5cbiAgICAvLyBcbiAgICBTZXRTaGVldFNpemUgPSAnc2V0LXNoZWV0LXNpemUnLFxuXG4gICAgLy8gXG4gICAgU2V0VG90YWxzVHlwZSA9ICdzZXQtdG90YWxzLXR5cGUnLFxuXG4gICAgLy8gXG4gICAgU2V0V29ya2Jvb2tMb2NhbGUgPSAnc2V0LXdvcmtib29rLWxvY2FsZScsXG5cbiAgICAvLyBcbiAgICBTaG93Q2F0Q3RybFF1aWNrRmlsdGVyID0gJ3Nob3ctY2F0LWN0cmwtcXVpY2stZmlsdGVyJyxcblxuICAgIC8vIFxuICAgIFNob3dDb2xGaWVsZE5hbWVzRmxhZyA9ICdzaG93LWNvbC1maWVsZC1uYW1lcycsXG5cbiAgICAvLyBcbiAgICBTaG93Q29sVG90YWxzRmxhZyA9ICdzaG93LWNvbC10b3RhbHMnLFxuXG4gICAgLy8gXG4gICAgU2hvd0NvbHVtbkZpZWxkTGFiZWwgPSAnc2hvdy1jb2x1bW4tZmllbGQtbGFiZWwnLFxuXG4gICAgLy8gXG4gICAgU2hvd0VtcHR5Q29sc0ZsYWcgPSAnc2hvdy1lbXB0eS1jb2xzJyxcblxuICAgIC8vIFxuICAgIFNob3dFbXB0eVJvd3NGbGFnID0gJ3Nob3ctZW1wdHktcm93cycsXG5cbiAgICAvLyBcbiAgICBTaG93Rm9yZWNhc3RFZGl0b3IgPSAnc2hvdy1mb3JlY2FzdC1lZGl0b3InLFxuXG4gICAgLy8gXG4gICAgU2hvd0Z1bGxSYW5nZSA9ICdzaG93LWZ1bGwtcmFuZ2UnLFxuXG4gICAgLy8gXG4gICAgU2hvd0hlYWRlciA9ICdzaG93LWhlYWRlcicsXG5cbiAgICAvLyBcbiAgICBTaG93SGlkZGVuRGF0YSA9ICdzaG93LWhpZGRlbi1kYXRhJyxcblxuICAgIC8vIFxuICAgIFNob3dNZSA9ICdzaG93LW1lJyxcblxuICAgIC8vIFxuICAgIFNob3dRdWFudEN0cmxRdWlja0ZpbHRlciA9ICdzaG93LXF1YW50LWN0cmwtcXVpY2stZmlsdGVyJyxcblxuICAgIC8vIFxuICAgIFNob3dRdWlja0ZpbHRlckRvYyA9ICdzaG93LXF1aWNrZmlsdGVyLWRvYycsXG5cbiAgICAvLyBcbiAgICBTaG93UmVmZXJlbmNlTGluZUVkaXRvciA9ICdzaG93LXJlZmVyZW5jZS1saW5lLWVkaXRvcicsXG5cbiAgICAvLyBcbiAgICBTaG93UmVmZXJlbmNlTGluZUNvbnN0YW50VmFsdWVFZGl0b3IgPSAnc2hvdy1yZWZlcmVuY2UtbGluZS1jb25zdGFudC12YWx1ZS1lZGl0b3InLFxuXG4gICAgLy8gXG4gICAgU2hvd1JlZmVyZW5jZUxpbmVGb3JtYXR0ZXIgPSAnc2hvdy1yZWZlcmVuY2UtbGluZS1mb3JtYXR0ZXInLFxuXG4gICAgLy8gXG4gICAgU2hvd1Jvd0ZpZWxkTGFiZWwgPSAnc2hvdy1yb3ctZmllbGQtbGFiZWwnLFxuXG4gICAgLy8gXG4gICAgU2hvd1Jvd0ZpZWxkTmFtZXNGbGFnID0gJ3Nob3ctcm93LWZpZWxkLW5hbWVzJyxcblxuICAgIC8vIFxuICAgIFNob3dSb3dUb3RhbHNGbGFnID0gJ3Nob3ctcm93LXRvdGFscycsXG5cbiAgICAvLyBcbiAgICBTaW1wbGVDb21tYW5kTGlzdCA9ICdzaW1wbGUtY29tbWFuZC1saXN0JyxcblxuICAgIC8vIFxuICAgIFNsZWVwID0gJ3NsZWVwJyxcblxuICAgIC8vIFxuICAgIFNsZWVwQmFja2dyb3VuZFRocmVhZCA9ICdzbGVlcC1iYWNrZ3JvdW5kLXRocmVhZCcsXG5cbiAgICAvLyBcbiAgICBTb3J0RGF0YUdyaWRCeUNvbHVtbiA9ICdzb3J0LWRhdGFncmlkLWJ5LWNvbHVtbicsXG5cbiAgICAvLyBcbiAgICBTb3J0RGF0YUdyaWRGaWVsZHMgPSAnc29ydC1kYXRhZ3JpZC1maWVsZHMnLFxuXG4gICAgLy8gXG4gICAgU3BlY2lhbFZhbHVlcyA9ICdzcGVjaWFsLXZhbHVlcycsXG5cbiAgICAvLyBcbiAgICBTcGxpdEZpZWxkID0gJ3NwbGl0LWZpZWxkJyxcblxuICAgIC8vIFxuICAgIFN0YWNrTWFya3MgPSAnc3RhY2stbWFya3MnLFxuXG4gICAgLy8gXG4gICAgU3RhY2tPdmVyZmxvd0NyYXNoID0gJ3N0YWNrLW92ZXJmbG93JyxcblxuICAgIC8vIFxuICAgIFN1YnRvdGFsQWdncmVnYXRpb24gPSAnc3VidG90YWwtYWdncmVnYXRpb24nLFxuXG4gICAgLy8gXG4gICAgU3VidG90YWxzID0gJ3N1YnRvdGFscycsXG5cbiAgICAvLyBcbiAgICBTd2FwRmllbGRzID0gJ3N3YXAtZmllbGRzJyxcblxuICAgIC8vIFxuICAgIFN3YXBSb3dzQW5kQ29sdW1ucyA9ICdzd2FwLXJvd3MtYW5kLWNvbHVtbnMnLFxuXG4gICAgLy8gXG4gICAgVGFibGVhdUV4Y2VwdGlvbiA9ICd0YWJsZWF1LWV4Y2VwdGlvbicsXG5cbiAgICAvLyBcbiAgICBUb2dnbGVEcm9wTGluZXMgPSAndG9nZ2xlLWRyb3AtbGluZXMnLFxuXG4gICAgLy8gXG4gICAgVG9nZ2xlRmllbGRCbGVuZGluZyA9ICd0b2dnbGUtZmllbGQtYmxlbmRpbmcnLFxuXG4gICAgLy8gXG4gICAgVG9nZ2xlTWFya0xhYmVscyA9ICd0b2dnbGUtbWFyay1sYWJlbHMnLFxuXG4gICAgLy8gXG4gICAgVG9nZ2xlUGFnZVRpdGxlID0gJ3RvZ2dsZS1wYWdlLXRpdGxlJyxcblxuICAgIC8vIFxuICAgIFRvZ2dsZVBhcmFtZXRlckN0cmxEaXNwbGF5RmxhZyA9ICd0b2dnbGUtcGFyYW1ldGVyLWN0cmwtZGlzcGxheS1mbGFnJyxcblxuICAgIC8vIFxuICAgIFRvZ2dsZVBhcmFtZXRlckN0cmxUaXRsZSA9ICd0b2dnbGUtcGFyYW1ldGVyLWN0cmwtdGl0bGUnLFxuXG4gICAgLy8gXG4gICAgVG9nZ2xlUXVpY2tGaWx0ZXJUaXRsZSA9ICd0b2dnbGUtcXVpY2stZmlsdGVyLXRpdGxlJyxcblxuICAgIC8vIFxuICAgIFRvZ2dsZVZpek5hdmlnYXRpb25TZXR0aW5nID0gJ3RvZ2dsZS12aXotbmF2aWdhdGlvbi1zZXR0aW5nJyxcblxuICAgIC8vIFxuICAgIFVuZG8gPSAndW5kbycsXG5cbiAgICAvLyBcbiAgICBVbmhpZGVEYXRhID0gJ3VuaGlkZS1kYXRhJyxcblxuICAgIC8vIFxuICAgIFVuaGlkZUxhYmVsID0gJ3VuaGlkZS1sYWJlbCcsXG5cbiAgICAvLyBcbiAgICBVcGRhdGVBcmVhQW5ub3RhdGlvbiA9ICd1cGRhdGUtYXJlYS1hbm5vdGF0aW9uJyxcblxuICAgIC8vIFxuICAgIFVwZGF0ZUNhbGNTY29wZUlzb2xhdGlvbiA9ICd1cGRhdGUtc2NvcGUtaXNvbGF0aW9uLWZvci1jYWxjdWxhdGlvbicsXG5cbiAgICAvLyBcbiAgICBVcGRhdGVEYXRhU2VydmVyQ29ubmVjdGlvbkluZm8gPSAndXBkYXRlLWRhdGEtc2VydmVyLWNvbm5lY3Rpb24taW5mbycsXG5cbiAgICAvLyBcbiAgICBVcGRhdGVQb2ludEFubm90YXRpb25QdWxsYmFjayA9ICd1cGRhdGUtcG9pbnQtYW5ub3RhdGlvbi1wdWxsYmFjaycsXG5cbiAgICAvLyBcbiAgICBVcGRhdGVUYWJsZUNhbGNJbmZvID0gJ3VwZGF0ZS10YWJsZS1jYWxjLWluZm9tYXRpb24nLFxuXG4gICAgLy8gXG4gICAgVXBncmFkZUV4dHJhY3QgPSAndXBncmFkZS1leHRyYWN0JyxcblxuICAgIC8vIFxuICAgIFVzZUV4dHJhY3QgPSAndXNlLWV4dHJhY3QnLFxuXG4gICAgLy8gXG4gICAgVmFsaWRhdGVEcmlsbFBhdGhOYW1lID0gJ3ZhbGlkYXRlLWRyaWxsLXBhdGgtbmFtZScsXG5cbiAgICAvLyBcbiAgICBWYWxpZGF0ZUZvcm11bGEgPSAndmFsaWRhdGUtZm9ybXVsYScsXG5cbiAgICAvLyBcbiAgICBWYWxpZGF0ZUluaXRpYWxTUUwgPSAndmFsaWRhdGUtaW5pdGlhbC1zcWwnLFxuXG4gICAgLy8gXG4gICAgVmFsaWRhdGVRdWVyeUJhbmRpbmcgPSAndmFsaWRhdGUtcXVlcnktYmFuZGluZycsXG5cbiAgICAvLyBcbiAgICBWYWxpZGF0ZVR5cGVJblBpbGwgPSAndmFsaWRhdGUtdHlwZS1pbi1waWxsJyxcblxuICAgIC8vIFxuICAgIFZpZXdQYXJhbWV0ZXJDdHJscyA9ICd2aWV3LXBhcmFtLWN0cmxzJyxcblxuICAgIC8vIFxuICAgIFZpZXdRdWlja0ZpbHRlcnMgPSAndmlldy1xdWljay1maWx0ZXJzJyxcblxuICAgIC8vIFxuICAgIEdldFNjaGVtYSA9ICdnZXQtc2NoZW1hJyxcblxuICAgIC8vIFxuICAgIEdldFNjaGVtYVZpZXdlckRhdGFTY2hlbWEgPSAnZ2V0LXNjaGVtYS12aWV3ZXItZGF0YS1zY2hlbWEnLFxuXG4gICAgLy8gXG4gICAgQ29udmVydFRvRGltZW5zaW9uID0gJ2NvbnZlcnQtdG8tZGltZW5zaW9uJyxcblxuICAgIC8vIFxuICAgIENvbnZlcnRUb01lYXN1cmUgPSAnY29udmVydC10by1tZWFzdXJlJyxcblxuICAgIC8vIFxuICAgIENvbnZlcnRUb0NvbnRpbnVvdXMgPSAnY29udmVydC10by1jb250aW51b3VzJyxcblxuICAgIC8vIFxuICAgIENvbnZlcnRUb0Rpc2NyZXRlID0gJ2NvbnZlcnQtdG8tZGlzY3JldGUnLFxuXG4gICAgLy8gXG4gICAgUmVuYW1lRmllbGQgPSAncmVuYW1lLWZpZWxkJyxcblxuICAgIC8vIFxuICAgIEhpZGVGaWVsZCA9ICdoaWRlLWZpZWxkJyxcblxuICAgIC8vIFxuICAgIFVuaGlkZUZpZWxkID0gJ3VuaGlkZS1maWVsZCcsXG5cbiAgICAvLyBcbiAgICBIaWRlVW51c2VkRmllbGRzID0gJ2hpZGUtdW51c2VkLWZpZWxkcycsXG5cbiAgICAvLyBcbiAgICBEdXBsaWNhdGVGaWVsZHMgPSAnZHVwbGljYXRlLWZpZWxkcycsXG5cbiAgICAvLyBcbiAgICBDbGVhblZhbHVlcyA9ICdjbGVhbi12YWx1ZXMnLFxuXG4gICAgLy8gXG4gICAgUGFyc2VEYXRlID0gJ3BhcnNlLWRhdGUnLFxuXG4gICAgLy8gXG4gICAgTWFrZURhdGUgPSAnbWFrZS1kYXRlJyxcblxuICAgIC8vIFxuICAgIFNldFF1YWxpZnlOYW1lcyA9ICdzZXQtcXVhbGlmeS1uYW1lcycsXG5cbiAgICAvLyBcbiAgICBDcmVhdGVNZWFzdXJlRnJvbUNvbHVtbiA9ICdjcmVhdGUtbWVhc3VyZS1mcm9tLWNvbHVtbicsXG5cbiAgICAvLyBcbiAgICBSZW1vdmVGcm9tU2NoZW1hRHJpbGxQYXRoID0gJ3JlbW92ZS1mcm9tLXNjaGVtYS1kcmlsbC1wYXRoJyxcblxuICAgIC8vIFxuICAgIEFkZFRvU2NoZW1hRHJpbGxQYXRoID0gJ2FkZC10by1zY2hlbWEtZHJpbGwtcGF0aCcsXG5cbiAgICAvLyBcbiAgICBSZW1vdmVTY2hlbWFEcmlsbFBhdGggPSAncmVtb3ZlLXNjaGVtYS1kcmlsbC1wYXRoJyxcblxuICAgIC8vIFxuICAgIFNob3dIaWRkZW5GaWVsZHMgPSAnc2hvdy1oaWRkZW4tZmllbGRzJyxcblxuICAgIC8vIFxuICAgIFNob3dBbGlhc2VzID0gJ3Nob3ctYWxpYXNlcycsXG5cbiAgICAvLyBcbiAgICBTZXRSb3dEaXNwbGF5Q291bnQgPSAnc2V0LXJvdy1kaXNwbGF5LWNvdW50JyxcblxuICAgIC8vIFxuICAgIFNob3dTdHJ1Y3R1cmUgPSAnc2hvdy1zdHJ1Y3R1cmUnLFxuXG4gICAgLy8gXG4gICAgR3JvdXBCeVRhYmxlID0gJ2dyb3VwLWJ5LXRhYmxlJyxcblxuICAgIC8vIFxuICAgIENoYW5nZURhdGFUeXBlID0gJ2NoYW5nZS1kYXRhLXR5cGUnLFxuXG4gICAgLy8gXG4gICAgQ2hhbmdlUGl2b3RTdHJhdGVneSA9ICdjaGFuZ2UtcGl2b3Qtc3RyYXRlZ3knLFxuXG4gICAgLy8gXG4gICAgQ2hhbmdlRGlzcGxheUFsaWFzID0gJ2NoYW5nZS1kaXNwbGF5LWFsaWFzJyxcblxuICAgIC8vIFxuICAgIFNldEluY2x1ZGVTaGFyZWRNZW1iZXJzID0gJ3NldC1pbmNsdWRlLXNoYXJlZC1tZW1iZXJzJyxcblxuICAgIC8vIFxuICAgIFNldFV0aWxpdHlEaW1lbnNpb24gPSAnc2V0LXV0aWxpdHktZGltZW5zaW9uJyxcblxuICAgIC8vIFxuICAgIFNldERlZmF1bHRIaWVyYXJjaHkgPSAnc2V0LWRlZmF1bHQtaGllcmFyY2h5JyxcblxuICAgIC8vIFxuICAgIERhdGFTb3VyY2VTb3J0T3JkZXIgPSAnZGF0YS1zb3VyY2Utc29ydC1vcmRlcicsXG5cbiAgICAvLyBcbiAgICBDbGVhclV0aWxpdHlEaW1lbnNpb24gPSAnY2xlYXItdXRpbGl0eS1kaW1lbnNpb24nLFxuXG4gICAgLy8gXG4gICAgQ2xlYXJEZWZhdWx0U29ydCA9ICdjbGVhci1kZWZhdWx0LXNvcnQnLFxuXG4gICAgLy8gXG4gICAgU2V0RGVmYXVsdEFnZ3JlZ2F0aW9uID0gJ3NldC1kZWZhdWx0LWFnZ3JlZ2F0aW9uJyxcblxuICAgIC8vIFxuICAgIFNldERlZmF1bHRWVEFnZ3JlZ2F0aW9uID0gJ3NldC1kZWZhdWx0LXZ0YWdncmVnYXRpb24nLFxuXG4gICAgLy8gXG4gICAgQ2hhbmdlRmlzY2FsWWVhciA9ICdjaGFuZ2UtZmlzY2FsLXllYXInLFxuXG4gICAgLy8gXG4gICAgQ2hhbmdlU2VtYW50aWNSb2xlID0gJ2NoYW5nZS1zZW1hbnRpYy1yb2xlJyxcblxuICAgIC8vIFxuICAgIEFkZFRvU2hlZXQgPSAnYWRkLXRvLXNoZWV0JyxcblxuICAgIC8vIFxuICAgIERyb3BTY2hlbWFTZWxPblNoZWxmID0gJ2Ryb3Atc2NoZW1hLXNlbC1vbi1zaGVsZicsXG5cbiAgICAvLyBcbiAgICBBZGRUb1NjaGVtYUZpZWxkRm9sZGVyID0gJ2FkZC10by1zY2hlbWEtZmllbGQtZm9sZGVyJyxcblxuICAgIC8vIFxuICAgIFJlbW92ZUZyb21TY2hlbWFGaWVsZEZvbGRlciA9ICdyZW1vdmUtZnJvbS1zY2hlbWEtZmllbGQtZm9sZGVyJyxcblxuICAgIC8vIFxuICAgIFJlbW92ZVNjaGVtYUZpZWxkRm9sZGVyID0gJ3JlbW92ZS1zY2hlbWEtZmllbGQtZm9sZGVyJyxcblxuICAgIC8vIFxuICAgIERlZmF1bHRUZXh0Rm9ybWF0ID0gJ2RlZmF1bHQtdGV4dC1mb3JtYXQnLFxuXG4gICAgLy8gXG4gICAgRWRpdFNjaGVtYUNhcHRpb24gPSAnZWRpdC1zY2hlbWEtY2FwdGlvbicsXG5cbiAgICAvLyBcbiAgICBSZXNldFNjaGVtYUNhcHRpb24gPSAncmVzZXQtc2NoZW1hLWNhcHRpb24nLFxuXG4gICAgLy8gXG4gICAgQ3JlYXRlT3V0bGllclNldCA9ICdjcmVhdGUtb3V0bGllci1zZXQnLFxufVxuXG5leHBvcnQgZW51bSBVSUNvbW1hbmRzIHtcblxuXG4gICAgLy8gXG4gICAgQWJvdXQgPSAnYWJvdXQnLFxuXG4gICAgLy8gXG4gICAgQWRkRGF0YVNlcnZlckRhdGFTb3VyY2VVSSA9ICdhZGQtZGF0YS1zZXJ2ZXItZGF0YXNvdXJjZS11aScsXG5cbiAgICAvLyBcbiAgICBTd2l0Y2hUb0RvY3VtZW50QW5kQWRkRGF0YVNlcnZlckRhdGFTb3VyY2VVSSA9ICdzd2l0Y2gtdG8tZG9jdW1lbnQtYW5kLWFkZC1kYXRhLXNlcnZlci1kcy11aScsXG5cbiAgICAvLyBcbiAgICBBZGREcmlsbFBhdGhVSSA9ICdhZGQtZHJpbGxwYXRoLXVpJyxcblxuICAgIC8vIFxuICAgIEFkZEZpZWxkRm9sZGVyVUkgPSAnYWRkLWZpZWxkLWZvbGRlci11aScsXG5cbiAgICAvLyBcbiAgICBBZGRGaWxlVG9FeHRyYWN0VUkgPSAnYWRkLWZpbGUtdG8tZXh0cmFjdC11aScsXG5cbiAgICAvLyBcbiAgICBBZGREYXRhU291cmNlVG9FeHRyYWN0VUkgPSAnYWRkLWRhdGEtc291cmNlLXRvLWV4dHJhY3QtdWknLFxuXG4gICAgLy8gXG4gICAgQWRkUUNUb1NoZWV0VUkgPSAnYWRkLXFjLXRvLXNoZWV0LXVpJyxcblxuICAgIC8vIFxuICAgIEFkZFJlZmVyZW5jZUxpbmVVSSA9ICdhZGQtcmVmZXJlbmNlLWxpbmUtdWknLFxuXG4gICAgLy8gXG4gICAgQWRkU2NoZW1hRmllbGRGb2xkZXJVSSA9ICdhZGQtdG8tc2NoZW1hLWZpZWxkLWZvbGRlci11aScsXG5cbiAgICAvLyBcbiAgICBBZGRUYWJsZWF1U2VydmVyRFNDb25uZWN0aW9uVUkgPSAnYWRkLXRhYmxlYXUtc2VydmVyLWRzLWNvbm5lY3Rpb24tdWknLFxuXG4gICAgLy8gXG4gICAgQWRkVG9TY2hlbWFEcmlsbFBhdGhVSSA9ICdhZGQtdG8tc2NoZW1hLWRyaWxscGF0aC11aScsXG5cbiAgICAvLyBcbiAgICBBZGRUb1NoZWV0VUkgPSAnYWRkLXRvLXNoZWV0LXVpJyxcblxuICAgIC8vIFxuICAgIEFubm90YXRlVUkgPSAnYW5ub3RhdGUtdWknLFxuXG4gICAgLy8gXG4gICAgQXBwZW5kRGF0YVNvdXJjZVRvUmVtb3RlRXh0cmFjdFVJID0gJ2FwcGVuZC1kYXRhLXNvdXJjZS10by1yZW1vdGUtZXh0cmFjdC11aScsXG5cbiAgICAvLyBcbiAgICBBdHRlbXB0Q29ubmVjdERhdGFTb3VyY2VzT25TaGVldFVJID0gJ2F0dGVtcHQtY29ubmVjdC1kYXRhc291cmNlcy1vbi1zaGVldC11aScsXG5cbiAgICAvLyBcbiAgICBBdHRlbXB0RGF0YVNvdXJjZUNvbm5lY3Rpb25VSSA9ICdhdHRlbXB0LWRhdGFzb3VyY2UtY29ubmVjdC11aScsXG5cbiAgICAvLyBcbiAgICBBdXRvSGlkZVNoZWV0ID0gJ2F1dG8taGlkZS1zaGVldCcsXG5cbiAgICAvLyBcbiAgICBBdXRvbWF0aW9uQ2xpY2tNUlVJdGVtID0gJ2NsaWNrLW1ydS1pdGVtJyxcblxuICAgIC8vIFxuICAgIENhbGN1bGF0ZWRNZW1iZXJzVUkgPSAnY2FsY3VsYXRlZC1tZW1iZXJzLXVpJyxcblxuICAgIC8vIFxuICAgIENoYW5nZUFnZ3JlZ2F0aW9uVUkgPSAnY2hhbmdlLWFnZ3JlZ2F0aW9uLXVpJyxcblxuICAgIC8vIFxuICAgIENoYW5nZURhdGFTZXJ2ZXJMb2dvblVJID0gJ2NoYW5nZS1kYXRhLXNlcnZlci1sb2dvbi11aScsXG5cbiAgICAvLyBcbiAgICBDaGFuZ2VFc3NiYXNlQWxpYXNGaWxlID0gJ2NoYW5nZS1lc3NiYXNlLWFsaWFzLWZpbGUnLFxuXG4gICAgLy8gXG4gICAgQ2hhbmdlRmllbGRUeXBlVUkgPSAnY2hhbmdlLWZpZWxkLXR5cGUtdWknLFxuXG4gICAgLy8gXG4gICAgQ2hhbmdlVGFiQ29sb3JTaGVldCA9ICdjaGFuZ2UtdGFiLWNvbG9yLXNoZWV0JyxcblxuICAgIC8vIFxuICAgIENoZWNrRm9yUHJvZHVjdFVwZGF0ZXMgPSAnY2hlY2stZm9yLXByb2R1Y3QtdXBkYXRlcycsXG5cbiAgICAvLyBcbiAgICBDbGVhckRhc2hib2FyZFVJID0gJ2NsZWFyLWRhc2hib2FyZC11aScsXG5cbiAgICAvLyBcbiAgICBDbGVhclNoZWV0VUkgPSAnY2xlYXItc2hlZXQtdWknLFxuXG4gICAgLy8gXG4gICAgQ2xlYXJTdG9yeVVJID0gJ2NsZWFyLXN0b3J5LXVpJyxcblxuICAgIC8vIFxuICAgIENsZWFyVml6VUkgPSAnY2xlYXItdml6LXVpJyxcblxuICAgIC8vIFxuICAgIENsb3NlQ2FsY3VsYXRpb25VSSA9ICdjbG9zZS1jYWxjdWxhdGlvbi11aScsXG5cbiAgICAvLyBcbiAgICBDbG9zZURhdGFTb3VyY2VVSSA9ICdjbG9zZS1kYXRhc291cmNlLXVpJyxcblxuICAgIC8vIFxuICAgIENsb3NlV29ya2Jvb2sgPSAnY2xvc2Utd29ya2Jvb2snLFxuXG4gICAgLy8gXG4gICAgQ29sb3JMZWdlbmRFZGl0VUkgPSAnY29sb3ItbGVnZW5kLWVkaXQtdWknLFxuXG4gICAgLy8gXG4gICAgQ29tbWl0UGlsbEVkaXRVSSA9ICdjb21taXQtcGlsbC1lZGl0LXVpJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3REYXRhU291cmNlVUkgPSAnY29ubmVjdC1kYXRhc291cmNlLXVpJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3RSZXByb21wdFVJID0gJ2Nvbm5lY3QtcmVwcm9tcHQtdWknLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdFZhcmlhYmxlUHJvbXB0VUkgPSAnY29ubmVjdC12YXJpYWJsZS1wcm9tcHQtdWknLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdFZhcmlhYmxlUHJvbXB0TWF0Y2hpbmdVSSA9ICdjb25uZWN0LXZhcmlhYmxlLXByb21wdC1tYXRjaGluZy11aScsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uQWRkTmV3Q3VzdG9tU1FMVUkgPSAnY29ubmVjdGlvbi1hZGQtbmV3LWN1c3RvbS1zcWwtdWknLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvbkFkZE5ld1RhYmxlVUkgPSAnY29ubmVjdGlvbi1hZGQtbmV3LXRhYmxlLXVpJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25EYXRhR3JpZENvcHlVSSA9ICdjb25uZWN0aW9uLWRhdGEtZ3JpZC1jb3B5LXVpJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25FZGl0Q3VzdG9tU1FMVUkgPSAnY29ubmVjdGlvbi1jdXN0b20tc3FsLXVpJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25FZGl0RXh0cmFjdFVJID0gJ2Nvbm5lY3Rpb24tZXh0cmFjdC11aScsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uRWRpdERCVmFyaWFibGVzVUkgPSAnY29ubmVjdGlvbi1lZGl0LWRiLXZhcmlhYmxlcy11aScsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uRWRpdENvbm5lY3Rpb25VSSA9ICdjb25uZWN0aW9uLWVkaXQtY29ubmVjdGlvbi11aScsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uRmluYWxpemVEYXRhU291cmNlVUkgPSAnY29ubmVjdGlvbi1maW5hbGl6ZS1kYXRhc291cmNlLXVpJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25GaW5hbGl6ZUV4dHJhY3RTdGF0ZXNVSSA9ICdjb25uZWN0aW9uLWZpbmFsaXplLWV4dHJhY3Qtc3RhdGVzLXVpJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25HZXRUeXBlR3JvdXBQcmVzTW9kZWxVSSA9ICdjb25uZWN0aW9uLWdldC10eXBlLWdyb3VwLXByZXMtbW9kZWwtdWknLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvbkdldFNhdmVkRGF0YVNvdXJjZXNQcmVzTW9kZWxVSSA9ICdjb25uZWN0aW9uLWdldC1zYXZlZC1kcy1wcmVzLW1vZGVsLXVpJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25QYXJ0aXRpb25pbmdGYWlsdXJlVUkgPSAnY29ubmVjdGlvbi1wYXJ0aXRpb25pbmctZmFpbHVyZS11aScsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uUmVwbGFjZVRhYmxlVUkgPSAnY29ubmVjdGlvbi1yZXBsYWNlLXRhYmxlLXVpJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25TZWFyY2hDYXRhbG9nVUkgPSAnY29ubmVjdGlvbi1zZWFyY2gtY2F0YWxvZy11aScsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uU2VhcmNoQ3ViZVVJID0gJ2Nvbm5lY3Rpb24tc2VhcmNoLWN1YmUtdWknLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvblNlbGVjdENhdGFsb2dVSSA9ICdjb25uZWN0aW9uLXNlbGVjdC1jYXRhbG9nLXVpJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25TZWxlY3RDdWJlVUkgPSAnY29ubmVjdGlvbi1zZWxlY3QtY3ViZS11aScsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uU2VsZWN0RGF0YWJhc2VVSSA9ICdjb25uZWN0aW9uLXNlbGVjdC1kYXRhYmFzZS11aScsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uU2VsZWN0U3RhbmRhcmRDb25uZWN0aW9uVUkgPSAnY29ubmVjdGlvbi1zZWxlY3Qtc3RhbmRhcmQtY29ubmVjdGlvbi11aScsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uU2VsZWN0U3RvcmVkUHJvY2VkdXJlVUkgPSAnY29ubmVjdGlvbi1zZWxlY3Qtc3RvcmVkLXByb2NlZHVyZS11aScsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0aW9uU2hvd0VkaXRUYWJsZURpYWxvZ1VJID0gJ2Nvbm5lY3Rpb24tc2hvdy1lZGl0LXRhYmxlLXVpJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25TaG93UGl2b3REaWFsb2dVSSA9ICdjb25uZWNpdG9uLXNob3ctcGl2b3QtZGlhbG9nLXVpJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25Tb3J0Q2F0YWxvZ1VJID0gJ2Nvbm5lY3Rpb24tc29ydC1jYXRhbG9nLXVpJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25Tb3J0Q3ViZVVJID0gJ2Nvbm5lY3Rpb24tc29ydC1jdWJlLXVpJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3Rpb25WYWxpZGF0ZUN1c3RvbVNRTFVJID0gJ2Nvbm5lY3Rpb24tdmFsaWRhdGUtY3VzdG9tLXNxbC11aScsXG5cbiAgICAvLyBcbiAgICBDb25uZWN0VG9DbG91ZEZpbGUgPSAnY29ubmVjdC10by1jbG91ZC1maWxlJyxcblxuICAgIC8vIFxuICAgIENvbm5lY3RUb0RhdGFTZXJ2ZXJTb3VyY2VVSSA9ICdjb25uZWN0LWRhdGEtc2VydmVyLWRhdGFzb3VyY2UtdWknLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvbkNvbnZlcnRUb1NRTFVJID0gJ2Nvbm5lY3Rpb24tY29udmVydC10by1zcWwtdWknLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdGlvblJlbmFtZUNvbm5lY3Rpb25VSSA9ICdjb25uZWN0aW9uLXJlbmFtZS1jb25uZWN0aW9uLXVpJyxcblxuICAgIC8vIFxuICAgIEV4cG9ydFVuZGVybHlpbmdEYXRhVG9DU1ZVSSA9ICdleHBvcnQtdG8tY3N2LXdpdGgtcHJvZ3Jlc3MtdWknLFxuXG4gICAgLy8gXG4gICAgQ29ubmVjdE9EQkNVSSA9ICdjb25uZWN0LW9kYmMtdWknLFxuXG4gICAgLy8gXG4gICAgQ29weUNyb3NzdGFiID0gJ2NvcHktY3Jvc3N0YWInLFxuXG4gICAgLy8gXG4gICAgQ29weURhdGEgPSAnY29weS1kYXRhJyxcblxuICAgIC8vIFxuICAgIENvcHlEcmlsbFBhdGhGaWVsZHNVSSA9ICdjb3B5LWRyaWxsLXBhdGgtZmllbGRzLXVpJyxcblxuICAgIC8vIFxuICAgIENvcHlGaWVsZHNEZWZuVUkgPSAnY29weS1maWVsZHMtZGVmbi11aScsXG5cbiAgICAvLyBcbiAgICBDb3B5SW1hZ2UgPSAnY29weS1pbWFnZScsXG5cbiAgICAvLyBcbiAgICBDb3B5SW1hZ2VEYXNoYm9hcmQgPSAnY29weS1pbWFnZS1kYXNoYm9hcmQnLFxuXG4gICAgLy8gXG4gICAgQ29weUltYWdlV29ya3NoZWV0ID0gJ2NvcHktaW1hZ2Utd29ya3NoZWV0JyxcblxuICAgIC8vIFxuICAgIENvcHlJbWFnZVN0b3J5ID0gJ2NvcHktaW1hZ2Utc3RvcnknLFxuXG4gICAgLy8gXG4gICAgQ29weVdvcmtzaGVldEZvcm1hdHRpbmcgPSAnY29weS1mb3JtYXR0aW5nJyxcblxuICAgIC8vIFxuICAgIENyZWF0ZUNhbGN1bGF0ZWRTZXRVSSA9ICdjcmVhdGUtY2FsY3VsYXRlZC1zZXQtdWknLFxuXG4gICAgLy8gXG4gICAgQ3JlYXRlQ2FsY3VsYXRpb25VSSA9ICdjcmVhdGUtY2FsY3VsYXRpb24tdWknLFxuXG4gICAgLy8gXG4gICAgQ3JlYXRlQ29tYmluZWRGaWVsZFVJID0gJ2NyZWF0ZS1jb21iaW5lZC1maWVsZC11aScsXG5cbiAgICAvLyBcbiAgICBDcmVhdGVDb25uZWN0aW9uVUkgPSAnY3JlYXRlLWNvbm5lY3Rpb24tdWknLFxuXG4gICAgLy8gXG4gICAgQ3JlYXRlRGF0ZUJpblVJID0gJ2NyZWF0ZS1EYXRlLWJpbi11aScsXG5cbiAgICAvLyBcbiAgICBDcmVhdGVHcm91cFNlbGVjdGlvblVJID0gJ2NyZWF0ZS1ncm91cC1zZWxlY3Rpb24tdWknLFxuXG4gICAgLy8gXG4gICAgQ3JlYXRlR3JvdXBVSSA9ICdjcmVhdGUtZ3JvdXAtdWknLFxuXG4gICAgLy8gXG4gICAgQ3JlYXRlSWRlbnRpdHlTZXQgPSAnY3JlYXRlLXVzZXItZmlsdGVyJyxcblxuICAgIC8vIFxuICAgIENyZWF0ZUxlYWZDb25uZWN0aW9uVUkgPSAnY3JlYXRlLWxlYWYtY29ubmVjdGlvbi11aScsXG5cbiAgICAvLyBcbiAgICBDcmVhdGVOdW1lcmljQmluc1VJID0gJ2NyZWF0ZS1udW1lcmljLWJpbnMtdWknLFxuXG4gICAgLy8gXG4gICAgQ3JlYXRlU2V0VUkgPSAnY3JlYXRlLXNldC11aScsXG5cbiAgICAvLyBcbiAgICBDdXN0b21EYXRlQWdncmVnYXRpb25VSSA9ICdjdXN0b20tZGF0ZS1hZ2dyZWdhdGlvbi11aScsXG5cbiAgICAvLyBcbiAgICBDdXREcmlsbFBhdGhGaWVsZHNVSSA9ICdjdXQtZHJpbGwtcGF0aC1maWVsZHMtdWknLFxuXG4gICAgLy8gXG4gICAgQ3V0RmllbGRzRGVmblVJID0gJ2N1dC1maWVsZHMtZGVmbi11aScsXG5cbiAgICAvLyBcbiAgICBEZWFjdGl2YXRlRGFzaGJvYXJkID0gJ2RlYWN0aXZhdGUtZGFzaGJvYXJkJyxcblxuICAgIC8vIFxuICAgIERlbGV0ZUNvb2tpZXMgPSAnZGVsZXRlLWNvb2tpZXMnLFxuXG4gICAgLy8gXG4gICAgRGVsZXRlRmllbGRzVUkgPSAnZGVsZXRlLWZpZWxkcy11aScsXG5cbiAgICAvLyBcbiAgICBEZWxldGVTaGVldFVJID0gJ2RlbGV0ZS1zaGVldC11aScsXG5cbiAgICAvLyBcbiAgICBEZXNjcmliZUFkaG9jQ2x1c3RlclVJID0gJ2Rlc2NyaWJlLWFkaG9jLWNsdXN0ZXItdWknLFxuXG4gICAgLy8gXG4gICAgRGVzY3JpYmVEcmlsbFBhdGhVSSA9ICdkZXNjcmliZS1kcmlsbHBhdGgtdWknLFxuXG4gICAgLy8gXG4gICAgRGVzY3JpYmVGaWVsZFVJID0gJ2Rlc2NyaWJlLWZpZWxkLXVpJyxcblxuICAgIC8vIFxuICAgIERlc2NyaWJlRm9yZWNhc3RVSSA9ICdkZXNjcmliZS1mb3JlY2FzdC11aScsXG5cbiAgICAvLyBcbiAgICBEZXNjcmliZVNjaGVtYURyaWxsUGF0aFVJID0gJ2Rlc2NyaWJlLXNjaGVtYS1kcmlsbHBhdGgtdWknLFxuXG4gICAgLy8gXG4gICAgRGVzY3JpYmVUcmVuZExpbmUgPSAnZGVzY3JpYmUtdHJlbmQtbGluZScsXG5cbiAgICAvLyBcbiAgICBEZXNjcmliZVRyZW5kTW9kZWwgPSAnZGVzY3JpYmUtdHJlbmQtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgT3BlbkRpc2NvdmVyUGFuZUxpbmtzID0gJ29wZW4tZGlzY292ZXItcGFuZS1saW5rcycsXG5cbiAgICAvLyBcbiAgICBEaXNtaXNzR29Ub1dvcmtzaGVldFRvb2x0aXBVSSA9ICdkaXNtaXNzLWdvLXRvLXdvcmtzaGVldC10b29sdGlwLXVpJyxcblxuICAgIC8vIFxuICAgIERvd25sb2FkQ29weURhdGFTb3VyY2UgPSAnZG93bmxvYWQtY29weS1kYXRhLXNvdXJjZScsXG5cbiAgICAvLyBcbiAgICBEcmlsbGRvd25VSSA9ICdkcmlsbGRvd24tdWknLFxuXG4gICAgLy8gXG4gICAgRHJvcFNjaGVtYVNlbE9uU2hlbGZVSSA9ICdkcm9wLXNjaGVtYS1zZWwtb24tc2hlbGYtdWknLFxuXG4gICAgLy8gXG4gICAgRHJvcFVJID0gJ2Ryb3AtdWknLFxuXG4gICAgLy8gXG4gICAgRHVwbGljYXRlRGF0YVNvdXJjZVVJID0gJ2R1cGxpY2F0ZS1kYXRhc291cmNlLXVpJyxcblxuICAgIC8vIFxuICAgIER1cGxpY2F0ZVNoZWV0QXNDcm9zc3RhYiA9ICdkdXBsaWNhdGUtc2hlZXQtYXMtY3Jvc3N0YWInLFxuXG4gICAgLy8gXG4gICAgRHVwbGljYXRlU2hlZXRPckNyb3NzdGFiVUkgPSAnZHVwbGljYXRlLXNoZWV0LW9yLWNyb3NzdGFiLXVpJyxcblxuICAgIC8vIFxuICAgIER1cGxpY2F0ZVNoZWV0VUkgPSAnZHVwbGljYXRlLXNoZWV0LXVpJyxcblxuICAgIC8vIFxuICAgIEVkaXRBbGlhc2VzVUkgPSAnZWRpdC1hbGlhc2VzLXVpJyxcblxuICAgIC8vIFxuICAgIEVkaXRBbm5vdGF0aW9uID0gJ2VkaXQtYW5ub3RhdGlvbicsXG5cbiAgICAvLyBcbiAgICBFZGl0QXhpc1VJID0gJ2VkaXQtYXhpcy11aScsXG5cbiAgICAvLyBcbiAgICBFZGl0Q2FsY3VsYXRlZFNldFVJID0gJ2VkaXQtY2FsY3VsYXRlZC1zZXQtdWknLFxuXG4gICAgLy8gXG4gICAgRWRpdENhbGN1bGF0aW9uVUkgPSAnZWRpdC1jYWxjdWxhdGlvbi11aScsXG5cbiAgICAvLyBcbiAgICBFZGl0Q2FwdGlvblVJID0gJ2VkaXQtY2FwdGlvbicsXG5cbiAgICAvLyBcbiAgICBFZGl0Q29tYmluZWRGaWVsZFVJID0gJ2VkaXQtY29tYmluZWQtZmllbGQnLFxuXG4gICAgLy8gXG4gICAgRWRpdENvcHlGaWVsZFVJID0gJ2VkaXQtY29weS1maWVsZC11aScsXG5cbiAgICAvLyBcbiAgICBFZGl0RGF0YVNvdXJjZVVJID0gJ2VkaXQtZGF0YXNvdXJjZS11aScsXG5cbiAgICAvLyBcbiAgICBFZGl0RGF0YVNvdXJjZUZpZWxkQWxpYXNlcyA9ICdlZGl0LWRhdGFzb3VyY2UtZmllbGQtYWxpYXNlcycsXG5cbiAgICAvLyBcbiAgICBFZGl0RGF0YVNvdXJjZUZpbHRlcnNVSSA9ICdlZGl0LWRhdGFzb3VyY2UtZmlsdGVycy11aScsXG5cbiAgICAvLyBcbiAgICBFZGl0RGF0YVNvdXJjZVNpdGVQYXRoc1VJID0gJ2VkaXQtZGF0YXNvdXJjZS1zaXRlLXBhdGhzLXVpJyxcblxuICAgIC8vIFxuICAgIEVkaXREYXRlQmluVUkgPSAnZWRpdC1kYXRlLWJpbi11aScsXG5cbiAgICAvLyBcbiAgICBFZGl0RGVmYXVsdFNvcnRVSSA9ICdlZGl0LWRlZmF1bHQtc29ydC11aScsXG5cbiAgICAvLyBcbiAgICBFZGl0RHJvcExpbmVzVUkgPSAnZWRpdC1kcm9wLWxpbmVzLXVpJyxcblxuICAgIC8vIFxuICAgIEVkaXREcm9wRmllbGRVSSA9ICdlZGl0LWRyb3AtZmllbGQtdWknLFxuXG4gICAgLy8gXG4gICAgRWRpdERhdGFTb3VyY2VSZWxhdGlvbnNoaXBzVUkgPSAnZWRpdC1kYXRhc291cmNlLXJlbGF0aW9uc2hpcHMtdWknLFxuXG4gICAgLy8gXG4gICAgRWRpdEVudW1lcmF0ZWRTZXRVSSA9ICdlZGl0LWVudW1lcmF0ZWQtc2V0JyxcblxuICAgIC8vIFxuICAgIEVkaXRGaWx0ZXJRdWlja0ZpbHRlciA9ICdlZGl0LWZpbHRlci1xdWljay1maWx0ZXInLFxuXG4gICAgLy8gXG4gICAgRWRpdEZpbHRlclVJID0gJ2VkaXQtZmlsdGVyLXVpJyxcblxuICAgIC8vIFxuICAgIEVkaXRGb3JlY2FzdFVJID0gJ2VkaXQtZm9yZWNhc3QtdWknLFxuXG4gICAgLy8gXG4gICAgRWRpdEdyb3VwVUkgPSAnZWRpdC1ncm91cC11aScsXG5cbiAgICAvLyBcbiAgICBFZGl0R3JvdXBWYWx1ZSA9ICdlZGl0LWdyb3VwLXZhbHVlJyxcblxuICAgIC8vIFxuICAgIEVkaXRHcm91cFZhbHVlTGFiZWwgPSAnZWRpdC1ncm91cC12YWx1ZS1sYWJlbCcsXG5cbiAgICAvLyBcbiAgICBFZGl0TGVnZW5kR3JvdXBWYWx1ZVVJID0gJ2VkaXQtZ3JvdXAtdmFsdWUtbGVnZW5kJyxcblxuICAgIC8vIFxuICAgIEVkaXRJbWFnZVVJID0gJ2VkaXQtaW1hZ2UtdWknLFxuXG4gICAgLy8gXG4gICAgRWRpdExlZ2VuZE1lbWJlckFsaWFzVUkgPSAnZWRpdC1sZWdlbmQtbWVtYmVyLWFsaWFzLXVpJyxcblxuICAgIC8vIFxuICAgIEVkaXRMZWdlbmRUaXRsZVVJID0gJ2VkaXQtbGVnZW5kLXRpdGxlLXVpJyxcblxuICAgIC8vIFxuICAgIEVkaXRNYXJrQ29sb3JVSSA9ICdlZGl0LW1hcmstY29sb3ItdWknLFxuXG4gICAgLy8gXG4gICAgRWRpdE1hcmtTaGFwZVVJID0gJ2VkaXQtbWFyay1zaGFwZS11aScsXG5cbiAgICAvLyBcbiAgICBFZGl0TWVtYmVyQWxpYXMgPSAnZWRpdC1tZW1iZXItYWxpYXMnLFxuXG4gICAgLy8gXG4gICAgRWRpdE1lbWJlckFsaWFzTGFiZWwgPSAnZWRpdC1tZW1iZXItYWxpYXMtbGFiZWwnLFxuXG4gICAgLy8gXG4gICAgRWRpdFBhZ2VUaXRsZVVJID0gJ2VkaXQtcGFnZS10aXRsZS11aScsXG5cbiAgICAvLyBcbiAgICBFZGl0UGFyYW1ldGVyQ3RybFRpdGxlID0gJ2VkaXQtcGFyYW0tY29udHJvbC10aXRsZScsXG5cbiAgICAvLyBcbiAgICBFZGl0UGRmUGFnZVNlbGVjdGlvblVJID0gJ2VkaXQtcGRmLXBhZ2Utc2VsZWN0aW9uLXVpJyxcblxuICAgIC8vIFxuICAgIEVkaXRQcmltYXJ5QWxpYXNlc1VJID0gJ2VkaXQtcHJpbWFyeS1hbGlhc2VzLXVpJyxcblxuICAgIC8vIFxuICAgIEVkaXRSZWZlcmVuY2VMaW5lID0gJ2VkaXQtcmVmZXJlbmNlLWxpbmUnLFxuXG4gICAgLy8gXG4gICAgRWRpdFNjaGVtYUNhbGN1bGF0aW9uVUkgPSAnZWRpdC1zY2hlbWEtY2FsY3VsYXRpb24tdWknLFxuXG4gICAgLy8gXG4gICAgRWRpdFNjaGVtYUNhbGN1bGF0aW9uUmFuZ2VVSSA9ICdlZGl0LXNjaGVtYS1jYWxjdWxhdGlvbi1yYW5nZS11aScsXG5cbiAgICAvLyBcbiAgICBFZGl0U2NoZW1hQ2FwdGlvblVJID0gJ2VkaXQtc2NoZW1hLWNhcHRpb24tdWknLFxuXG4gICAgLy8gXG4gICAgRWRpdFNjaGVtYUZpZWxkQWxpYXNVSSA9ICdlZGl0LXNjaGVtYS1maWVsZC1hbGlhcy11aScsXG5cbiAgICAvLyBcbiAgICBSZXNldFNjaGVtYUNhcHRpb25VSSA9ICdyZXNldC1zY2hlbWEtZmllbGQtYWxpYXMtdWknLFxuXG4gICAgLy8gXG4gICAgUmVzZXRNdWx0aXBsZVNjaGVtYUNhcHRpb25zVUkgPSAncmVzZXQtbXVsdGlwbGUtc2NoZW1hLWZpZWxkLWFsaWFzLXVpJyxcblxuICAgIC8vIFxuICAgIEVkaXRTY2hlbWFOdW1lcmljQmluc1VJID0gJ2VkaXQtc2NoZW1hLW51bWVyaWMtYmlucy11aScsXG5cbiAgICAvLyBcbiAgICBFZGl0U2V0VUkgPSAnZWRpdC1zZXQtdWknLFxuXG4gICAgLy8gXG4gICAgRWRpdFRpdGxlUXVpY2tGaWx0ZXIgPSAnZWRpdC10aXRsZS1xdWljay1maWx0ZXInLFxuXG4gICAgLy8gXG4gICAgRWRpdFRpdGxlVUkgPSAnZWRpdC10aXRsZScsXG5cbiAgICAvLyBcbiAgICBFZGl0VG9vbHRpcFVJID0gJ2VkaXQtdG9vbHRpcCcsXG5cbiAgICAvLyBcbiAgICBFZGl0VHJlbmRMaW5lc1VJID0gJ2VkaXQtdHJlbmQtbGluZXMtdWknLFxuXG4gICAgLy8gXG4gICAgRWRpdFVzZXJEZXNjcmlwdGlvblVJID0gJ2VkaXQtdXNlci1kZXNjcmlwdGlvbi11aScsXG5cbiAgICAvLyBcbiAgICBFZGl0V01TTWFwVGlsZVNlcnZlciA9ICdlZGl0LXdtcy1tYXAtdGlsZS1zZXJ2ZXInLFxuXG4gICAgLy8gXG4gICAgRWRpdFpvbmVQYXJhbSA9ICdlZGl0LXpvbmUtcGFyYW0nLFxuXG4gICAgLy8gXG4gICAgRWRpdFpvbmVVcmwgPSAnZWRpdC16b25lLXVybCcsXG5cbiAgICAvLyBcbiAgICBFc3RhYmxpc2hDb25uZWN0aW9uVUkgPSAnZXN0YWJsaXNoLWNvbm5lY3Rpb24tdWknLFxuXG4gICAgLy8gXG4gICAgRXN0YWJsaXNoVGFibGVhdVNlcnZlckNvbm5lY3Rpb25VSSA9ICdlc3RhYmxpc2gtdGFibGVhdS1zZXJ2ZXItY29ubmVjdGlvbi11aScsXG5cbiAgICAvLyBcbiAgICBFeGVjdXRlVUlBdXRvbWF0aW9uQnV0dG9uID0gJ2V4ZWN1dGUtdWktYnV0dG9uLWFjdGlvbicsXG5cbiAgICAvLyBcbiAgICBFeGVjdXRlVUlBdXRvbWF0aW9uQ29tYm9Cb3ggPSAnZXhlY3V0ZS11aS1jb21iby1ib3gtYWN0aW9uJyxcblxuICAgIC8vIFxuICAgIEV4ZWN1dGVVSUF1dG9tYXRpb25HZW5lcmljV2lkZ2V0ID0gJ2V4ZWN1dGUtdWktZ2VuZXJpYy13aWRnZXQtYWN0aW9uJyxcblxuICAgIC8vIFxuICAgIEV4ZWN1dGVVSUF1dG9tYXRpb25MYWJlbCA9ICdleGVjdXRlLXVpLWxhYmVsLWFjdGlvbicsXG5cbiAgICAvLyBcbiAgICBFeGVjdXRlVUlBdXRvbWF0aW9uTWVudSA9ICdleGVjdXRlLXVpLW1lbnUtYWN0aW9uJyxcblxuICAgIC8vIFxuICAgIEV4ZWN1dGVVSUF1dG9tYXRpb25JdGVtVmlldyA9ICdleGVjdXRlLXVpLWl0ZW0tdmlldy1hY3Rpb24nLFxuXG4gICAgLy8gXG4gICAgRXhlY3V0ZVVJQXV0b21hdGlvblRleHRCb3ggPSAnZXhlY3V0ZS11aS10ZXh0LWJveC1hY3Rpb24nLFxuXG4gICAgLy8gXG4gICAgRXhlY3V0ZVVJQXV0b21hdGlvblRvZ2dsZUJ1dHRvbiA9ICdleGVjdXRlLXVpLXRvZ2dsZS1idXR0b24tYWN0aW9uJyxcblxuICAgIC8vIFxuICAgIEV4ZWN1dGVVSUF1dG9tYXRpb25TbGlkZXIgPSAnZXhlY3V0ZS11aS1zbGlkZXItYWN0aW9uJyxcblxuICAgIC8vIFxuICAgIEV4ZWN1dGVVSUF1dG9tYXRpb25XaW5kb3cgPSAnZXhlY3V0ZS11aS13aW5kb3ctYWN0aW9uJyxcblxuICAgIC8vIFxuICAgIEV4ZWN1dGVVSUF1dG9tYXRpb25XZWJWaWV3ID0gJ2V4ZWN1dGUtdWktd2ViLXZpZXctYWN0aW9uJyxcblxuICAgIC8vIFxuICAgIEV4ZWN1dGVVSUF1dG9tYXRpb25UYWIgPSAnZXhlY3V0ZS11aS10YWItYWN0aW9uJyxcblxuICAgIC8vIFxuICAgIEV4ZWN1dGVVSUF1dG9tYXRpb25UZXh0QnJvd3NlciA9ICdleGVjdXRlLXVpLXRleHQtYnJvd3Nlci1hY3Rpb24nLFxuXG4gICAgLy8gXG4gICAgRXhpdEFwcGxpY2F0aW9uID0gJ2V4aXQtYXBwbGljYXRpb24nLFxuXG4gICAgLy8gXG4gICAgRXhwb3J0RGF0YSA9ICdleHBvcnQtZGF0YScsXG5cbiAgICAvLyBcbiAgICBFeHBvcnREYXRhU291cmNlVUkgPSAnZXhwb3J0LWRhdGFzb3VyY2UtdWknLFxuXG4gICAgLy8gXG4gICAgRXhwb3J0UGFja2FnZWRXb3JrYm9vayA9ICdleHBvcnQtcGFja2FnZWQnLFxuXG4gICAgLy8gXG4gICAgRXhwb3J0V29ya2Jvb2tTaGVldHNVSSA9ICdleHBvcnQtd29ya2Jvb2stc2hlZXRzLXVpJyxcblxuICAgIC8vIFxuICAgIEV4dFN2Y0NvbmZpZ1VJID0gJ2V4dC1zdmMtY29uZmlnLXVpJyxcblxuICAgIC8vIFxuICAgIEV4dHJhY3RIaXN0b3J5ID0gJ2V4dHJhY3QtaGlzdG9yeScsXG5cbiAgICAvLyBcbiAgICBFeHRyYWN0UHJvcGVydGllc1VJID0gJ2V4dHJhY3QtcHJvcGVydGllcy11aScsXG5cbiAgICAvLyBcbiAgICBFeHRyYWN0VUkgPSAnZXh0cmFjdC11aScsXG5cbiAgICAvLyBcbiAgICBGaWx0ZXJGaWVsZExhYmVsVUkgPSAnZmlsdGVyLWZpZWxkLWxhYmVsLXVpJyxcblxuICAgIC8vIFxuICAgIEZvcm1hdEFubm90YXRpb24gPSAnZm9ybWF0LWFubm90YXRpb24nLFxuXG4gICAgLy8gXG4gICAgRm9ybWF0QXhpc1VJID0gJ2Zvcm1hdC1heGlzLXVpJyxcblxuICAgIC8vIFxuICAgIEZvcm1hdENhcHRpb25UaXRsZVVJID0gJ2Zvcm1hdC1jYXB0aW9uLXRpdGxlJyxcblxuICAgIC8vIFxuICAgIEZvcm1hdEZpZWxkID0gJ2Zvcm1hdC1wYW5lJyxcblxuICAgIC8vIFxuICAgIEZvcm1hdEZpZWxkTGFiZWxVSSA9ICdmb3JtYXQtZmllbGQtbGFiZWwtdWknLFxuXG4gICAgLy8gXG4gICAgRm9ybWF0TGFiZWwgPSAnZm9ybWF0LWxhYmVsJyxcblxuICAgIC8vIFxuICAgIEZvcm1hdExlZ2VuZHNVSSA9ICdmb3JtYXQtbGVnZW5kcy11aScsXG5cbiAgICAvLyBcbiAgICBGb3JtYXRSZWZlcmVuY2VMaW5lID0gJ2Zvcm1hdC1yZWZlcmVuY2UtbGluZScsXG5cbiAgICAvLyBcbiAgICBGb3JtYXRVSSA9ICdmb3JtYXQtdWknLFxuXG4gICAgLy8gXG4gICAgRnVsbFNjcmVlbiA9ICdmdWxsc2NyZWVuJyxcblxuICAgIC8vIFxuICAgIEdldERhc2hib2FyZFNpZGVQYW5lTW9kZSA9ICdnZXQtZGFzaGJvYXJkLXNpZGVwYW5lLW1vZGUnLFxuXG4gICAgLy8gXG4gICAgR2V0RGVidWdnaW5nSW5mbyA9ICdnZXQtZGVidWdnaW5nLWluZm8nLFxuXG4gICAgLy8gXG4gICAgR2V0SWNvblBhdGhGb3JFbmNvZGluZ1R5cGUgPSAnZ2V0LWljb24tcGF0aC1mb3ItZW5jb2RpbmctdHlwZScsXG5cbiAgICAvLyBcbiAgICBHZXRJY29uUGF0aEZvclByaW1pdGl2ZVR5cGUgPSAnZ2V0LWljb24tcGF0aC1mb3ItcHJpbWl0aXZlLXR5cGUnLFxuXG4gICAgLy8gXG4gICAgR2V0VGFibGVPcHRpb25zUHJlc01vZGVsID0gJ2dldC10YWJsZS1vcHRpb25zLXByZXMtbW9kZWwnLFxuXG4gICAgLy8gXG4gICAgR2V0V2luZG93TmFtZVVJID0gJ2dldC13aW5kb3ctbmFtZScsXG5cbiAgICAvLyBcbiAgICBHZXRXb3Jrc2hlZXRTaWRlUGFuZU1vZGUgPSAnZ2V0LXdvcmtzaGVldC1zaWRlcGFuZS1tb2RlJyxcblxuICAgIC8vIFxuICAgIEdldEhpZGRlblNoZWV0cyA9ICdnZXQtaGlkZGVuLXNoZWV0cycsXG5cbiAgICAvLyBcbiAgICBHZXRPcGVuUGFuZU1SVXMgPSAnZ2V0LW9wZW4tcGFuZS1tcnVzJyxcblxuICAgIC8vIFxuICAgIEdldE9wZW5QYW5lU2FtcGxlV29ya2Jvb2tzID0gJ2dldC1vcGVuLXBhbmUtc2FtcGxlLXdvcmtib29rcycsXG5cbiAgICAvLyBcbiAgICBHZXRSZXRhcmdldERhdGFTb3VyY2VQcmVzTW9kZWxVSSA9ICdnZXQtcmV0YXJnZXQtZGF0YXNvdXJjZS1wcmVzLW1vZGVsLXVpJyxcblxuICAgIC8vIFxuICAgIEdldFNjaGVtYVZpZXdlclByZXNNb2RlbCA9ICdnZXQtc2NoZW1hLXZpZXdlci1wcmVzLW1vZGVsJyxcblxuICAgIC8vIFxuICAgIEdldFNlbGVjdGVkU2hlZXRzID0gJ2dldC1zZWxlY3RlZC1zaGVldHMnLFxuXG4gICAgLy8gXG4gICAgR2V0U2hlZXRTb3J0ZXJUaHVtYm5haWwgPSAnZ2V0LXNoZWV0LXNvcnRlci10aHVtYm5haWwnLFxuXG4gICAgLy8gXG4gICAgR2V0U2hlZXRUYWJVSVRodW1ibmFpbCA9ICdnZXQtc2hlZXQtdGFiLXVpLXRodW1ibmFpbCcsXG5cbiAgICAvLyBcbiAgICBHZXRTaGVldFRhYlVJVGV4dCA9ICdnZXQtc2hlZXQtdGFiLXVpLXRleHQnLFxuXG4gICAgLy8gXG4gICAgR2V0VmlzaWJsZVRyZWVJdGVtcyA9ICdnZXQtdmlzaWJsZS10cmVlLWl0ZW1zJyxcblxuICAgIC8vIFxuICAgIEdvdG9TaGVldFJhbmdlID0gJ2dvdG8nLFxuXG4gICAgLy8gXG4gICAgR290b1VSTCA9ICdnb3RvLXVybCcsXG5cbiAgICAvLyBcbiAgICBIaWRlQ2FwdGlvblVJID0gJ2hpZGUtY2FwdGlvbicsXG5cbiAgICAvLyBcbiAgICBIaWRlRmlsbXN0cmlwVUkgPSAnaGlkZS1maWxtc3RyaXAtdWknLFxuXG4gICAgLy8gXG4gICAgSGlkZVRpdGxlVUkgPSAnaGlkZS10aXRsZScsXG5cbiAgICAvLyBcbiAgICBIaWRlWm9uZVVJID0gJ2hpZGUtem9uZS11aScsXG5cbiAgICAvLyBcbiAgICBIaWRlQWxsU2hlZXRzVUkgPSAnaGlkZS1hbGwtc2hlZXRzLXVpJyxcblxuICAgIC8vIFxuICAgIFVuaGlkZUFsbFNoZWV0c1VJID0gJ3VuaGlkZS1hbGwtc2hlZXRzLXVpJyxcblxuICAgIC8vIFxuICAgIEltcG9ydExvY2FsRGF0YVVJID0gJ2ltcG9ydC1sb2NhbC1kYXRhLXVpJyxcblxuICAgIC8vIFxuICAgIEltcG9ydE1hcFNvdXJjZSA9ICdpbXBvcnQtbWFwLXNvdXJjZScsXG5cbiAgICAvLyBcbiAgICBJbXBvcnRNYXBTb3VyY2VVSSA9ICdpbXBvcnQtbWFwLXNvdXJjZS11aScsXG5cbiAgICAvLyBcbiAgICBJbXBvcnRXb3JrYm9va1VJID0gJ2ltcG9ydC13b3JrYm9vay11aScsXG5cbiAgICAvLyBcbiAgICBMb2FkRGVmYXVsdEZvcm1hdHRpbmdVSSA9ICdsb2FkLWZvcm1hdHRpbmctdWknLFxuXG4gICAgLy8gXG4gICAgTG9jYXRlRmllbGRVSSA9ICdsb2NhdGUtZmllbGQtdWknLFxuXG4gICAgLy8gXG4gICAgTG9nTWVtb3J5VXNhZ2UgPSAnbG9nLW1lbW9yeS11c2FnZScsXG5cbiAgICAvLyBcbiAgICBNYW5hZ2VMaWNlbnNpbmcgPSAnbWFuYWdlLWxpY2Vuc2luZycsXG5cbiAgICAvLyBcbiAgICBNYW5hZ2VNYXBib3ggPSAnbWFuYWdlLW1hcGJveCcsXG5cbiAgICAvLyBcbiAgICBNYW5hZ2VQdWJsaWNXb3JrYm9va3MgPSAnbWFuYWdlLXB1YmxpYycsXG5cbiAgICAvLyBcbiAgICBNYW5hZ2VNYXBTZXJ2aWNlcyA9ICdtYW5hZ2UtbWFwLXNlcnZpY2VzJyxcblxuICAgIC8vIFxuICAgIE1hcExheWVyc1VJID0gJ21hcC1sYXllcnMtdWknLFxuXG4gICAgLy8gXG4gICAgTWFuYWdlV01TID0gJ21hbmFnZS13bXMnLFxuXG4gICAgLy8gXG4gICAgVXBncmFkZURhdGFTb3VyY2VzVUkgPSAndXBncmFkZS1kYXRhc291cmNlcy11aScsXG5cbiAgICAvLyBcbiAgICBVcGdyYWRlRGF0YVNvdXJjZVVJID0gJ3VwZ3JhZGUtZGF0YXNvdXJjZS11aScsXG5cbiAgICAvLyBcbiAgICBNb3ZlUmVwb3NpdG9yeSA9ICdtb3ZlLXJlcG9zaXRvcnknLFxuXG4gICAgLy8gXG4gICAgTmV3U2NoZW1hRHJpbGxQYXRoVUkgPSAnbmV3LXNjaGVtYS1kcmlsbC1wYXRoLXVpJyxcblxuICAgIC8vIFxuICAgIE5ld1VJRGFzaGJvYXJkID0gJ25ldy1kYXNoYm9hcmQtdWknLFxuXG4gICAgLy8gXG4gICAgTmV3VUlXb3Jrc2hlZXQgPSAnbmV3LXdvcmtzaGVldC11aScsXG5cbiAgICAvLyBcbiAgICBOZXdVSVN0b3J5Ym9hcmQgPSAnbmV3LXN0b3J5Ym9hcmQtdWknLFxuXG4gICAgLy8gXG4gICAgTmV3V29ya2Jvb2sgPSAnbmV3LXdvcmtib29rJyxcblxuICAgIC8vIFxuICAgIE5leHRTaGVldCA9ICduZXh0LXNoZWV0JyxcblxuICAgIC8vIFxuICAgIE5vblJhbmdlZEVkaXRSZWZlcmVuY2VMaW5lID0gJ25vbi1yYW5nZWQtZWRpdC1yZWZlcmVuY2UtbGluZScsXG5cbiAgICAvLyBcbiAgICBPcGVuQm9va21hcmsgPSAnb3Blbi1ib29rbWFyaycsXG5cbiAgICAvLyBcbiAgICBPcGVuRnJvbVdvcmtncm91cCA9ICdvcGVuLXdvcmtib29rLWZyb20td29ya2dyb3VwJyxcblxuICAgIC8vIFxuICAgIE9wZW5NYXBTb3VyY2UgPSAnb3Blbi1tYXAtc291cmNlJyxcblxuICAgIC8vIFxuICAgIE9wZW5NYXBTb3VyY2VVSSA9ICdvcGVuLW1hcC1zb3VyY2UtdWknLFxuXG4gICAgLy8gXG4gICAgT3BlblNhbXBsZVdvcmtib29rID0gJ29wZW4tc2FtcGxlLXdvcmtib29rJyxcblxuICAgIC8vIFxuICAgIE9wZW5Xb3JrYm9vayA9ICdvcGVuLXdvcmtib29rJyxcblxuICAgIC8vIFxuICAgIE9wZW5SZWNlbnRXb3JrYm9vayA9ICdvcGVuLXJlY2VudC13b3JrYm9vaycsXG5cbiAgICAvLyBcbiAgICBPcGVuT3RoZXJGaWxlcyA9ICdvcGVuLW90aGVyLWZpbGVzJyxcblxuICAgIC8vIFxuICAgIE9wdGltaXplRXh0cmFjdFVJID0gJ29wdGltaXplLWV4dHJhY3QtdWknLFxuXG4gICAgLy8gXG4gICAgUGFnZVNldHVwID0gJ3BhZ2Utc2V0dXAnLFxuXG4gICAgLy8gXG4gICAgUGFzdGUgPSAncGFzdGUnLFxuXG4gICAgLy8gXG4gICAgUGFzdGVGaWVsZHNEZWZuVUkgPSAncGFzdGUtZmllbGRzLWRlZm4tdWknLFxuXG4gICAgLy8gXG4gICAgUGFzdGVXb3Jrc2hlZXRGb3JtYXR0aW5nID0gJ3Bhc3RlLWZvcm1hdHRpbmcnLFxuXG4gICAgLy8gXG4gICAgUERGRXhwb3J0ID0gJ2V4cG9ydC1wZGYnLFxuXG4gICAgLy8gXG4gICAgUGVyc3BlY3RpdmVzVUkgPSAncGVyc3BlY3RpdmVzLXVpJyxcblxuICAgIC8vIFxuICAgIFByZXNlbnRhdGlvbk1vZGUgPSAncHJlc2VudGF0aW9uLW1vZGUnLFxuXG4gICAgLy8gXG4gICAgUHJpbnQgPSAncHJpbnQnLFxuXG4gICAgLy8gXG4gICAgUHJvbXB0U2NyaXB0ID0gJ3Byb21wdC1jb21tYW5kJyxcblxuICAgIC8vIFxuICAgIFByb3BlcnRpZXNEYXRhU291cmNlVUkgPSAncHJvcGVydGllcy1kYXRhc291cmNlLXVpJyxcblxuICAgIC8vIFxuICAgIFB1Ymxpc2hEYXRhc291cmNlVG9Xb3JrZ3JvdXAgPSAncHVibGlzaC1kYXRhc291cmNlLXRvLXdvcmtncm91cCcsXG5cbiAgICAvLyBcbiAgICBQdWJsaXNoRGF0YXNvdXJjZVRvV29ya2dyb3VwRnJvbURhdGEgPSAncHVibGlzaC1kYXRhc291cmNlLXRvLXdvcmtncm91cC1mcm9tLWRhdGEnLFxuXG4gICAgLy8gXG4gICAgUHVibGlzaERhdGFzb3VyY2VUb1dvcmtncm91cFJhbmdlID0gJ3B1Ymxpc2gtZGF0YXNvdXJjZS10by13b3JrZ3JvdXAtcmFuZ2UnLFxuXG4gICAgLy8gXG4gICAgUHVibGlzaFdvcmtib29rVG9Xb3JrZ3JvdXAgPSAncHVibGlzaC13b3JrYm9vay10by13b3JrZ3JvdXAnLFxuXG4gICAgLy8gXG4gICAgUHVibGlzaERhdGFzb3VyY2VUb1dvcmtncm91cEZyb21Xb3JrYm9va0RhdGEgPSAncHVibGlzaC1kYXRhc291cmNlLXRvLXdvcmtncm91cC1mcm9tLXdvcmtib29rLWRhdGEnLFxuXG4gICAgLy8gXG4gICAgUHJvbXB0Rm9yRGF0YVNvdXJjZUZpbGVVSSA9ICdwcm9tcHQtZm9yLWRhdGFzb3VyY2UtZmlsZS11aScsXG5cbiAgICAvLyBcbiAgICBQcm9tcHRVbmtub3duV0RDVXJsVUkgPSAncHJvbXB0LXVua25vd24td2RjLXVybC11aScsXG5cbiAgICAvLyBcbiAgICBRdWVyeURhdGFTb3VyY2VVSSA9ICdxdWVyeS1kYXRhc291cmNlLXVpJyxcblxuICAgIC8vIFxuICAgIFF1aWNrRmlsdGVyRmllbGRMYWJlbFVJID0gJ3F1aWNrLWZpbHRlci1maWVsZC1sYWJlbC11aScsXG5cbiAgICAvLyBcbiAgICBRdWlja1RhYmxlQ2FsY1VJID0gJ3F1aWNrLXRhYmxlLWNhbGMtdWknLFxuXG4gICAgLy8gXG4gICAgUmVjb25uZWN0TWFwU291cmNlVUkgPSAncmVjb25uZWN0LW1hcC1zb3VyY2UtdWknLFxuXG4gICAgLy8gXG4gICAgUmVjb3JkUGVyZm9ybWFuY2UgPSAncmVjb3JkLXBlcmYnLFxuXG4gICAgLy8gXG4gICAgUmVmcmVzaEFsbEV4dHJhY3RzVUkgPSAncmVmcmVzaC1hbGwtZXh0cmFjdHMtdWknLFxuXG4gICAgLy8gXG4gICAgUmVmcmVzaEFsbFRodW1ibmFpbHNVSSA9ICdyZWZyZXNoLWFsbC10aHVtYm5haWxzJyxcblxuICAgIC8vIFxuICAgIFJlZnJlc2hBdXRvRXh0cmFjdFVJID0gJ3JlZnJlc2gtYXV0by1leHRyYWN0LXVpJyxcblxuICAgIC8vIFxuICAgIFJlZnJlc2hEYXRhU291cmNlVUkgPSAncmVmcmVzaC1kYXRhc291cmNlLXVpJyxcblxuICAgIC8vIFxuICAgIFJlZnJlc2hFeHRyYWN0VUkgPSAncmVmcmVzaC1leHRyYWN0LXVpJyxcblxuICAgIC8vIFxuICAgIFJlZnJlc2hGcm9tU291cmNlVUkgPSAncmVmcmVzaC1mcm9tLXNvdXJjZS11aScsXG5cbiAgICAvLyBcbiAgICBSZWZyZXNoTG9jYWxEYXRhVUkgPSAncmVmcmVzaC1sb2NhbC1kYXRhLXVpJyxcblxuICAgIC8vIFxuICAgIFJlZnJlc2hUaHVtYm5haWxVSSA9ICdyZWZyZXNoLXRodW1ibmFpbCcsXG5cbiAgICAvLyBcbiAgICBSZWxlYXNlTWVtb3J5ID0gJ3JlbGVhc2UtbWVtb3J5JyxcblxuICAgIC8vIFxuICAgIFJlbW92ZUFubm90YXRpb24gPSAncmVtb3ZlLWFubm90YXRpb24nLFxuXG4gICAgLy8gXG4gICAgUmVtb3ZlRXh0cmFjdFVJID0gJ3JlbW92ZS1leHRyYWN0LXVpJyxcblxuICAgIC8vIFxuICAgIFJlbW92ZU1SVUl0ZW0gPSAncmVtb3ZlLW1ydScsXG5cbiAgICAvLyBcbiAgICBSZW1vdmVTYXZlZERhdGFTb3VyY2VVSSA9ICdyZW1vdmUtc2F2ZWQtZGF0YXNvdXJjZScsXG5cbiAgICAvLyBcbiAgICBSZW1vdmVTaGVldEZyb21EYXNoYm9hcmRVSSA9ICdyZW1vdmUtc2hlZXQtZnJvbS1kYXNoYm9hcmQtdWknLFxuXG4gICAgLy8gXG4gICAgUmVtb3ZlVGFibGVVSSA9ICdyZW1vdmUtdGFibGUtdWknLFxuXG4gICAgLy8gXG4gICAgUmVuYW1lRGF0YVNvdXJjZVVJID0gJ3JlbmFtZS1kYXRhc291cmNlLXVpJyxcblxuICAgIC8vIFxuICAgIFJlbmFtZVNjaGVtYUZpZWxkRm9sZGVyVUkgPSAncmVuYW1lLWZpZWxkLWZvbGRlci11aScsXG5cbiAgICAvLyBcbiAgICBSZW5hbWVTY2hlbWFEcmlsbFBhdGhVSSA9ICdyZW5hbWUtc2NoZW1hLWRyaWxscGF0aC11aScsXG5cbiAgICAvLyBcbiAgICBSZW5hbWVTaGVldFVJID0gJ3JlbmFtZS1zaGVldC11aScsXG5cbiAgICAvLyBcbiAgICBSZW9yZGVyU2hlZXRzVUkgPSAncmVvcmRlci1zaGVldHMtdWknLFxuXG4gICAgLy8gXG4gICAgUmVwbGFjZURhdGFTb3VyY2VXaXRoRGF0YVNlcnZlckRhdGFTb3VyY2VVSSA9ICdyZXBsYWNlLWRhdGFzb3VyY2Utd2l0aC1kYXRhLXNlcnZlci1kYXRhc291cmNlLXVpJyxcblxuICAgIC8vIFxuICAgIFJlcGxhY2VGaWVsZFVJID0gJ3JlcGxhY2UtZmllbGQtdWknLFxuXG4gICAgLy8gXG4gICAgUmVzZXRDYXB0aW9uVUkgPSAncmVzZXQtY2FwdGlvbi11aScsXG5cbiAgICAvLyBcbiAgICBSZXNldENhcmRzID0gJ3Jlc2V0LWNhcmRzJyxcblxuICAgIC8vIFxuICAgIFJlc2V0TG9jYWxEYXRhVUkgPSAncmVtb3ZlLWxvY2FsLWRhdGEtdWknLFxuXG4gICAgLy8gXG4gICAgUmVzZXRNZXNzYWdlcyA9ICdyZXNldC1tZXNzYWdlcycsXG5cbiAgICAvLyBcbiAgICBTdGFydE9ubGluZVN5bmNDbGllbnQgPSAnc3RhcnQtb25saW5lLXN5bmMtY2xpZW50JyxcblxuICAgIC8vIFxuICAgIFJlc2V0VGl0bGVVSSA9ICdyZXNldC10aXRsZS11aScsXG5cbiAgICAvLyBcbiAgICBSZXNldFRvRGVmYXVsdHNNYXBDYXJkID0gJ3Jlc2V0LW1hcC10by1kZWZhdWx0cycsXG5cbiAgICAvLyBcbiAgICBSZXNldFdvcmtib29rID0gJ3JldmVydC13b3JrYm9vay11aScsXG5cbiAgICAvLyBcbiAgICBSZXRhcmdldERhdGFTb3VyY2UgPSAncmV0YXJnZXQtZGF0YXNvdXJjZScsXG5cbiAgICAvLyBcbiAgICBSZXRhcmdldERhdGFTb3VyY2VVSSA9ICdyZXRhcmdldC1kYXRhc291cmNlLXVpJyxcblxuICAgIC8vIFxuICAgIFNhdmVBc1dvcmtib29rID0gJ3NhdmUtYXMtd29ya2Jvb2snLFxuXG4gICAgLy8gXG4gICAgU2F2ZUJvb2ttYXJrID0gJ3NhdmUtYm9va21hcmsnLFxuXG4gICAgLy8gXG4gICAgU2F2ZURlYnVnZ2luZ1dvcmtib29rID0gJ3NhdmUtZGVidWdnaW5nLXdvcmtib29rJyxcblxuICAgIC8vIFxuICAgIFNhdmVEZWZhdWx0Rm9ybWF0dGluZ1VJID0gJ3NhdmUtZm9ybWF0dGluZy11aScsXG5cbiAgICAvLyBcbiAgICBTYXZlV29ya2Jvb2sgPSAnc2F2ZS13b3JrYm9vaycsXG5cbiAgICAvLyBcbiAgICBTY2hlbWFEZWZhdWx0TWVtYmVyVUkgPSAnc2NoZW1hLWRlZmF1bHQtbWVtYmVyLXVpJyxcblxuICAgIC8vIFxuICAgIFNjcm9sbFNoZWV0ID0gJ3Njcm9sbC1zaGVldCcsXG5cbiAgICAvLyBcbiAgICBTZXRBY2NvdW50c0RpbWVuc2lvbiA9ICdzZXQtYWNjb3VudHMtZGltZW5zaW9uJyxcblxuICAgIC8vIFxuICAgIFNldEFjdGl2ZUNvbm5lY3Rpb25VSSA9ICdzZXQtYWN0aXZlLWNvbm5lY3Rpb24tdWknLFxuXG4gICAgLy8gXG4gICAgU2V0QW5hbHl0aWNzRHJvcFRhcmdldFZpc2liaWxpdHkgPSAnc2V0LWFuYWx5dGljcy1kcm9wLXRhcmdldC12aXNpYmlsaXR5JyxcblxuICAgIC8vIFxuICAgIFNldERhc2hib2FyZFNpZGVQYW5lTW9kZSA9ICdzZXQtZGFzaGJvYXJkLXNpZGVwYW5lLW1vZGUnLFxuXG4gICAgLy8gXG4gICAgU2V0RGVmYXVsdERhdGVGb3JtYXRVSSA9ICdzZXQtZGVmYXVsdC1kYXRlLWZvcm1hdC11aScsXG5cbiAgICAvLyBcbiAgICBTZXREZWZhdWx0TG9jYXRpb25VSSA9ICdzZXQtZGVmYXVsdC1sb2NhdGlvbi11aScsXG5cbiAgICAvLyBcbiAgICBTZXREZWZhdWx0TWFwU291cmNlVUkgPSAnc2V0LWRlZmF1bHQtbWFwc291cmNlLXVpJyxcblxuICAgIC8vIFxuICAgIFNldERlZmF1bHRUZXh0Rm9ybWF0VUkgPSAnc2V0LWRlZmF1bHQtdGV4dC1mb3JtYXQtdWknLFxuXG4gICAgLy8gXG4gICAgU2V0RGVmYXVsdFV0aWxpdHlNZW1iZXIgPSAnc2V0LWRlZmF1bHQtdXRpbGl0eS1tZW1iZXInLFxuXG4gICAgLy8gXG4gICAgU2V0RnJlZUZvcm1EYXNoYm9hcmRVSSA9ICdzZXQtZnJlZS1mb3JtLWRhc2hib2FyZC11aScsXG5cbiAgICAvLyBcbiAgICBTZXRGaWx0ZXJTaGFyZWRVSSA9ICdzZXQtZmlsdGVyLXNoYXJlZC11aScsXG5cbiAgICAvLyBcbiAgICBTZXRLZXkgPSAnc2V0LWtleScsXG5cbiAgICAvLyBcbiAgICBTZXRQcm9kdWN0QXV0b1VwZGF0ZSA9ICdzZXQtYXV0by11cGRhdGUnLFxuXG4gICAgLy8gXG4gICAgU2V0UXVlcnlGYWlsdXJlID0gJ3NldC1xdWVyeS1mYWlsdXJlJyxcblxuICAgIC8vIFxuICAgIFNldFJlbmRlcmluZyA9ICdzZXQtcmVuZGVyaW5nJyxcblxuICAgIC8vIFxuICAgIFNldFJ1bnRpbWVJbW1lZGlhdGVNb2RlID0gJ3NldC1ydW50aW1lLWltbWVkaWF0ZS1tb2RlJyxcblxuICAgIC8vIFxuICAgIFNldFVJTGFuZ3VhZ2UgPSAnc2V0LXVpLWxhbmd1YWdlJyxcblxuICAgIC8vIFxuICAgIFNldFdvcmtib29rTG9jYWxlVUkgPSAnc2V0LXdvcmtib29rLWxvY2FsZS11aScsXG5cbiAgICAvLyBcbiAgICBTZXRXb3Jrc2hlZXRTaWRlUGFuZU1vZGUgPSAnc2V0LXdvcmtzaGVldC1zaWRlcGFuZS1tb2RlJyxcblxuICAgIC8vIFxuICAgIFNldFpvbmVGaXhlZFNpemVVSSA9ICdzZXQtem9uZS1maXhlZC1zaXplLXVpJyxcblxuICAgIC8vIFxuICAgIFNldHNJbk91dFVJID0gJ3Nob3ctaW4tb3V0LXNldHMnLFxuXG4gICAgLy8gXG4gICAgU2hhcGVMZWdlbmRFZGl0VUkgPSAnc2hhcGUtbGVnZW5kLWVkaXQtdWknLFxuXG4gICAgLy8gXG4gICAgU2hvd0Nsb3VkRmlsZU9BdXRoUHJvbXB0QW5kU2VsZWN0aW9uVUkgPSAnc2hvdy1jbG91ZGZpbGUtb2F1dGgtcHJvbXB0LWFuZC1zZWxlY3Rpb24tdWknLFxuXG4gICAgLy8gXG4gICAgU2hvd0Nvbm5lY3Rpb25BdXRoVUkgPSAnc2hvdy1jb25uZWN0aW9uLWF1dGgtdWknLFxuXG4gICAgLy8gXG4gICAgU2hvd0Nvbm5lY3Rpb25BdXRoQW5kRXN0YWJsaXNoQ29ubmVjdGlvblVJID0gJ3Nob3ctY29ubmVjdGlvbi1hdXRoLWFuZC1lc3RhYmxpc2gtY29ubmVjdGlvbi11aScsXG5cbiAgICAvLyBcbiAgICBTaG93Q29ubmVjdFRhYiA9ICdzaG93LWNvbm5lY3QtdGFiJyxcblxuICAgIC8vIFxuICAgIFNob3dDdXN0b21TcGxpdERpYWxvZ1VJID0gJ3Nob3ctY3VzdG9tLXNwbGl0LWRpYWxvZy11aScsXG5cbiAgICAvLyBcbiAgICBTaG93RG9jdW1lbnQgPSAnZG9jdW1lbnQnLFxuXG4gICAgLy8gXG4gICAgU2hvd0ZlYXR1cmVGbGFnRGlhbG9nID0gJ3Nob3ctZmVhdHVyZS1mbGFnLWRpYWxvZycsXG5cbiAgICAvLyBcbiAgICBTaG93RmllbGRGb3JtYXRVSSA9ICdzaG93LWZpZWxkLWZvcm1hdC11aScsXG5cbiAgICAvLyBcbiAgICBTaG93RmllbGRJblNjaGVtYVVJID0gJ3Nob3ctZmllbGQtaW4tc2NoZW1hJyxcblxuICAgIC8vIFxuICAgIFNob3dGaWxtc3RyaXBVSSA9ICdzaG93LWZpbG1zdHJpcC11aScsXG5cbiAgICAvLyBcbiAgICBTaG93R29vZ2xlU2hlZXRzU2VsZWN0aW9uVUkgPSAnc2hvdy1nb29nbGUtc2hlZXRzLXNlbGVjdGlvbi11aScsXG5cbiAgICAvLyBcbiAgICBTaG93SGVscCA9ICdzaG93LWhlbHAnLFxuXG4gICAgLy8gXG4gICAgU2hvd0hpZGVEYXNoYm9hcmRTaGVldFVJID0gJ3Nob3ctaGlkZS1kYXNoYm9hcmQtc2hlZXQtdWknLFxuXG4gICAgLy8gXG4gICAgU2hvd0hpZGVTdG9yeWJvYXJkU2hlZXRVSSA9ICdzaG93LWhpZGUtc3Rvcnlib2FyZC1zaGVldC11aScsXG5cbiAgICAvLyBcbiAgICBTaG93R3JhcGhpY3NBUEkgPSAnc2hvdy1ncmFwaGljcy1hcGktY29tbWFuZCcsXG5cbiAgICAvLyBcbiAgICBTaG93TWFwT3B0aW9uc0RpYWxvZyA9ICdzaG93LW1hcC1vcHRpb25zLWRpYWxvZycsXG5cbiAgICAvLyBcbiAgICBTaG93TWVhc3VyZXNVSSA9ICdzaG93LW1lYXN1cmVzLXVpJyxcblxuICAgIC8vIFxuICAgIFNob3dNZUN5Y2xlVUkgPSAnc2hvdy1tZS1jeWNsZS11aScsXG5cbiAgICAvLyBcbiAgICBTaG93TWVIaWRlVUkgPSAnc2hvdy1tZS1oaWRlLXVpJyxcblxuICAgIC8vIFxuICAgIFNob3dNZW1iZXJzVUkgPSAnc2hvdy1tZW1iZXJzLXVpJyxcblxuICAgIC8vIFxuICAgIFNob3dNZVRvZ2dsZVVJID0gJ3Nob3ctbWUtdG9nZ2xlLXVpJyxcblxuICAgIC8vIFxuICAgIFNob3dPQXV0aFByb21wdFVJID0gJ3Nob3ctb2F1dGgtcHJvbXB0LXVpJyxcblxuICAgIC8vIFxuICAgIFNob3dQYXJhbWV0ZXJDb250cm9sID0gJ3Nob3ctcGFyYW1ldGVyLWNvbnRyb2wnLFxuXG4gICAgLy8gXG4gICAgU2hvd1B1YmxpY1N0YXR1c0RpYWxvZyA9ICdzaG93LXB1YmxpYy1zdGF0dXMtZGlhbG9nJyxcblxuICAgIC8vIFxuICAgIFNob3dQdWJsaWNRdW90YUV4Y2VlZGVkRGlhbG9nID0gJ3Nob3ctcHVibGljLXF1b3RhLWV4Y2VlZGVkLWRpYWxvZycsXG5cbiAgICAvLyBcbiAgICBTaG93UHVibGlzaERhdGFzb3VyY2VUb1dvcmtncm91cERpYWxvZyA9ICdzaG93LXB1Ymxpc2gtZGF0YXNvdXJjZS10by13b3JrZ3JvdXAtZGlhbG9nJyxcblxuICAgIC8vIFxuICAgIFNob3dRdWVyeUJhbmRpbmdBbmRJbml0aWFsU1FMRGlhbG9nVUkgPSAnc2hvdy1xdWVyeS1iYW5kaW5nLWFuZC1pbml0aWFsLXNxbC1kaWFsb2ctdWknLFxuXG4gICAgLy8gXG4gICAgU2hvd1F1aWNrRmlsdGVyID0gJ3Nob3ctcXVpY2tmaWx0ZXInLFxuXG4gICAgLy8gXG4gICAgU2hvd1F1aWNrRmlsdGVyVUkgPSAnc2hvdy1xdWlja2ZpbHRlci11aScsXG5cbiAgICAvLyBcbiAgICBTaG93UnVudGltZUluZGljYXRvciA9ICdzaG93LXJ1bnRpbWUtaW5kaWNhdG9yJyxcblxuICAgIC8vIFxuICAgIFNob3dTaGVldFNvcnRlciA9ICdzaGVldC1zb3J0ZXInLFxuXG4gICAgLy8gXG4gICAgU2hvd1RhYmxlT3B0aW9uc0RpYWxvZyA9ICdzaG93LXRhYmxlLW9wdGlvbnMtZGlhbG9nJyxcblxuICAgIC8vIFxuICAgIFNob3dXZWJEYXRhQ29ubmVjdG9yVUkgPSAnc2hvdy13ZWItZGF0YS1jb25uZWN0b3ItdWknLFxuXG4gICAgLy8gXG4gICAgU2hvd1dpZGdldFNhbmRib3hVSSA9ICdzaG93LXdpZGdldC1zYW5kYm94LXVpJyxcblxuICAgIC8vIFxuICAgIFNpemVMZWdlbmRFZGl0VUkgPSAnc2l6ZS1sZWdlbmQtZWRpdC11aScsXG5cbiAgICAvLyBcbiAgICBTbGVlcFVJID0gJ3NsZWVwLXVpJyxcblxuICAgIC8vIFxuICAgIFNvcnRBc2NlbmRpbmdGaWVsZExhYmVsVUkgPSAnc29ydC1hc2NlbmRpbmctZmllbGQtbGFiZWwtdWknLFxuXG4gICAgLy8gXG4gICAgU29ydERlc2NlbmRpbmdGaWVsZExhYmVsVUkgPSAnc29ydC1kZXNjZW5kaW5nLWZpZWxkLWxhYmVsLXVpJyxcblxuICAgIC8vIFxuICAgIFNvcnRGaWVsZExhYmVsVUkgPSAnc29ydC1maWVsZC1sYWJlbC11aScsXG5cbiAgICAvLyBcbiAgICBTb3J0VUkgPSAnc29ydC11aScsXG5cbiAgICAvLyBcbiAgICBTcGxpdEZpZWxkVUkgPSAnc3BsaXQtZmllbGQtdWknLFxuXG4gICAgLy8gXG4gICAgU3RhY2tNYXJrc1VJID0gJ3N0YWNrLW1hcmtzLXVpJyxcblxuICAgIC8vIFxuICAgIFN0YXJ0RmlsZUNvbm5lY3Rpb25VSSA9ICdzdGFydC1maWxlLWNvbm5lY3Rpb24tdWknLFxuXG4gICAgLy8gXG4gICAgU3RhcnRQaWxsRWRpdFVJID0gJ3N0YXJ0LXBpbGwtZWRpdC11aScsXG5cbiAgICAvLyBcbiAgICBTd2l0Y2hUb0Nvbm5lY3RUYWIgPSAnc3dpdGNoLXRvLWNvbm5lY3QtdGFiJyxcblxuICAgIC8vIFxuICAgIFN3aXRjaFRvRG9jdW1lbnQgPSAnc3dpdGNoLXRvLWRvY3VtZW50JyxcblxuICAgIC8vIFxuICAgIFN3aXRjaFRvU2hlZXRTb3J0ZXIgPSAnc3dpdGNoLXRvLXNoZWV0LXNvcnRlcicsXG5cbiAgICAvLyBcbiAgICBUYWJsZUNhbGNBZGRyZXNzVUkgPSAndGFibGUtY2FsYy1hZGRyZXNzLXVpJyxcblxuICAgIC8vIFxuICAgIFRhYmxlQ2FsY0lnbm9yZVVJID0gJ3RhYmxlLWNhbGMtaWdub3JlLXVpJyxcblxuICAgIC8vIFxuICAgIFRhYmxlQ2FsY09yZGVyaW5nVUkgPSAndGFibGUtY2FsYy1vcmRlcmluZy11aScsXG5cbiAgICAvLyBcbiAgICBUYWJsZUNhbGNVSSA9ICd0YWJsZS1jYWxjLXVpJyxcblxuICAgIC8vIFxuICAgIFRvZ2dsZUNvbm5lY3RQYW5lVUkgPSAndG9nZ2xlLWNvbm5lY3QtcGFuZScsXG5cbiAgICAvLyBcbiAgICBUb2dnbGVGaWxtc3RyaXBVSSA9ICd0b2dnbGUtZmlsbXN0cmlwLXVpJyxcblxuICAgIC8vIFxuICAgIFRvZ2dsZUlOREpvaW5TZW1hbnRpY3NVSSA9ICd0b2dnbGUtaW5kLWpvaW4tc2VtYW50aWNzLXVpJyxcblxuICAgIC8vIFxuICAgIFRvZ2dsZVBpbk1SVUl0ZW0gPSAndG9nZ2xlLXBpbi1tcnUnLFxuXG4gICAgLy8gXG4gICAgVG9nZ2xlUmVmZXJlbnRpYWxJbnRlZ3JpdHlVSSA9ICd0b2dnbGUtcmVmZXJlbnRpYWwtaW50ZWdyaXR5LXVpJyxcblxuICAgIC8vIFxuICAgIFRvZ2dsZVN0YXJ0UGFnZVVJID0gJ3RvZ2dsZS1zdGFydC1wYWdlJyxcblxuICAgIC8vIFxuICAgIFRyYWNrTWVtb3J5ID0gJ3RyYWNrLW1lbW9yeScsXG5cbiAgICAvLyBcbiAgICBUcmVuZExpbmVzRmxhZ1VJID0gJ3RyZW5kLWxpbmVzLXVpJyxcblxuICAgIC8vIFxuICAgIFVwZGF0ZURlZmF1bHRzTWFwQ2FyZCA9ICd1cGRhdGUtbWFwLWRlZmF1bHRzJyxcblxuICAgIC8vIFxuICAgIFVwZ3JhZGVFeHRyYWN0c1VJID0gJ3VwZ3JhZGUtZXh0cmFjdHMtdWknLFxuXG4gICAgLy8gXG4gICAgVXBncmFkZUV4dHJhY3RVSSA9ICd1cGdyYWRlLWV4dHJhY3QtdWknLFxuXG4gICAgLy8gXG4gICAgVXNlRXh0cmFjdFVJID0gJ3VzZS1leHRyYWN0LXVpJyxcblxuICAgIC8vIFxuICAgIFVzZU1lbW9yeSA9ICd1c2UtbWVtb3J5JyxcblxuICAgIC8vIFxuICAgIFV0aWxpdHlEaW1lbnNpb25VSSA9ICd1dGlsaXR5LWRpbWVuc2lvbi11aScsXG5cbiAgICAvLyBcbiAgICBWYWxpZGF0ZUV4dHJhY3RDcmVkZW50aWFsc1VJID0gJ3ZhbGlkYXRlLWV4dHJhY3QtY3JlZGVudGlhbHMtdWknLFxuXG4gICAgLy8gXG4gICAgVmlld0NhcmQgPSAndmlldy1jYXJkJyxcblxuICAgIC8vIFxuICAgIFZpZXdUaXRsZUNhcmQgPSAndmlldy10aXRsZS1jYXJkJyxcblxuICAgIC8vIFxuICAgIFZpZXdTdW1tYXJ5Q2FyZCA9ICd2aWV3LXN1bW1hcnktY2FyZCcsXG5cbiAgICAvLyBcbiAgICBWaWV3Q2FwdGlvbkNhcmQgPSAndmlldy1jYXB0aW9uLWNhcmQnLFxuXG4gICAgLy8gXG4gICAgVmlld0NvbHVtbnNTaGVsZiA9ICd2aWV3LWNvbHVtbnMtc2hlbGYnLFxuXG4gICAgLy8gXG4gICAgVmlld1Jvd3NTaGVsZiA9ICd2aWV3LXJvd3Mtc2hlbGYnLFxuXG4gICAgLy8gXG4gICAgVmlld1BhZ2VzU2hlbGYgPSAndmlldy1wYWdlcy1zaGVsZicsXG5cbiAgICAvLyBcbiAgICBWaWV3RmlsdGVyc1NoZWxmID0gJ3ZpZXctZmlsdGVycy1zaGVsZicsXG5cbiAgICAvLyBcbiAgICBWaWV3TWVhc3VyZXNTaGVsZiA9ICd2aWV3LW1lYXN1cmVzLXNoZWxmJyxcblxuICAgIC8vIFxuICAgIFZpZXdNYXJrc1NoZWxmID0gJ3ZpZXctbWFya3Mtc2hlbGYnLFxuXG4gICAgLy8gXG4gICAgVmlld0N1cnJlbnRQYWdlQ2FyZCA9ICd2aWV3LWN1cnJlbnQtcGFnZS1jYXJkJyxcblxuICAgIC8vIFxuICAgIFZpZXdEYXRhID0gJ3ZpZXctZGF0YScsXG5cbiAgICAvLyBcbiAgICBWaWV3U1FMRGF0YVVJID0gJ3ZpZXctc3FsLWRhdGEtdWknLFxuXG4gICAgLy8gXG4gICAgVmlld0RhdGFTb3VyY2VEYXRhID0gJ3ZpZXctZGF0YXNvdXJjZS1kYXRhJyxcblxuICAgIC8vIFxuICAgIFZpZXdMZWdlbmQgPSAndmlldy1sZWdlbmQnLFxuXG4gICAgLy8gXG4gICAgVmlld1NpZGVQYW5lID0gJ3ZpZXctc2lkZS1wYW5lJyxcblxuICAgIC8vIFxuICAgIFZpZXdTdGF0dXNCYXIgPSAndmlldy1zdGF0dXNiYXInLFxuXG4gICAgLy8gXG4gICAgVmlld1N1bW1hcnlEZXRhaWwgPSAndmlldy1zdW1tYXJ5LWRldGFpbCcsXG5cbiAgICAvLyBcbiAgICBWaWV3VGFibGVEYXRhID0gJ3ZpZXctdGFibGUtZGF0YScsXG5cbiAgICAvLyBcbiAgICBWaWV3VG9vbEJhciA9ICd2aWV3LXRvb2xiYXInLFxuXG4gICAgLy8gXG4gICAgV2ViVmlld0VuYWJsZUphdmFzY3JpcHQgPSAnd2Vidmlldy1lbmFibGUtamF2YXNjcmlwdCcsXG5cbiAgICAvLyBcbiAgICBXZWJWaWV3RW5hYmxlUGx1Z2lucyA9ICd3ZWJ2aWV3LWVuYWJsZS1wbHVnaW5zJyxcblxuICAgIC8vIFxuICAgIFdlYlZpZXdCbG9ja1BvcHVwcyA9ICd3ZWJ2aWV3LWJsb2NrLXBvcHVwcycsXG5cbiAgICAvLyBcbiAgICBXZWJWaWV3RW5hYmxlVVJMSG92ZXJBY3Rpb25zID0gJ3dlYnZpZXctZW5hYmxlLXVybC1ob3Zlci1hY3Rpb25zJyxcblxuICAgIC8vIFxuICAgIFdvcmtncm91cENoYW5nZURhdGFzZXJ2ZXIgPSAnd29ya2dyb3VwLWNoYW5nZS1kYXRhc2VydmVyJyxcblxuICAgIC8vIFxuICAgIFdvcmtncm91cENoYW5nZVNlcnZlciA9ICd3b3JrZ3JvdXAtY2hhbmdlLXNlcnZlcicsXG5cbiAgICAvLyBcbiAgICBXb3JrZ3JvdXBDaGFuZ2VVc2VyID0gJ3dvcmtncm91cC1jaGFuZ2UtdXNlcicsXG5cbiAgICAvLyBcbiAgICBXb3JrZ3JvdXBSZW1vdmVMYXN0U2VydmVyID0gJ3dvcmtncm91cC1yZW1vdmUtbGFzdC1zZXJ2ZXInLFxufVxuXG5leHBvcnQgZW51bSBEb2NDb21tYW5kcyB7XG5cbiAgICAvLyBHZXRzIHRoZSBheGlzIG9wdGlvbnMgLlxuICAgIEdldEF4aXNPcHRpb25zID0gJ2dldC1heGlzLW9wdGlvbnMnLFxuXG4gICAgLy8gUmVzZXQgdGhlIGF4aXMgb3B0aW9ucyAuXG4gICAgUmVzZXRBeGlzT3B0aW9ucyA9ICdyZXNldC1heGlzLW9wdGlvbnMnLFxuXG4gICAgLy8gU2hvdyBheGlzIGVkaXQgZGlhbG9nXG4gICAgU2hvd0VkaXRBeGlzRGlhbG9nID0gJ3Nob3ctZWRpdC1heGlzLWRpYWxvZycsXG5cbiAgICAvLyBTZXRzIHRoZSBheGlzIGRpcmVjdGlvblxuICAgIFNldEF4aXNSZXZlcnNlZCA9ICdzZXQtYXhpcy1yZXZlcnNlZCcsXG5cbiAgICAvLyBTZXRzIHRoZSBheGlzIHNjYWxlIHR5cGVcbiAgICBTZXRBeGlzU2NhbGVUeXBlID0gJ3NldC1heGlzLXNjYWxlLXR5cGUnLFxuXG4gICAgLy8gU2V0cyB0aGUgbWFpbiB0aXRsZSBvZiBhIHF1YW50aXRhdGl2ZSBheGlzXG4gICAgU2V0QXhpc1RpdGxlID0gJ3NldC1heGlzLXRpdGxlJyxcblxuICAgIC8vIFNldHMgdGhlIHN1YnRpdGxlIG9mIGEgcXVhbnRpdGF0aXZlIGF4aXNcbiAgICBTZXRBeGlzU3VidGl0bGUgPSAnc2V0LWF4aXMtc3VidGl0bGUnLFxuXG4gICAgLy8gU2V0cyB3aGV0aGVyIHdlIHNob3VsZCB1c2UgdGhlIGF1dG9tYXRpYyBzdWJ0aXRsZSBmb3IgYSBxdWFudGl0YXRpdmUgYXhpc1xuICAgIFNldEF4aXNVc2VBdXRvbWF0aWNTdWJ0aXRsZSA9ICdzZXQtYXhpcy11c2UtYXV0b21hdGljLXN1YnRpdGxlJyxcblxuICAgIC8vIFNldHMgdGhlIGF4aXMgcmFuZ2UgdHlwZSBvZiBhIHF1YW50aXRhdGl2ZSBheGlzXG4gICAgU2V0QXhpc0V4dGVudFN0YXJ0VHlwZSA9ICdzZXQtYXhpcy1leHRlbnQtc3RhcnQtdHlwZScsXG5cbiAgICAvLyBTZXRzIHRoZSBheGlzIHJhbmdlIHR5cGUgb2YgYSBxdWFudGl0YXRpdmUgYXhpc1xuICAgIFNldEF4aXNFeHRlbnRFbmRUeXBlID0gJ3NldC1heGlzLWV4dGVudC1lbmQtdHlwZScsXG5cbiAgICAvLyBTZXRzIHRoZSBheGlzIHJhbmdlIHR5cGUgb2YgYSBxdWFudGl0YXRpdmUgYXhpc1xuICAgIFNldEJvdGhBeGlzRXh0ZW50c1R5cGUgPSAnc2V0LWJvdGgtYXhpcy1leHRlbnRzLXR5cGUnLFxuXG4gICAgLy8gU2V0cyB3aGV0aGVyIG9yIG5vdCB0byBmb3JjZS1pbmNsdWRlIHplcm8gb24gYSBxdWFudGl0YXRpdmUgYXhpc1xuICAgIFNldEF4aXNJbmNsdWRlWmVybyA9ICdzZXQtYXhpcy1pbmNsdWRlLXplcm8nLFxuXG4gICAgLy8gU2V0cyBuZXcgbWluL21heCByYW5nZSBlbmRpbmdzIGZvciBheGlzXG4gICAgU2V0QXhpc1JhbmdlRW5kID0gJ3NldC1heGlzLXJhbmdlLWVuZCcsXG5cbiAgICAvLyBTZXRzIG5ldyBtaW4vbWF4IHJhbmdlIGVuZGluZ3MgZm9yIGF4aXNcbiAgICBTZXRBeGlzUmFuZ2VTdGFydCA9ICdzZXQtYXhpcy1yYW5nZS1zdGFydCcsXG5cbiAgICAvLyBTeW5jaHJvbml6ZSBkdWFsIGF4ZXMgb24gYSBmb2xkZWQgcXVhbnRpdGF0aXZlIGF4aXNcbiAgICBTZXRBeGlzRm9sZFN0YXRlID0gJ3NldC1heGlzLWZvbGQtc3RhdGUnLFxuXG4gICAgLy8gU2V0IHRoZSBtYWpvciB0aWNrIG1hcmsgc3RhdGVcbiAgICBTZXRNYWpvclRpY2tNYXJrU3RhdGUgPSAnc2V0LW1ham9yLXRpY2stbWFyay1zdGF0ZScsXG5cbiAgICAvLyBTZXQgdGhlIG1pbm9yIHRpY2sgbWFyayBzdGF0ZVxuICAgIFNldE1pbm9yVGlja01hcmtTdGF0ZSA9ICdzZXQtbWlub3ItdGljay1tYXJrLXN0YXRlJyxcblxuICAgIC8vIFNldCB0aGUgbWFqb3IgdGljayBtYXJrIG9yaWdpblxuICAgIFNldE1ham9yVGlja01hcmtPcmlnaW4gPSAnc2V0LW1ham9yLXRpY2stbWFyay1vcmlnaW4nLFxuXG4gICAgLy8gU2V0IHRoZSBtaW5vciB0aWNrIG1hcmsgb3JpZ2luXG4gICAgU2V0TWlub3JUaWNrTWFya09yaWdpbiA9ICdzZXQtbWlub3ItdGljay1tYXJrLW9yaWdpbicsXG5cbiAgICAvLyBTZXQgdGhlIG1ham9yIHRpY2sgbWFyayBzcGFjaW5nXG4gICAgU2V0TWFqb3JUaWNrTWFya1NwYWNpbmcgPSAnc2V0LW1ham9yLXRpY2stbWFyay1zcGFjaW5nJyxcblxuICAgIC8vIFNldCB0aGUgbWlub3IgdGljayBtYXJrIHNwYWNpbmdcbiAgICBTZXRNaW5vclRpY2tNYXJrU3BhY2luZyA9ICdzZXQtbWlub3ItdGljay1tYXJrLXNwYWNpbmcnLFxuXG4gICAgLy8gU2V0IHRoZSBtYWpvciB0aWNrIG1hcmsgdW5pdHNcbiAgICBTZXRNYWpvclRpY2tNYXJrVW5pdHMgPSAnc2V0LW1ham9yLXRpY2stbWFyay11bml0cycsXG5cbiAgICAvLyBTZXQgdGhlIG1pbm9yIHRpY2sgbWFyayB1bml0c1xuICAgIFNldE1pbm9yVGlja01hcmtVbml0cyA9ICdzZXQtbWlub3ItdGljay1tYXJrLXVuaXRzJyxcblxuXG4gICAgLy8gXG4gICAgQm91bmRpbmdCb3hQYW4gPSAnYm91bmRpbmctYm94LXBhbicsXG5cbiAgICAvLyBcbiAgICBPblRvZ2dsZUF4aXNSYW5nZXMgPSAnb24tdG9nZ2xlLWF4aXMtcmFuZ2VzJyxcblxuICAgIC8vIFxuICAgIFBhbmVQYW4gPSAncGFuZS1wYW4nLFxuXG4gICAgLy8gXG4gICAgUGFuZVpvb20gPSAncGFuZS16b29tJyxcblxuICAgIC8vIFxuICAgIFBhbmVab29tRmFjdG9yID0gJ3BhbmUtem9vbS1mYWN0b3InLFxuXG4gICAgLy8gXG4gICAgUGFuZVpvb21QYW4gPSAncGFuZS16b29tLXBhbicsXG5cbiAgICAvLyBcbiAgICBSZW9yZGVyRm9sZGVkQXhlcyA9ICdyZW9yZGVyLWZvbGRlZC1heGVzJyxcblxuICAgIC8vIFxuICAgIFJlc2V0QXhpc1JhbmdlID0gJ3Jlc2V0LWF4aXMtcmFuZ2UnLFxuXG4gICAgLy8gXG4gICAgU2VsZWN0QXhpc1R1cGxlcyA9ICdzZWxlY3QtYXhpcy10dXBsZXMnLFxuXG4gICAgLy8gXG4gICAgU3dhcFJlZmVyZW5jZUxpbmVGaWVsZHMgPSAnc3dhcC1yZWZlcmVuY2UtbGluZS1maWVsZHMnLFxuXG4gICAgLy8gXG4gICAgU3luY2hyb25pemVBeGlzID0gJ3N5bmNocm9uaXplLWF4aXMnLFxuXG4gICAgLy8gXG4gICAgVG9nZ2xlRHVhbEF4aXMgPSAndG9nZ2xlLWR1YWwtYXhpcycsXG5cbiAgICAvLyBcbiAgICBab29tTGV2ZWwgPSAnem9vbS1sZXZlbCcsXG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktY29yZS9nZW4tc3JjL3ByZXNsYXllci9Db21tYW5kSWRzLnRzXG4gKiovIiwiaW1wb3J0IHsgVmVyYklkIGFzIEFwaVZlcmJJZCB9IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XG5cbmltcG9ydCB7IENvbW1hbmRSZWdpc3RyYXRpb24gfSBmcm9tICcuL0NvbW1hbmRSZWdpc3RyYXRpb24nO1xuXG4vKipcbiAqIFJlZ2lzdHJ5IHdoaWNoIGNvbnRhaW5zIG1hcHBpbmdzIGZyb20gYW4gQXBpIFZlcmJJZCB0byBhIHByZXMtbGF5ZXIgY29tbWFuZC5cbiAqIFRoaXMgaW5jbHVkZXMgdGhlIHBhcmFtZXRlcnMgYW5kIHJldHVybiB2YWx1ZXMgb2YgdGhlIGNvbW1hbmQgYXMgd2VsbFxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBDb21tYW5kTWFwcGluZ1JlZ2lzdHJ5XG4gKi9cbmV4cG9ydCBjbGFzcyBDb21tYW5kTWFwcGluZ1JlZ2lzdHJ5IHtcbiAgcHJpdmF0ZSBfY29tbWFuZHM6IHsgW2FwaVZlcmI6IHN0cmluZ106IENvbW1hbmRSZWdpc3RyYXRpb24gfTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBDb21tYW5kTWFwcGluZ1JlZ2lzdHJ5LlxuICAgKiBAbWVtYmVyb2YgQ29tbWFuZE1hcHBpbmdSZWdpc3RyeVxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX2NvbW1hbmRzID0ge307XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBjb21tYW5kIHRvIHRoZSByZWdpc3RyeVxuICAgKlxuICAgKiBAcGFyYW0ge0NvbW1hbmRSZWdpc3RyYXRpb259IGNvbW1hbmRcbiAgICogQG1lbWJlcm9mIENvbW1hbmRNYXBwaW5nUmVnaXN0cnlcbiAgICovXG4gIHB1YmxpYyBhZGRDb21tYW5kKGNvbW1hbmQ6IENvbW1hbmRSZWdpc3RyYXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLl9jb21tYW5kc1tjb21tYW5kLmFwaVZlcmJJZF0gPSBjb21tYW5kO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRoaXMgcmVnaXN0cnkgY29udGFpbnMgYSBkZWZpbml0aW9uIGZvciB0aGlzIEFwaVZlcmJJZFxuICAgKlxuICAgKiBAcGFyYW0ge0FwaVZlcmJJZH0gYXBpVmVyYklkXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgQ29tbWFuZE1hcHBpbmdSZWdpc3RyeVxuICAgKi9cbiAgcHVibGljIGhhc0NvbW1hbmQoYXBpVmVyYklkOiBBcGlWZXJiSWQpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuX2NvbW1hbmRzLmhhc093blByb3BlcnR5KGFwaVZlcmJJZCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX2NvbW1hbmRzW2FwaVZlcmJJZF0pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBjb21tYW5kIHJlZ2lzdHJhdGlvbiBmb3IgdGhpcyBjb21tYW5kIGlkIG9yIHRocm93cyBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gICAqXG4gICAqIEBwYXJhbSB7QXBpVmVyYklkfSBhcGlWZXJiSWRcbiAgICogQHJldHVybnMge0NvbW1hbmRSZWdpc3RyYXRpb259XG4gICAqIEBtZW1iZXJvZiBDb21tYW5kTWFwcGluZ1JlZ2lzdHJ5XG4gICAqL1xuICBwdWJsaWMgZ2V0Q29tbWFuZChhcGlWZXJiSWQ6IEFwaVZlcmJJZCk6IENvbW1hbmRSZWdpc3RyYXRpb24ge1xuICAgIGlmICghdGhpcy5oYXNDb21tYW5kKGFwaVZlcmJJZCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBBcGlWZXJiOiAnICsgYXBpVmVyYklkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fY29tbWFuZHNbYXBpVmVyYklkXTtcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLWNvcmUvc3JjL21hcHBpbmdzL0NvbW1hbmRNYXBwaW5nUmVnaXN0cnkudHNcbiAqKi8iLCJpbXBvcnQge1xuICBFeGVjdXRlUGFyYW1ldGVycyxcbiAgTW9kZWwsXG4gIFBhcmFtZXRlcklkIGFzIEFwaVBhcmFtZXRlcklkLFxuICBWZXJiSWQgYXMgQXBpVmVyYklkLFxufSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xuXG5pbXBvcnQgeyBEb2NDb21tYW5kcyBhcyBQcmVzTGF5ZXJEb2NDb21tYW5kSWQsIFVJQ29tbWFuZHMgYXMgUHJlc0xheWVyVUlDb21tYW5kSWQgfSBmcm9tICcuLi8uLi9nZW4tc3JjL3ByZXNsYXllci9Db21tYW5kSWRzJztcbmltcG9ydCB7IFBhcmFtZXRlcklkIGFzIFByZXNMYXllclBhcmFtZXRlcklkIH0gZnJvbSAnLi4vLi4vZ2VuLXNyYy9wcmVzbGF5ZXIvUGFyYW1zJztcbmltcG9ydCB7IEFwaVRvUHJlc0xheWVyTWFwcGluZ1JlZ2lzdHJ5LCBQcmVzTGF5ZXJUb0FwaU1hcHBpbmdSZWdpc3RyeSB9IGZyb20gJy4vUGFyYW1ldGVyTWFwcGluZ1JlZ2lzdHJ5RmFjdG9yeSc7XG5cbi8qKlxuICogVGhpcyBpcyBhbiBlbnVtIHVzZWQgb25seSBpbnRlcm5hbGx5IGJ5IHRoZSBhcGktY29yZSBwcm9qZWN0LlxuICogVGhpcyBlbnVtIHJlcHJlc2VudHMgdGhlIGRpZmZlcmVuY2UgbmFtZXNwYWNlcyBhdmFpbGFibGUgZm9yIGNvbW1hbmRzLlxuICovXG5leHBvcnQgZW51bSBDb21tYW5kTmFtZXNwYWNlIHtcbiAgVGFiRG9jID0gJ3RhYmRvYycsXG4gIFRhYlVJID0gJ3RhYnVpJ1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gaW5wdXQgb3Igb3V0cHV0IHBhcmFtdGVyIGZvciBhIGNvbW1hbmQuXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIENvbW1hbmRQYXJhbWV0ZXJcbiAqL1xuZXhwb3J0IGNsYXNzIENvbW1hbmRQYXJhbWV0ZXIge1xuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBDb21tYW5kUGFyYW1ldGVyLlxuICAgKiBAcGFyYW0ge0FwaVBhcmFtZXRlcklkfSBhcGlJZFxuICAgKiBAcGFyYW0ge1ByZXNMYXllclBhcmFtZXRlcklkfSBwcmVzTGF5ZXJJZFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc09wdGlvbmFsXVxuICAgKiBAbWVtYmVyb2YgQ29tbWFuZFBhcmFtZXRlclxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2FwaUlkOiBBcGlQYXJhbWV0ZXJJZCxcbiAgICBwcml2YXRlIF9wcmVzTGF5ZXJJZDogUHJlc0xheWVyUGFyYW1ldGVySWQsXG4gICAgcHJpdmF0ZSBfaXNPcHRpb25hbD86IGJvb2xlYW4pIHsgfVxuXG4gIC8qKlxuICAgKiBUaGUgSWQgb2YgdGhlIEFwaSBQYXJhbWV0ZXJcbiAgICpcbiAgICogQHJlYWRvbmx5XG4gICAqIEB0eXBlIHtBcGlQYXJhbWV0ZXJJZH1cbiAgICogQG1lbWJlcm9mIENvbW1hbmRQYXJhbWV0ZXJcbiAgICovXG4gIHB1YmxpYyBnZXQgYXBpSWQoKTogQXBpUGFyYW1ldGVySWQge1xuICAgIHJldHVybiB0aGlzLl9hcGlJZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgSWQgb2YgdGhlIFByZXMgTGF5ZXIgUGFyYW1ldGVyXG4gICAqXG4gICAqIEByZWFkb25seVxuICAgKiBAdHlwZSB7UHJlc0xheWVyUGFyYW1ldGVySWR9XG4gICAqIEBtZW1iZXJvZiBDb21tYW5kUGFyYW1ldGVyXG4gICAqL1xuICBwdWJsaWMgZ2V0IHByZXNMYXllcklkKCk6IFByZXNMYXllclBhcmFtZXRlcklkIHtcbiAgICByZXR1cm4gdGhpcy5fcHJlc0xheWVySWQ7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhpcyBpcyBhbiBvcHRpb25hbCBwYXJhbWV0ZXJcbiAgICpcbiAgICogQHJlYWRvbmx5XG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgQ29tbWFuZFBhcmFtZXRlclxuICAgKi9cbiAgcHVibGljIGdldCBpc09wdGlvbmFsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuX2lzT3B0aW9uYWw7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgdGhlIGNvbXBsZXRlIG1hcHBpbmcgb2YgYW4gQXBpQ29tbWFuZCB0byBpdHMgY29ycmVzcG9uZGluZyBwcmVzLWxheWVyIGNvbW1hbmRcbiAqIGFuZCB0aGUgY29udmVyc2lvbiBvZiB0aGUgb3V0cHV0IHZhbHVlIGFzIHdlbGxcbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgQ29tbWFuZFJlZ2lzdHJhdGlvblxuICovXG5leHBvcnQgY2xhc3MgQ29tbWFuZFJlZ2lzdHJhdGlvbiB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9hcGlWZXJiSWQ6IEFwaVZlcmJJZCxcbiAgICBwcml2YXRlIF9jb21tYW5kSWQ6IFByZXNMYXllckRvY0NvbW1hbmRJZCB8IFByZXNMYXllclVJQ29tbWFuZElkLFxuICAgIHByaXZhdGUgX2lucHV0UGFyYW1ldGVyczogQ29tbWFuZFBhcmFtZXRlcltdLFxuICAgIHByaXZhdGUgX291dHB1dFBhcmFtZXRlcj86IENvbW1hbmRQYXJhbWV0ZXIsXG4gICAgcHJpdmF0ZSBfbmFtZXNwYWNlPzogc3RyaW5nXG4gICkgeyB9XG5cbiAgcHVibGljIGdldCBhcGlWZXJiSWQoKTogQXBpVmVyYklkIHtcbiAgICByZXR1cm4gdGhpcy5fYXBpVmVyYklkO1xuICB9XG5cbiAgcHVibGljIGdldCBjb21tYW5kSWQoKTogUHJlc0xheWVyRG9jQ29tbWFuZElkIHwgUHJlc0xheWVyVUlDb21tYW5kSWQge1xuICAgIHJldHVybiB0aGlzLl9jb21tYW5kSWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlucHV0cygpOiBDb21tYW5kUGFyYW1ldGVyW10ge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dFBhcmFtZXRlcnMgfHwgbmV3IEFycmF5PENvbW1hbmRQYXJhbWV0ZXI+KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG91dHB1dCgpOiBDb21tYW5kUGFyYW1ldGVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fb3V0cHV0UGFyYW1ldGVyO1xuICB9XG5cbiAgcHVibGljIGdldCBuYW1lc3BhY2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbmFtZXNwYWNlIHx8IENvbW1hbmROYW1lc3BhY2UuVGFiRG9jO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRoaXMgY29tbWFuZCByZXF1aXJlcyBhbiBhZGQtaW4gbG9jYXRvciB0byBiZSBpbmplY3RlZCBpbnRvIGl0XG4gICAqXG4gICAqIEByZWFkb25seVxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIENvbW1hbmRSZWdpc3RyYXRpb25cbiAgICovXG4gIHB1YmxpYyBnZXQgbmVlZHNBZGRJbkxvY2F0b3IoKTogYm9vbGVhbiB7XG4gICAgZm9yIChjb25zdCBpbnB1dCBvZiB0aGlzLmlucHV0cykge1xuICAgICAgaWYgKGlucHV0LmFwaUlkID09PSBBcGlQYXJhbWV0ZXJJZC5FeHRlbnNpb25Mb2NhdG9yKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgZGljdGlvbmFyeSBvZiBwcmVzLWxheWVyIHBhcmFtZXRlcnMgZnJvbSB0aGUgaW5wdXQgZGljdGlvbmFyeVxuICAgKiBvZiBhcGkgcGFyYW1ldGVycy5cbiAgICpcbiAgICogQHBhcmFtIHtFeGVjdXRlUGFyYW1ldGVyc30gcGFyYW1ldGVycyAtIFRoZSBwYXJhbWV0ZXJzIHRvIGNvbnZlcnRcbiAgICogQHBhcmFtIHtBcGlUb1ByZXNMYXllck1hcHBpbmdSZWdpc3RyeX0gYXBpVG9QcmVzTGF5ZXIgLSBtYXBwaW5nIHRvIGRldGVybWluZSB0aGUgY29udmVyc2lvblxuICAgKiBAcmV0dXJucyB7eyBbcGFyYW1JZDogc3RyaW5nXTogb2JqZWN0OyB9fSAtIHBhcmFtZXRlcnMgdG8gc2VuZCB0byB0aGUgcHJlcy1sYXllclxuICAgKiBAbWVtYmVyb2YgQ29tbWFuZFJlZ2lzdHJhdGlvblxuICAgKi9cbiAgcHVibGljIGNyZWF0ZVBhcmFtcyhwYXJhbWV0ZXJzOiBFeGVjdXRlUGFyYW1ldGVycywgYXBpVG9QcmVzTGF5ZXI6IEFwaVRvUHJlc0xheWVyTWFwcGluZ1JlZ2lzdHJ5KTogeyBbcGFyYW1JZDogc3RyaW5nXTogb2JqZWN0OyB9IHtcbiAgICBsZXQgcmVzdWx0OiB7IFtwYXJhbUlkOiBzdHJpbmddOiBvYmplY3Q7IH0gPSB7fTtcblxuICAgIGZvciAoY29uc3QgaW5wdXRQYXJhbSBvZiB0aGlzLmlucHV0cykge1xuICAgICAgLy8gRmlyc3QgbWFrZSBzdXJlIHRoZSBwYXJhbWV0ZXIgaXMgdGhlcmUgb3IgdGhhdCBpdCdzIG9wdGlvbmFsXG4gICAgICBpZiAoIXBhcmFtZXRlcnMuaGFzT3duUHJvcGVydHkoaW5wdXRQYXJhbS5hcGlJZCkpIHtcbiAgICAgICAgaWYgKGlucHV0UGFyYW0uaXNPcHRpb25hbCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBwYXJhbWV0ZXIgZm9yIGNvbW1hbmQ6ICcgKyBpbnB1dFBhcmFtLmFwaUlkKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBGaW5kIHRoZSBjb252ZXJzaW9uIGZ1bmN0aW9uIGZvciB0aGlzIHBhcmFtZXRlclxuICAgICAgY29uc3QgY29udmVyc2lvbkZuID0gYXBpVG9QcmVzTGF5ZXIuZ2V0KGlucHV0UGFyYW0uYXBpSWQsIGlucHV0UGFyYW0ucHJlc0xheWVySWQpO1xuXG4gICAgICAvLyBDb252ZXJ0IHRoZSBwcmVzIG1vZGVsIGFuZCBpbnNlcnQgaXQgaW50byBvdXIgcmVzdWx0cyBvYmplY3RcbiAgICAgIHJlc3VsdFtpbnB1dFBhcmFtLnByZXNMYXllcklkXSA9IGNvbnZlcnNpb25GbihwYXJhbWV0ZXJzW2lucHV0UGFyYW0uYXBpSWRdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3NlcyB0aGUgcmVzdWx0IHJlY2VpdmVkIGJhY2sgYWZ0ZXIgZXhlY3V0aW5nIGEgcHJlcy1sYXllciBjb21tYW5kXG4gICAqXG4gICAqIEBwYXJhbSB7eyBbZG9jUGFyYW1JZDogc3RyaW5nXTogb2JqZWN0OyB9fSByZXN1bHRQYXJhbWV0ZXJzXG4gICAqIEBwYXJhbSB7UHJlc0xheWVyVG9BcGlNYXBwaW5nUmVnaXN0cnl9IHByZXNMYXllclRvQXBpXG4gICAqIEByZXR1cm5zIHtNb2RlbH1cbiAgICogQG1lbWJlcm9mIENvbW1hbmRSZWdpc3RyYXRpb25cbiAgICovXG4gIHB1YmxpYyBQcm9jZXNzUmVzdWx0KHJlc3VsdFBhcmFtZXRlcnM6IHsgW2RvY1BhcmFtSWQ6IHN0cmluZ106IG9iamVjdDsgfSwgcHJlc0xheWVyVG9BcGk6IFByZXNMYXllclRvQXBpTWFwcGluZ1JlZ2lzdHJ5KTogTW9kZWwge1xuICAgIC8vIFRPRE86IEFkZCBlcnJvciBoYW5kbGluZ1xuICAgIGlmICh0aGlzLm91dHB1dCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBub091dHB1dE1vZGVsOiBNb2RlbCA9IHt9O1xuICAgICAgcmV0dXJuIG5vT3V0cHV0TW9kZWw7XG4gICAgfVxuICAgIGlmICghcmVzdWx0UGFyYW1ldGVycyB8fCAhcmVzdWx0UGFyYW1ldGVycy5oYXNPd25Qcm9wZXJ0eSh0aGlzLm91dHB1dC5wcmVzTGF5ZXJJZCkpIHtcblxuICAgICAgLy8gaWYgdGhlIG91dHB1dCByZXN1bHQgaXMgbWFya2VkIGFzIG9wdGlvbmFsLCB3ZSBkb24ndCBjb25zaWRlciB0aGlzIGFuIGVycm9yIHNpdHVhdGlvbiBhbmQganVzdCByZXR1cm4gYW4gZW1wdHkgbW9kZWxcbiAgICAgIGlmICh0aGlzLm91dHB1dC5pc09wdGlvbmFsKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIGV4cGVjdGVkIHJlc3VsdCBwYXJhbWV0ZXI6ICcgKyB0aGlzLm91dHB1dC5wcmVzTGF5ZXJJZCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udmVyc2lvbkZuID0gcHJlc0xheWVyVG9BcGkuZ2V0KHRoaXMub3V0cHV0LnByZXNMYXllcklkLCB0aGlzLm91dHB1dC5hcGlJZCk7XG4gICAgcmV0dXJuIGNvbnZlcnNpb25GbihyZXN1bHRQYXJhbWV0ZXJzW3RoaXMub3V0cHV0LnByZXNMYXllcklkXSk7XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1jb3JlL3NyYy9tYXBwaW5ncy9Db21tYW5kUmVnaXN0cmF0aW9uLnRzXG4gKiovIiwiaW1wb3J0IHsgTW9kZWwsIE5vdGlmaWNhdGlvbklkIGFzIEFwaSwgVmVyc2lvbk51bWJlciB9IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XG5cbmltcG9ydCB7IE5vdGlmaWNhdGlvbklkIGFzIFBMIH0gZnJvbSAnLi4vLi4vZ2VuLXNyYy9wcmVzbGF5ZXIvRXZlbnRzJztcbmltcG9ydCB7IFByZXNlbnRhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vZ2VuLXNyYy9wcmVzbGF5ZXIvUHJlc01vZGVscyc7XG5pbXBvcnQgeyBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlciB9IGZyb20gJy4vUHJlc0xheWVyVG9BcGlDb252ZXJ0ZXInO1xuXG5leHBvcnQgdHlwZSBDb252ZXJzaW9uRm4gPSAocHJlc01vZGVsOiBQcmVzZW50YXRpb25Nb2RlbCkgPT4gTW9kZWw7XG5cbi8qKlxuICogU2ltcGxlIHdyYXBwZXIgd2hpY2ggaG9sZHMgYSBtYXBwaW5nIHRvIGdvIGZyb20gYSBwcmVzLWxheWVyIGV2ZW50IHRvIGFuIEFQSSBldmVudFxuICovXG5leHBvcnQgY2xhc3MgRXZlbnRNYXBwaW5nUmVnaXN0cmF0aW9uIHtcbiAgcHVibGljIGdldCBwcmVzTGF5ZXJJZCgpOiBQTCB7XG4gICAgcmV0dXJuIHRoaXMuX3ByZXNMYXllcklkO1xuICB9XG5cbiAgcHVibGljIGdldCBhcGlJZCgpOiBBcGkge1xuICAgIHJldHVybiB0aGlzLl9hcGlJZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY29udmVydGVyKCk6IENvbnZlcnNpb25GbiB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbnZlcnRlcjtcbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9wcmVzTGF5ZXJJZDogUEwsXG4gICAgcHJpdmF0ZSBfYXBpSWQ6IEFwaSxcbiAgICBwcml2YXRlIF9jb252ZXJ0ZXI6IENvbnZlcnNpb25GbikgeyB9XG59XG5cbi8qKlxuICogU2ltcGxlIHR5cGUgd2hpY2ggaGFzIGtleXMgb2YgUEwgZXZlbnQgaWRzIHRvIEV2ZW50TWFwcGluZ1JlZ2lzdHJhdGlvbnNcbiAqL1xuZXhwb3J0IHR5cGUgRXZlbnRNYXBwaW5nUmVnaXN0cnkgPSB7IFtrZXk6IHN0cmluZ106IEV2ZW50TWFwcGluZ1JlZ2lzdHJhdGlvbjsgfTtcblxuZXhwb3J0IGNsYXNzIEV2ZW50TWFwcGluZ1JlZ2lzdHJ5RmFjdG9yeSB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuZCBwb3B1bGF0ZXMgYSBuZXcgRXZlbnRNYXBwaW5nUmVnaXN0cnkgZm9yIHRoZSBzcGVjaWZpYyB2ZXJzaW9uIG51bWJlciByZXF1ZXN0ZWRcbiAgICpcbiAgICogQHBhcmFtIHtWZXJzaW9uTnVtYmVyfSB2ZXJzaW9uTnVtYmVyXG4gICAqIEByZXR1cm5zIHtFdmVudE1hcHBpbmdSZWdpc3RyeX1cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlRXZlbnRNYXBwaW5nUmVnaXN0cnkodmVyc2lvbk51bWJlcjogVmVyc2lvbk51bWJlcik6IEV2ZW50TWFwcGluZ1JlZ2lzdHJ5IHtcbiAgICBsZXQgcmVnaXN0cnk6IEV2ZW50TWFwcGluZ1JlZ2lzdHJ5ID0ge307XG4gICAgcmVnaXN0cnlbUEwuU2VsZWN0aW9uQ2hhbmdlZF0gPSBuZXcgRXZlbnRNYXBwaW5nUmVnaXN0cmF0aW9uKFxuICAgICAgUEwuU2VsZWN0aW9uQ2hhbmdlZCxcbiAgICAgIEFwaS5TZWxlY3RlZE1hcmtzQ2hhbmdlZCxcbiAgICAgIFByZXNMYXllclRvQXBpQ29udmVydGVyLmNvbnZlcnRWaXN1YWxJZFxuICAgICk7XG5cbiAgICByZWdpc3RyeVtQTC5QYXJhbWV0ZXJDaGFuZ2VkXSA9IG5ldyBFdmVudE1hcHBpbmdSZWdpc3RyYXRpb24oXG4gICAgICBQTC5QYXJhbWV0ZXJDaGFuZ2VkLFxuICAgICAgQXBpLlBhcmFtZXRlckNoYW5nZWQsXG4gICAgICBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlci5jb252ZXJ0RmllbGRDYXB0aW9uUGFpclxuICAgICk7XG5cbiAgICByZWdpc3RyeVtQTC5GaWx0ZXJDaGFuZ2VkXSA9IG5ldyBFdmVudE1hcHBpbmdSZWdpc3RyYXRpb24oXG4gICAgICBQTC5GaWx0ZXJDaGFuZ2VkLFxuICAgICAgQXBpLkZpbHRlckNoYW5nZWQsXG4gICAgICBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlci5jb252ZXJ0RmlsdGVyRXZlbnRcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlZ2lzdHJ5O1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktY29yZS9zcmMvbWFwcGluZ3MvRXZlbnRNYXBwaW5nUmVnaXN0cnlGYWN0b3J5LnRzXG4gKiovIiwiLyogdHNsaW50OmRpc2FibGUgKi9cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vL1xuLy8gVGhpcyBmaWxlIGlzIHRoZSBjb3B5cmlnaHRlZCBwcm9wZXJ0eSBvZiBUYWJsZWF1IFNvZnR3YXJlIGFuZCBpcyBwcm90ZWN0ZWRcbi8vIGJ5IHJlZ2lzdGVyZWQgcGF0ZW50cyBhbmQgb3RoZXIgYXBwbGljYWJsZSBVLlMuIGFuZCBpbnRlcm5hdGlvbmFsIGxhd3MgYW5kXG4vLyByZWd1bGF0aW9ucy5cbi8vXG4vLyBVbmxpY2Vuc2VkIHVzZSBvZiB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIGlzIHByb2hpYml0ZWQuIFBsZWFzZSByZWZlciB0b1xuLy8gdGhlIE5PVElDRVMudHh0IGZpbGUgZm9yIGZ1cnRoZXIgZGV0YWlscy5cbi8vXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gV0FSTklORzogQ29tcHV0ZXIgZ2VuZXJhdGVkIGZpbGUuICBEbyBub3QgaGFuZCBtb2RpZnkuXG4vLyBERVBFTkRTIE9OOiBbJy4uL3R5cGVzY3JpcHQvanMtYXBpL2FwaS1jb3JlL25vZGVfbW9kdWxlcy9AdGFibGVhdS9wcmVzbGF5ZXItY29kZWdlbi10eXBlc2NyaXB0L3RlbXBsYXRlcy9ldmVudHMtdHMudGVtcGxhdGUnLCB1Jy4uL3R5cGVzY3JpcHQvanMtYXBpL2FwaS1jb3JlL3RlbXAtcHJlcy1sYXllci9hbGwtZXZlbnRzLmRhdGEnXVxuXG4vLyBFdmVudHMgeW91IGNhbiByZWdpc3RlciB0byByZWNlaXZlIHByZXNlbnRhdGlvbiBtb2RlbHNcbmV4cG9ydCBlbnVtIE5vdGlmaWNhdGlvbklkIHtcblxuICAvLyBUcmlnZ2VyZWQgd2hlbiBhbGlhc2VzIGFyZSB0byBiZSBlZGl0ZWQuIFVzZWQgdG8gbGF1bmNoIGEgZGlhbG9nLlxuICBFZGl0QWxpYXNlc0RpYWxvZ05vdGlmaWNhdGlvbiA9ICdlZGl0LWFsaWFzZXMtZGlhbG9nLW5vdGlmaWNhdGlvbi1ldmVudCcsXG5cbiAgLy8gZm9yIHRoZSBjYWxjdWxhdGlvbiBkaWFsb2dcbiAgQ2FsY3VsYXRpb25EaWFsb2cgPSAnY2FsY3VsYXRpb24tZGlhbG9nLWV2ZW50JyxcblxuICAvLyB1cGRhdGUgZm9yIGFuIGFkaG9jIGNhbGMgaW4gYSB0eXBlIGluIHBpbGxcbiAgVHlwZUluUGlsbCA9ICd0eXBlLWluLXBpbGwtZXZlbnQnLFxuXG4gIC8vIHJlc3VsdHMgb2YgYSB2YWxpZGF0aW9uIGNvbW1hbmRcbiAgQ29tbWFuZFZhbGlkYXRpb24gPSAnY29tbWFuZC12YWxpZGF0aW9uLWV2ZW50JyxcblxuICAvLyBldmVudCBmb3IgdGhlIGdyb3VwcyBkaWFsb2dcbiAgVXBkYXRlQ2F0ZWdvcmljYWxCaW5FZGl0RGlhbG9nID0gJ3VwZGF0ZS1jYXRlZ29yaWNhbC1iaW4tZWRpdC1kaWFsb2ctZXZlbnQnLFxuXG4gIC8vIGZvciB0aGUgY2F0ZWdvcmljYWwgY29sb3IgZGlhbG9nXG4gIENhdGVnb3JpY2FsQ29sb3IgPSAnY2F0ZWdvcmljYWwtY29sb3ItZXZlbnQnLFxuXG4gIC8vIHVwZGF0ZSB0aGUgd2ViIGNhdGVnb3JpY2FsIGNvbG9yIGRpYWxvZ1xuICBXZWJDYXRlZ29yaWNhbENvbG9yRGlhbG9nID0gJ3dlYi1jYXRlZ29yaWNhbC1jb2xvci1kaWFsb2ctZXZlbnQnLFxuXG4gIC8vIHVzZXIgaW52b2tlZCBhY3Rpb24gd2hpY2ggcmVxdWlyZXMgYSBEYXRhIEFsZXJ0IERpYWxvZ1xuICBEYXRhQWxlcnREaWFsb2cgPSAnZGF0YS1hbGVydC1kaWFsb2ctZXZlbnQnLFxuXG4gIC8vIGV2ZW50IHRvIHNlbGVjdCBmaWVsZChzKSBpbiB0aGUgZGF0YSBzY2hlbWFcbiAgRGF0YVNjaGVtYVNlbGVjdGlvbiA9ICdkYXRhLXNjaGVtYS1zZWxlY3Rpb24tZXZlbnQnLFxuXG4gIC8vIGV2ZW50IGZvciB3aGVuIHRoZSBkYXRhIHNvdXJjZSBiZWluZyBlZGl0ZWQgaXMgdXBkYXRlZFxuICBVcGRhdGVEYXRhUHJlcGFyYXRpb24gPSAndXBkYXRlLWRhdGEtcHJlcGFyYXRpb24tZXZlbnQnLFxuXG4gIC8vIGV2ZW50IGZvciB3aGVuIHRoZSBkYXRhIHNvdXJjZSBkYXRhIGlzIHVwZGF0ZWRcbiAgVXBkYXRlRGF0YVNvdXJjZURhdGEgPSAndXBkYXRlLWRhdGEtc291cmNlLWRhdGEtZXZlbnQnLFxuXG4gIC8vIGV2ZW50IGZvciB3aGVuIGEgY2xpZW50IHNob3VsZCByZXF1ZXN0IG5ldyBkYXRhIHNvdXJjZSBvciBkYXRhIHNvdXJjZSBkYXRhIHByZXMgbW9kZWxzXG4gIERhdGFTb3VyY2VVcGRhdGVOZWVkZWQgPSAnZGF0YS1zb3VyY2UtdXBkYXRlLW5lZWRlZC1ldmVudCcsXG5cbiAgLy8gZXZlbnQgZm9yIGdldHRpbmcgdGhlIHByZXMgbW9kZWwgdG8gdXBkYXRlIGZpbGUgam9pbiB0YWJsZSBwcm9wZXJ0aWVzXG4gIFRleHRGaWxlUHJvcGVydGllcyA9ICd0ZXh0LWZpbGUtcHJvcGVydGllcy1ldmVudCcsXG5cbiAgLy8gZXZlbnQgZm9yIHRoZSBkZXRhaWxlZCBlcnJvciBkaWFsb2dcbiAgVXBkYXRlRGV0YWlsZWRFcnJvckRpYWxvZyA9ICd1cGRhdGUtZGV0YWlsZWQtZXJyb3ItZGlhbG9nLWV2ZW50JyxcblxuICAvLyBub3RpZnkgY2hhbmdlcyB0byB0aGUgc3RhdGUgb2YgYSBmaWx0ZXIncyByZWxhdGlvbmFsIG1vZGVsXG4gIEZpbHRlclJlbGF0aW9uYWxTdGF0ZUNoYW5nZWQgPSAnZmlsdGVyLXJlbGF0aW9uYWwtc3RhdGUtY2hhbmdlZC1ldmVudCcsXG5cbiAgLy8gbm90aWZ5IGNoYW5nZXMgdG8gdGhlIHNpemUvc2VsZWN0aW9uIGNvdW50IG9mIGEgcmVsYXRpb25hbCBkb21haW5cbiAgRmlsdGVyUmVsYXRpb25hbERvbWFpbkNoYW5nZWQgPSAnZmlsdGVyLXJlbGF0aW9uYWwtZG9tYWluLWNoYW5nZWQtZXZlbnQnLFxuXG4gIC8vIG5vdGlmeSB3aGVuIGZpbHRlciBjYWNoZSB3YXMgcmVxdWVzdGVkIGJ1dCBub3QgZm91bmRcbiAgRmlsdGVyQ2FjaGVOb3RGb3VuZCA9ICdmaWx0ZXItY2FjaGUtbm90LWZvdW5kLWV2ZW50JyxcblxuICAvLyBIaWVyYXJjaHkgU2VsZWN0IG1vZGVsIG9ic2VydmFibGUgbm90aWZpY2F0aW9uLlxuICBIaWVyYXJjaHlOb3RpZmljYXRpb24gPSAnaGllcmFyY2h5LW5vdGlmaWNhdGlvbi1ldmVudCcsXG5cbiAgLy8gSGllcmFyY2h5IHNlbGVjdGlvbiBjaGFuZ2Ugbm90aWZpY2F0aW9ucy5cbiAgSGllcmFyY2h5U2VsZWN0aW9uID0gJ2hpZXJhcmNoeS1zZWxlY3Rpb24tZXZlbnQnLFxuXG4gIC8vIGV2ZW50IGZvciB0aGUgbWFwIG9wdGlvbnMgZGlhbG9nXG4gIE1hcE9wdGlvbnNEaWFsb2cgPSAnbWFwLW9wdGlvbnMtZGlhbG9nLWV2ZW50JyxcblxuICAvLyBub3RpZnkgdGhlIFBhZ2UgVUkoaGlkZS9zaG93IHN0YXRlcywgbGF5b3V0KSBuZWVkcyB0byBiZSB1cGRhdGVkXG4gIFVwZGF0ZVBhZ2VVSU5vdGlmaWNhdGlvbiA9ICd1cGRhdGUtcGFnZS11aW5vdGlmaWNhdGlvbi1ldmVudCcsXG5cbiAgLy8gbm90aWZ5IHRvIHRoZSBTY2VuZVZpZXcgaGFzIGJlZW4gZHJhd24uXG4gIFNjZW5lVmlld0RyYXduTm90aWZpY2F0aW9uID0gJ3NjZW5lLXZpZXctZHJhd24tbm90aWZpY2F0aW9uLWV2ZW50JyxcblxuICAvLyBUaGUgQW5pbWF0aW9uQ29udHJvbENoYW5nZSBldmVudCBmaXJlcyB3aGVuIHRoZSB1c2VyIGNsaWNrcyBhbiBhbmltYXRpb24gcGxheWJhY2sgYnV0dG9uOiBmb3J3YXJkLCBzdG9wLCBzbG93LCBmYXN0LCBldGMuXG4gIEFuaW1hdGlvbkNvbnRyb2xDaGFuZ2UgPSAnYW5pbWF0aW9uLWNvbnRyb2wtY2hhbmdlLWV2ZW50JyxcblxuICAvLyBub3RpZnkgdGhlIHNoZWV0IGhhcyBiZWVuIHJlbmFtZWRcbiAgUmVuYW1lU2hlZXROb3RpZmljYXRpb24gPSAncmVuYW1lLXNoZWV0LW5vdGlmaWNhdGlvbi1ldmVudCcsXG5cbiAgLy8gdXBkYXRlIHRoZSB3ZWIgcXVhbnRpdGF0aXZlIGNvbG9yIGRpYWxvZ1xuICBXZWJRdWFudGl0YXRpdmVDb2xvckRpYWxvZyA9ICd3ZWItcXVhbnRpdGF0aXZlLWNvbG9yLWRpYWxvZy1ldmVudCcsXG5cbiAgLy8gdXBkYXRlIHRoZSBheGlzIGVkaXQgZGlhbG9nXG4gIFVwZGF0ZUVkaXRBeGlzRGlhbG9nID0gJ3VwZGF0ZS1lZGl0LWF4aXMtZGlhbG9nLWV2ZW50JyxcblxuICAvLyBldmVudCBmb3IgdGhlIHJlZmVyZW5jZSBsaW5lIGRpYWxvZywgd2hpY2ggaXMgb25seSB2YWxpZCBkdXJpbmcgd2ViIGF1dGhvcmluZ1xuICBVcGRhdGVSZWZMaW5lRGlhbG9nID0gJ3VwZGF0ZS1yZWYtbGluZS1kaWFsb2ctZXZlbnQnLFxuXG4gIC8vIGV2ZW50IHRvIHRyaWdnZXIgb3RoZXIgcmVmZXJlbmNlIGxpbmUgZGlhbG9ncyB0byBjbG9zZVxuICBSZWZMaW5lRGlhbG9nT3BlbmluZyA9ICdyZWYtbGluZS1kaWFsb2ctb3BlbmluZy1ldmVudCcsXG5cbiAgLy8gZXZlbnQgZm9yIHRoZSBjbG9zZSBkYXRhIHNvdXJjZSBlcnJvciBkaWFsb2csIHdoaWNoIGlzIG9ubHkgdmFsaWQgZHVyaW5nIHdlYiBhdXRob3JpbmdcbiAgQ2xvc2VEYXRhU291cmNlRXJyb3JEaWFsb2cgPSAnY2xvc2UtZGF0YS1zb3VyY2UtZXJyb3ItZGlhbG9nLWV2ZW50JyxcblxuICAvLyB1cGRhdGUgdGhlIHdlYiBTYXZlIERhdGFzb3VyY2UgZGlhbG9nXG4gIFdlYlNhdmVEYXRhc291cmNlRGlhbG9nID0gJ3dlYi1zYXZlLWRhdGFzb3VyY2UtZGlhbG9nLWV2ZW50JyxcblxuICAvLyB3YXJuaW5nIHJlc3VsdGluZyBmcm9tIFdhcm5pbmdNc2dcbiAgV2FybmluZ01lc3NhZ2UgPSAnd2FybmluZy1tZXNzYWdlLWV2ZW50JyxcblxuICAvLyBldmVudCBmb3IgdGhlIHRhYmxlIGNhbGMgZGlhbG9nLCBvbiB3ZWIsIHRoaXMgaXMgb25seSB2YWxpZCBkdXJpbmcgd2ViIGF1dGhvcmluZ1xuICBUYWJsZUNhbGNEaWFsb2cgPSAndGFibGUtY2FsYy1kaWFsb2ctZXZlbnQnLFxuXG4gIC8vIHVzZXIgaW52b2tlZCBhY3Rpb24gd2hpY2ggcmVxdWlyZXMgVGFibGUgQ2FsYyBEaWFsb2dcbiAgVGFibGVDYWxjQWN0aXZhdGVEaWFsb2cgPSAndGFibGUtY2FsYy1hY3RpdmF0ZS1kaWFsb2ctZXZlbnQnLFxuXG4gIC8vIGV2ZW50IGZvciB0aGUgdHJlbmQgbGluZSBkaWFsb2dcbiAgVXBkYXRlVHJlbmRMaW5lRWRpdERpYWxvZyA9ICd1cGRhdGUtdHJlbmQtbGluZS1lZGl0LWRpYWxvZy1ldmVudCcsXG5cbiAgLy8gVGhlIHRhYmxlIHBhZ2UgY2FjaGUgaGFzIGJlZW4gcmVmcmVzaGVkOyBwYWdlcyBtdXN0IGJlIHJlbG9hZGVkIGZyb20gdGhlIGNhY2hlLlxuICBQYWdlQ2FjaGVSZWZyZXNoID0gJ3BhZ2UtY2FjaGUtcmVmcmVzaC1ldmVudCcsXG5cbiAgLy8gVGhlIHRhYmxlIHBhZ2UgY2FjaGUgaGFzIGV4cGlyZWQgYW5kIGFsbCByZXNvdXJjZXMgaGF2ZSBiZWVuIHJlbGVhc2VkLlxuICBQYWdlQ2FjaGVFeHBpcmVkID0gJ3BhZ2UtY2FjaGUtZXhwaXJlZC1ldmVudCcsXG5cbiAgLy8gQWxsIHBhZ2VzLCBpZGVudGlmaWVkIGJ5IHJvdy9jb2wsIGluIHRoZSBwcm92aWRlZCBsaXN0IGhhdmUgZXhwaXJlZCBhbmQgc2hvdWxkIGJlIHJlbG9hZGVkLlxuICBQYWdlQ2FjaGVQYWdlc0V4cGlyZWQgPSAncGFnZS1jYWNoZS1wYWdlcy1leHBpcmVkLWV2ZW50JyxcblxuICAvLyBBbGwgcGFnZXMgYmV0d2VlbSB0aGUgcmFuZ2UgKGluY2x1c2l2ZSkgaW4gdGhlIHByb3ZpZGVkIGxpc3QgaGF2ZSBleHBpcmVkIGFuZCBzaG91bGQgYmUgcmVsb2FkZWQuXG4gIFBhZ2VDYWNoZVBhZ2VSYW5nZUV4cGlyZWQgPSAncGFnZS1jYWNoZS1wYWdlLXJhbmdlLWV4cGlyZWQtZXZlbnQnLFxuXG4gIC8vIFVwZGF0ZSBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgZGlhbG9nXG4gIFJpY2hUZXh0RWRpdG9yRGlhbG9nID0gJ3JpY2gtdGV4dC1lZGl0b3ItZGlhbG9nLWV2ZW50JyxcblxuICAvLyBUcmlnZ2VyZWQgd2hlbiB0aGUgdXNlciB3YW50cyB0byByZWxvYWQgYW4gYWRkLWluIGluc3RhbmNlLlxuICBSZWxvYWRBZGRJbiA9ICdyZWxvYWQtYWRkLWluLWV2ZW50JyxcblxuICAvLyBUcmlnZ2VyZWQgd2hlbiB0aGUgc2VsZWN0ZWQgbWFya3MgaGF2ZSBjaGFuZ2VkLlxuICBTZWxlY3Rpb25DaGFuZ2VkID0gJ3NlbGVjdGlvbi1jaGFuZ2VkLWV2ZW50JyxcblxuICAvLyBUcmlnZ2VyZWQgd2hlbiB0aGUgdmFsdWUgb2YgYSBwYXJhbWV0ZXIgaGFzIGNoYW5nZWQuIEVtaXRzIHRoZSBuYW1lIGFuZCBjYXB0aW9uIG9mIHRoZSBwYXJhbWV0ZXJcbiAgUGFyYW1ldGVyQ2hhbmdlZCA9ICdwYXJhbWV0ZXItY2hhbmdlZC1ldmVudCcsXG5cbiAgLy8gVHJpZ2dlcmVkIHdoZW4gdGhlIGZpbHRlcnMgaGF2ZSBjaGFuZ2VkLlxuICBGaWx0ZXJDaGFuZ2VkID0gJ2ZpbHRlci1jaGFuZ2VkLWV2ZW50JyxcblxuICAvLyBub3RpZmljYXRpb24gdG8gbGF1bmNoIHRoZSBoeWJyaWQgVUkgc2hvd2Nhc2VcbiAgTGF1bmNoSHlicmlkVUlTaG93Y2FzZSA9ICdsYXVuY2gtaHlicmlkLXVpc2hvd2Nhc2UtZXZlbnQnLFxuXG4gIC8vIG5vdGlmaWNhdGlvbiBvZiBuZXcgZWNob2VkIHRleHQgZm9yIEh5YnJpZFVJIHNob3djYXNlIGRlbW9cbiAgSHlicmlkVUlTaG93Y2FzZUVjaG8gPSAnaHlicmlkLXVpc2hvd2Nhc2UtZWNoby1ldmVudCcsXG5cbiAgLy8gZXZlbnQgZm9yIHRoZSBiaW4gZGlhbG9nXG4gIFVwZGF0ZU51bWVyaWNCaW5FZGl0RGlhbG9nID0gJ3VwZGF0ZS1udW1lcmljLWJpbi1lZGl0LWRpYWxvZy1ldmVudCcsXG5cbiAgLy8gYSB0ZXN0IGV2ZW50IHdpdGggYSBwcmVzIG1vZGVsXG4gIFRlc3RFdmVudFdpdGhNb2RlbCA9ICd0ZXN0LWV2ZW50LXdpdGgtbW9kZWwtZXZlbnQnLFxuXG4gIC8vIGEgdGVzdCBldmVudCB3aXRob3V0IGEgcHJlcyBtb2RlbFxuICBUZXN0RXZlbnRXaXRob3V0TW9kZWwgPSAndGVzdC1ldmVudC13aXRob3V0LW1vZGVsLWV2ZW50J1xufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLWNvcmUvZ2VuLXNyYy9wcmVzbGF5ZXIvRXZlbnRzLnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQXBpIGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XG5pbXBvcnQgeyBQYXJhbSB9IGZyb20gJ0B0YWJsZWF1L2FwaS11dGlscyc7XG5cbmltcG9ydCAqIGFzIFByZXNMYXllciBmcm9tICcuLi8uLi9nZW4tc3JjL3ByZXNsYXllci9QcmVzTW9kZWxzJztcbmltcG9ydCB7IFByZXNMYXllclRvQXBpRW51bU1hcHBpbmdzIGFzIEVudW1NYXBwaW5ncyB9IGZyb20gJy4vRW51bU1hcHBpbmdzJztcblxuLyoqXG4gKiBDbGFzcyBjb250YWluaW5nIGhlbHBlciBtZXRob2RzIGZvciBjb252ZXJ0aW5nIGZyb20gUHJlc0xheWVyUHJlc01vZGVscyB0byB0aGVpciBBcGlQcmVzTW9kZWxzIGVxdWl2YWxlbnRzXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIFByZXNMYXllclRvQXBpQ29udmVydGVyXG4gKi9cbmV4cG9ydCBjbGFzcyBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlciB7XG4gIHB1YmxpYyBzdGF0aWMgUEFSQU1FVEVSU19EQl9OQU1FOiBzdHJpbmcgPSAnUGFyYW1ldGVycyc7XG5cbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0U2hlZXRQYXRoKHBsU2hlZXRQYXRoOiBQcmVzTGF5ZXIuU2hlZXRQYXRoUHJlc01vZGVsKTogQXBpLlNoZWV0UGF0aCB7XG4gICAgY29uc3QgcmVzdWx0OiBBcGkuU2hlZXRQYXRoID0ge1xuICAgICAgc2hlZXROYW1lOiBwbFNoZWV0UGF0aC5zaGVldE5hbWUsXG4gICAgICBpc0Rhc2hib2FyZDogcGxTaGVldFBhdGguaXNEYXNoYm9hcmQsXG4gICAgICBzdG9yeWJvYXJkOiBwbFNoZWV0UGF0aC5zdG9yeWJvYXJkLFxuICAgICAgZmxpcGJvYXJkWm9uZUlEOiBwbFNoZWV0UGF0aC5mbGlwYm9hcmRab25lSWQsXG4gICAgICBzdG9yeVBvaW50SUQ6IHBsU2hlZXRQYXRoLnN0b3J5UG9pbnRJZCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFZpc3VhbElkKHBsVmlzdWFsSWQ6IFByZXNMYXllci5WaXN1YWxJRFByZXNNb2RlbCk6IEFwaS5WaXN1YWxJZCB7XG4gICAgY29uc3QgcmVzdWx0OiBBcGkuVmlzdWFsSWQgPSB7XG4gICAgICB3b3Jrc2hlZXQ6IHBsVmlzdWFsSWQud29ya3NoZWV0LFxuICAgICAgZGFzaGJvYXJkOiBwbFZpc3VhbElkLmRhc2hib2FyZCxcbiAgICAgIHN0b3J5Ym9hcmQ6IHBsVmlzdWFsSWQuc3Rvcnlib2FyZCxcbiAgICAgIGZsaXBib2FyZFpvbmVJRDogcGxWaXN1YWxJZC5mbGlwYm9hcmRab25lSWQsXG4gICAgICBzdG9yeVBvaW50SUQ6IHBsVmlzdWFsSWQuc3RvcnlQb2ludElkLFxuICAgIH07XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0RXh0ZW5zaW9uTG9jYXRvcihwbEFkZEluTG9jYXRvcjogUHJlc0xheWVyLkFkZEluTG9jYXRvclByZXNNb2RlbCk6IEFwaS5FeHRlbnNpb25Mb2NhdG9yIHtcbiAgICBsZXQgZGFzaGJvYXJkUGF0aCA9IHVuZGVmaW5lZDtcbiAgICBpZiAocGxBZGRJbkxvY2F0b3Iuc2hlZXRQYXRoKSB7XG4gICAgICBkYXNoYm9hcmRQYXRoID0gUHJlc0xheWVyVG9BcGlDb252ZXJ0ZXIuY29udmVydFNoZWV0UGF0aChwbEFkZEluTG9jYXRvci5zaGVldFBhdGgpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdDogQXBpLkV4dGVuc2lvbkxvY2F0b3IgPSB7XG4gICAgICBpbnN0YW5jZUlkOiBwbEFkZEluTG9jYXRvci5hZGRJbkluc3RhbmNlSWQsXG4gICAgICBkYXNoYm9hcmRQYXRoOiBkYXNoYm9hcmRQYXRoXG4gICAgfTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbnZlcnREYXNoYm9hcmRJblpvbmVzKHBsRGFzaGJvYXJkOiBQcmVzTGF5ZXIuRGFzaGJvYXJkUHJlc01vZGVsKTogQXJyYXk8QXBpLkRhc2hib2FyZFpvbmU+IHtcbiAgICBjb25zdCByZXN1bHQgPSBuZXcgQXJyYXk8QXBpLkRhc2hib2FyZFpvbmU+KCk7XG5cbiAgICBmb3IgKGNvbnN0IHpvbmVLZXkgb2YgT2JqZWN0LmtleXMocGxEYXNoYm9hcmQuem9uZXMpKSB7XG4gICAgICBjb25zdCB6b25lID0gcGxEYXNoYm9hcmQuem9uZXNbem9uZUtleV07XG4gICAgICBsZXQgYXBpWm9uZTogQXBpLkRhc2hib2FyZFpvbmUgPSB7XG4gICAgICAgIG5hbWU6IHpvbmUuem9uZUNvbW1vbi5uYW1lLFxuICAgICAgICB6b25lSWQ6IHpvbmUuem9uZUlkLFxuICAgICAgICB6b25lVHlwZTogRW51bU1hcHBpbmdzLnpvbmVUeXBlLmNvbnZlcnQoem9uZS56b25lQ29tbW9uLnpvbmVUeXBlKSxcbiAgICAgICAgaGVpZ2h0OiB6b25lLnpvbmVDb21tb24uaCxcbiAgICAgICAgd2lkdGg6IHpvbmUuem9uZUNvbW1vbi53LFxuICAgICAgICB4OiB6b25lLnpvbmVDb21tb24ueCxcbiAgICAgICAgeTogem9uZS56b25lQ29tbW9uLnlcbiAgICAgIH07XG5cbiAgICAgIHJlc3VsdC5wdXNoKGFwaVpvbmUpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbnZlcnREYXNoYm9hcmRJbmZvKHBsRGFzaGJvYXJkSW5mbzogUHJlc0xheWVyLkFkZEluRGFzaGJvYXJkSW5mb1ByZXNNb2RlbCk6IEFwaS5FeHRlbnNpb25EYXNoYm9hcmRJbmZvIHtcbiAgICBjb25zdCByZXN1bHQ6IEFwaS5FeHRlbnNpb25EYXNoYm9hcmRJbmZvID0ge1xuICAgICAgem9uZXM6IFByZXNMYXllclRvQXBpQ29udmVydGVyLmNvbnZlcnREYXNoYm9hcmRJblpvbmVzKHBsRGFzaGJvYXJkSW5mby5kYXNoYm9hcmRQcmVzTW9kZWwpLFxuICAgICAgbmFtZTogcGxEYXNoYm9hcmRJbmZvLmRhc2hib2FyZFByZXNNb2RlbC5zaGVldFBhdGguc2hlZXROYW1lLFxuICAgICAgZXh0ZW5zaW9uWm9uZUlkOiBwbERhc2hib2FyZEluZm8uem9uZUlkLFxuICAgICAgc2l6ZTogcGxEYXNoYm9hcmRJbmZvLmRhc2hib2FyZFByZXNNb2RlbC52aWV3cG9ydFNpemVcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydEV4dGVuc2lvbkluc3RhbmNlKHBsQWRkSW5JbnN0YW5jZTogUHJlc0xheWVyLkFkZEluSW5zdGFuY2VQcmVzTW9kZWwpOiBBcGkuRXh0ZW5zaW9uSW5zdGFuY2Uge1xuICAgIGNvbnN0IHJlc3VsdDogQXBpLkV4dGVuc2lvbkluc3RhbmNlID0ge1xuICAgICAgdXJsOiBwbEFkZEluSW5zdGFuY2UuYWRkSW5SZWdpc3RyYXRpb25QcmVzTW9kZWwudXJsLFxuICAgICAgbG9jYXRvcjogUHJlc0xheWVyVG9BcGlDb252ZXJ0ZXIuY29udmVydEV4dGVuc2lvbkxvY2F0b3IocGxBZGRJbkluc3RhbmNlLmFkZEluTG9jYXRvclByZXNNb2RlbClcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydEV4dGVuc2lvbkVuaXZyaW9ubWVudChwbEFkZEluRW52aXJvbm1lbnQ6IFByZXNMYXllci5BZGRJbkVudmlyb25tZW50UHJlc01vZGVsKTogQXBpLkV4dGVuc2lvbkVudmlyb25tZW50IHtcbiAgICBjb25zdCByZXN1bHQ6IEFwaS5FeHRlbnNpb25FbnZpcm9ubWVudCA9IHtcbiAgICAgIGV4dGVuc2lvbkNvbnRleHQ6IEVudW1NYXBwaW5ncy5leHRlbnNpb25Db250ZXh0LmNvbnZlcnQocGxBZGRJbkVudmlyb25tZW50LmFkZEluQ29udGV4dCksXG4gICAgICBleHRlbnNpb25Nb2RlOiBFbnVtTWFwcGluZ3MuZXh0ZW5zaW9uTW9kZS5jb252ZXJ0KHBsQWRkSW5FbnZpcm9ubWVudC5hZGRJbk1vZGUpLFxuICAgICAgZXh0ZW5zaW9uTG9jYWxlOiBwbEFkZEluRW52aXJvbm1lbnQuYWRkSW5Mb2NhbGUsXG4gICAgICBleHRlbnNpb25MYW5ndWFnZTogcGxBZGRJbkVudmlyb25tZW50LmFkZEluTGFuZ3VhZ2UsXG4gICAgICB0YWJsZWF1VmVyc2lvbjogcGxBZGRJbkVudmlyb25tZW50LnRhYmxlYXVWZXJzaW9uLFxuICAgICAgb3BlcmF0aW5nU3lzdGVtOiBwbEFkZEluRW52aXJvbm1lbnQub3BlcmF0aW5nU3lzdGVtLFxuICAgICAgYXBpVmVyc2lvbjogcGxBZGRJbkVudmlyb25tZW50LmFwaVZlcnNpb25cbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydEV4dGVuc2lvblNldHRpbmdzSW5mbyhwbEFkZEluU2V0dGluZ3M6IFByZXNMYXllci5BZGRJblNldHRpbmdzSW5mb1ByZXNNb2RlbCk6IEFwaS5FeHRlbnNpb25TZXR0aW5nc0luZm8ge1xuICAgIGNvbnN0IHJlc3VsdDogQXBpLkV4dGVuc2lvblNldHRpbmdzSW5mbyA9IHtcbiAgICAgIC8vIGFkZEluU2V0dGluZ3MgaXMgdW5kZWZpbmVkIGR1cmluZyBib290c3RyYXAgaW5pdGlhbGl6YXRpb25cbiAgICAgIHNldHRpbmdzVmFsdWVzOiBwbEFkZEluU2V0dGluZ3MuYWRkSW5TZXR0aW5ncyB8fCB7fVxuICAgIH07XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0RXh0ZW5zaW9uQm9vdHN0cmFwSW5mbyhwbEJvb3RzdHJhcEluZm86IFByZXNMYXllci5BZGRJbkJvb3RzdHJhcEluZm9QcmVzTW9kZWwpOiBBcGkuRXh0ZW5zaW9uQm9vdHN0cmFwSW5mbyB7XG4gICAgY29uc3QgcmVzdWx0OiBBcGkuRXh0ZW5zaW9uQm9vdHN0cmFwSW5mbyA9IHtcbiAgICAgIGV4dGVuc2lvbkRhc2hib2FyZEluZm86IFByZXNMYXllclRvQXBpQ29udmVydGVyLmNvbnZlcnREYXNoYm9hcmRJbmZvKHBsQm9vdHN0cmFwSW5mby5hZGRJbkRhc2hib2FyZEluZm9QcmVzTW9kZWwpLFxuICAgICAgZXh0ZW5zaW9uRW52aXJvbm1lbnQ6IFByZXNMYXllclRvQXBpQ29udmVydGVyLmNvbnZlcnRFeHRlbnNpb25Fbml2cmlvbm1lbnQocGxCb290c3RyYXBJbmZvLmFkZEluRW52aXJvbm1lbnRQcmVzTW9kZWwpLFxuICAgICAgZXh0ZW5zaW9uSW5zdGFuY2U6IFByZXNMYXllclRvQXBpQ29udmVydGVyLmNvbnZlcnRFeHRlbnNpb25JbnN0YW5jZShwbEJvb3RzdHJhcEluZm8uYWRkSW5JbnN0YW5jZVByZXNNb2RlbCksXG4gICAgICBleHRlbnNpb25TZXR0aW5nc0luZm86IFByZXNMYXllclRvQXBpQ29udmVydGVyLmNvbnZlcnRFeHRlbnNpb25TZXR0aW5nc0luZm8ocGxCb290c3RyYXBJbmZvLmFkZEluU2V0dGluZ3NJbmZvKVxuICAgIH07XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0RmllbGRDYXB0aW9uUGFpcihwbEZpZWxkQ2FwdGlvblBhaXI6IFByZXNMYXllci5GaWVsZENhcHRpb25QYWlyUHJlc01vZGVsKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcGxGaWVsZENhcHRpb25QYWlyLmZuO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0RmlsdGVyRXZlbnQocGxGaWx0ZXJFdmVudDogUHJlc0xheWVyLkZpbHRlckNoYW5nZUV2ZW50UHJlc01vZGVsKTogQXBpLkZpbHRlckV2ZW50IHtcbiAgICBjb25zdCByZXN1bHQ6IEFwaS5GaWx0ZXJFdmVudCA9IHtcbiAgICAgIHZpc3VhbElkOiBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlci5jb252ZXJ0VmlzdWFsSWQocGxGaWx0ZXJFdmVudC52aXN1YWxJZFByZXNNb2RlbCksXG4gICAgICBmaWVsZE5hbWU6IHBsRmlsdGVyRXZlbnQuZmllbGRDYXB0aW9uXG4gICAgfTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0RGF0YVNjaGVtYShkYXRhU2NoZW1hOiBQcmVzTGF5ZXIuRGF0YVNjaGVtYVByZXNNb2RlbCk6IEFwaS5EYXRhU2NoZW1hIHtcbiAgICBsZXQgYXBpRGF0YVNvdXJjZXM6IEFwaS5EYXRhU291cmNlTWFwID0geyB9O1xuXG4gICAgUGFyYW0udmVyaWZ5VmFsdWUoZGF0YVNjaGVtYSwgJ2RhdGFTY2hlbWEnKTtcbiAgICBQYXJhbS52ZXJpZnlWYWx1ZShkYXRhU2NoZW1hLmRhdGFTb3VyY2VzLCAnZGF0YVNjaGVtYS5kYXRhU291cmNlcycpO1xuXG4gICAgLy8gQ29udmVydCBlYWNoIHByZXMgbGF5ZXIgZGF0YXNvdXJjZSBpbiB0aGUgc2NoZW1hIHRvIGFuIEFwaSBkYXRhc291cmNlXG4gICAgT2JqZWN0LmtleXMoZGF0YVNjaGVtYS5kYXRhU291cmNlcykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAvLyBTa2lwIHRoZSBkZWZhdWx0IFBhcmFtZXRlcnMgZGF0YXNvdXJjZSB3ZSByZWNlaXZlIGZyb20gdGhlIHBsYXRmb3JtLlxuICAgICAgaWYgKGRhdGFTY2hlbWEuZGF0YVNvdXJjZXNba2V5XS5kYXRhc291cmNlICE9PSBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlci5QQVJBTUVURVJTX0RCX05BTUUpIHtcbiAgICAgICAgYXBpRGF0YVNvdXJjZXNba2V5XSA9IFByZXNMYXllclRvQXBpQ29udmVydGVyLmNvbnZlcnREYXRhU291cmNlKGRhdGFTY2hlbWEuZGF0YVNvdXJjZXNba2V5XSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBzY2hlbWFNYXAgPSBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlci5jb252ZXJ0V29ya3NoZWV0RGF0YVNjaGVtYU1hcChkYXRhU2NoZW1hLndvcmtzaGVldERhdGFTY2hlbWFNYXApO1xuXG4gICAgY29uc3QgcmVzdWx0OiBBcGkuRGF0YVNjaGVtYSA9IHtcbiAgICAgIGRhdGFTb3VyY2VzOiBhcGlEYXRhU291cmNlcyxcbiAgICAgIHdvcmtzaGVldERhdGFTY2hlbWFNYXA6IHNjaGVtYU1hcCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydERhdGFTb3VyY2UoZGF0YVNvdXJjZTogUHJlc0xheWVyLkRhdGFTb3VyY2VQcmVzTW9kZWwpOiBBcGkuRGF0YVNvdXJjZSB7XG4gICAgY29uc3QgZXh0cmFjdFVwZGF0ZVRpbWUgPSAoZGF0YVNvdXJjZS5leHRyYWN0VXBkYXRlVGltZSA9PT0gJycpID8gdW5kZWZpbmVkIDogZGF0YVNvdXJjZS5leHRyYWN0VXBkYXRlVGltZTtcbiAgICBjb25zdCBkYXRhU291cmNlRmllbGRzID0gbmV3IEFycmF5PEFwaS5GaWVsZD4oKTtcblxuICAgIFBhcmFtLnZlcmlmeVZhbHVlKGRhdGFTb3VyY2UsICdkYXRhU291cmNlJyk7XG4gICAgUGFyYW0udmVyaWZ5VmFsdWUoZGF0YVNvdXJjZS5maWVsZExpc3QsICdkYXRhU2NoZW1hLmZpZWxkTGlzdCcpO1xuXG4gICAgZGF0YVNvdXJjZS5maWVsZExpc3QuZm9yRWFjaCgocGxGaWVsZCkgPT4ge1xuICAgICAgLy8gSWYgdGhlIGRhdGFzb3VyY2UgY29udGFpbnMgaGllcmFyY2hpZXMgb3IgZm9sZGVycywgdGhlIGJhc2UgZmllbGQgd2lsbCBjb250YWluXG4gICAgICAvLyBhIGxpc3Qgb2YgdGhlIGZpZWxkcyBncm91cGVkIGJlbmVhdGggaXQsIHdlIGFyZSBpbnRlcmVzdGVkIGluIHRob3NlLlxuICAgICAgLy8gVGFibGVhdSBkb2VzIG5vdCBzdXBwb3J0IG5lc3RlZCBmb2xkZXJzIG9yIGhpZXJhcmNoaWVzLCBzbyB0aGlzIGRvZXMgbm90IG5lZWQgdG8gYmUgcmVjdXJzaXZlLlxuICAgICAgY29uc3QgaGllcmFyY2h5TW9kZWwgPSBwbEZpZWxkIGFzIFByZXNMYXllci5IaWVyYXJjaHlQcmVzTW9kZWw7XG5cbiAgICAgIGlmIChoaWVyYXJjaHlNb2RlbC5jb2x1bW5MaXN0KSB7IC8vIElmIGNvbHVtbiBsaXN0IGlzIGRlZmluZWQsIHRoaXMgaXMgYSBoaWVyYXJjaHkuXG4gICAgICAgIGhpZXJhcmNoeU1vZGVsLmNvbHVtbkxpc3QuZm9yRWFjaChmaWVsZCA9PiBkYXRhU291cmNlRmllbGRzLnB1c2goUHJlc0xheWVyVG9BcGlDb252ZXJ0ZXIuY29udmVydEZpZWxkKGZpZWxkKSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVGhpcyBpcyBhIGJpdCBicml0dGxlIGZvciBub3csIGJ1dCB0aGlzIHZhbHVlIGlzIG5vdCBleHBvc2VkIHZpYSB0aGUgcGxhdGZvcm0gRmllbGRUeXBlIEVudW0uXG4gICAgICAgIGlmIChwbEZpZWxkLnR5cGUgIT09ICdmaWVsZC1mb2xkZXInKSB7XG4gICAgICAgICAgZGF0YVNvdXJjZUZpZWxkcy5wdXNoKFByZXNMYXllclRvQXBpQ29udmVydGVyLmNvbnZlcnRGaWVsZChwbEZpZWxkKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IHJlc3VsdDogQXBpLkRhdGFTb3VyY2UgPSB7XG4gICAgICBuYW1lOiBkYXRhU291cmNlLmRhdGFzb3VyY2VDYXB0aW9uLFxuICAgICAgaWQ6IGRhdGFTb3VyY2UuZGF0YXNvdXJjZSxcbiAgICAgIGlzRXh0cmFjdDogKGV4dHJhY3RVcGRhdGVUaW1lICE9PSB1bmRlZmluZWQpLFxuICAgICAgZXh0cmFjdFVwZGF0ZVRpbWU6IGV4dHJhY3RVcGRhdGVUaW1lLFxuICAgICAgZmllbGRzOiBkYXRhU291cmNlRmllbGRzXG4gICAgfTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRXb3Jrc2hlZXREYXRhU2NoZW1hTWFwKHNjaGVtYU1hcDogeyBba2V5OiBzdHJpbmddOiBQcmVzTGF5ZXIuV29ya3NoZWV0RGF0YVNjaGVtYVByZXNNb2RlbCB9KTpcbiAgICBBcGkuV29ya3NoZWV0RGF0YVNjaGVtYU1hcCB7XG5cbiAgICBsZXQgcmVzdWx0OiBBcGkuV29ya3NoZWV0RGF0YVNjaGVtYU1hcCA9IHt9O1xuXG4gICAgT2JqZWN0LmtleXMoc2NoZW1hTWFwKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIC8vIFdlIG5lZWQgdG8gcmVtb3ZlIGFueSByZWZlcmVuY2VzIHRvIHRoZSBcIlBhcmFtZXRlcnNcIiBkYXRhc291cmNlLiAgVGhpcyBpcyB0cmVhdGVkIGFzIGEgc2VwYXJhdGVcbiAgICAgIC8vIGRhdGFzb3VyY2UgYnkgdGhlIHBsYXRmb3JtLCBidXQgdGhlIEV4dGVuc2lvbnMgQVBJIGFjY2Vzc2VzIFBhcmFtZXRlcnMgZGlyZWN0bHkuXG4gICAgICBsZXQgY2xlYW5SZWZlcmVuY2VkRGF0YVNvdXJjZUxpc3QgPSBzY2hlbWFNYXBba2V5XS5yZWZlcmVuY2VkRGF0YVNvdXJjZUxpc3QuZmlsdGVyKChkc05hbWUpID0+IHtcbiAgICAgICAgcmV0dXJuIGRzTmFtZSAhPT0gUHJlc0xheWVyVG9BcGlDb252ZXJ0ZXIuUEFSQU1FVEVSU19EQl9OQU1FO1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHdvcmtzaGVldERhdGFTb3VyY2VJbmZvOiBBcGkuV29ya3NoZWV0RGF0YVNvdXJjZUluZm8gPSB7XG4gICAgICAgIHByaW1hcnlEYXRhU291cmNlOiBzY2hlbWFNYXBba2V5XS5wcmltYXJ5RGF0YXNvdXJjZSxcbiAgICAgICAgcmVmZXJlbmNlZERhdGFTb3VyY2VMaXN0OiBjbGVhblJlZmVyZW5jZWREYXRhU291cmNlTGlzdFxuICAgICAgfTtcblxuICAgICAgcmVzdWx0W2tleV0gPSB3b3Jrc2hlZXREYXRhU291cmNlSW5mbztcbiAgICB9KTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRGaWVsZChwbEZpZWxkOiBQcmVzTGF5ZXIuRmllbGRQcmVzTW9kZWwpOiBBcGkuRmllbGQge1xuICAgIGNvbnN0IGZpZWxkQ29sdW1uID0gcGxGaWVsZCBhcyBQcmVzTGF5ZXIuRmllbGRDb2x1bW5QcmVzTW9kZWw7XG4gICAgY29uc3QgZ3JvdXBDb2x1bW4gPSBwbEZpZWxkIGFzIFByZXNMYXllci5Hcm91cFByZXNNb2RlbDtcblxuICAgIGxldCBhZ2dyZWdhdGlvbiA9IEFwaS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5Ob25lO1xuICAgIGxldCByb2xlID0gQXBpLkZpZWxkUm9sZVR5cGUuVW5rbm93bjtcbiAgICBsZXQgaXNDYWxjdWxhdGVkID0gZmFsc2U7XG5cbiAgICAvLyBXZSBleHBlY3QgdGhhdCBldmVyeSBGaWVsZFByZXNNb2RlbCB3ZSBnZXQgYmFjayBmcm9tIHRoZSBjb21tYW5kIHRoYXQgcmV0dXJucyBGaWVsZFByZXNNb2RlbHNcbiAgICAvLyBpcyBhY3R1YWxseSBhbiBpbnN0YW5jZSBvZiB0aGUgZGVyaXZlZCBGaWVsZENvbHVtblByZXNNb2RlbC5cbiAgICBpZiAoZmllbGRDb2x1bW4uYWdncmVnYXRpb24gJiYgZmllbGRDb2x1bW4uZmllbGRSb2xlKSB7XG4gICAgICBhZ2dyZWdhdGlvbiA9IEVudW1NYXBwaW5ncy5maWVsZEFnZ3JlZ2F0aW9uVHlwZS5jb252ZXJ0KGZpZWxkQ29sdW1uLmFnZ3JlZ2F0aW9uKTtcbiAgICAgIHJvbGUgPSBFbnVtTWFwcGluZ3MuZmllbGRSb2xlVHlwZS5jb252ZXJ0KGZpZWxkQ29sdW1uLmZpZWxkUm9sZSk7XG4gICAgICBpc0NhbGN1bGF0ZWQgPSBmaWVsZENvbHVtbi5pc0NhbGN1bGF0ZWQgfHwgZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5leHBlY3RlZCBJbnRlcm5hbCBFcnJvcjogZmllbGQgcHJlcyBtb2RlbCBpcyBtaXNzaW5nIGV4cGVjdGVkIHByb3BlcnRpZXMuJyk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0OiBBcGkuRmllbGQgPSB7XG4gICAgICBuYW1lOiBwbEZpZWxkLmRlc2NyaXB0aW9uLFxuICAgICAgaWQ6IHBsRmllbGQubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwbEZpZWxkLnVzZXJDYXB0aW9uLFxuICAgICAgYWdncmVnYXRpb246IGFnZ3JlZ2F0aW9uLFxuICAgICAgaXNIaWRkZW46ICEhKHBsRmllbGQuaXNIaWRkZW4pLFxuICAgICAgaXNHZW5lcmF0ZWQ6IHBsRmllbGQuaXNHZW5lcmF0ZWQsXG4gICAgICBpc0NhbGN1bGF0ZWRGaWVsZDogaXNDYWxjdWxhdGVkLFxuICAgICAgcm9sZTogcm9sZSxcbiAgICAgIGlzQ29tYmluZWRGaWVsZDogISEoZ3JvdXBDb2x1bW4uaXNDb21iaW5lZEZpZWxkKVxuICAgIH07XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktY29yZS9zcmMvbWFwcGluZ3MvUHJlc0xheWVyVG9BcGlDb252ZXJ0ZXIudHNcbiAqKi8iLCJpbXBvcnQge1xuICBEYXNoYm9hcmRPYmplY3RUeXBlLFxuICBEYXRhVHlwZSxcbiAgRGF0ZVJhbmdlVHlwZSxcbiAgRGF0ZVN0ZXBQZXJpb2QsXG4gIERvbWFpblJlc3RyaWN0aW9uVHlwZSxcbiAgRXh0ZW5zaW9uQ29udGV4dCxcbiAgRXh0ZW5zaW9uTW9kZSxcbiAgRmllbGRBZ2dyZWdhdGlvblR5cGUsXG4gIEZpZWxkUm9sZVR5cGUsXG4gIEZpbHRlckRvbWFpblR5cGUsXG4gIEZpbHRlck51bGxPcHRpb24sXG4gIEZpbHRlclVwZGF0ZVR5cGVcbn0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcbmltcG9ydCB7IEVudW1Db252ZXJ0ZXIgfSBmcm9tICdAdGFibGVhdS9hcGktdXRpbHMnO1xuXG5pbXBvcnQgKiBhcyBFbnVtcyBmcm9tICcuLi8uLi9nZW4tc3JjL3ByZXNsYXllci9FbnVtcyc7XG5cbi8qIHRzbGludDpkaXNhYmxlOnR5cGVkZWYgLSBEaXNhYmxlIHRoaXMgdG8gbWFrZSBkZWNsYXJpbmcgdGhlc2UgY2xhc3NlcyBhIGJpdCBlYXNpZXIgKi9cbmV4cG9ydCBjbGFzcyBQcmVzTGF5ZXJUb0FwaUVudW1NYXBwaW5ncyB7XG4gIHB1YmxpYyBzdGF0aWMgem9uZVR5cGUgPSBuZXcgRW51bUNvbnZlcnRlcjxFbnVtcy5ab25lVHlwZSwgRGFzaGJvYXJkT2JqZWN0VHlwZT4oe1xuICAgIFtFbnVtcy5ab25lVHlwZS5aVF9JbnZhbGlkXTogRGFzaGJvYXJkT2JqZWN0VHlwZS5CbGFuayxcbiAgICBbRW51bXMuWm9uZVR5cGUuWlRfVml6XTogRGFzaGJvYXJkT2JqZWN0VHlwZS5Xb3Jrc2hlZXQsXG4gICAgW0VudW1zLlpvbmVUeXBlLlpUX0NvbG9yTGVnZW5kXTogRGFzaGJvYXJkT2JqZWN0VHlwZS5MZWdlbmQsXG4gICAgW0VudW1zLlpvbmVUeXBlLlpUX1NoYXBlTGVnZW5kXTogRGFzaGJvYXJkT2JqZWN0VHlwZS5MZWdlbmQsXG4gICAgW0VudW1zLlpvbmVUeXBlLlpUX1NpemVMZWdlbmRdOiBEYXNoYm9hcmRPYmplY3RUeXBlLkxlZ2VuZCxcbiAgICBbRW51bXMuWm9uZVR5cGUuWlRfTWFwTGVnZW5kXTogRGFzaGJvYXJkT2JqZWN0VHlwZS5MZWdlbmQsXG4gICAgW0VudW1zLlpvbmVUeXBlLlpUX1F1aWNrRmlsdGVyXTogRGFzaGJvYXJkT2JqZWN0VHlwZS5RdWlja0ZpbHRlcixcbiAgICBbRW51bXMuWm9uZVR5cGUuWlRfSGlnaGxpZ2h0ZXJdOiBEYXNoYm9hcmRPYmplY3RUeXBlLkJsYW5rLCAvLyBUT0RPXG4gICAgW0VudW1zLlpvbmVUeXBlLlpUX0N1cnJQYWdlXTogRGFzaGJvYXJkT2JqZWN0VHlwZS5QYWdlRmlsdGVyLFxuICAgIFtFbnVtcy5ab25lVHlwZS5aVF9FbXB0eV06IERhc2hib2FyZE9iamVjdFR5cGUuQmxhbmssXG4gICAgW0VudW1zLlpvbmVUeXBlLlpUX1RpdGxlXTogRGFzaGJvYXJkT2JqZWN0VHlwZS5UaXRsZSxcbiAgICBbRW51bXMuWm9uZVR5cGUuWlRfVGV4dF06IERhc2hib2FyZE9iamVjdFR5cGUuVGV4dCxcbiAgICBbRW51bXMuWm9uZVR5cGUuWlRfQml0bWFwXTogRGFzaGJvYXJkT2JqZWN0VHlwZS5JbWFnZSxcbiAgICBbRW51bXMuWm9uZVR5cGUuWlRfV2ViXTogRGFzaGJvYXJkT2JqZWN0VHlwZS5XZWJQYWdlLFxuICAgIFtFbnVtcy5ab25lVHlwZS5aVF9BZGRJbl06IERhc2hib2FyZE9iamVjdFR5cGUuRXh0ZW5zaW9uLCAvLyBUT0RPXG4gICAgW0VudW1zLlpvbmVUeXBlLlpUX1BhcmFtQ3RybF06IERhc2hib2FyZE9iamVjdFR5cGUuUGFyYW1ldGVyQ29udHJvbCxcbiAgICBbRW51bXMuWm9uZVR5cGUuWlRfRmxpcGJvYXJkTmF2XTogRGFzaGJvYXJkT2JqZWN0VHlwZS5CbGFuayxcbiAgICBbRW51bXMuWm9uZVR5cGUuWlRfRmxpcGJvYXJkXTogRGFzaGJvYXJkT2JqZWN0VHlwZS5CbGFuayxcbiAgICBbRW51bXMuWm9uZVR5cGUuWlRfTGF5b3V0QmFzaWNdOiBEYXNoYm9hcmRPYmplY3RUeXBlLkJsYW5rLFxuICAgIFtFbnVtcy5ab25lVHlwZS5aVF9MYXlvdXRGbG93XTogRGFzaGJvYXJkT2JqZWN0VHlwZS5CbGFuayxcbiAgICBbRW51bXMuWm9uZVR5cGUuWlRfTGF5b3V0RnJlZUZvcm1dOiBEYXNoYm9hcmRPYmplY3RUeXBlLkJsYW5rLFxuICAgIFtFbnVtcy5ab25lVHlwZS5aVF9FbmRdOiBEYXNoYm9hcmRPYmplY3RUeXBlLkJsYW5rLFxuICAgIFtFbnVtcy5ab25lVHlwZS5aVF9CdXR0b25dOiBEYXNoYm9hcmRPYmplY3RUeXBlLkJsYW5rLFxuICB9LCBEYXNoYm9hcmRPYmplY3RUeXBlLkJsYW5rKTtcblxuICBwdWJsaWMgc3RhdGljIGV4dGVuc2lvbkNvbnRleHQgPSBuZXcgRW51bUNvbnZlcnRlcjxFbnVtcy5BZGRJbkNvbnRleHQsIEV4dGVuc2lvbkNvbnRleHQ+KHtcbiAgICBbRW51bXMuQWRkSW5Db250ZXh0LlVua25vd25dOiBFeHRlbnNpb25Db250ZXh0LlVua25vd24sXG4gICAgW0VudW1zLkFkZEluQ29udGV4dC5EZXNrdG9wXTogRXh0ZW5zaW9uQ29udGV4dC5EZXNrdG9wLFxuICAgIFtFbnVtcy5BZGRJbkNvbnRleHQuU2VydmVyXTogRXh0ZW5zaW9uQ29udGV4dC5TZXJ2ZXJcbiAgfSk7XG5cbiAgcHVibGljIHN0YXRpYyBleHRlbnNpb25Nb2RlID0gbmV3IEVudW1Db252ZXJ0ZXI8RW51bXMuQWRkSW5Nb2RlLCBFeHRlbnNpb25Nb2RlPih7XG4gICAgW0VudW1zLkFkZEluTW9kZS5Vbmtub3duXTogRXh0ZW5zaW9uTW9kZS5Vbmtub3duLFxuICAgIFtFbnVtcy5BZGRJbk1vZGUuQXV0aG9yaW5nXTogRXh0ZW5zaW9uTW9kZS5BdXRob3JpbmcsXG4gICAgW0VudW1zLkFkZEluTW9kZS5WaWV3aW5nXTogRXh0ZW5zaW9uTW9kZS5WaWV3aW5nXG4gIH0pO1xuXG4gIHB1YmxpYyBzdGF0aWMgZGF0YVR5cGUgPSBuZXcgRW51bUNvbnZlcnRlcjxFbnVtcy5EYXRhVHlwZSwgRGF0YVR5cGU+ICh7XG4gICAgW0VudW1zLkRhdGFUeXBlLkRUX0JPT0xFQU5dOiBEYXRhVHlwZS5Cb29sLFxuICAgIFtFbnVtcy5EYXRhVHlwZS5EVF9EQVRFXTogRGF0YVR5cGUuRGF0ZSxcbiAgICBbRW51bXMuRGF0YVR5cGUuRFRfREFURVRJTUVdOiBEYXRhVHlwZS5EYXRlVGltZSxcbiAgICBbRW51bXMuRGF0YVR5cGUuRFRfSU5URUdFUl06IERhdGFUeXBlLkludCxcbiAgICBbRW51bXMuRGF0YVR5cGUuRFRfUkVBTF06IERhdGFUeXBlLkZsb2F0LFxuICAgIFtFbnVtcy5EYXRhVHlwZS5EVF9TVFJJTkddOiBEYXRhVHlwZS5TdHJpbmcsXG4gICAgW0VudW1zLkRhdGFUeXBlLkRUX1NQQVRJQUxdOiBEYXRhVHlwZS5TcGF0aWFsXG4gIH0pO1xuXG4gIHB1YmxpYyBzdGF0aWMgZmllbGRBZ2dyZWdhdGlvblR5cGUgPSBuZXcgRW51bUNvbnZlcnRlcjxFbnVtcy5BZ2dUeXBlLCBGaWVsZEFnZ3JlZ2F0aW9uVHlwZT4oe1xuICAgIFtFbnVtcy5BZ2dUeXBlLkFHR19BVFRSXTogRmllbGRBZ2dyZWdhdGlvblR5cGUuQXR0cixcbiAgICBbRW51bXMuQWdnVHlwZS5BR0dfQVZHXTogRmllbGRBZ2dyZWdhdGlvblR5cGUuQXZnLFxuICAgIFtFbnVtcy5BZ2dUeXBlLkFHR19DT1VOVF06IEZpZWxkQWdncmVnYXRpb25UeXBlLkNvdW50LFxuICAgIFtFbnVtcy5BZ2dUeXBlLkFHR19DT1VOVERdOiBGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5Db3VudGQsXG4gICAgW0VudW1zLkFnZ1R5cGUuQUdHX0RBWV06IEZpZWxkQWdncmVnYXRpb25UeXBlLkRheSxcbiAgICBbRW51bXMuQWdnVHlwZS5BR0dfRU5EXTogRmllbGRBZ2dyZWdhdGlvblR5cGUuRW5kLFxuICAgIFtFbnVtcy5BZ2dUeXBlLkFHR19IT1VSXTogRmllbGRBZ2dyZWdhdGlvblR5cGUuSG91cixcbiAgICBbRW51bXMuQWdnVHlwZS5BR0dfSU5PVVRdOiBGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5Jbk91dCxcbiAgICBbRW51bXMuQWdnVHlwZS5BR0dfS1VSVE9TSVNdOiBGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5LdXJ0b3NpcyxcbiAgICBbRW51bXMuQWdnVHlwZS5BR0dfTUFYXTogRmllbGRBZ2dyZWdhdGlvblR5cGUuTWF4LFxuICAgIFtFbnVtcy5BZ2dUeXBlLkFHR19NRFldOiBGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5NZHksXG4gICAgW0VudW1zLkFnZ1R5cGUuQUdHX01FRElBTl06IEZpZWxkQWdncmVnYXRpb25UeXBlLk1lZGlhbixcbiAgICBbRW51bXMuQWdnVHlwZS5BR0dfTUlOXTogRmllbGRBZ2dyZWdhdGlvblR5cGUuTWluLFxuICAgIFtFbnVtcy5BZ2dUeXBlLkFHR19NSU5VVEVdOiBGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5NaW51dGUsXG4gICAgW0VudW1zLkFnZ1R5cGUuQUdHX01PTlRIWUVBUl06IEZpZWxkQWdncmVnYXRpb25UeXBlLk1vbnRoWWVhcixcbiAgICBbRW51bXMuQWdnVHlwZS5BR0dfTk9ORV06IEZpZWxkQWdncmVnYXRpb25UeXBlLk5vbmUsXG4gICAgW0VudW1zLkFnZ1R5cGUuQUdHX1FUUl06IEZpZWxkQWdncmVnYXRpb25UeXBlLlF0cixcbiAgICBbRW51bXMuQWdnVHlwZS5BR0dfUVVBUlQxXTogRmllbGRBZ2dyZWdhdGlvblR5cGUuUXVhcnQxLFxuICAgIFtFbnVtcy5BZ2dUeXBlLkFHR19RVUFSVDNdOiBGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5RdWFydDMsXG4gICAgW0VudW1zLkFnZ1R5cGUuQUdHX1NFQ09ORF06IEZpZWxkQWdncmVnYXRpb25UeXBlLlNlY29uZCxcbiAgICBbRW51bXMuQWdnVHlwZS5BR0dfU0tFV05FU1NdOiBGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5Ta2V3bmVzcyxcbiAgICBbRW51bXMuQWdnVHlwZS5BR0dfU1RERVZdOiBGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5TdGRldixcbiAgICBbRW51bXMuQWdnVHlwZS5BR0dfU1RERVZQXTogRmllbGRBZ2dyZWdhdGlvblR5cGUuU3RkZXZwLFxuICAgIFtFbnVtcy5BZ2dUeXBlLkFHR19TVU1dOiBGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5TdW0sXG4gICAgW0VudW1zLkFnZ1R5cGUuVFJVTkNfREFZXTogRmllbGRBZ2dyZWdhdGlvblR5cGUuVHJ1bmNEYXksXG4gICAgW0VudW1zLkFnZ1R5cGUuVFJVTkNfSE9VUl06IEZpZWxkQWdncmVnYXRpb25UeXBlLlRydW5jSG91cixcbiAgICBbRW51bXMuQWdnVHlwZS5UUlVOQ19NSU5VVEVdOiBGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5UcnVuY01pbnV0ZSxcbiAgICBbRW51bXMuQWdnVHlwZS5UUlVOQ19NT05USF06IEZpZWxkQWdncmVnYXRpb25UeXBlLlRydW5jTW9udGgsXG4gICAgW0VudW1zLkFnZ1R5cGUuVFJVTkNfUVRSXTogRmllbGRBZ2dyZWdhdGlvblR5cGUuVHJ1bmNRdHIsXG4gICAgW0VudW1zLkFnZ1R5cGUuVFJVTkNfU0VDT05EXTogRmllbGRBZ2dyZWdhdGlvblR5cGUuVHJ1bmNTZWNvbmQsXG4gICAgW0VudW1zLkFnZ1R5cGUuVFJVTkNfV0VFS106IEZpZWxkQWdncmVnYXRpb25UeXBlLlRydW5jV2VlayxcbiAgICBbRW51bXMuQWdnVHlwZS5UUlVOQ19ZRUFSXTogRmllbGRBZ2dyZWdhdGlvblR5cGUuVHJ1bmNZZWFyLFxuICAgIFtFbnVtcy5BZ2dUeXBlLkFHR19VU0VSXTogRmllbGRBZ2dyZWdhdGlvblR5cGUuVXNlcixcbiAgICBbRW51bXMuQWdnVHlwZS5BR0dfVkFSXTogRmllbGRBZ2dyZWdhdGlvblR5cGUuVmFyLFxuICAgIFtFbnVtcy5BZ2dUeXBlLkFHR19WQVJQXTogRmllbGRBZ2dyZWdhdGlvblR5cGUuVmFycCxcbiAgICBbRW51bXMuQWdnVHlwZS5BR0dfV0VFS106IEZpZWxkQWdncmVnYXRpb25UeXBlLldlZWssXG4gICAgW0VudW1zLkFnZ1R5cGUuQUdHX1dFRUtEQVldOiBGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5XZWVrZGF5LFxuICAgIFtFbnVtcy5BZ2dUeXBlLkFHR19ZRUFSXTogRmllbGRBZ2dyZWdhdGlvblR5cGUuWWVhcixcbiAgfSk7XG5cbiAgcHVibGljIHN0YXRpYyBmaWVsZFJvbGVUeXBlID0gbmV3IEVudW1Db252ZXJ0ZXI8RW51bXMuRmllbGRSb2xlLCBGaWVsZFJvbGVUeXBlPih7XG4gICAgW0VudW1zLkZpZWxkUm9sZS5ST0xFX0RJTUVOU0lPTl06IEZpZWxkUm9sZVR5cGUuRGltZW5zaW9uLFxuICAgIFtFbnVtcy5GaWVsZFJvbGUuUk9MRV9NRUFTVVJFXTogRmllbGRSb2xlVHlwZS5NZWFzdXJlXG4gIH0pO1xuXG4gIHB1YmxpYyBzdGF0aWMgcGFyYW1ldGVyVHlwZXNEb21haW5UeXBlID0gbmV3IEVudW1Db252ZXJ0ZXI8RW51bXMuUGFyYW1ldGVyVHlwZXNEb21haW5UeXBlLCBEb21haW5SZXN0cmljdGlvblR5cGU+KHtcbiAgICBbRW51bXMuUGFyYW1ldGVyVHlwZXNEb21haW5UeXBlLkRvbWFpbl9BbnldOiBEb21haW5SZXN0cmljdGlvblR5cGUuQWxsLFxuICAgIFtFbnVtcy5QYXJhbWV0ZXJUeXBlc0RvbWFpblR5cGUuRG9tYWluX0xpc3RdOiBEb21haW5SZXN0cmljdGlvblR5cGUuTGlzdCxcbiAgICBbRW51bXMuUGFyYW1ldGVyVHlwZXNEb21haW5UeXBlLkRvbWFpbl9SYW5nZV06IERvbWFpblJlc3RyaWN0aW9uVHlwZS5SYW5nZSxcbiAgfSk7XG5cbiAgcHVibGljIHN0YXRpYyBkYXRlU3RlcFBlcmlvZCA9IG5ldyBFbnVtQ29udmVydGVyPEVudW1zLkRhdGVQZXJpb2RUeXBlLCBEYXRlU3RlcFBlcmlvZD4oe1xuICAgIFtFbnVtcy5EYXRlUGVyaW9kVHlwZS5QZXJpb2RZZWFyXTogRGF0ZVN0ZXBQZXJpb2QuWWVhcnMsXG4gICAgW0VudW1zLkRhdGVQZXJpb2RUeXBlLlBlcmlvZFF1YXJ0ZXJdOiBEYXRlU3RlcFBlcmlvZC5RdWFydGVycyxcbiAgICBbRW51bXMuRGF0ZVBlcmlvZFR5cGUuUGVyaW9kTW9udGhdOiBEYXRlU3RlcFBlcmlvZC5Nb250aHMsXG4gICAgW0VudW1zLkRhdGVQZXJpb2RUeXBlLlBlcmlvZFdlZWtdOiBEYXRlU3RlcFBlcmlvZC5XZWVrcyxcbiAgICBbRW51bXMuRGF0ZVBlcmlvZFR5cGUuUGVyaW9kRGF5XTogRGF0ZVN0ZXBQZXJpb2QuRGF5cyxcbiAgICBbRW51bXMuRGF0ZVBlcmlvZFR5cGUuUGVyaW9kSG91cl06IERhdGVTdGVwUGVyaW9kLkhvdXJzLFxuICAgIFtFbnVtcy5EYXRlUGVyaW9kVHlwZS5QZXJpb2RNaW51dGVdOiBEYXRlU3RlcFBlcmlvZC5NaW51dGVzLFxuICAgIFtFbnVtcy5EYXRlUGVyaW9kVHlwZS5QZXJpb2RTZWNvbmRdOiBEYXRlU3RlcFBlcmlvZC5TZWNvbmRzXG4gIH0pO1xuXG4gIHB1YmxpYyBzdGF0aWMgZGF0ZVJhbmdlVHlwZSA9IG5ldyBFbnVtQ29udmVydGVyPEVudW1zLkZpbHRlcnNSZWxhdGl2ZURhdGVSYW5nZVR5cGUsIERhdGVSYW5nZVR5cGU+KHtcbiAgICBbRW51bXMuRmlsdGVyc1JlbGF0aXZlRGF0ZVJhbmdlVHlwZS5SYW5nZUN1cnJlbnRdOiBEYXRlUmFuZ2VUeXBlLkN1cnJlbnQsXG4gICAgW0VudW1zLkZpbHRlcnNSZWxhdGl2ZURhdGVSYW5nZVR5cGUuUmFuZ2VDdXJyZW50VG9EYXRlXTogRGF0ZVJhbmdlVHlwZS5Ub0RhdGUsXG4gICAgW0VudW1zLkZpbHRlcnNSZWxhdGl2ZURhdGVSYW5nZVR5cGUuUmFuZ2VMYXN0MV06IERhdGVSYW5nZVR5cGUuTGFzdCxcbiAgICBbRW51bXMuRmlsdGVyc1JlbGF0aXZlRGF0ZVJhbmdlVHlwZS5SYW5nZUxhc3ROXTogRGF0ZVJhbmdlVHlwZS5MYXN0TixcbiAgICBbRW51bXMuRmlsdGVyc1JlbGF0aXZlRGF0ZVJhbmdlVHlwZS5SYW5nZU5leHQxXTogRGF0ZVJhbmdlVHlwZS5OZXh0LFxuICAgIFtFbnVtcy5GaWx0ZXJzUmVsYXRpdmVEYXRlUmFuZ2VUeXBlLlJhbmdlTmV4dE5dOiBEYXRlUmFuZ2VUeXBlLk5leHROXG4gIH0pO1xuXG4gIHB1YmxpYyBzdGF0aWMgZmlsdGVyRG9tYWluVHlwZSA9IG5ldyBFbnVtQ29udmVydGVyPEVudW1zLkZpbHRlcnNEb21haW5UeXBlLCBGaWx0ZXJEb21haW5UeXBlPiAoe1xuICAgIFtFbnVtcy5GaWx0ZXJzRG9tYWluVHlwZS5SZWxldmFudF06IEZpbHRlckRvbWFpblR5cGUuUmVsZXZhbnQsXG4gICAgW0VudW1zLkZpbHRlcnNEb21haW5UeXBlLkRhdGFiYXNlXTogRmlsdGVyRG9tYWluVHlwZS5EYXRhYmFzZVxuICB9KTtcbn1cblxuZXhwb3J0IGNsYXNzIEFwaVRvUHJlc0xheWVyRW51bU1hcHBpbmdzIHtcbiAgcHVibGljIHN0YXRpYyBmaWx0ZXJVcGRhdGVUeXBlID0gbmV3IEVudW1Db252ZXJ0ZXI8RmlsdGVyVXBkYXRlVHlwZSwgRW51bXMuRmlsdGVyVXBkYXRlVHlwZT4gKHtcbiAgICBbRmlsdGVyVXBkYXRlVHlwZS5BZGRdOiBFbnVtcy5GaWx0ZXJVcGRhdGVUeXBlLkFERCxcbiAgICBbRmlsdGVyVXBkYXRlVHlwZS5BbGxdOiBFbnVtcy5GaWx0ZXJVcGRhdGVUeXBlLkFMTCxcbiAgICBbRmlsdGVyVXBkYXRlVHlwZS5SZXBsYWNlXTogRW51bXMuRmlsdGVyVXBkYXRlVHlwZS5SRVBMQUNFLFxuICAgIFtGaWx0ZXJVcGRhdGVUeXBlLlJlbW92ZV06IEVudW1zLkZpbHRlclVwZGF0ZVR5cGUuUkVNT1ZFXG4gIH0pO1xuXG4gIHB1YmxpYyBzdGF0aWMgbnVsbE9wdGlvbiA9IG5ldyBFbnVtQ29udmVydGVyPEZpbHRlck51bGxPcHRpb24sIEVudW1zLkZpbHRlcnNRdWFudGl0YXRpdmVJbmNsdWRlZFZhbHVlcz4gKHtcbiAgICBbRmlsdGVyTnVsbE9wdGlvbi5BbGxWYWx1ZXNdOiBFbnVtcy5GaWx0ZXJzUXVhbnRpdGF0aXZlSW5jbHVkZWRWYWx1ZXMuQWxsLFxuICAgIFtGaWx0ZXJOdWxsT3B0aW9uLk5vbk51bGxWYWx1ZXNdOiBFbnVtcy5GaWx0ZXJzUXVhbnRpdGF0aXZlSW5jbHVkZWRWYWx1ZXMuTm9uTnVsbCxcbiAgICBbRmlsdGVyTnVsbE9wdGlvbi5OdWxsVmFsdWVzXTogRW51bXMuRmlsdGVyc1F1YW50aXRhdGl2ZUluY2x1ZGVkVmFsdWVzLk51bGxcbiAgfSk7XG5cbiAgcHVibGljIHN0YXRpYyBmaWx0ZXJEb21haW5UeXBlID0gbmV3IEVudW1Db252ZXJ0ZXI8RmlsdGVyRG9tYWluVHlwZSwgRW51bXMuRmlsdGVyc0RvbWFpblR5cGU+ICh7XG4gICAgW0ZpbHRlckRvbWFpblR5cGUuUmVsZXZhbnRdOiBFbnVtcy5GaWx0ZXJzRG9tYWluVHlwZS5SZWxldmFudCxcbiAgICBbRmlsdGVyRG9tYWluVHlwZS5EYXRhYmFzZV06IEVudW1zLkZpbHRlcnNEb21haW5UeXBlLkRhdGFiYXNlXG4gIH0pO1xufVxuLyogdHNsaW50OmVuYWJsZTp0eXBlZGVmICovXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktY29yZS9zcmMvbWFwcGluZ3MvRW51bU1hcHBpbmdzLnRzXG4gKiovIiwiLyogdHNsaW50OmRpc2FibGUgKi9cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vL1xuLy8gVGhpcyBmaWxlIGlzIHRoZSBjb3B5cmlnaHRlZCBwcm9wZXJ0eSBvZiBUYWJsZWF1IFNvZnR3YXJlIGFuZCBpcyBwcm90ZWN0ZWRcbi8vIGJ5IHJlZ2lzdGVyZWQgcGF0ZW50cyBhbmQgb3RoZXIgYXBwbGljYWJsZSBVLlMuIGFuZCBpbnRlcm5hdGlvbmFsIGxhd3MgYW5kXG4vLyByZWd1bGF0aW9ucy5cbi8vXG4vLyBVbmxpY2Vuc2VkIHVzZSBvZiB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIGlzIHByb2hpYml0ZWQuIFBsZWFzZSByZWZlciB0b1xuLy8gdGhlIE5PVElDRVMudHh0IGZpbGUgZm9yIGZ1cnRoZXIgZGV0YWlscy5cbi8vXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gV0FSTklORzogQ29tcHV0ZXIgZ2VuZXJhdGVkIGZpbGUuICBEbyBub3QgaGFuZCBtb2RpZnkuXG4vLyBERVBFTkRTIE9OOiBbJy4uL3R5cGVzY3JpcHQvanMtYXBpL2FwaS1jb3JlL25vZGVfbW9kdWxlcy9AdGFibGVhdS9wcmVzbGF5ZXItY29kZWdlbi10eXBlc2NyaXB0L3RlbXBsYXRlcy9lbnVtLXRzLnRlbXBsYXRlJywgdScuLi90eXBlc2NyaXB0L2pzLWFwaS9hcGktY29yZS90ZW1wLXByZXMtbGF5ZXIvYWxsLWVudW1zLmRhdGEnXVxuXG4vLyBcbmV4cG9ydCBlbnVtIERhdGFTY2FsaW5nIHtcblxuICAvLyBcbiAgU0NBTElOR19OT05FID0gJ25vbmUnLFxuXG4gIC8vIFxuICBTQ0FMSU5HX1NUQU5EQVJESVpFRCA9ICdzdGFuZGFyZGl6ZWQnLFxuXG4gIC8vIFxuICBTQ0FMSU5HX05PUk1BTElaRUQgPSAnbm9ybWFsaXplZCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBGb3JlY2FzdE1vZGVsVHlwZSB7XG5cbiAgLy8gXG4gIEZvcmVjYXN0TW9kZWxUeXBlQXV0b1NlYXNvbiA9ICdhdXRvLXNlYXNvbicsXG5cbiAgLy8gXG4gIEZvcmVjYXN0TW9kZWxUeXBlQXV0byA9ICdhdXRvJyxcblxuICAvLyBcbiAgRm9yZWNhc3RNb2RlbFR5cGVDdXN0b20gPSAnY3VzdG9tJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEZvcmVjYXN0UmFuZ2VUeXBlIHtcblxuICAvLyBcbiAgRm9yZWNhc3RSYW5nZVR5cGVBdXRvID0gJ2F1dG8nLFxuXG4gIC8vIFxuICBGb3JlY2FzdFJhbmdlVHlwZU5leHQgPSAnbmV4dCcsXG5cbiAgLy8gXG4gIEZvcmVjYXN0UmFuZ2VUeXBlRW5kT2YgPSAnZW5kLW9mJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEZvcmVjYXN0U3RhdHVzIHtcblxuICAvLyBcbiAgRlNfVkFMSUQgPSAnZnMtdmFsaWQnLFxuXG4gIC8vIFxuICBGU19JTlZBTElEX0RBVEVUSU1FID0gJ2ZzLWludmFsaWQtZGF0ZXRpbWUnLFxuXG4gIC8vIFxuICBGU19JTlZBTElEX1JFU1BPTlNFID0gJ2ZzLWludmFsaWQtcmVzcG9uc2UnLFxuXG4gIC8vIFxuICBGU19ORUVEX01PUkVfREFUQSA9ICdmcy1uZWVkLW1vcmUtZGF0YScsXG5cbiAgLy8gXG4gIEZTX1RJTUVfU0VSSUVTX1RPT19TSE9SVCA9ICdmcy10aW1lLXNlcmllcy10b28tc2hvcnQnLFxuXG4gIC8vIFxuICBGU19USU1FX1NFUklFU19JUlJFR1VMQVIgPSAnZnMtdGltZS1zZXJpZXMtaXJyZWd1bGFyJyxcblxuICAvLyBcbiAgRlNfTlVMTF9EQVRFVElNRSA9ICdmcy1udWxsLWRhdGV0aW1lJyxcblxuICAvLyBcbiAgRlNfTlVMTF9SRVNQT05TRSA9ICdmcy1udWxsLXJlc3BvbnNlJyxcblxuICAvLyBcbiAgRlNfTUVUQURBVEFfSU5WQUxJRCA9ICdmcy1tZXRhZGF0YS1pbnZhbGlkJyxcblxuICAvLyBcbiAgRlNfTk9fUkVTUE9OU0UgPSAnZnMtbm8tcmVzcG9uc2UnLFxuXG4gIC8vIFxuICBGU19FWENFU1NfREFUQSA9ICdmcy1leGNlc3MtZGF0YScsXG5cbiAgLy8gXG4gIEZTX0VYQ0VTU19QQVJUSVRJT05TID0gJ2ZzLWV4Y2Vzcy1wYXJ0aXRpb25zJyxcblxuICAvLyBcbiAgRlNfRElNRU5TSU9OX0lOVkFMSUQgPSAnZnMtZGltZW5zaW9uLWludmFsaWQnLFxuXG4gIC8vIFxuICBGU19UQUJMRUNBTENfSU5WQUxJRCA9ICdmcy10YWJsZWNhbGMtaW52YWxpZCcsXG5cbiAgLy8gXG4gIEZTX1RJTUVfU0VSSUVTX1RPT19JUlJFR1VMQVIgPSAnZnMtdGltZS1zZXJpZXMtdG9vLWlycmVndWxhcicsXG5cbiAgLy8gXG4gIEZTX0FHR1JFR0FURV9GSUxURVIgPSAnZnMtYWdncmVnYXRlLWZpbHRlcicsXG5cbiAgLy8gXG4gIEZTX0RJU0FHR1JFR0FURV9SRVNQT05TRSA9ICdmcy1kaXNhZ2dyZWdhdGUtcmVzcG9uc2UnLFxuXG4gIC8vIFxuICBGU19QRVJDRU5UQUdFX0lOVkFMSUQgPSAnZnMtcGVyY2VudGFnZS1pbnZhbGlkJyxcblxuICAvLyBcbiAgRlNfVE9UQUxfSU5WQUxJRCA9ICdmcy10b3RhbC1pbnZhbGlkJyxcblxuICAvLyBcbiAgRlNfRVhDRVNTX0RBVEVUSU1FID0gJ2ZzLWV4Y2Vzcy1kYXRldGltZScsXG5cbiAgLy8gXG4gIEZTX0RBVEVfQUdHX0lOQ09NUEFUSUJMRSA9ICdmcy1kYXRlLWFnZy1pbmNvbXBhdGlibGUnLFxuXG4gIC8vIFxuICBGU19USU1FX1NFUklFU19OT1RfUE9TSVRJVkUgPSAnZnMtdGltZS1zZXJpZXMtbm90LXBvc2l0aXZlJyxcblxuICAvLyBcbiAgRlNfUkVRVUVTVEVEX01PREVMX0lOVkFMSUQgPSAnZnMtcmVxdWVzdGVkLW1vZGVsLWludmFsaWQnLFxuXG4gIC8vIFxuICBGU19UT09fU0hPUlRfRk9SX1NFQVNPTiA9ICdmcy10b28tc2hvcnQtZm9yLXNlYXNvbicsXG5cbiAgLy8gXG4gIEZTX1JFUVVFU1RFRF9NT0RFTF9VTlNUQUJMRSA9ICdmcy1yZXF1ZXN0ZWQtbW9kZWwtdW5zdGFibGUnLFxuXG4gIC8vIFxuICBGU19VTkRFRklORUQgPSAnZnMtdW5kZWZpbmVkJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFN0eWxlQXR0cmlidXRlIHtcblxuICAvLyBcbiAgc2FBbHRlcm5hdGVUZXh0ID0gJ3NhQWx0ZXJuYXRlVGV4dCcsXG5cbiAgLy8gXG4gIHNhQWx0TWFya0NvbG9yID0gJ3NhQWx0TWFya0NvbG9yJyxcblxuICAvLyBcbiAgc2FBc3BlY3QgPSAnc2FBc3BlY3QnLFxuXG4gIC8vIFxuICBzYUF1dG9TdWJ0aXRsZSA9ICdzYUF1dG9TdWJ0aXRsZScsXG5cbiAgLy8gXG4gIHNhQmFja2dyb3VuZENvbG9yID0gJ3NhQmFja2dyb3VuZENvbG9yJyxcblxuICAvLyBcbiAgc2FCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5ID0gJ3NhQmFja2dyb3VuZFRyYW5zcGFyZW5jeScsXG5cbiAgLy8gXG4gIHNhQmFuZFNpemUgPSAnc2FCYW5kU2l6ZScsXG5cbiAgLy8gXG4gIHNhQmFuZENvbG9yID0gJ3NhQmFuZENvbG9yJyxcblxuICAvLyBcbiAgc2FCYW5kTGV2ZWwgPSAnc2FCYW5kTGV2ZWwnLFxuXG4gIC8vIFxuICBzYUJvZHlUeXBlID0gJ3NhQm9keVR5cGUnLFxuXG4gIC8vIFxuICBzYUJvcmRlckNvbG9yID0gJ3NhQm9yZGVyQ29sb3InLFxuXG4gIC8vIFxuICBzYUJvcmRlckNvbG9yVG9wID0gJ3NhQm9yZGVyQ29sb3JUb3AnLFxuXG4gIC8vIFxuICBzYUJvcmRlckNvbG9yUmlnaHQgPSAnc2FCb3JkZXJDb2xvclJpZ2h0JyxcblxuICAvLyBcbiAgc2FCb3JkZXJDb2xvckJvdHRvbSA9ICdzYUJvcmRlckNvbG9yQm90dG9tJyxcblxuICAvLyBcbiAgc2FCb3JkZXJDb2xvckxlZnQgPSAnc2FCb3JkZXJDb2xvckxlZnQnLFxuXG4gIC8vIFxuICBzYUJvcmRlclN0eWxlID0gJ3NhQm9yZGVyU3R5bGUnLFxuXG4gIC8vIFxuICBzYUJvcmRlclN0eWxlVG9wID0gJ3NhQm9yZGVyU3R5bGVUb3AnLFxuXG4gIC8vIFxuICBzYUJvcmRlclN0eWxlUmlnaHQgPSAnc2FCb3JkZXJTdHlsZVJpZ2h0JyxcblxuICAvLyBcbiAgc2FCb3JkZXJTdHlsZUJvdHRvbSA9ICdzYUJvcmRlclN0eWxlQm90dG9tJyxcblxuICAvLyBcbiAgc2FCb3JkZXJTdHlsZUxlZnQgPSAnc2FCb3JkZXJTdHlsZUxlZnQnLFxuXG4gIC8vIFxuICBzYUJvcmRlcldpZHRoID0gJ3NhQm9yZGVyV2lkdGgnLFxuXG4gIC8vIFxuICBzYUJvcmRlcldpZHRoVG9wID0gJ3NhQm9yZGVyV2lkdGhUb3AnLFxuXG4gIC8vIFxuICBzYUJvcmRlcldpZHRoUmlnaHQgPSAnc2FCb3JkZXJXaWR0aFJpZ2h0JyxcblxuICAvLyBcbiAgc2FCb3JkZXJXaWR0aEJvdHRvbSA9ICdzYUJvcmRlcldpZHRoQm90dG9tJyxcblxuICAvLyBcbiAgc2FCb3JkZXJXaWR0aExlZnQgPSAnc2FCb3JkZXJXaWR0aExlZnQnLFxuXG4gIC8vIFxuICBzYUJveHBsb3RTdHlsZSA9ICdzYUJveHBsb3RTdHlsZScsXG5cbiAgLy8gXG4gIHNhQnJlYWtPblNwZWNpYWwgPSAnc2FCcmVha09uU3BlY2lhbCcsXG5cbiAgLy8gXG4gIHNhQ2VsbCA9ICdzYUNlbGwnLFxuXG4gIC8vIFxuICBzYUNlbGxXID0gJ3NhQ2VsbFcnLFxuXG4gIC8vIFxuICBzYUNlbGxIID0gJ3NhQ2VsbEgnLFxuXG4gIC8vIFxuICBzYUNlbGxRID0gJ3NhQ2VsbFEnLFxuXG4gIC8vIFxuICBzYUNlbGxRTWFyayA9ICdzYUNlbGxRTWFyaycsXG5cbiAgLy8gXG4gIHNhQ29sb3IgPSAnc2FDb2xvcicsXG5cbiAgLy8gXG4gIHNhQ29sb3JNb2RlID0gJ3NhQ29sb3JNb2RlJyxcblxuICAvLyBcbiAgc2FDb2xMZXZlbHMgPSAnc2FDb2xMZXZlbHMnLFxuXG4gIC8vIFxuICBzYUNvbFZlcnRMZXZlbHMgPSAnc2FDb2xWZXJ0TGV2ZWxzJyxcblxuICAvLyBcbiAgc2FDb2xIb3JpekhlaWdodCA9ICdzYUNvbEhvcml6SGVpZ2h0JyxcblxuICAvLyBcbiAgc2FDb2xWZXJ0SGVpZ2h0ID0gJ3NhQ29sVmVydEhlaWdodCcsXG5cbiAgLy8gRGVwcmVjYXRlZFxuICBzYUNvbEhlaWdodCA9ICdzYUNvbEhlaWdodCcsXG5cbiAgLy8gXG4gIHNhQ29sV2lkdGggPSAnc2FDb2xXaWR0aCcsXG5cbiAgLy8gXG4gIHNhQ29udGVudCA9ICdzYUNvbnRlbnQnLFxuXG4gIC8vIFxuICBzYURpc3BsYXlGaWVsZExhYmVscyA9ICdzYURpc3BsYXlGaWVsZExhYmVscycsXG5cbiAgLy8gXG4gIHNhRGlzcGxheUhlYWRlciA9ICdzYURpc3BsYXlIZWFkZXInLFxuXG4gIC8vIFxuICBzYURpc3BsYXlBbHRlcm5hdGVUZXh0ID0gJ3NhRGlzcGxheUFsdGVybmF0ZVRleHQnLFxuXG4gIC8vIFxuICBzYURpdkxldmVsID0gJ3NhRGl2TGV2ZWwnLFxuXG4gIC8vIFxuICBzYUVuYWJsZWQgPSAnc2FFbmFibGVkJyxcblxuICAvLyBcbiAgc2FGaWxsQWJvdmVDb2xvciA9ICdzYUZpbGxBYm92ZUNvbG9yJyxcblxuICAvLyBcbiAgc2FGaWxsQmVsb3dDb2xvciA9ICdzYUZpbGxCZWxvd0NvbG9yJyxcblxuICAvLyBcbiAgc2FGaWxsQ29sb3IgPSAnc2FGaWxsQ29sb3InLFxuXG4gIC8vIFxuICBzYUZvZ0JHQ29sb3IgPSAnc2FGb2dCR0NvbG9yJyxcblxuICAvLyBcbiAgc2FGb2dEZXNhdHVyYXRpb25XaXRob3V0U2VsZWN0aW9uID0gJ3NhRm9nRGVzYXR1cmF0aW9uV2l0aG91dFNlbGVjdGlvbicsXG5cbiAgLy8gXG4gIHNhRm9nRGVzYXR1cmF0aW9uV2l0aFNlbGVjdGlvbiA9ICdzYUZvZ0Rlc2F0dXJhdGlvbldpdGhTZWxlY3Rpb24nLFxuXG4gIC8vIFxuICBzYUZvbnQgPSAnc2FGb250JyxcblxuICAvLyBcbiAgc2FGb250RmFtaWx5ID0gJ3NhRm9udEZhbWlseScsXG5cbiAgLy8gXG4gIHNhRm9udFNpemUgPSAnc2FGb250U2l6ZScsXG5cbiAgLy8gXG4gIHNhRm9udFN0eWxlID0gJ3NhRm9udFN0eWxlJyxcblxuICAvLyBcbiAgc2FGb250V2VpZ2h0ID0gJ3NhRm9udFdlaWdodCcsXG5cbiAgLy8gXG4gIHNhR2VvZ3JhcGhpY0FyZWFUeXBlID0gJ3NhR2VvZ3JhcGhpY0FyZWFUeXBlJyxcblxuICAvLyBcbiAgc2FIQWxpZ24gPSAnc2FIQWxpZ24nLFxuXG4gIC8vIFxuICBzYUhhbG9Db2xvciA9ICdzYUhhbG9Db2xvcicsXG5cbiAgLy8gXG4gIHNhSGFsb0NvbG9yU2VsZWN0ZWQgPSAnc2FIYWxvQ29sb3JTZWxlY3RlZCcsXG5cbiAgLy8gXG4gIHNhSGFzRmlsbCA9ICdzYUhhc0ZpbGwnLFxuXG4gIC8vIFxuICBzYUhhc0hhbG8gPSAnc2FIYXNIYWxvJyxcblxuICAvLyBEZXByZWNhdGVkXG4gIHNhSGFzTGFiZWwgPSAnc2FIYXNMYWJlbCcsXG5cbiAgLy8gXG4gIHNhSGFzU3Ryb2tlID0gJ3NhSGFzU3Ryb2tlJyxcblxuICAvLyBcbiAgc2FIZWlnaHQgPSAnc2FIZWlnaHQnLFxuXG4gIC8vIFxuICBzYUhlaWdodEhlYWRlciA9ICdzYUhlaWdodEhlYWRlcicsXG5cbiAgLy8gXG4gIHNhSGlnaGxpZ2h0TGVnZW5kID0gJ3NhSGlnaGxpZ2h0TGVnZW5kJyxcblxuICAvLyBcbiAgc2FIbmF4aXMgPSAnc2FIbmF4aXMnLFxuXG4gIC8vIFxuICBzYUhubGFiZWwgPSAnc2FIbmxhYmVsJyxcblxuICAvLyBcbiAgc2FJblRvb2x0aXAgPSAnc2FJblRvb2x0aXAnLFxuXG4gIC8vIFxuICBzYUxpbmVFbmQgPSAnc2FMaW5lRW5kJyxcblxuICAvLyBcbiAgc2FMaW5lRW5kU2l6ZSA9ICdzYUxpbmVFbmRTaXplJyxcblxuICAvLyBcbiAgc2FMaW5lSW50ZXJwb2xhdGlvbiA9ICdzYUxpbmVJbnRlcnBvbGF0aW9uJyxcblxuICAvLyBcbiAgc2FMaW5lTWFya2VyUG9zaXRpb24gPSAnc2FMaW5lTWFya2VyUG9zaXRpb24nLFxuXG4gIC8vIFxuICBzYUxpbmVQYXR0ZXJuID0gJ3NhTGluZVBhdHRlcm4nLFxuXG4gIC8vIFxuICBzYUxpbmVQYXR0ZXJuT25seSA9ICdzYUxpbmVQYXR0ZXJuT25seScsXG5cbiAgLy8gXG4gIHNhTGluZVZpc2liaWxpdHkgPSAnc2FMaW5lVmlzaWJpbGl0eScsXG5cbiAgLy8gXG4gIHNhTWFwID0gJ3NhTWFwJyxcblxuICAvLyBcbiAgc2FNYXBTdHlsZSA9ICdzYU1hcFN0eWxlJyxcblxuICAvLyBcbiAgc2FNYXJnaW4gPSAnc2FNYXJnaW4nLFxuXG4gIC8vIFxuICBzYU1hcmdpblRvcCA9ICdzYU1hcmdpblRvcCcsXG5cbiAgLy8gXG4gIHNhTWFyZ2luUmlnaHQgPSAnc2FNYXJnaW5SaWdodCcsXG5cbiAgLy8gXG4gIHNhTWFyZ2luQm90dG9tID0gJ3NhTWFyZ2luQm90dG9tJyxcblxuICAvLyBcbiAgc2FNYXJnaW5MZWZ0ID0gJ3NhTWFyZ2luTGVmdCcsXG5cbiAgLy8gXG4gIHNhTWFya0NvbG9yID0gJ3NhTWFya0NvbG9yJyxcblxuICAvLyBcbiAgc2FNYXJrVHJhbnNwYXJlbmN5ID0gJ3NhTWFya1RyYW5zcGFyZW5jeScsXG5cbiAgLy8gXG4gIHNhTWFya0xhYmVsc1Nob3cgPSAnc2FNYXJrTGFiZWxzU2hvdycsXG5cbiAgLy8gXG4gIHNhUnVubmluZ09yZGVyTGFiZWxzU2hvdyA9ICdzYVJ1bm5pbmdPcmRlckxhYmVsc1Nob3cnLFxuXG4gIC8vIFxuICBzYU1hcmtMYWJlbHNNb2RlID0gJ3NhTWFya0xhYmVsc01vZGUnLFxuXG4gIC8vIFxuICBzYU1hcmtMYWJlbHNDdWxsID0gJ3NhTWFya0xhYmVsc0N1bGwnLFxuXG4gIC8vIFxuICBzYU1hcmtMYWJlbHNMaW5lRW5kRmlyc3QgPSAnc2FNYXJrTGFiZWxzTGluZUVuZEZpcnN0JyxcblxuICAvLyBcbiAgc2FNYXJrTGFiZWxzTGluZUVuZExhc3QgPSAnc2FNYXJrTGFiZWxzTGluZUVuZExhc3QnLFxuXG4gIC8vIFxuICBzYU1hcmtMYWJlbHNSYW5nZU1pbiA9ICdzYU1hcmtMYWJlbHNSYW5nZU1pbicsXG5cbiAgLy8gXG4gIHNhTWFya0xhYmVsc1JhbmdlTWF4ID0gJ3NhTWFya0xhYmVsc1JhbmdlTWF4JyxcblxuICAvLyBcbiAgc2FNYXJrTGFiZWxzUmFuZ2VTY29wZSA9ICdzYU1hcmtMYWJlbHNSYW5nZVNjb3BlJyxcblxuICAvLyBcbiAgc2FNYXJrTGFiZWxzUmFuZ2VGaWVsZCA9ICdzYU1hcmtMYWJlbHNSYW5nZUZpZWxkJyxcblxuICAvLyBcbiAgc2FNYXJrTWFya2Vyc01vZGUgPSAnc2FNYXJrTWFya2Vyc01vZGUnLFxuXG4gIC8vIFxuICBzYU1heEhlaWdodCA9ICdzYU1heEhlaWdodCcsXG5cbiAgLy8gXG4gIHNhTWF4Rm9udFNpemUgPSAnc2FNYXhGb250U2l6ZScsXG5cbiAgLy8gXG4gIHNhTWF4U3Ryb2tlV2lkdGggPSAnc2FNYXhTdHJva2VXaWR0aCcsXG5cbiAgLy8gXG4gIHNhTWF4V2lkdGggPSAnc2FNYXhXaWR0aCcsXG5cbiAgLy8gXG4gIHNhTWlkU3Ryb2tlV2lkdGggPSAnc2FNaWRTdHJva2VXaWR0aCcsXG5cbiAgLy8gXG4gIHNhTWluSGVpZ2h0ID0gJ3NhTWluSGVpZ2h0JyxcblxuICAvLyBcbiAgc2FNaW5Gb250U2l6ZSA9ICdzYU1pbkZvbnRTaXplJyxcblxuICAvLyBcbiAgc2FNaW5MZW5ndGggPSAnc2FNaW5MZW5ndGgnLFxuXG4gIC8vIFxuICBzYU1pbk1hcFNpemUgPSAnc2FNaW5NYXBTaXplJyxcblxuICAvLyBcbiAgc2FNaW5TaXplID0gJ3NhTWluU2l6ZScsXG5cbiAgLy8gXG4gIHNhTWluU3Ryb2tlV2lkdGggPSAnc2FNaW5TdHJva2VXaWR0aCcsXG5cbiAgLy8gXG4gIHNhTWluV2lkdGggPSAnc2FNaW5XaWR0aCcsXG5cbiAgLy8gXG4gIHNhTm9uaGlnaGxpZ2h0Q29sb3IgPSAnc2FOb25oaWdobGlnaHRDb2xvcicsXG5cbiAgLy8gXG4gIHNhT21pdE9uU3BlY2lhbCA9ICdzYU9taXRPblNwZWNpYWwnLFxuXG4gIC8vIFxuICBzYU9wYWNpdHkgPSAnc2FPcGFjaXR5JyxcblxuICAvLyBcbiAgc2FPcmllbnRhdGlvbiA9ICdzYU9yaWVudGF0aW9uJyxcblxuICAvLyBcbiAgc2FQYWRkaW5nID0gJ3NhUGFkZGluZycsXG5cbiAgLy8gXG4gIHNhUGFkZGluZ1RvcCA9ICdzYVBhZGRpbmdUb3AnLFxuXG4gIC8vIFxuICBzYVBhZGRpbmdSaWdodCA9ICdzYVBhZGRpbmdSaWdodCcsXG5cbiAgLy8gXG4gIHNhUGFkZGluZ0JvdHRvbSA9ICdzYVBhZGRpbmdCb3R0b20nLFxuXG4gIC8vIFxuICBzYVBhZGRpbmdMZWZ0ID0gJ3NhUGFkZGluZ0xlZnQnLFxuXG4gIC8vIFxuICBzYVBhbGV0dGUgPSAnc2FQYWxldHRlJyxcblxuICAvLyBcbiAgc2FSZW5kZXJGb2xkUmV2ZXJzZWQgPSAnc2FSZW5kZXJGb2xkUmV2ZXJzZWQnLFxuXG4gIC8vIFxuICBzYVJldmVyc2VQYWxldHRlID0gJ3NhUmV2ZXJzZVBhbGV0dGUnLFxuXG4gIC8vIFxuICBzYVJvdW5kaW5nID0gJ3NhUm91bmRpbmcnLFxuXG4gIC8vIFxuICBzYVJvd0hvcml6TGV2ZWxzID0gJ3NhUm93SG9yaXpMZXZlbHMnLFxuXG4gIC8vIFxuICBzYVJvd0hvcml6V2lkdGggPSAnc2FSb3dIb3JpeldpZHRoJyxcblxuICAvLyBcbiAgc2FSb3dMZXZlbHMgPSAnc2FSb3dMZXZlbHMnLFxuXG4gIC8vIFxuICBzYVJvd1ZlcnRXaWR0aCA9ICdzYVJvd1ZlcnRXaWR0aCcsXG5cbiAgLy8gXG4gIHNhU2VwYXJhdG9yID0gJ3NhU2VwYXJhdG9yJyxcblxuICAvLyBcbiAgc2FTaGFwZSA9ICdzYVNoYXBlJyxcblxuICAvLyBEZXByZWNhdGVkXG4gIHNhU2hvd0xhYmVscyA9ICdzYVNob3dMYWJlbHMnLFxuXG4gIC8vIFxuICBzYVNpemUgPSAnc2FTaXplJyxcblxuICAvLyBcbiAgc2FTaXplQmFyID0gJ3NhU2l6ZUJhcicsXG5cbiAgLy8gXG4gIHNhU21hcnRBdXRvQWxpZ25tZW50ID0gJ3NhU21hcnRBdXRvQWxpZ25tZW50JyxcblxuICAvLyBcbiAgc2FTcGFjZSA9ICdzYVNwYWNlJyxcblxuICAvLyBcbiAgc2FTdHJva2VDb2xvciA9ICdzYVN0cm9rZUNvbG9yJyxcblxuICAvLyBcbiAgc2FTdHJva2VTaXplID0gJ3NhU3Ryb2tlU2l6ZScsXG5cbiAgLy8gXG4gIHNhU3VidGl0bGUgPSAnc2FTdWJ0aXRsZScsXG5cbiAgLy8gXG4gIHNhVGV4dEFsaWduID0gJ3NhVGV4dEFsaWduJyxcblxuICAvLyBcbiAgc2FUZXh0QWxpZ25EZWZhdWx0ID0gJ3NhVGV4dEFsaWduRGVmYXVsdCcsXG5cbiAgLy8gXG4gIHNhVGV4dERlY29yYXRpb24gPSAnc2FUZXh0RGVjb3JhdGlvbicsXG5cbiAgLy8gXG4gIHNhVGV4dEluZGVudCA9ICdzYVRleHRJbmRlbnQnLFxuXG4gIC8vIFxuICBzYVRleHRPcmllbnRhdGlvbiA9ICdzYVRleHRPcmllbnRhdGlvbicsXG5cbiAgLy8gXG4gIHNhVGV4dEZvcm1hdCA9ICdzYVRleHRGb3JtYXQnLFxuXG4gIC8vIFxuICBzYVRpY2tDb2xvciA9ICdzYVRpY2tDb2xvcicsXG5cbiAgLy8gXG4gIHNhVGlja0xlbmd0aCA9ICdzYVRpY2tMZW5ndGgnLFxuXG4gIC8vIERlcHJlY2F0ZWRcbiAgc2FUaWNrU3BhY2luZyA9ICdzYVRpY2tTcGFjaW5nJyxcblxuICAvLyBcbiAgc2FUaXRsZSA9ICdzYVRpdGxlJyxcblxuICAvLyBcbiAgc2FUb3RhbExhYmVsID0gJ3NhVG90YWxMYWJlbCcsXG5cbiAgLy8gXG4gIHNhVkFsaWduID0gJ3NhVkFsaWduJyxcblxuICAvLyBcbiAgc2FWZXJ0aWNhbEFsaWduID0gJ3NhVmVydGljYWxBbGlnbicsXG5cbiAgLy8gXG4gIHNhVmVydGljYWxBbGlnbkRlZmF1bHQgPSAnc2FWZXJ0aWNhbEFsaWduRGVmYXVsdCcsXG5cbiAgLy8gXG4gIHNhVm5heGlzID0gJ3NhVm5heGlzJyxcblxuICAvLyBcbiAgc2FWbmxhYmVsID0gJ3NhVm5sYWJlbCcsXG5cbiAgLy8gXG4gIHNhV2Fybk9uU3BlY2lhbCA9ICdzYVdhcm5PblNwZWNpYWwnLFxuXG4gIC8vIFxuICBzYVdhc2hvdXQgPSAnc2FXYXNob3V0JyxcblxuICAvLyBcbiAgc2FXaGlza2VyRW5kID0gJ3NhV2hpc2tlckVuZCcsXG5cbiAgLy8gXG4gIHNhV2hpc2tlclN0cm9rZUNvbG9yID0gJ3NhV2hpc2tlclN0cm9rZUNvbG9yJyxcblxuICAvLyBcbiAgc2FXaGlza2VyU3Ryb2tlU2l6ZSA9ICdzYVdoaXNrZXJTdHJva2VTaXplJyxcblxuICAvLyBcbiAgc2FXaWR0aCA9ICdzYVdpZHRoJyxcblxuICAvLyBcbiAgc2FXaWR0aEhlYWRlciA9ICdzYVdpZHRoSGVhZGVyJyxcblxuICAvLyBcbiAgc2FXcmFwID0gJ3NhV3JhcCcsXG5cbiAgLy8gXG4gIHNhWm9vbSA9ICdzYVpvb20nLFxuXG4gIC8vIFNwZWNpYWwgYXR0cmlidXRlcyB1c2VkIGZvciBtYXRjaGluZ1xuICBzYU5vbmUgPSAnc2FOb25lJyxcblxuICAvLyBTcGVjaWFsIGF0dHJpYnV0ZXMgdXNlZCBmb3IgbWF0Y2hpbmdcbiAgc2FBbnkgPSAnc2FBbnknXG59XG5cbi8vIGxvd2VzdCBiaXQgb2YgZW51bSB2YWx1ZSBkZW5vdGVzIHR3by10b25lIHN0eWxlczsgbmV3bHkgYWRkZWQgc3R5bGVzIHNob3VsZCBmb2xsb3cgdGhpcyBwYXR0ZXJuLlxuZXhwb3J0IGVudW0gQm94cGxvdFN0eWxlIHtcblxuICAvLyBtYXNrIGZvciBjaGVja2luZyBpZiBhIHN0eWxlIGlzIHR3by10b25lXG4gIEJveHBsb3RTdHlsZVR3b1RvbmUgPSAndHdvLXRvbmUnLFxuXG4gIC8vIFxuICBCb3hwbG90U3R5bGVNb2Rlcm4gPSAnbW9kZXJuJyxcblxuICAvLyBcbiAgQm94cGxvdFN0eWxlR2xhc3MgPSAnZ2xhc3MnLFxuXG4gIC8vIFxuICBCb3hwbG90U3R5bGVDbGFzc2ljID0gJ2NsYXNzaWMnLFxuXG4gIC8vIFxuICBCb3hwbG90U3R5bGVDbGFzc2ljVHdvVG9uZSA9ICdjbGFzc2ljLXR3by10b25lJ1xufVxuXG4vLyB1c2VkIGZvciBib3hwbG90cyBhbmQgcHJlZGljdGlvbiBiYW5kIHdoaXNrZXJzXG5leHBvcnQgZW51bSBXaGlza2VyRW5kIHtcblxuICAvLyBcbiAgV2hpc2tlckVuZE5vbmUgPSAnbm9uZScsXG5cbiAgLy8gXG4gIFdoaXNrZXJFbmRTbWFsbCA9ICdzbWFsbCcsXG5cbiAgLy8gXG4gIFdoaXNrZXJFbmRMYXJnZSA9ICdsYXJnZSdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBTdHlsZUVsZW1lbnQge1xuXG4gIC8vIFxuICBlbGVtZW50QXhpcyA9ICdlbGVtZW50QXhpcycsXG5cbiAgLy8gXG4gIGVsZW1lbnRDZWxsID0gJ2VsZW1lbnRDZWxsJyxcblxuICAvLyBcbiAgZWxlbWVudERhdGFsYWJlbCA9ICdlbGVtZW50RGF0YWxhYmVsJyxcblxuICAvLyBcbiAgZWxlbWVudERyb3BzcG90ID0gJ2VsZW1lbnREcm9wc3BvdCcsXG5cbiAgLy8gXG4gIGVsZW1lbnRIZWFkZXIgPSAnZWxlbWVudEhlYWRlcicsXG5cbiAgLy8gXG4gIGVsZW1lbnRGaWVsZExhYmVsID0gJ2VsZW1lbnRGaWVsZExhYmVsJyxcblxuICAvLyBcbiAgZWxlbWVudEZpZWxkTGFiZWxEZWNvcmF0aW9uID0gJ2VsZW1lbnRGaWVsZExhYmVsRGVjb3JhdGlvbicsXG5cbiAgLy8gXG4gIGVsZW1lbnRGaWVsZExhYmVsU3Bhbm5lciA9ICdlbGVtZW50RmllbGRMYWJlbFNwYW5uZXInLFxuXG4gIC8vIFxuICBlbGVtZW50TGFiZWwgPSAnZWxlbWVudExhYmVsJyxcblxuICAvLyBcbiAgZWxlbWVudE1hcmsgPSAnZWxlbWVudE1hcmsnLFxuXG4gIC8vIFxuICBlbGVtZW50UGFuZSA9ICdlbGVtZW50UGFuZScsXG5cbiAgLy8gXG4gIGVsZW1lbnRUYWJsZSA9ICdlbGVtZW50VGFibGUnLFxuXG4gIC8vIFxuICBlbGVtZW50V29ya3NoZWV0ID0gJ2VsZW1lbnRXb3Jrc2hlZXQnLFxuXG4gIC8vIFxuICBlbGVtZW50QmFzZXNoZWV0ID0gJ2VsZW1lbnRCYXNlc2hlZXQnLFxuXG4gIC8vIFxuICBlbGVtZW50RGFzaGJvYXJkID0gJ2VsZW1lbnREYXNoYm9hcmQnLFxuXG4gIC8vIFxuICBlbGVtZW50U3Rvcnlib2FyZCA9ICdlbGVtZW50U3Rvcnlib2FyZCcsXG5cbiAgLy8gXG4gIGVsZW1lbnRDYXB0aW9uID0gJ2VsZW1lbnRDYXB0aW9uJyxcblxuICAvLyBcbiAgZWxlbWVudERyb3BsaW5lID0gJ2VsZW1lbnREcm9wbGluZScsXG5cbiAgLy8gXG4gIGVsZW1lbnRSZWZsaW5lID0gJ2VsZW1lbnRSZWZsaW5lJyxcblxuICAvLyBcbiAgZWxlbWVudFJlZkJhbmQgPSAnZWxlbWVudFJlZkJhbmQnLFxuXG4gIC8vIFxuICBlbGVtZW50UmVmQm94cGxvdCA9ICdlbGVtZW50UmVmQm94cGxvdCcsXG5cbiAgLy8gXG4gIGVsZW1lbnRHcmlkbGluZSA9ICdlbGVtZW50R3JpZGxpbmUnLFxuXG4gIC8vIFxuICBlbGVtZW50WmVyb2xpbmUgPSAnZWxlbWVudFplcm9saW5lJyxcblxuICAvLyBcbiAgZWxlbWVudFRyZW5kbGluZSA9ICdlbGVtZW50VHJlbmRsaW5lJyxcblxuICAvLyBcbiAgZWxlbWVudFRhYmxlRGl2ID0gJ2VsZW1lbnRUYWJsZURpdicsXG5cbiAgLy8gXG4gIGVsZW1lbnRIZWFkZXJEaXYgPSAnZWxlbWVudEhlYWRlckRpdicsXG5cbiAgLy8gXG4gIGVsZW1lbnRNYXBwZWRJbWFnZSA9ICdlbGVtZW50TWFwcGVkSW1hZ2UnLFxuXG4gIC8vIFxuICBlbGVtZW50QWN0aW9uID0gJ2VsZW1lbnRBY3Rpb24nLFxuXG4gIC8vIFxuICBlbGVtZW50VGl0bGUgPSAnZWxlbWVudFRpdGxlJyxcblxuICAvLyBcbiAgZWxlbWVudExlZ2VuZCA9ICdlbGVtZW50TGVnZW5kJyxcblxuICAvLyBcbiAgZWxlbWVudExlZ2VuZFRpdGxlID0gJ2VsZW1lbnRMZWdlbmRUaXRsZScsXG5cbiAgLy8gXG4gIGVsZW1lbnRMZWdlbmRUaXRsZVRleHQgPSAnZWxlbWVudExlZ2VuZFRpdGxlVGV4dCcsXG5cbiAgLy8gXG4gIGVsZW1lbnRBeGlzVGl0bGUgPSAnZWxlbWVudEF4aXNUaXRsZScsXG5cbiAgLy8gXG4gIGVsZW1lbnRBbm5vdGF0aW9uID0gJ2VsZW1lbnRBbm5vdGF0aW9uJyxcblxuICAvLyBcbiAgZWxlbWVudERhc2hUaXRsZSA9ICdlbGVtZW50RGFzaFRpdGxlJyxcblxuICAvLyBcbiAgZWxlbWVudERhc2hTdWJ0aXRsZSA9ICdlbGVtZW50RGFzaFN1YnRpdGxlJyxcblxuICAvLyBcbiAgZWxlbWVudERhc2hUZXh0ID0gJ2VsZW1lbnREYXNoVGV4dCcsXG5cbiAgLy8gXG4gIGVsZW1lbnREYXNoWm9uZSA9ICdlbGVtZW50RGFzaFpvbmUnLFxuXG4gIC8vIFxuICBlbGVtZW50RGFzaENvbnRhaW5lciA9ICdlbGVtZW50RGFzaENvbnRhaW5lcicsXG5cbiAgLy8gXG4gIGVsZW1lbnRTY3JvbGxiYXIgPSAnZWxlbWVudFNjcm9sbGJhcicsXG5cbiAgLy8gU3RhdGljIG9uL29mZiBtYXAgbGF5ZXJzXG4gIGVsZW1lbnRNYXBMYXllciA9ICdlbGVtZW50TWFwTGF5ZXInLFxuXG4gIC8vIENvbnRhaW5zIHdhc2hvdXRcbiAgZWxlbWVudE1hcCA9ICdlbGVtZW50TWFwJyxcblxuICAvLyBJbml0aWFsbHkgZm9yIFVyYmFuTWFwcGluZy9DbGFyaXRhcyBkYXRhXG4gIGVsZW1lbnRNYXBEYXRhTGF5ZXIgPSAnZWxlbWVudE1hcERhdGFMYXllcicsXG5cbiAgLy8gXG4gIGVsZW1lbnRRdWlja0ZpbHRlciA9ICdlbGVtZW50UXVpY2tGaWx0ZXInLFxuXG4gIC8vIFxuICBlbGVtZW50UXVpY2tGaWx0ZXJUaXRsZSA9ICdlbGVtZW50UXVpY2tGaWx0ZXJUaXRsZScsXG5cbiAgLy8gXG4gIGVsZW1lbnRQYXJhbWV0ZXJDdHJsID0gJ2VsZW1lbnRQYXJhbWV0ZXJDdHJsJyxcblxuICAvLyBcbiAgZWxlbWVudFBhcmFtZXRlckN0cmxUaXRsZSA9ICdlbGVtZW50UGFyYW1ldGVyQ3RybFRpdGxlJyxcblxuICAvLyBcbiAgZWxlbWVudFBhZ2VDYXJkVGl0bGUgPSAnZWxlbWVudFBhZ2VDYXJkVGl0bGUnLFxuXG4gIC8vIFxuICBlbGVtZW50U3RvcnlEZXNjcmlwdGlvbiA9ICdlbGVtZW50U3RvcnlEZXNjcmlwdGlvbicsXG5cbiAgLy8gXG4gIGVsZW1lbnRTdG9yeVBvaW50Q2FwdGlvbiA9ICdlbGVtZW50U3RvcnlQb2ludENhcHRpb24nLFxuXG4gIC8vIFxuICBlbGVtZW50U3RvcnlUaXRsZSA9ICdlbGVtZW50U3RvcnlUaXRsZScsXG5cbiAgLy8gXG4gIGVsZW1lbnRUb29sdGlwID0gJ2VsZW1lbnRUb29sdGlwJyxcblxuICAvLyBcbiAgZWxlbWVudEFsbCA9ICdlbGVtZW50QWxsJyxcblxuICAvLyBcbiAgZWxlbWVudFBhZ2VDYXJkQm9keSA9ICdlbGVtZW50UGFnZUNhcmRCb2R5JyxcblxuICAvLyBcbiAgZWxlbWVudERhdGFIaWdobGlnaHRlciA9ICdlbGVtZW50RGF0YUhpZ2hsaWdodGVyJyxcblxuICAvLyBcbiAgZWxlbWVudERhdGFIaWdobGlnaHRlclRpdGxlID0gJ2VsZW1lbnREYXRhSGlnaGxpZ2h0ZXJUaXRsZScsXG5cbiAgLy8gU3BlY2lhbCBlbGVtZW50cyB1c2VkIGZvciBtYXRjaGluZyBhbmQgb3JnYW5pemF0aW9uXG4gIGVsZW1lbnROb25lID0gJ2VsZW1lbnROb25lJyxcblxuICAvLyBTcGVjaWFsIGVsZW1lbnRzIHVzZWQgZm9yIG1hdGNoaW5nIGFuZCBvcmdhbml6YXRpb25cbiAgZWxlbWVudEFueSA9ICdlbGVtZW50QW55JyxcblxuICAvLyBTcGVjaWFsIGVsZW1lbnRzIHVzZWQgZm9yIG1hdGNoaW5nIGFuZCBvcmdhbml6YXRpb25cbiAgZWxlbWVudFJvb3QgPSAnZWxlbWVudFJvb3QnXG59XG5cbi8vIERvIG5vdCBtZXNzIHdpdGggdGhlc2UgdmFsdWVzLiBUaGV5IGFyZSBzb21ldGltZXMgdXNlZCBhcyBhcnJheSBpbmRleGVzL2JvdW5kc1xuZXhwb3J0IGVudW0gU3R5bGVEYXRhQ2xhc3Mge1xuXG4gIC8vIFxuICBkY05vcm1hbCA9ICdkY05vcm1hbCcsXG5cbiAgLy8gXG4gIGRjVG90YWwgPSAnZGNUb3RhbCcsXG5cbiAgLy8gXG4gIGRjU3VidG90YWwgPSAnZGNTdWJ0b3RhbCcsXG5cbiAgLy8gXG4gIGRjQ09VTlQgPSAnZGNDT1VOVCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBTdHlsZUZpZWxkU2NvcGUge1xuXG4gIC8vIFxuICBmc05vbmUgPSAnZnNOb25lJyxcblxuICAvLyBcbiAgZnNSb3dzID0gJ2ZzUm93cycsXG5cbiAgLy8gXG4gIGZzQ29scyA9ICdmc0NvbHMnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gU3R5bGVTd2F0Y2gge1xuXG4gIC8vIFxuICBzc1Vuc3BlY2lmaWVkID0gJ3NzVW5zcGVjaWZpZWQnLFxuXG4gIC8vIFxuICBzc0xpZ2h0ID0gJ3NzTGlnaHQnLFxuXG4gIC8vIFxuICBzc0RhcmsgPSAnc3NEYXJrJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFRhYmxlYXVGb250U3R5bGUge1xuXG4gIC8vIFxuICBOb3JtYWxTdHlsZSA9ICdmb250LXN0eWxlLW5vcm1hbCcsXG5cbiAgLy8gXG4gIEl0YWxpYyA9ICdmb250LXN0eWxlLWl0YWxpYydcbn1cblxuLy8gVW5zdXBwb3J0ZWQgZm9yIEJldHN5XG5leHBvcnQgZW51bSBUZXh0RGVjb3JhdGlvbiB7XG5cbiAgLy8gXG4gIE5vRGVjb3JhdGlvbiA9ICd0ZXh0LWRlY29yYXRpb24tbm9uZScsXG5cbiAgLy8gXG4gIFVuZGVybGluZSA9ICd0ZXh0LWRlY29yYXRpb24tdW5kZXJsaW5lJyxcblxuICAvLyBub3QgeWV0IHN1cHBvcnRlZFxuICBPdmVybGluZSA9ICd0ZXh0LWRlY29yYXRpb24tb3ZlcmxpbmUnLFxuXG4gIC8vIFxuICBTdHJpa2V0aHJvdWdoID0gJ3RleHQtZGVjb3JhdGlvbi1zdHJpa2V0aHJvdWdoJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEZvbnRXZWlnaHQge1xuXG4gIC8vIFxuICBOb3JtYWxXZWlnaHQgPSAnZm9udC13ZWlnaHQtbm9ybWFsJyxcblxuICAvLyBcbiAgQm9sZCA9ICdmb250LXdlaWdodC1ib2xkJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFRleHRPcmllbnQge1xuXG4gIC8vIFxuICBUT19BdXRvID0gJ3RleHQtb3JpZW50LWF1dG8nLFxuXG4gIC8vIFxuICBUT19Ib3J6ID0gJ3RleHQtb3JpZW50LWhvcml6b250YWwnLFxuXG4gIC8vIFxuICBUT19WZXJ0VXAgPSAndGV4dC1vcmllbnQtdmVydGljYWwtdXAnLFxuXG4gIC8vIFxuICBUT19WZXJ0RG93biA9ICd0ZXh0LW9yaWVudC12ZXJ0aWNhbC1kb3duJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFRleHRBbGlnbiB7XG5cbiAgLy8gXG4gIFRBX1N0YXJ0ID0gJ3RleHQtYWxpZ24tc3RhcnQnLFxuXG4gIC8vIFxuICBUQV9DZW50ZXIgPSAndGV4dC1hbGlnbi1jZW50ZXInLFxuXG4gIC8vIFxuICBUQV9FbmQgPSAndGV4dC1hbGlnbi1lbmQnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gVGV4dFdyYXBNb2RlIHtcblxuICAvLyBcbiAgVGV4dFdyYXBPZmYgPSAndGV4dC13cmFwLW9mZicsXG5cbiAgLy8gXG4gIFRleHRXcmFwVHJ1bmNhdGUgPSAndGV4dC13cmFwLXRydW5jYXRlJyxcblxuICAvLyBcbiAgVGV4dFdyYXBPbiA9ICd0ZXh0LXdyYXAtb24nLFxuXG4gIC8vIFxuICBUZXh0V3JhcEF1dG8gPSAndGV4dC13cmFwLWF1dG8nXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gVGV4dFdob2xlTGluZU1vZGUge1xuXG4gIC8vIFxuICBUZXh0V2hvbGVMaW5lT2ZmID0gJ3RleHQtd2hvbGUtbGluZS1vZmYnLFxuXG4gIC8vIFxuICBUZXh0V2hvbGVMaW5lT24gPSAndGV4dC13aG9sZS1saW5lLW9uJyxcblxuICAvLyBcbiAgVGV4dFdob2xlTGluZUF1dG8gPSAndGV4dC13aG9sZS1saW5lLWF1dG8nXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gVGV4dEJyZWFrTW9kZSB7XG5cbiAgLy8gXG4gIFRleHRCcmVha1doaXRlc3BhY2VPbmx5ID0gJ3RleHQtYnJlYWstd3Mtb25seScsXG5cbiAgLy8gXG4gIFRleHRCcmVha0F1dG8gPSAndGV4dC1icmVhay1hdXRvJ1xufVxuXG4vLyB0eXBlIG9mIGFnZ3JlZ2F0aW9uXG5leHBvcnQgZW51bSBBZ2dUeXBlIHtcblxuICAvLyBcbiAgQUdHX1NVTSA9ICdzdW0nLFxuXG4gIC8vIFxuICBBR0dfQVZHID0gJ2F2ZXJhZ2UnLFxuXG4gIC8vIFxuICBBR0dfTUlOID0gJ21pbicsXG5cbiAgLy8gXG4gIEFHR19NQVggPSAnbWF4JyxcblxuICAvLyBcbiAgQUdHX1NUREVWID0gJ3N0ZC1kZXYnLFxuXG4gIC8vIFxuICBBR0dfU1RERVZQID0gJ3N0ZC1kZXYtcCcsXG5cbiAgLy8gXG4gIEFHR19WQVIgPSAndmFyJyxcblxuICAvLyBcbiAgQUdHX1ZBUlAgPSAndmFyLXAnLFxuXG4gIC8vIFxuICBBR0dfQ09VTlQgPSAnY291bnQnLFxuXG4gIC8vIFxuICBBR0dfQ09VTlREID0gJ2NvdW50LWQnLFxuXG4gIC8vIFxuICBBR0dfTUVESUFOID0gJ21lZGlhbicsXG5cbiAgLy8gXG4gIEFHR19BVFRSID0gJ2F0dHInLFxuXG4gIC8vIFxuICBBR0dfTk9ORSA9ICdub25lJyxcblxuICAvLyBcbiAgQUdHX1BFUkNFTlRJTEUgPSAncGVyY2VudGlsZScsXG5cbiAgLy8gXG4gIEFHR19ZRUFSID0gJ3llYXInLFxuXG4gIC8vIFxuICBBR0dfUVRSID0gJ3F0cicsXG5cbiAgLy8gXG4gIEFHR19NT05USCA9ICdtb250aCcsXG5cbiAgLy8gXG4gIEFHR19EQVkgPSAnZGF5JyxcblxuICAvLyBcbiAgQUdHX0hPVVIgPSAnaG91cicsXG5cbiAgLy8gXG4gIEFHR19NSU5VVEUgPSAnbWludXRlJyxcblxuICAvLyBcbiAgQUdHX1NFQ09ORCA9ICdzZWNvbmQnLFxuXG4gIC8vIFxuICBBR0dfV0VFSyA9ICd3ZWVrJyxcblxuICAvLyBcbiAgQUdHX1dFRUtEQVkgPSAnd2Vla2RheScsXG5cbiAgLy8gXG4gIEFHR19NT05USFlFQVIgPSAnbW9udGgteWVhcicsXG5cbiAgLy8gXG4gIEFHR19NRFkgPSAnbWR5JyxcblxuICAvLyBcbiAgQUdHX0VORCA9ICdlbmQnLFxuXG4gIC8vIFxuICBUUlVOQ19ZRUFSID0gJ3RydW5jLXllYXInLFxuXG4gIC8vIFxuICBUUlVOQ19RVFIgPSAndHJ1bmMtcXRyJyxcblxuICAvLyBcbiAgVFJVTkNfTU9OVEggPSAndHJ1bmMtbW9udGgnLFxuXG4gIC8vIFxuICBUUlVOQ19XRUVLID0gJ3RydW5jLXdlZWsnLFxuXG4gIC8vIFxuICBUUlVOQ19EQVkgPSAndHJ1bmMtZGF5JyxcblxuICAvLyBcbiAgVFJVTkNfSE9VUiA9ICd0cnVuYy1ob3VyJyxcblxuICAvLyBcbiAgVFJVTkNfTUlOVVRFID0gJ3RydW5jLW1pbnV0ZScsXG5cbiAgLy8gXG4gIFRSVU5DX1NFQ09ORCA9ICd0cnVuYy1zZWNvbmQnLFxuXG4gIC8vIFxuICBBR0dfUVVBUlQxID0gJ3F1YXJ0MScsXG5cbiAgLy8gXG4gIEFHR19RVUFSVDMgPSAncXVhcnQzJyxcblxuICAvLyBcbiAgQUdHX1NLRVdORVNTID0gJ3NrZXduZXNzJyxcblxuICAvLyBcbiAgQUdHX0tVUlRPU0lTID0gJ2t1cnRvc2lzJyxcblxuICAvLyBcbiAgQUdHX0lOT1VUID0gJ2luLW91dCcsXG5cbiAgLy8gXG4gIEFHR19TVU1fWFNRUiA9ICdzdW0teHNxcicsXG5cbiAgLy8gXG4gIEFHR19VU0VSID0gJ3VzZXInLFxuXG4gIC8vIFxuICBBR0dfQ09MTEVDVCA9ICdjb2xsZWN0JyxcblxuICAvLyBcbiAgQUdHX0NPVkFSID0gJ2NvdmFyJyxcblxuICAvLyBcbiAgQUdHX0NPVkFSUCA9ICdjb3ZhcnAnLFxuXG4gIC8vIFxuICBBR0dfQ09SUiA9ICdjb3JyJ1xufVxuXG4vLyBEYXRhVmFsdWVGb3JtYXR0ZXI6OkRhdGFUeXBlRW5jb2RpbmdzIGhhcyBoYXJkY29kZWQgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gZm9sbG93aW5nIGVudW0gbWVtYmVycy4gU28gYW55IGNoYW5nZXMgaGVyZSBzaG91bGQgYmUgZG9uZSB0aGVyZSB0b29cbmV4cG9ydCBlbnVtIERhdGFUeXBlIHtcblxuICAvLyBcbiAgRFRfSU5URUdFUiA9ICdpbnRlZ2VyJyxcblxuICAvLyBcbiAgRFRfUkVBTCA9ICdyZWFsJyxcblxuICAvLyBcbiAgRFRfU1RSSU5HID0gJ2NzdHJpbmcnLFxuXG4gIC8vIFxuICBEVF9EQVRFVElNRSA9ICdkYXRldGltZScsXG5cbiAgLy8gXG4gIERUX0JPT0xFQU4gPSAnYm9vbGVhbicsXG5cbiAgLy8gXG4gIERUX0RBVEUgPSAnZGF0ZScsXG5cbiAgLy8gXG4gIERUX1RVUExFID0gJ3R1cGxlJyxcblxuICAvLyBcbiAgRFRfU1BBVElBTCA9ICdzcGF0aWFsJyxcblxuICAvLyBcbiAgRFRfVU5LTk9XTiA9ICd1bmtub3duJyxcblxuICAvLyBcbiAgRFRfQklOQVJZID0gJ2JpbmFyeScsXG5cbiAgLy8gXG4gIERUX1RJTUUgPSAndGltZSdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBTb3J0RGlyZWN0aW9uIHtcblxuICAvLyBhc2NlbmRpbmdcbiAgU1RfQVNDID0gJ2FzYycsXG5cbiAgLy8gZGVzY2VuZGluZ1xuICBTVF9ERVNDID0gJ2Rlc2MnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gU29ydFR5cGUge1xuXG4gIC8vIFVzZSB0aGUgZGVmaW5lZCBvcmRlcmluZ1xuICBTVF9OQVRVUkFMID0gJ2RhdGEtc291cmNlLW9yZGVyJyxcblxuICAvLyBBbHBoYWJldGljL251bWVyaWMgb3JkZXJpbmcgb2YgZGF0YVxuICBTVF9BTFBIQUJFVElDID0gJ2FscGhhJyxcblxuICAvLyBTcGVjaWZ5IGEgc2Vjb25kYXJ5IGZpZWxkXG4gIFNUX0NPTVBVVEVEID0gJ2ZpZWxkJyxcblxuICAvLyBNYW51YWxseSBkZWZpbmVkIG9yZGVyaW5nXG4gIFNUX01BTlVBTCA9ICdtYW51YWwnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gU29ydEVuZCB7XG5cbiAgLy8gXG4gIFNUX1RPUCA9ICd0b3AnLFxuXG4gIC8vIFxuICBTVF9CT1RUT00gPSAnYm90dG9tJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEZvcmVjYXN0Q29sdW1uVHlwZSB7XG5cbiAgLy8gXG4gIEZPUkVDQVNUX05PTkUgPSAnbm9uZScsXG5cbiAgLy8gXG4gIEZPUkVDQVNUX1ZBTFVFID0gJ3ZhbHVlJyxcblxuICAvLyBcbiAgRk9SRUNBU1RfSU5ESUNBVE9SID0gJ2luZGljYXRvcicsXG5cbiAgLy8gXG4gIEZPUkVDQVNUX1BSRUNJU0lPTiA9ICdwcmVjaXNpb24nLFxuXG4gIC8vIFxuICBGT1JFQ0FTVF9RVUFMSVRZID0gJ3F1YWxpdHknLFxuXG4gIC8vIFxuICBGT1JFQ0FTVF9GSVRfVFJFTkQgPSAnZml0X3RyZW5kJyxcblxuICAvLyBcbiAgRk9SRUNBU1RfUFJFQ0lTSU9OX1BFUkNFTlQgPSAncHJlY2lzaW9uX3BlcmNlbnQnLFxuXG4gIC8vIFxuICBGT1JFQ0FTVF9QUkVESUNUSU9OX0lOVEVSVkFMX1VQUEVSID0gJ3ByZWRpY3Rpb25fdXBwZXInLFxuXG4gIC8vIFxuICBGT1JFQ0FTVF9QUkVESUNUSU9OX0lOVEVSVkFMX0xPV0VSID0gJ3ByZWRpY3Rpb25fbG93ZXInXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gTWFya01hcmtlcnNNb2RlIHtcblxuICAvLyBcbiAgTU1NX0F1dG8gPSAnbW1tLWF1dG8nLFxuXG4gIC8vIFxuICBNTU1fQWxsID0gJ21tbV9hbGwnLFxuXG4gIC8vIFxuICBNTU1fTm9uZSA9ICdtbW1fbm9uZScsXG5cbiAgLy8gXG4gIE1NTV9EZWZhdWx0ID0gJ21tbV9kZWZhdWx0J1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFBlcmNlbnRNb2RlIHtcblxuICAvLyBcbiAgUEVSQ0VOVF9DRUxMX0lOX1BBTkUgPSAnY2VsbC1pbi1wYW5lJyxcblxuICAvLyBcbiAgUEVSQ0VOVF9ST1dfSU5fUEFORSA9ICdyb3ctaW4tcGFuZScsXG5cbiAgLy8gXG4gIFBFUkNFTlRfQ09MVU1OX0lOX1BBTkUgPSAnY29sdW1uLWluLXBhbmUnLFxuXG4gIC8vIFxuICBQRVJDRU5UX1BBTkUgPSAncGFuZScsXG5cbiAgLy8gXG4gIFBFUkNFTlRfUk9XID0gJ3JvdycsXG5cbiAgLy8gXG4gIFBFUkNFTlRfQ09MVU1OID0gJ2NvbHVtbicsXG5cbiAgLy8gXG4gIFBFUkNFTlRfVEFCTEUgPSAndGFibGUnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gU3BlY2lhbFZhbHVlc01vZGUge1xuXG4gIC8vIFxuICBTUEVDSUFMX1ZBTFVFU19ISURFX0FORF9XQVJOID0gJ2hpZGUtYW5kLXdhcm4nLFxuXG4gIC8vIFxuICBTUEVDSUFMX1ZBTFVFU19ISURFID0gJ2hpZGUnLFxuXG4gIC8vIFxuICBTUEVDSUFMX1ZBTFVFU19ISURFX0JSRUFLX0xJTkVTID0gJ2hpZGUtYnJlYWstbGluZXMnLFxuXG4gIC8vIFxuICBTUEVDSUFMX1ZBTFVFU19TSE9XID0gJ3Nob3cnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gTGF5b3V0VHlwZSB7XG5cbiAgLy8gXG4gIExBWU9VVF9DQVJURVNJQU4gPSAnY2FydGVzaWFuJyxcblxuICAvLyBcbiAgTEFZT1VUX0RFRkFVTFQgPSAnZGVmYXVsdCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBTaGVsZlR5cGUge1xuXG4gIC8vIFxuICBTVF9OT05FID0gJ25vbmUtc2hlbGYnLFxuXG4gIC8vIFxuICBTVF9DT0xVTU5TX1NIRUxGID0gJ2NvbHVtbnMtc2hlbGYnLFxuXG4gIC8vIFxuICBTVF9ST1dTX1NIRUxGID0gJ3Jvd3Mtc2hlbGYnLFxuXG4gIC8vIFxuICBTVF9QQUdFU19TSEVMRiA9ICdwYWdlcy1zaGVsZicsXG5cbiAgLy8gXG4gIFNUX0ZJTFRFUl9TSEVMRiA9ICdmaWx0ZXItc2hlbGYnLFxuXG4gIC8vIFxuICBTVF9JTUFHRV9TSEVMRiA9ICdpbWFnZS1zaGVsZicsXG5cbiAgLy8gXG4gIFNUX01FQVNVUkVTX1NIRUxGID0gJ21lYXN1cmVzLXNoZWxmJyxcblxuICAvLyBcbiAgU1RfU0hPV01FX1NIRUxGID0gJ3Nob3ctbWUtc2hlbGYnLFxuXG4gIC8vIFxuICBTVF9FTkNPRElOR19TSEVMRiA9ICdlbmNvZGluZy1zaGVsZicsXG5cbiAgLy8gXG4gIFNUX0NMVVNURVJfU0hFTEYgPSAnY2x1c3Rlci1zaGVsZicsXG5cbiAgLy8gXG4gIFNUX0dFT01FVFJZX1NIRUxGID0gJ2dlb21ldHJ5LXNoZWxmJyxcblxuICAvLyBcbiAgU1RfRU5EID0gJ2VuZC1zaGVsZicsXG5cbiAgLy8gXG4gIFNUX0ZJTkFMID0gJ2ZpbmFsLXNoZWxmJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFJlc3RyaWN0VHlwZSB7XG5cbiAgLy8gXG4gIFJUX0lOVEVSU0VDVCA9ICdydC1pbnRlcnNlY3Rpb24nLFxuXG4gIC8vIFxuICBSVF9VTklPTiA9ICdydC11bmlvbidcbn1cblxuLy8gXG5leHBvcnQgZW51bSBUb29sdGlwTW9kZSB7XG5cbiAgLy8gXG4gIFRNX05PTkUgPSAnbm9uZScsXG5cbiAgLy8gXG4gIFRNX1NUSUNLWSA9ICdzdGlja3knLFxuXG4gIC8vIFxuICBUTV9TTU9PVEggPSAnc21vb3RoJyxcbn1cblxuLy8gXG5leHBvcnQgZW51bSBDb2x1bW5Hcm91cHMge1xuXG4gIC8vIDB4MDFcbiAgQ09MU19JTl9PVVRQVVQgPSAnY29scy1pbi1vdXRwdXQnLFxuXG4gIC8vIDB4MDJcbiAgQ09MU19JTl9GSUxURVJfU0hFTEYgPSAnY29scy1pbi1maWx0ZXItc2hlbGYnLFxuXG4gIC8vIDB4MDRcbiAgQ09MU19SRUZfQllfRklMVEVSUyA9ICdjb2xzLXJlZi1ieS1maWx0ZXJzJyxcblxuICAvLyAweDA4XG4gIENPTFNfUkVGX0JZX09NRUFTVVJFUyA9ICdjb2xzLXJlZi1ieS1vbWVhc3VyZXMnLFxuXG4gIC8vIDB4MTBcbiAgQ09MU19SRUZfQllfSk9JTl9MT0QgPSAnY29scy1yZWYtYnktam9pbi1sb2QnLFxuXG4gIC8vIDB4MjBcbiAgQ09MU19ISURERU4gPSAnY29scy1oaWRkZW4nLFxuXG4gIC8vIDB4NDBcbiAgQ09MU19SRUZfQllfU09SVFMgPSAnY29scy1yZWYtYnktc29ydHMnLFxuXG4gIC8vIFxuICBDT0xTX1JFRl9CWV9GSUxURVJTX09SX1NPUlRTID0gJ2NvbHMtcmVmLWJ5LWZpbHRlcnMtb3Itc29ydHMnLFxuXG4gIC8vIFxuICBDT0xTX09OX1NIRUxWRVMgPSAnY29scy1vbi1zaGVsdmVzJyxcblxuICAvLyBcbiAgQ09MU19BTEwgPSAnY29scy1hbGwnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gQnV0dG9uc09wdGlvbiB7XG5cbiAgLy8gXG4gIEJPX0hJREUgPSAnYnV0dG9ucy1oaWRlJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFNlbGVjdGlvblJlbGF4YXRpb25PcHRpb24ge1xuXG4gIC8vIFxuICBTUk9fQUxMT1cgPSAnc2VsZWN0aW9uLXJlbGF4YXRpb24tYWxsb3cnLFxuXG4gIC8vIFxuICBTUk9fRElTQUxMT1cgPSAnc2VsZWN0aW9uLXJlbGF4YXRpb24tZGlzYWxsb3cnLFxufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEVuY29kaW5nVHlwZSB7XG5cbiAgLy8gYSB0ZXh0IGVuY29kaW5nXG4gIEVUX1RFWFQgPSAndGV4dC1lbmNvZGluZycsXG5cbiAgLy8gYSBjb2xvciBlbmNvZGluZ1xuICBFVF9DT0xPUiA9ICdjb2xvci1lbmNvZGluZycsXG5cbiAgLy8gYSBzaXplIGVuY29kaW5nXG4gIEVUX1NJWkUgPSAnc2l6ZS1lbmNvZGluZycsXG5cbiAgLy8gYSBzaGFwZSBlbmNvZGluZ1xuICBFVF9TSEFQRSA9ICdzaGFwZS1lbmNvZGluZycsXG5cbiAgLy8gYW4gaW1hZ2UgZW5jb2RpbmdcbiAgRVRfSU1BR0UgPSAnaW1hZ2UtZW5jb2RpbmcnLFxuXG4gIC8vIGEgc29ydCAocGF0aCkgZW5jb2RpbmcgKGN1cnJlbnRseSBvbmx5IGZvciBsaW5lIG9yIHBvbHlnb24gY2hhcnRzKVxuICBFVF9TT1JUID0gJ3NvcnQtZW5jb2RpbmcnLFxuXG4gIC8vIGEgd2VkZ2Ugc2l6ZSAoYW5nbGUpIGVuY29kaW5nIChjdXJyZW50bHkgb25seSBmb3IgcGllIGNoYXJ0cylcbiAgRVRfV0VER0VTSVpFID0gJ3dlZGdlLXNpemUtZW5jb2RpbmcnLFxuXG4gIC8vIGEgZ2VvbWV0cnkgZW5jb2RpbmdcbiAgRVRfR0VPTUVUUlkgPSAnZ2VvbWV0cnktZW5jb2RpbmcnLFxuXG4gIC8vIGEgbGV2ZWwgb2YgZGV0YWlsIGVuY29kaW5nXG4gIEVUX0xPRCA9ICdsZXZlbC1vZi1kZXRhaWwtZW5jb2RpbmcnLFxuXG4gIC8vIGVuY29kaW5nIHVzZWQgZm9yIHRoZSBkYXRhIGhpZ2hsaWdodGVyL2xlZ2VuZCBtZWNoYW5pc21cbiAgRVRfSElHSExJR0hUID0gJ2hpZ2hsaWdodC1lbmNvZGluZycsXG5cbiAgLy8gYSB0b29sdGlwIGVuY29kaW5nXG4gIEVUX1RPT0xUSVAgPSAndG9vbHRpcC1lbmNvZGluZycsXG5cbiAgLy8gYSB0ZW1wb3JhcnkgbGFiZWwgcGxhY2VkIGFib3ZlIG1hcmtzIGZvciB0aGUgdGFibGUgY2FsYyBkaWFsb2dcbiAgRVRfUlVOTklOR09SREVSID0gJ3J1bm5pbmdvcmRlci1lbmNvZGluZycsXG5cbiAgLy8gdGhlIG51bWJlciBvZiBlbmNvZGluZ3MsIHRoaXMgaXMgaW52YWxpZCBpbnB1dCBmb3IgYW4gZW5jb2RpbmcgcHJlc2VudGF0aW9uIG1vZGVsXG4gIE5VTV9FTkNPRElOR1MgPSAnbnVtLWVuY29kaW5ncycsXG5cbiAgLy8gYW4gaW52YWxpZCBlbmNvZGluZ1xuICBFVF9JTlZBTElEID0gJ2ludmFsaWQtZW5jb2RpbmcnXG59XG5cbi8vIEVudW1lcmF0aW9uIG9mIHZhbGlkIGhvcml6b250YWwgYWxpZ25tZW50cy5cbmV4cG9ydCBlbnVtIExhYmVsSEFsaWdubWVudCB7XG5cbiAgLy8gXG4gIExIQV9MZWZ0ID0gJ2gtYWxpZ24tbGVmdCcsXG5cbiAgLy8gXG4gIExIQV9DZW50ZXIgPSAnaC1hbGlnbi1jZW50ZXInLFxuXG4gIC8vIFxuICBMSEFfUmlnaHQgPSAnaC1hbGlnbi1yaWdodCcsXG5cbiAgLy8gXG4gIExIQV9BdXRvbWF0aWMgPSAnaC1hbGlnbi1hdXRvJ1xufVxuXG4vLyBFbnVtZXJhdGlvbiBvZiB2YWxpZCB2ZXJ0aWNhbCBhbGlnbm1lbnRzLlxuZXhwb3J0IGVudW0gTGFiZWxWQWxpZ25tZW50IHtcblxuICAvLyBcbiAgTFZBX0JvdHRvbSA9ICd2LWFsaWduLWJvdHRvbScsXG5cbiAgLy8gXG4gIExWQV9DZW50ZXIgPSAndi1hbGlnbi1jZW50ZXInLFxuXG4gIC8vIFxuICBMVkFfVG9wID0gJ3YtYWxpZ24tdG9wJyxcblxuICAvLyBcbiAgTFZBX0F1dG9tYXRpYyA9ICd2LWFsaWduLWF1dG8nXG59XG5cbi8vIEVudW1lcmF0aW9uIG9mIHZhbGlkIGxhYmVsIHBvc2l0aW9ucy5cbmV4cG9ydCBlbnVtIExhYmVsUG9zaXRpb24ge1xuXG4gIC8vIFBvc2l0aW9uIGVhY2ggdGV4dCBydW4gcmVsYXRpdmUgdG8gdGhlIGNlbnRlciBvZiB0aGUgb3JpZ2luYWwgYmJveC4gIFVzZSB0aGUgb3JpZ2luYWwgYmJveCBhcyB0aGUgaGVpZ2h0IGFuZCB3aWR0aCBvZiB0aGUgdGV4dCBtYXJrLiAgVXNlZCBmb3Igbm9uLXN0YWNrZWQgT08gdGV4dCBtYXJrcy5cbiAgQ2VudGVySW5PcmlnaW5hbEJib3ggPSAnbGFiZWwtcG9zaXRpb24tY2VudGVyLWluLW9yaWdpbmFsLWJveCcsXG5cbiAgLy8gUG9zaXRpb24gZWFjaCB0ZXh0IHJ1biByZWxhdGl2ZSB0byB0aGUgYm90dG9tIGxlZnQgY29ybmVyIG9mIHRoZSBtZWFzdXJlZCBiYm94LiBVc2UgdGhlIG1lYXN1cmVkIGJib3ggYXMgdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIGxhYmVsLiBVc2VkIGZvciBsYWJlbHNcbiAgT3JpZ2luQXRMb3dlckxlZnQgPSAnbGFiZWwtcG9zaXRpb24tb3JpZ2luLWF0LWxvd2VyLWxlZnQnLFxuXG4gIC8vIFBvc2l0aW9uIGVhY2ggdGV4dCBydW4gcmVsYXRpdmUgdG8gdGhlIGNlbnRlciBvZiB0aGUgbWVhc3VyZWQgYmJveC4gVXNlIHRoZSBtZWFzdXJlZCBiYm94IGFzIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSB0ZXh0IG1hcmsuIFVzZWQgZm9yIG1vc3QgdGV4dCBtYXJrcy5cbiAgT3JpZ2luQXRDZW50ZXIgPSAnbGFiZWwtcG9zaXRpb24tb3JpZ2luLWF0LWNlbnRlcidcbn1cblxuLy8gRW51bWVyYXRpb24gb2Ygd2F5cyB0byB1c2UgY29sb3IuICBWYWx1ZXMgY2FuIGJlIG9yJ2VkIHRvZ2V0aGVyIHRvIG1ha2UgYSBtYXNrIGZvciBhbGxvd2VkIG9wdGlvbnNcbmV4cG9ydCBlbnVtIENvbG9yTW9kZSB7XG5cbiAgLy8gQ29sb3IgdXNlciBzcGVjaWZpZWRcbiAgQ0xSTV9Vc2VyID0gJ2Nscm0tdXNlcicsXG5cbiAgLy8gQ29sb3Igc2VsZWN0ZWQgYXV0b21hdGljYWxseVxuICBDTFJNX0F1dG8gPSAnY2xybS1hdXRvJyxcblxuICAvLyBDb2xvciBtYXRjaGVzIG1hcmsgY29sb3JcbiAgQ0xSTV9NYXRjaCA9ICdjbHJtLW1hdGNoJyxcblxuICAvLyBObyBjb2xvciAodHJhbnNwYXJlbnQgb3Igbm90IGRyYXduKVxuICBDTFJNX05vbmUgPSAnY2xybS1ub25lJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIE1hcmtMYWJlbHNNb2RlIHtcblxuICAvLyBcbiAgTUxNX0FsbCA9ICdtbG0tYWxsJyxcblxuICAvLyBcbiAgTUxNX1NlbGVjdGlvbiA9ICdtbG0tc2VsZWN0aW9uJyxcblxuICAvLyBcbiAgTUxNX0hpZ2hsaWdodCA9ICdtbG0taGlnaGxpZ2h0JyxcblxuICAvLyBcbiAgTUxNX0xpbmVFbmRzID0gJ21sbS1saW5lLWVuZHMnLFxuXG4gIC8vIG1pbi9tYXggc2V0dGluZ1xuICBNTE1fUmFuZ2UgPSAnbWxtLXJhbmdlJyxcblxuICAvLyBtb3N0IHJlY2VudCAob25seSByZWxldmFudCB3aGVuIGRhdGUgZmllbGQgaXMgaW4gcGxheSlcbiAgTUxNX01vc3RSZWNlbnQgPSAnbWxtLW1vc3QtcmVjZW50JyxcblxuICAvLyAuLi50aGlzIGlzIFwiIHZpcnR1YWwgXCIgKHJ1bnRpbWUgb25seSwgbm90IHNhdmVkLCBub3Qgc2hvd24gYXMgYSB1c2VyIHNldHRpbmdcbiAgTUxNX011bHRpcGxlVmFsdWVzID0gJ21sbS1tdWx0aXBsZS12YWx1ZXMnLFxuXG4gIC8vIFxuICBNTE1fRGVmYXVsdCA9ICdtbG0tZGVmYXVsdCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBNYXJrTGFiZWxzU2NvcGUge1xuXG4gIC8vIFxuICBNTFNfVGFibGUgPSAnbWxzLXRhYmxlJyxcblxuICAvLyBcbiAgTUxTX1BhbmUgPSAnbWxzLXBhbmUnLFxuXG4gIC8vIFxuICBNTFNfQ2VsbCA9ICdtbHMtY2VsbCcsXG5cbiAgLy8gXG4gIE1MU19NdWx0aU1hcmsgPSAnbWxzLW11bHRpbWFyaycsXG5cbiAgLy8gLi4udGhpcyBpcyBcIiB2aXJ0dWFsIFwiIChydW50aW1lIG9ubHksIG5vdCBzYXZlZCwgbm90IHNob3duIGFzIGEgdXNlciBzZXR0aW5nKVxuICBNTFNfTXVsdGlwbGVWYWx1ZXMgPSAnbWxzLW11bHRpcGxlLXZhbHVlcycsXG5cbiAgLy8gXG4gIE1MU19EZWZhdWx0ID0gJ21scy1kZWZhdWx0J1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIE1hcmtMYWJlbHNWaXNpYmlsaXR5IHtcblxuICAvLyBcbiAgTUxWX0hpZGRlbiA9ICdtbHYtaGlkZGVuJyxcblxuICAvLyBcbiAgTUxWX1Zpc2libGUgPSAnbWx2LXZpc2libGUnLFxuXG4gIC8vIFxuICBNTFZfVXNlQ3VycmVudCA9ICdtbHYtdXNlLWN1cnJlbnQnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gU3RhY2tpbmdNb2RlIHtcblxuICAvLyBcbiAgU3RhY2tpbmdPZmYgPSAnb2ZmJyxcblxuICAvLyBcbiAgU3RhY2tpbmdPbiA9ICdvbicsXG5cbiAgLy8gXG4gIFN0YWNraW5nQXV0byA9ICdhdXRvJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIE1hcmtBbGlnbm1lbnQge1xuXG4gIC8vIFxuICBNYXJrQWxpZ25tZW50TGVmdCA9ICdtYXJrLWFsaWdubWVudC1sZWZ0JyxcblxuICAvLyBcbiAgTWFya0FsaWdubWVudFJpZ2h0ID0gJ21hcmstYWxpZ25tZW50LXJpZ2h0JyxcblxuICAvLyBcbiAgTWFya0FsaWdubWVudENlbnRlciA9ICdtYXJrLWFsaWdubWVudC1jZW50ZXInXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gUGFuZUxhYmVsQ29tcG9zaXRpb24ge1xuXG4gIC8vIFxuICBQTENfTm9uZSA9ICdwYW5lLWxhYmVsLWNvbXBvc2l0aW9uLW5vbmUnLFxuXG4gIC8vIFxuICBQTENfTWl4ZWQgPSAncGFuZS1sYWJlbC1jb21wb3NpdGlvbi1taXhlZCcsXG5cbiAgLy8gXG4gIFBMQ19BbGwgPSAncGFuZS1sYWJlbC1jb21wb3NpdGlvbi1hbGwnXG59XG5cbi8vIFRoZSB1c2VyLXNwZWNpZmllZCBtYXJrIHR5cGUgb24gdGhlIE1hcmtzIENhcmRcbmV4cG9ydCBlbnVtIFByaW1pdGl2ZVR5cGUge1xuXG4gIC8vIFxuICBQVF9BVVRPTUFUSUMgPSAnYXV0b21hdGljJyxcblxuICAvLyBcbiAgUFRfVEVYVCA9ICd0ZXh0JyxcblxuICAvLyBcbiAgUFRfSU1BR0UgPSAnaW1hZ2UnLFxuXG4gIC8vIFxuICBQVF9TSEFQRSA9ICdzaGFwZScsXG5cbiAgLy8gXG4gIFBUX1JFQ1RBTkdMRSA9ICdyZWN0YW5nbGUnLFxuXG4gIC8vIFxuICBQVF9CQVIgPSAnYmFyJyxcblxuICAvLyBcbiAgUFRfR0FOVFQgPSAnZ2FudHQnLFxuXG4gIC8vIFxuICBQVF9TUVVBUkUgPSAnc3F1YXJlJyxcblxuICAvLyBcbiAgUFRfQ0lSQ0xFID0gJ2NpcmNsZScsXG5cbiAgLy8gXG4gIFBUX1BPTFlMSU5FID0gJ3BvbHlsaW5lJyxcblxuICAvLyBsaW5lIGNoYXJ0XG4gIFBUX0xJTkUgPSAnbGluZScsXG5cbiAgLy8gXG4gIFBUX1BPTFlHT04gPSAncG9seWdvbicsXG5cbiAgLy8gYXJlYSBjaGFydFxuICBQVF9BUkVBID0gJ2FyZWEnLFxuXG4gIC8vIFxuICBQVF9QSUUgPSAncGllJyxcblxuICAvLyBcbiAgUFRfTVVMVElQT0xZR09OID0gJ211bHRpcG9seWdvbicsXG5cbiAgLy8gTm90IGFuIGFjdHVhbCBwcmltaXRpdmUgdHlwZS4gVGhpcyBpcyBqdXN0IHVzZWQgdG8gZmxhZyB0aGUgVUkgdGhhdCBtdWx0aXBsZSB0eXBlcyBhcmUgaW4gcGxheS5cbiAgUFRfTVVMVElQTEUgPSAnbXVsdGlwbGUnLFxuXG4gIC8vIHVzZWQgZm9yIGxvb3Bpbmcgb3ZlciBhbGwgdmFsdWVzXG4gIE5VTV9QUklNSVRJVkVTID0gJ2NvdW50JyxcblxuICAvLyB1c2VkIHRvIGZsYWcgYW4gdW5zZXQgb3IgaW52YWxpZCBzdGF0ZVxuICBQVF9JTlZBTElEID0gJ2ludmFsaWQnXG59XG5cbi8vIERlZmluZXMgdGhlIHdheSBhIGdpdmVuIHByaW1pdGl2ZSBiZWhhdmVzIG9uIGEgdml6IC0gZm9yIGluc3RhbmNlLCBhIFBUX0NJUkNMRSBpcyB0cmVhdGVkIGFzIGEgcG9pbnQsIHdoaWxlIGEgUFRfUE9MWUdPTiB3b3VsZCBiZSB0cmVhdGVkIGFzIGFuIGFyZWEuXG5leHBvcnQgZW51bSBNYXJrVHlwZSB7XG5cbiAgLy8gXG4gIE1UX1BPSU5UID0gJ3BvaW50JyxcblxuICAvLyBcbiAgTVRfTElORSA9ICdsaW5lJyxcblxuICAvLyBcbiAgTVRfQVJFQSA9ICdhcmVhJyxcblxuICAvLyBcbiAgTVRfSU5WQUxJRCA9ICdpbnZhbGlkJ1xufVxuXG4vLyBQYW5lQXhpcyBpcyB1c2VkIHRvIGRlc2NyaWJlIHdoaWNoIGF4aXMgb2YgYSBwYW5lIGlzIHRoZSBpbmRlcGVuZGVudCBheGlzLlxuZXhwb3J0IGVudW0gUGFuZUF4aXMge1xuXG4gIC8vIFRoZSBpbmRlcGVuZGVudCBheGlzIGlzIGluZmVycmVkIGZyb20gb3RoZXIgcHJvcGVydGllcyBvZiB0aGUgcGFuZS5cbiAgQVhJU19BVVRPID0gJ2F1dG8nLFxuXG4gIC8vIFxuICBBWElTX1ggPSAneCcsXG5cbiAgLy8gXG4gIEFYSVNfWSA9ICd5J1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFJvdW5kaW5nIHtcblxuICAvLyBcbiAgUm91bmRpbmdfTm9uZSA9ICdub25lJyxcblxuICAvLyBcbiAgUm91bmRpbmdfU21hbGwgPSAnc21hbGwnLFxuXG4gIC8vIFxuICBSb3VuZGluZ19NZWRpdW0gPSAnbWVkaXVtJyxcblxuICAvLyBcbiAgUm91bmRpbmdfTGFyZ2UgPSAnbGFyZ2UnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gTGluZUVuZCB7XG5cbiAgLy8gXG4gIExpbmVFbmRfTm9uZSA9ICdub25lJyxcblxuICAvLyBcbiAgTGluZUVuZF9BcnJvdyA9ICdhcnJvdycsXG5cbiAgLy8gXG4gIExpbmVFbmRfT3BlbkFycm93ID0gJ29wZW4tYXJyb3cnLFxuXG4gIC8vIFxuICBMaW5lRW5kX0RvdCA9ICdkb3QnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gTGluZUVuZFNpemUge1xuXG4gIC8vIFxuICBMaW5lRW5kU2l6ZV9TbWFsbGVzdCA9ICdzbWFsbGVzdCcsXG5cbiAgLy8gXG4gIExpbmVFbmRTaXplX1NtYWxsZXIgPSAnc21hbGxlcicsXG5cbiAgLy8gXG4gIExpbmVFbmRTaXplX1NtYWxsID0gJ3NtYWxsJyxcblxuICAvLyBcbiAgTGluZUVuZFNpemVfTWVkaXVtID0gJ21lZGl1bScsXG5cbiAgLy8gXG4gIExpbmVFbmRTaXplX0xhcmdlID0gJ2xhcmdlJyxcblxuICAvLyBcbiAgTGluZUVuZFNpemVfTGFyZ2VyID0gJ2xhcmdlcicsXG5cbiAgLy8gXG4gIExpbmVFbmRTaXplX0xhcmdlc3QgPSAnbGFyZ2VzdCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBCb2R5VHlwZSB7XG5cbiAgLy8gXG4gIEJvZHlUeXBlX05vbmUgPSAnbm9uZScsXG5cbiAgLy8gXG4gIEJvZHlUeXBlX0JveCA9ICdib3gnLFxuXG4gIC8vIFxuICBCb2R5VHlwZV9FZGdlID0gJ2VkZ2UnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gU3R5bGVUaGVtZSB7XG5cbiAgLy8gXG4gIHRoZW1lQ2xhc3NpYyA9ICdjbGFzc2ljJyxcblxuICAvLyBcbiAgdGhlbWVNb2Rlcm4gPSAnbW9kZXJuJyxcblxuICAvLyBcbiAgdGhlbWVDbGVhbiA9ICdjbGVhbicsXG5cbiAgLy8gXG4gIHRoZW1lU21vb3RoID0gJ3Ntb290aCcsXG5cbiAgLy8gXG4gIHRoZW1lQ3VzdG9tID0gJ2N1c3RvbSdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBBeGlzRm9sZFN0YXRlIHtcblxuICAvLyBcbiAgYWZOb25lID0gJ25vbmUnLFxuXG4gIC8vIFxuICBhZkZvbGRlZCA9ICdmb2xkZWQnLFxuXG4gIC8vIFxuICBhZlN5bmNocm9uaXplZCA9ICdzeW5jaHJvbml6ZWQnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gTGluZVBhdHRlcm4ge1xuXG4gIC8vIFxuICBMaW5lUGF0dGVybk5vbmUgPSAnbm9uZScsXG5cbiAgLy8gXG4gIExpbmVQYXR0ZXJuU29saWQgPSAnc29saWQnLFxuXG4gIC8vIFxuICBMaW5lUGF0dGVybkRhc2hlZCA9ICdkYXNoZWQnLFxuXG4gIC8vIFxuICBMaW5lUGF0dGVybkRvdHRlZCA9ICdkb3R0ZWQnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gTGluZVZpc2liaWxpdHkge1xuXG4gIC8vIFxuICBMaW5lVmlzaWJpbGl0eUF1dG8gPSAnYXV0b21hdGljJyxcblxuICAvLyBcbiAgTGluZVZpc2liaWxpdHlPbiA9ICdvbicsXG5cbiAgLy8gXG4gIExpbmVWaXNpYmlsaXR5T2ZmID0gJ29mZidcbn1cblxuLy8gXG5leHBvcnQgZW51bSBTdHlsZXNMaW5lUGF0dGVybiB7XG5cbiAgLy8gXG4gIFN0eWxlc0xpbmVQYXR0ZXJuU29saWQgPSAnc29saWQnLFxuXG4gIC8vIFxuICBTdHlsZXNMaW5lUGF0dGVybkRhc2hlZCA9ICdkYXNoZWQnLFxuXG4gIC8vIFxuICBTdHlsZXNMaW5lUGF0dGVybkRvdHRlZCA9ICdkb3R0ZWQnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gTGluZUNhcCB7XG5cbiAgLy8gXG4gIExpbmVDYXBGbGF0ID0gJ2ZsYXQnLFxuXG4gIC8vIFxuICBMaW5lQ2FwU3F1YXJlID0gJ3NxdWFyZScsXG5cbiAgLy8gXG4gIExpbmVDYXBSb3VuZCA9ICdyb3VuZCcsXG5cbiAgLy8gXG4gIExpbmVDYXBUcmlhbmdsZSA9ICd0cmlhbmdsZSdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBMaW5lSm9pbiB7XG5cbiAgLy8gXG4gIEJldmVsSm9pbiA9ICdiZXZlbCcsXG5cbiAgLy8gXG4gIE1pdGVySm9pbiA9ICdtaXRlcicsXG5cbiAgLy8gXG4gIFJvdW5kSm9pbiA9ICdyb3VuZCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBMaW5lQWxpZ25tZW50IHtcblxuICAvLyBcbiAgQWxpZ25tZW50Q2VudGVyID0gJ2NlbnRlcicsXG5cbiAgLy8gXG4gIEFsaWdubWVudEluc2V0ID0gJ2luc2V0J1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEZpbGxNb2RlIHtcblxuICAvLyBcbiAgRmlsbEV2ZW5PZGQgPSAnZXZlbi1vZGQnLFxuXG4gIC8vIFxuICBGaWxsV2luZGluZyA9ICd3aW5kaW5nJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEJvcmRlclN0eWxlIHtcblxuICAvLyBub25lXG4gIEJvcmRlclN0eWxlTm9uZSA9ICdicy1ub25lJyxcblxuICAvLyBoaWRkZW5cbiAgQm9yZGVyU3R5bGVIaWRkZW4gPSAnYnMtaGlkZGVuJyxcblxuICAvLyBkb3R0ZWRcbiAgQm9yZGVyU3R5bGVEb3R0ZWQgPSAnYnMtZG90dGVkJyxcblxuICAvLyBkYXNoZWRcbiAgQm9yZGVyU3R5bGVEYXNoZWQgPSAnYnMtZGFzaGVkJyxcblxuICAvLyBzb2xpZFxuICBCb3JkZXJTdHlsZVNvbGlkID0gJ2JzLXNvbGlkJyxcblxuICAvLyBkb3VibGVcbiAgQm9yZGVyU3R5bGVEb3VibGUgPSAnYnMtZG91YmxlJyxcblxuICAvLyBncm9vdmVcbiAgQm9yZGVyU3R5bGVHcm9vdmUgPSAnYnMtZ3Jvb3ZlJyxcblxuICAvLyByaWRnZVxuICBCb3JkZXJTdHlsZVJpZGdlID0gJ2JzLXJpZGdlJyxcblxuICAvLyBpbnNldFxuICBCb3JkZXJTdHlsZUluc2V0ID0gJ2JzLWluc2V0JyxcblxuICAvLyBvdXRzZXRcbiAgQm9yZGVyU3R5bGVPdXRzZXQgPSAnYnMtb3V0c2V0JyxcblxuICAvLyBpbnZhbGlkXG4gIEJvcmRlclN0eWxlSW52YWxpZCA9ICdicy1pbnZhbGlkJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIENvbG9yUGFsZXR0ZVR5cGUge1xuXG4gIC8vIFxuICBDb2xvclBhbGV0dGVSZWd1bGFyID0gJ2NvbG9yLXBhbGV0dGUtcmVndWxhcicsXG5cbiAgLy8gXG4gIENvbG9yUGFsZXR0ZU9yZGVyZWREaXZlcmdpbmcgPSAncGFsZXR0ZS1vcmRlcmVkLWRpdmVyZ2luZycsXG5cbiAgLy8gXG4gIENvbG9yUGFsZXR0ZU9yZGVyZWRMaW5lYXIgPSAncGFsZXR0ZS1vcmRlcmVkLWxpbmVhcidcbn1cblxuLy8gXG5leHBvcnQgZW51bSBQYWxldHRlRmxhZ3Mge1xuXG4gIC8vIFxuICBQYWxldHRlRmxhZ05vbmUgPSAncGFsZXR0ZS1mbGFnLW5vbmUnLFxuXG4gIC8vIFxuICBQYWxldHRlRmxhZ0N1c3RvbSA9ICdwYWxldHRlLWZsYWctY3VzdG9tJyxcblxuICAvLyBcbiAgUGFsZXR0ZUZsYWdOb3RRdWFudGl0YXRpdmUgPSAncGFsZXR0ZS1mbGFnLW5vdC1xdWFudGl0YXRpdmUnLFxuXG4gIC8vIFxuICBQYWxldHRlRmxhZ05vdENhdGVnb3JpY2FsID0gJ3BhbGV0dGUtZmxhZy1ub3QtY2F0ZWdvcmljYWwnLFxuXG4gIC8vIFxuICBQYWxldHRlRmxhZ05vdFJlZmVyZW5jZUJhbmQgPSAncGFsZXR0ZS1mbGFnLW5vdC1yZWZlcmVuY2UtYmFuZCcsXG5cbiAgLy8gXG4gIFBhbGV0dGVGbGFnTm90Qm94cGxvdCA9ICdwYWxldHRlLWZsYWctbm90LWJveHBsb3QnLFxuXG4gIC8vIFxuICBQYWxldHRlRmxhZ05vdEZpbGxlZE1hcExpZ2h0ID0gJ3BhbGV0dGUtZmxhZy1ub3QtZmlsbGVkLW1hcC1saWdodCcsXG5cbiAgLy8gXG4gIFBhbGV0dGVGbGFnTm90RmlsbGVkTWFwRGFyayA9ICdwYWxldHRlLWZsYWctbm90LWZpbGxlZC1tYXAtZGFyaycsXG5cbiAgLy8gXG4gIFBhbGV0dGVGbGFnTGVnYWN5ID0gJ3BhbGV0dGUtZmxhZy1sZWdhY3knXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gRGVmYXVsdFBhbGV0dGVUeXBlIHtcblxuICAvLyBcbiAgU21hbGxOb21pbmFsID0gJ3BhbGV0dGUtZGVmYXVsdC1zbWFsbC1ub21pbmFsJyxcblxuICAvLyBcbiAgTGFyZ2VOb21pbmFsID0gJ3BhbGV0dGUtZGVmYXVsdC1sYXJnZS1ub21pbmFsJyxcblxuICAvLyBcbiAgT3JkaW5hbCA9ICdwYWxldHRlLWRlZmF1bHQtb3JkaW5hbCcsXG5cbiAgLy8gXG4gIFF1YW50aXRhdGl2ZVBvc2l0aXZlID0gJ3BhbGV0dGUtZGVmYXVsdC1xdWFudC1wb3MnLFxuXG4gIC8vIFxuICBRdWFudGl0YXRpdmVOZWdhdGl2ZSA9ICdwYWxldHRlLWRlZmF1bHQtcXVhbnQtbmVnJyxcblxuICAvLyBcbiAgUXVhbnRpdGF0aXZlRGl2ZXJnaW5nID0gJ3BhbGV0dGUtZGVmYXVsdC1xdWFudC1kaXYnLFxuXG4gIC8vIFxuICBRdWFudGl0YXRpdmVQb3NpdGl2ZUxpZ2h0ID0gJ3BhbGV0dGUtZGVmYXVsdC1xdWFudC1wb3MtbGlnaHQnLFxuXG4gIC8vIFxuICBRdWFudGl0YXRpdmVOZWdhdGl2ZUxpZ2h0ID0gJ3BhbGV0dGUtZGVmYXVsdC1xdWFudC1uZWctbGlnaHQnLFxuXG4gIC8vIFxuICBRdWFudGl0YXRpdmVEaXZlcmdpbmdMaWdodCA9ICdwYWxldHRlLWRlZmF1bHQtcXVhbnQtZGl2LWxpZ2h0JyxcblxuICAvLyBcbiAgUXVhbnRpdGF0aXZlUG9zaXRpdmVBcmVhID0gJ3BhbGV0dGUtZGVmYXVsdC1xdWFudC1wb3MtYXJlYScsXG5cbiAgLy8gXG4gIFF1YW50aXRhdGl2ZU5lZ2F0aXZlQXJlYSA9ICdwYWxldHRlLWRlZmF1bHQtcXVhbnQtbmVnLWFyZWEnLFxuXG4gIC8vIFxuICBRdWFudGl0YXRpdmVEaXZlcmdpbmdBcmVhID0gJ3BhbGV0dGUtZGVmYXVsdC1xdWFudC1kaXYtYXJlYSdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBTaG93Qm91bmRzIHtcblxuICAvLyBcbiAgQm90aCA9ICdzaG93LWJvdGgnLFxuXG4gIC8vIFxuICBVcHBlciA9ICdzaG93LXVwcGVyJyxcblxuICAvLyBcbiAgTG93ZXIgPSAnc2hvdy1sb3dlcidcbn1cblxuLy8gU2FtcGxlIHZzLiBwb3B1bGF0aW9uIHN0YW5kYXJkIGRldmlhdGlvblxuZXhwb3J0IGVudW0gU3REZXZUeXBlIHtcblxuICAvLyBcbiAgU2FtcGxlID0gJ3N0ZGV2LXNhbXBsZScsXG5cbiAgLy8gXG4gIFBvcHVsYXRpb24gPSAnc3RkZXYtcG9wdWxhdGlvbidcbn1cblxuLy8gXG5leHBvcnQgZW51bSBSZWZlcmVuY2VMaW5lRm9ybXVsYUdyb3VwIHtcblxuICAvLyBcbiAgTm9uZSA9ICdub25lJyxcblxuICAvLyBcbiAgTGluZSA9ICdsaW5lJyxcblxuICAvLyBcbiAgQmFuZCA9ICdiYW5kJyxcblxuICAvLyBcbiAgRGlzdHJpYnV0aW9uID0gJ2Rpc3RyaWJ1dGlvbicsXG5cbiAgLy8gXG4gIEJveHBsb3QgPSAnYm94cGxvdCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBSZWZlcmVuY2VMaW5lU2NvcGVUeXBlIHtcblxuICAvLyBcbiAgUGVyQ2VsbCA9ICdwZXItY2VsbCcsXG5cbiAgLy8gXG4gIFBlclBhbmUgPSAncGVyLXBhbmUnLFxuXG4gIC8vIFxuICBQZXJUYWJsZSA9ICdwZXItdGFibGUnLFxufVxuXG4vLyBob3cgc2hvdWxkIHRoZSBsaW5lIGJlIGxhYmVsZWRcbmV4cG9ydCBlbnVtIFJlZmVyZW5jZUxpbmVMYWJlbFR5cGUge1xuXG4gIC8vIG5vIGxhYmVsXG4gIE5vbmUgPSAnbm9uZScsXG5cbiAgLy8gYW4gYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgbGFiZWxcbiAgQXV0b21hdGljID0gJ2F1dG9tYXRpYycsXG5cbiAgLy8gXG4gIFZhbHVlID0gJ3ZhbHVlJyxcblxuICAvLyBcbiAgQ29tcHV0YXRpb24gPSAnY29tcHV0YXRpb24nLFxuXG4gIC8vIGEgdXNlciBkZWZpbmVkIGxhYmVsXG4gIEN1c3RvbSA9ICdjdXN0b20nLFxufVxuXG4vLyBob3cgc2hvdWxkIHRoZSBsaW5lIGJlIGNvbXB1dGVkXG5leHBvcnQgZW51bSBSZWZlcmVuY2VMaW5lRm9ybXVsYVR5cGUge1xuXG4gIC8vIGEgdXNlciBzcGVjaWZpZWQgY29uc3RhbnQgdmFsdWVcbiAgQ29uc3RhbnQgPSAnY29uc3RhbnQnLFxuXG4gIC8vIFxuICBUb3RhbCA9ICd0b3RhbCcsXG5cbiAgLy8gdG90YWwgb2YgYWxsIHZhbHVlcyBhdCB0aGUgZ2l2ZW4gc2NvcGUgPC0gaXMgdGhpcyBjb3JyZWN0PyBsb29rcyBsaWtlIGNvbW1lbnQgZnJvbSBGb3JtdWxhVG90YWxcbiAgU3VtID0gJ3N1bScsXG5cbiAgLy8gbWluaW11bSB2YWx1ZSBpbiB0aGUgc2NvcGVcbiAgTWluID0gJ21pbicsXG5cbiAgLy8gbWF4aW11bSB2YWx1ZSBpbiB0aGUgc2NvcGVcbiAgTWF4ID0gJ21heCcsXG5cbiAgLy8gYXZlcmFnZSB2YWx1ZSBpbiB0aGUgc2NvcGVcbiAgQXZlcmFnZSA9ICdhdmVyYWdlJyxcblxuICAvLyBtZWRpYW4gdmFsdWUgaW4gdGhlIHNjb3BlXG4gIE1lZGlhbiA9ICdtZWRpYW4nLFxuXG4gIC8vIHRoZSBuIHF1YW50aWxlcyB2YWx1ZXMgaW4gdGhlIHNjb3BlXG4gIFF1YW50aWxlcyA9ICdxdWFudGlsZXMnLFxuXG4gIC8vIGEgZ2l2ZW4gcGVyY2VudGlsZSBpbiB0aGUgc2NvcGVcbiAgUGVyY2VudGlsZSA9ICdwZXJjZW50aWxlJyxcblxuICAvLyBtZWFuICstIHN0YW5kYXJkIGRldmlhdGlvblxuICBTdGFuZGFyZERldmlhdGlvbiA9ICdzdGFuZGFyZC1kZXZpYXRpb24nLFxuXG4gIC8vIGEgZ2l2ZW4gY29uZmlkZW5jZSBpbnRlcnZhbCBhcm91bmQgdGhlIG1lYW5cbiAgQ29uZmlkZW5jZUludGVydmFsID0gJ2NvbmZpZGVuY2UtaW50ZXJ2YWwnLFxuXG4gIC8vIFxuICBNZWRpYW5Db25maWRlbmNlSW50ZXJ2YWwgPSAnbWVkaWFuLWNvbmZpZGVuY2UtaW50ZXJ2YWwnXG59XG5cbi8vIExpbmUgb3IgY29uZmlkZW5jZSBpbnRlcnZhbCBvciBib3RoXG5leHBvcnQgZW51bSBSZWZlcmVuY2VMaW5lQ29uZmlkZW5jZUludGVydmFsU3RhdGUge1xuXG4gIC8vIGRpc3BsYXkgbGluZSBvbmx5XG4gIExpbmVPbmx5ID0gJ2xpbmUtb25seScsXG5cbiAgLy8gZGlzcGxheSB0aGUgbGluZSBhbmQgYSBjb25maWRlbmNlIGludGVydmFsXG4gIExpbmVBbmRDb25maWRlbmNlSW50ZXJ2YWwgPSAnbGluZS1hbmQtaW50ZXJ2YWwnLFxuXG4gIC8vIGRpc3BsYXkgY29uZmlkZW5jZSBpbnRlcnZhbCBvbmx5XG4gIENvbmZpZGVuY2VJbnRlcnZhbE9ubHkgPSAnaW50ZXJ2YWwtb25seSdcbn1cblxuLy8gdHlwZSBvZiBkaXN0cmlidXRpb24uIGkuZS4gUGVyY2VudGFnZSwgUGVyY2VudGlsZSwgUXVhbnRpbGUsIGFuZCBTdGFuZGFyZCBEZXZpYXRpb25cbmV4cG9ydCBlbnVtIFJlZmVyZW5jZUxpbmVEaXN0cmlidXRpb25UeXBlIHtcblxuICAvLyBkaXN0cmlidXRpb24gdHlwZSBwZXJjZW50YWdlXG4gIFBlcmNlbnRhZ2VzID0gJ3BlcmNlbnRhZ2VzJyxcblxuICAvLyBkaXN0cmlidXRpb24gdHlwZSBwZXJjZW50aWxlXG4gIFBlcmNlbnRpbGVzID0gJ3BlcmNlbnRpbGVzJyxcblxuICAvLyBkaXN0cmlidXRpb24gdHlwZSBxdWFudGlsZVxuICBRdWFudGlsZXMgPSAncXVhbnRpbGVzJyxcblxuICAvLyBkaXN0cmlidXRpb24gdHlwZSBzdGFuZGFyZCBkZXZpYXRpb25cbiAgU3RhbmRhcmREZXZpYXRpb24gPSAnc3RhbmRhcmQtZGV2aWF0aW9uJ1xufVxuXG4vLyB0aGUga2luZCBvZiBMT0QgY2FsYyB0byB1c2UgZm9yIGEgZ2l2ZW4gcmVmZXJlbmNlIGxpbmVcbmV4cG9ydCBlbnVtIFJlZmVyZW5jZUxpbmVMT0RDYWxjVHlwZSB7XG5cbiAgLy8gQ3JlYXRlIGEgZm9ybXVsYSB1c2luZyBhIEZJWEVELWxpa2UgbGV2ZWwtb2YtZGV0YWlsIGNhbGN1bGF0aW9uLCB0byB3aGljaCBzaGVldCBmaWx0ZXJzIGFwcGx5LCB0aGF0IHdpbGwgZ28gb250byBhIHNwZWNpZmljIHNoZWV0XG4gIE1lYXN1cmVGb3JtdWxhID0gJ21lYXN1cmUtZm9ybXVsYScsXG5cbiAgLy8gQ3JlYXRlIGEgYm9vbGVhbiBmb3JtdWxhIHRoYXQgY2FuIGJlIHVzZWQgYXMgYSBmaWx0ZXJcbiAgQm9vbGVhbkZpbHRlciA9ICdib29sZWFuLWZpbHRlcidcbn1cblxuLy8gXG5leHBvcnQgZW51bSBCb3hwbG90V2hpc2tlclR5cGUge1xuXG4gIC8vIFxuICBTdGFuZGFyZCA9ICdzdGFuZGFyZCcsXG5cbiAgLy8gXG4gIE1pbm1heCA9ICdtaW5tYXgnXG59XG5cbi8vIGNhdGVnb3JpZXMgb2YgY29ubmVjdGlvbiB0eXBlcyBkaXNwbGF5ZWQgYnkgdGhlIGNvbm5lY3Rpb24gVUlcbmV4cG9ydCBlbnVtIENvbm5lY3Rpb25UeXBlQ2F0ZWdvcnkge1xuXG4gIC8vIHN0YW5kYXJkIGRhdGFiYXNlXG4gIENUQ19EYXRhYmFzZSA9ICdkYXRhYmFzZScsXG5cbiAgLy8gJ01vcmUgSXRlbXMgLi4uJyBtZXRhIGl0ZW1cbiAgQ1RDX01vcmUgPSAnbW9yZScsXG5cbiAgLy8gT3RoZXIgZmlsZSB0eXBlc1xuICBDVENfT3RoZXIgPSAnb3RoZXInLFxuXG4gIC8vIGludmFsaWQgY29ubmVjdGlvbiBjYXRlZ29yeVxuICBDVENfSW52YWxpZCA9ICdpbnZhbGlkJ1xufVxuXG4vLyBhIGxvZ2ljYWwgZ3JvdXBpbmcgb2YgY29ubmVjdGlvbiB0eXBlcyBkaXNwbGF5ZWQgYnkgdGhlIGNvbm5lY3Rpb24gVUlcbmV4cG9ydCBlbnVtIENvbm5lY3Rpb25UeXBlR3JvdXAge1xuXG4gIC8vIGluIGEgZmlsZVxuICBDVEdfRmlsZSA9ICdmaWxlJyxcblxuICAvLyBvbiBhIHNlcnZlclxuICBDVEdfU2VydmVyID0gJ3NlcnZlcicsXG5cbiAgLy8gb24gYSByZWNlbnQgc2VydmVyXG4gIENUR19NcnVTZXJ2ZXIgPSAnbXJ1LXNlcnZlcicsXG5cbiAgLy8gaW52YWxpZCBncm91cFxuICBDVEdfSW52YWxpZCA9ICdpbnZhbGlkJ1xufVxuXG4vLyBUaGUgdHlwZSBvZiBtZXRhZGF0YSBhIGNvbHVtbiBjb250YWluc1xuZXhwb3J0IGVudW0gQ3ViZU1ldGFkYXRhQ2F0ZWdvcnkge1xuXG4gIC8vIGN1YmUncyBuYW1lXG4gIENNQ19OYW1lID0gJ25hbWUnLFxuXG4gIC8vIGN1YmUncyBkZXNjcmlwdGlvblxuICBDTUNfRGVzY3JpcHRpb24gPSAnZGVzY3JpcHRpb24nLFxuXG4gIC8vIGN1YmUncyBsYXN0IHVwZGF0ZWQgdGltZXN0YW1wXG4gIENNQ19MYXN0VXBkYXRlZCA9ICdsYXN0LXVwZGF0ZWQnLFxuXG4gIC8vIGludmFsaWRcbiAgQ01DX0ludmFsaWQgPSAnaW52YWxpZCdcbn1cblxuLy8gVGhlIHR5cGUgb2Ygd2lkZ2V0IHRvIGRpc3BsYXkgdG8gdGhlIHVzZXIgd2hlbiB0aGV5IGFyZSBzcGVjaWZ5aW5nIGNvbm5lY3Rpb24gaW5mb1xuZXhwb3J0IGVudW0gQ29ubmVjdGlvbldpZGdldFR5cGUge1xuXG4gIC8vIHNob3cgdGhlIGpvaW4gYXJlYVxuICBDV1RfSm9pbkFyZWEgPSAnam9pbi1hcmVhJyxcblxuICAvLyBzaG93IHRoZSBjdWJlIHNlbGVjdGlvbiB1aVxuICBDV1RfQ3ViZVNlbGVjdGlvbiA9ICdjdWJlLXNlbGVjdGlvbicsXG5cbiAgLy8gc2hvdyB0aGUgZ29vZ2xlIGFuYWx5dGljcyB1aVxuICBDV1RfR29vZ2xlQW5hbHl0aWNzID0gJ2dvb2dsZS1hbmFseXRpY3MnLFxuXG4gIC8vIHNob3cgdGhlIHRhYmxlYXUgc2VydmVyIHVpXG4gIENXVF9UYWJsZWF1U2VydmVyID0gJ3RhYmxlYXUtc2VydmVyJyxcblxuICAvLyBkbyBub3Qgc2hvdyBhbnkgY29ubmVjdGlvbiB3aWRnZXRcbiAgQ1dUX05vV2lkZ2V0ID0gJ25vLXdpZGdldCcsXG5cbiAgLy8gaW52YWxpZFxuICBDV1RfSW52YWxpZCA9ICdpbnZhbGlkJ1xufVxuXG4vLyBUaGUgdHlwZSBvZiBnb29nbGUgYW5hbHl0aWNzIGJhc2ljIGluZm9cbmV4cG9ydCBlbnVtIEdvb2dsZUJhc2ljSW5mb1R5cGUge1xuXG4gIC8vIGdvb2dsZSBhbmFseXRpY3MgYWNjb3VudFxuICBHQV9BY2NvdW50ID0gJ2dhLWFjY291bnQnLFxuXG4gIC8vIGdvb2dsZSBhbmFseXRpY3MgcHJvcGVydHlcbiAgR0FfUHJvcGVydHkgPSAnZ2EtcHJvcGVydHknLFxuXG4gIC8vIGdvb2dsZSBhbmFseXRpY3Mgdmlld1xuICBHQV9WaWV3ID0gJ2dhLXZpZXcnLFxuXG4gIC8vIGludmFsaWRcbiAgR0FfSW52YWxpZCA9ICdpbnZhbGlkJ1xufVxuXG4vLyBUaGUgd2F5IGluIHdoaWNoIGEgcGllY2Ugb2YgY29ubmVjdGlvbiBpbmZvcm1hdGlvbiBpcyBzcGVjaWZpZWRcbmV4cG9ydCBlbnVtIENvbm5lY3Rpb25TcGVjaWZpY2F0aW9uVHlwZSB7XG5cbiAgLy8gVXNlcyBhIGNvbWJvIGJveFxuICBDU1RfQ29tYm9Cb3ggPSAnY29tYm8tYm94JyxcblxuICAvLyBVc2VzIGEgbGluZSBlZGl0XG4gIENTVF9MaW5lRWRpdCA9ICdsaW5lLWVkaXQnLFxuXG4gIC8vIFVzZXMgYSBsaW5lIGVkaXQgd2l0aCBhIGJyb3dzZSBidXR0b24gbmV4dCB0byBpdFxuICBDU1RfTGluZUVkaXRCcm93c2UgPSAnbGluZS1lZGl0LWJyb3dzZScsXG5cbiAgLy8gaW52YWxpZFxuICBDU1RfSW52YWxpZCA9ICdpbnZhbGlkJ1xufVxuXG4vLyBHQSBEYXRlIFJhbmdlXG5leHBvcnQgZW51bSBEYXRlUmFuZ2Uge1xuXG4gIC8vIFxuICBEYXRlUmFuZ2VGaXJzdCA9ICdkYXRlLXJhbmdlLWZpcnN0JyxcblxuICAvLyBcbiAgRGF0ZVJhbmdlTGFzdDMwRGF5cyA9ICdkYXRlLXJhbmdlLWxhc3QzMCcsXG5cbiAgLy8gXG4gIERhdGVSYW5nZVRvZGF5ID0gJ2RhdGUtcmFuZ2UtdG9kYXknLFxuXG4gIC8vIFxuICBEYXRlUmFuZ2VZZXN0ZXJkYXkgPSAnZGF0ZS1yYW5nZS15ZXN0ZXJkYXknLFxuXG4gIC8vIFxuICBEYXRlUmFuZ2VMYXN0V2VlayA9ICdkYXRlLXJhbmdlLWxhc3Qtd2VlaycsXG5cbiAgLy8gXG4gIERhdGVSYW5nZUxhc3RNb250aCA9ICdkYXRlLXJhbmdlLWxhc3QtbW9udGgnLFxuXG4gIC8vIFxuICBEYXRlUmFuZ2VMYXN0WWVhciA9ICdkYXRlLXJhbmdlLWxhc3QteWVhcicsXG5cbiAgLy8gXG4gIERhdGVSYW5nZVRoaXNXZWVrVG9ZZXN0ZXJkYXkgPSAnZGF0ZS1yYW5nZS10aGlzLXdlZWstdG8teWVzdGVyZGF5JyxcblxuICAvLyBcbiAgRGF0ZVJhbmdlVGhpc01vbnRoVG9ZZXN0ZXJkYXkgPSAnZGF0ZS1yYW5nZS10aGlzLW1vbnRoLXRvLXllc3RlcmRheScsXG5cbiAgLy8gXG4gIERhdGVSYW5nZVRoaXNZZWFyVG9ZZXN0ZXJkYXkgPSAnZGF0ZS1yYW5nZS10aGlzLXllYXItdG8teWVzdGVyZGF5JyxcblxuICAvLyBcbiAgRGF0ZVJhbmdlTGFzdFdlZWtUb1llc3RlcmRheSA9ICdkYXRlLXJhbmdlLWxhc3Qtd2Vlay10by15ZXN0ZXJkYXknLFxuXG4gIC8vIFxuICBEYXRlUmFuZ2VMYXN0TW9udGhUb1llc3RlcmRheSA9ICdkYXRlLXJhbmdlLWxhc3QtbW9udGgtdG8teWVzdGVyZGF5JyxcblxuICAvLyBcbiAgRGF0ZVJhbmdlTGFzdFllYXJUb1llc3RlcmRheSA9ICdkYXRlLXJhbmdlLWxhc3QteWVhci10by15ZXN0ZXJkYXknLFxuXG4gIC8vIFxuICBEYXRlUmFuZ2VGaXhlZFJhbmdlID0gJ2RhdGUtcmFuZ2UtZml4ZWQtcmFuZ2UnLFxuXG4gIC8vIFxuICBEYXRlUmFuZ2VGaXhlZFN0YXJ0ID0gJ2RhdGUtcmFuZ2UtZml4ZWQtc3RhcnQnLFxuXG4gIC8vIFxuICBEYXRlUmFuZ2VDb3VudCA9ICdkYXRlLXJhbmdlLWNvdW50J1xufVxuXG4vLyBTcGVjaWZpZXMgdGhlIHR5cGUgb2Ygd2lkZ2V0IHRvIHNob3cgaW4gQ29ubmVjdFNlcnZlcldpZGdldFxuZXhwb3J0IGVudW0gQ29ubmVjdFNlcnZlcldpZGdldFR5cGUge1xuXG4gIC8vIGludmFsaWRcbiAgQ1NXVF9JbnZhbGlkID0gJ2ludmFsaWQnLFxuXG4gIC8vIG1pY3Jvc29mdCBhY2Nlc3NcbiAgQ1NXVF9BY2Nlc3MgPSAnYWNjZXNzJyxcblxuICAvLyBnZW5lcmljIG9kYmNcbiAgQ1NXVF9PREJDID0gJ29kYmMnLFxuXG4gIC8vIGN1YmVzXG4gIENTV1RfQ3ViZSA9ICdjdWJlJyxcblxuICAvLyByZWxhdGlvbmFsIGRhdGEgc291cmNlc1xuICBDU1dUX1JlbGF0aW9uYWwgPSAncmVsYXRpb25hbCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBBdXRoZW50aWNhdGlvbkVudW1zTW9kZSB7XG5cbiAgLy8gbm8gYXV0aGVudGljYXRpb24gd2lkZ2V0XG4gIEF1dGhNb2RlTm9uZSA9ICdhdXRoLW1vZGUtbm9uZScsXG5cbiAgLy8gdXNlcm5hbWUgYW5kIHBhc3N3b3JkXG4gIEF1dGhNb2RlQmFzaWMgPSAnYXV0aC1tb2RlLWJhc2ljJyxcblxuICAvLyB1c2VybmFtZSBhbmQgcGFzc3dvcmQgY2FuIGJlIGJsYW5rXG4gIEF1dGhNb2RlQmFzaWNOb1ZhbGlkYXRlRmllbGRzID0gJ2F1dGgtbW9kZS1iYXNpYy1uby12YWxpZGF0ZS1maWVsZHMnLFxuXG4gIC8vIG9ubHkgdXNlcm5hbWVcbiAgQXV0aE1vZGVCYXNpY1VzZXJOYW1lT25seSA9ICdhdXRoLW1vZGUtYmFzaWMtdXNlcm5hbWUtb25seScsXG5cbiAgLy8gYXdzIGFjY2VzcyBrZXkgYW5kIHNlY3JldCBJRFxuICBBdXRoTW9kZUJhc2ljQVdTID0gJ2F1dGgtbW9kZS1iYXNpYy1hd3MnLFxuXG4gIC8vIHVzZXJuYW1lLCBwYXNzd29yZCwgYW5kIGEgbGlzdCBvZiBBdXRoT3B0aW9ucyB3aXRoIHJhZGlvIGJ1dHRvbnNcbiAgQXV0aE1vZGVSYWRpbyA9ICdhdXRoLW1vZGUtcmFkaW8nLFxuXG4gIC8vIExpa2UgQXV0aE1vZGVSYWRpbywgYnV0IGVuYWJsZSB1c2VybmFtZS9wYXNzd29yZCBldmVuIGZvciBpbnRlZ3JhdGVkIGF1dGhcbiAgQXV0aE1vZGVSYWRpb1VuaW5kZW50ZWQgPSAnYXV0aC1tb2RlLXJhZGlvLXVuaW5kZW50ZWQnLFxuXG4gIC8vIHVzZXJuYW1lLCBwYXNzd29yZCwgYW5kIGEgbGlzdCBvZiBBdXRoT3B0aW9ucyB3aXRoIGEgY29tYm9ib3hcbiAgQXV0aE1vZGVDb21ib0JveCA9ICdhdXRoLW1vZGUtY29tYm9ib3gnLFxuXG4gIC8vIExpa2UgQXV0aE1vZGVDb21ib2JveCwgYnV0IHdpdGggb3B0aW9uIG5vdCByZXF1aXJpbmcgdXNlcm5hbWUvcGFzc3dvcmRcbiAgQXV0aE1vZGVDb21ib0JveEludGVncmF0ZWQgPSAnYXV0aC1tb2RlLWNvbWJvYm94LWludGVncmF0ZWQnLFxuXG4gIC8vIGRyaXZlciwgYXV0aGVudGljYXRpb24sIHVzZXJuYW1lLCByZWFsbSwgZXRjXG4gIEF1dGhNb2RlSGl2ZSA9ICdhdXRoLW1vZGUtaGl2ZScsXG5cbiAgLy8gbm9uZSwgYXp1cmUgbWFya2V0cGxhY2UgYWNjb3VudCwgZXhwbGljaXRcbiAgQXV0aE1vZGVPRGF0YSA9ICdhdXRoLW1vZGUtb2RhdGEnLFxuXG4gIC8vIGVkaXRpb24sIGF1dGhlbnRpY2F0aW9uLCBzc28gZG9tYWluLCBldGNcbiAgQXV0aE1vZGVTaGFyZVBvaW50ID0gJ2F1dGgtbW9kZS1zaGFyZXBvaW50JyxcblxuICAvLyB1c2VybmFtZSwgcGFzc3dvcmQsIGNsaWVudCwgJiBsYW5ndWFnZVxuICBBdXRoTW9kZVNBUEJXID0gJ2F1dGgtbW9kZS1zYXBidycsXG5cbiAgLy8gQWJpbGl0eSB0byBzd2l0Y2ggYmV0d2VlbiB0d28gZGlmZmVyZW50IGF1dGggbW9kZXMgZWFjaCBpbiB0aGVpciBvd24gbW9kYWwgZGlhbG9ncyAoYmFzaWMgYW5kIG9hdXRoKVxuICBBdXRoTW9kZVN3aXRjaE1vZGFsID0gJ2F1dGgtbW9kZS1zd2l0Y2gtbW9kYWwnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gQXV0aGVudGljYXRpb25FbnVtc1JlY29ubmVjdE1vZGUge1xuXG4gIC8vIEF1dGggbm90IG5lZWRlZCBmb3IgcmVjb25uZWN0XG4gIFJlY29ubmVjdE1vZGVOb25lID0gJ3JlY29ubmVjdC1tb2RlLW5vbmUnLFxuXG4gIC8vIFVzZXJuYW1lIGFuZCBwYXNzd29yZFxuICBSZWNvbm5lY3RNb2RlQmFzaWMgPSAncmVjb25uZWN0LW1vZGUtYmFzaWMnLFxuXG4gIC8vIEFjY2VzcyBmaWxlXG4gIFJlY29ubmVjdE1vZGVBY2Nlc3MgPSAncmVjb25uZWN0LW1vZGUtYWNjZXNzJyxcblxuICAvLyBNaWNyb3NvZnQgQXp1cmUgRGF0YSBNYXJrZXQgKE9EYXRhKVxuICBSZWNvbm5lY3RNb2RlRGF0YU1hcmtldCA9ICdyZWNvbm5lY3QtbW9kZS1kYXRhLW1hcmtldCcsXG5cbiAgLy8gR29vZ2xlIE9BdXRoXG4gIFJlY29ubmVjdE1vZGVHb29nbGVPQXV0aCA9ICdyZWNvbm5lY3QtbW9kZS1nb29nbGUtb2F1dGgnLFxuXG4gIC8vIFNhbGVzZm9yY2VPQXV0aCwgd2l0aCB0aGUgb3B0aW9uIG9mIHVzZXJuYW1lL3Bhc3N3b3JkIGF1dGhcbiAgUmVjb25uZWN0TW9kZVNhbGVzZm9yY2VPQXV0aCA9ICdyZWNvbm5lY3QtbW9kZS1zYWxlc2ZvcmNlLW9hdXRoJyxcblxuICAvLyBXZWIgZGF0YSBjb25uZWN0b3JcbiAgUmVjb25uZWN0TW9kZVdlYkRhdGEgPSAncmVjb25uZWN0LW1vZGUtd2ViLWRhdGEnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gQXV0aGVudGljYXRpb25FbnVtc0F1dGhPcHRpb24ge1xuXG4gIC8vIEZJUlNUXG4gIEF1dGhFeHBsaWNpdCA9ICdhdXRoLW9wdGlvbi1leHBsaWNpdCcsXG5cbiAgLy8gXG4gIEF1dGhFeHBsaWNpdFVuaW5kZW50ZWQgPSAnYXV0aC1vcHRpb24tZXhwbGljaXQtdW5pbmRlbnRlZCcsXG5cbiAgLy8gXG4gIEF1dGhVc2VXaW5kb3dzID0gJ2F1dGgtb3B0aW9uLXVzZS13aW5kb3dzJyxcblxuICAvLyBcbiAgQXV0aFVzZVdpbmRvd3NQcmVmZXJyZWQgPSAnYXV0aC1vcHRpb24td2luZG93cy1wcmVmZXJyZWQnLFxuXG4gIC8vIFxuICBBdXRoVGVyYWRhdGEgPSAnYXV0aC1vcHRpb24tdGVyYWRhdGEnLFxuXG4gIC8vIFxuICBBdXRoTERBUCA9ICdhdXRoLW9wdGlvbi1sZGFwJyxcblxuICAvLyBcbiAgQXV0aFZpcnR1YWxOb2RlID0gJ2F1dGgtb3B0aW9uLXZpcnR1YWwtbm9kZScsXG5cbiAgLy8gXG4gIEF1dGhPRGF0YUFjY291bnQgPSAnYXV0aC1vcHRpb24tb2RhdGEnLFxuXG4gIC8vIFxuICBBdXRoTm9uZSA9ICdhdXRoLW9wdGlvbi1ub25lJyxcblxuICAvLyBcbiAgQXV0aEtlcmJlcm9zID0gJ2F1dGgtb3B0aW9uLWtlcmJlcm9zJyxcblxuICAvLyBJbnRyb2R1Y2VkIGZvciBLZXJiZXJvcyB3aXRoIGZhbGxiYWNrLCByZWNvZ25pemluZyB0aGF0IHRoZSBkYiBtYXkgb3IgbWF5IG5vdCBiZSBvbiBXaW5kb3dzXG4gIEF1dGhJbnRlZ3JhdGVkID0gJ2F1dGgtb3B0aW9uLWludGVncmF0ZWQnLFxuXG4gIC8vIFxuICBBdXRoVXNlcm5hbWUgPSAnYXV0aC1vcHRpb24tdXNlcm5hbWUnLFxuXG4gIC8vIFxuICBBdXRoVXNlcm5hbWVBbmRQYXNzd29yZCA9ICdhdXRoLW9wdGlvbi11c2VybmFtZS1hbmQtcGFzc3dvcmQnLFxuXG4gIC8vIFxuICBBdXRoU1NMID0gJ2F1dGgtb3B0aW9uLXNzbCcsXG5cbiAgLy8gXG4gIEF1dGhIRElFbXVsYXRvciA9ICdhdXRoLWhkaS1lbXVsYXRvcicsXG5cbiAgLy8gXG4gIEF1dGhIRElTZXJ2aWNlID0gJ2F1dGgtaGRpLXNlcnZpY2UnLFxuXG4gIC8vIFxuICBBdXRoSFRUUCA9ICdhdXRoLWh0dHAnLFxuXG4gIC8vIFxuICBBdXRoSFRUUFMgPSAnYXV0aC1odHRwcycsXG5cbiAgLy8gXG4gIEF1dGhBY2Nlc3NOb1NlY3VyaXR5ID0gJ2F1dGgtb3B0aW9uLWFjY2Vzcy1ubycsXG5cbiAgLy8gXG4gIEF1dGhBY2Nlc3NZZXNTZWN1cml0eSA9ICdhdXRoLW9wdGlvbi1hY2Nlc3MteWVzJyxcblxuICAvLyBcbiAgQXV0aE9BdXRoID0gJ2F1dGgtb2F1dGgnLFxuXG4gIC8vIFxuICBBdXRoRm9ybXMgPSAnYXV0aC1mb3JtcycsXG5cbiAgLy8gXG4gIEF1dGhUaGlyZFBhcnR5U1NPID0gJ2F1dGgtdGhpcmQtcGFydHktU1NPJyxcblxuICAvLyBMQVNUXG4gIEF1dGhJbnZhbGlkID0gJ2F1dGgtb3B0aW9uLWludmFsaWQnXG59XG5cbi8vIGRhdGEgc291cmNlIHZhbGlkYXRpb24gbW9kZXNcbmV4cG9ydCBlbnVtIERhdGFTb3VyY2VQYXJzZXJWYWxpZGF0aW9uTW9kZSB7XG5cbiAgLy8gXG4gIFdvcmtib29rTG9hZFZhbGlkYXRpb24gPSAnd29ya2Jvb2stbG9hZC12YWxpZGF0aW9uJyxcblxuICAvLyBcbiAgQXV0b1ZhbGlkYXRpb24gPSAnYXV0by12YWxpZGF0aW9uJyxcblxuICAvLyBcbiAgRm9yY2VWYWxpZGF0aW9uID0gJ2ZvcmNlLXZhbGlkYXRpb24nLFxuXG4gIC8vIFxuICBQcmV2ZW50VmFsaWRhdGlvbiA9ICdwcmV2ZW50LXZhbGlkYXRpb24nLFxuXG4gIC8vIFxuICBQcmV2ZW50VmFsaWRhdGlvbkFuZFRocm93ID0gJ3ByZXZlbnQtdmFsaWRhdGlvbi1hbmQtdGhyb3cnXG59XG5cbi8vIEVudW0gZm9yIERhdGFHcmlkL01ldGFkYXRhR3JpZCBmaWVsZHMgcmVvcmRlcmluZ1xuZXhwb3J0IGVudW0gRmllbGRPcmRlclR5cGUge1xuXG4gIC8vIFxuICBEQVRBU09VUkNFX09SREVSID0gJ2RhdGFzb3VyY2Utb3JkZXInLFxuXG4gIC8vIFxuICBBTFBIQV9QRVJfVEFCTEUgPSAnYWxwaGEtcGVyLXRhYmxlJyxcblxuICAvLyBcbiAgQUxQSEFCRVRJQ0FMX09SREVSID0gJ2FscGhhYmV0aWNhbC1vcmRlcicsXG5cbiAgLy8gXG4gIENVU1RPTV9PUkRFUiA9ICdjdXN0b20tb3JkZXInXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gTGluZUludGVycG9sYXRpb25Nb2RlIHtcblxuICAvLyBcbiAgTElNX0xpbmVhciA9ICdsaW0tbGluZWFyJyxcblxuICAvLyBcbiAgTElNX1N0ZXAgPSAnbGltLXN0ZXAnLFxuXG4gIC8vIFxuICBMSU1fSnVtcCA9ICdsaW0tanVtcCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBMaW5lTWFya2VyUG9zaXRpb24ge1xuXG4gIC8vIFxuICBMTVBfTGVmdCA9ICdsbXAtbGVmdCcsXG5cbiAgLy8gXG4gIExNUF9DZW50ZXIgPSAnbG1wLWNlbnRlcicsXG5cbiAgLy8gXG4gIExNUF9SaWdodCA9ICdsbXAtcmlnaHQnXG59XG5cbi8vIEVudW1lcmF0aW9uIGZvciB0aGUgdHlwZSBvZiBqb2luIGNvbm5lY3RpbmcgdHdvIHRhYmxlc1xuZXhwb3J0IGVudW0gU1FMSm9pblR5cGUge1xuXG4gIC8vIFxuICBTUUxfSW5uZXJKb2luID0gJ3NxbC1pbm5lci1qb2luJyxcblxuICAvLyBcbiAgU1FMX0xlZnRKb2luID0gJ3NxbC1sZWZ0LWpvaW4nLFxuXG4gIC8vIFxuICBTUUxfUmlnaHRKb2luID0gJ3NxbC1yaWdodC1qb2luJyxcblxuICAvLyBcbiAgU1FMX0Z1bGxKb2luID0gJ3NxbC1mdWxsLWpvaW4nLFxuXG4gIC8vIFxuICBTUUxfQ3Jvc3NKb2luID0gJ3NxbC1jcm9zcy1qb2luJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEZvbGRlclJvbGUge1xuXG4gIC8vIFxuICBGT0xERVJfRElNRU5TSU9OUyA9ICdkaW1lbnNpb25zJyxcblxuICAvLyBcbiAgRk9MREVSX01FQVNVUkVTID0gJ21lYXN1cmUnLFxuXG4gIC8vIFxuICBGT0xERVJfR1JPVVBTID0gJ2dyb3VwcycsXG5cbiAgLy8gXG4gIEZPTERFUl9QQVJBTUVURVJTID0gJ3BhcmFtZXRlcnMnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gRmllbGRUeXBlSWNvblNldCB7XG5cbiAgLy8gXG4gIEZUX1NFVF9BTEwgPSAnYWxsJyxcblxuICAvLyBcbiAgRlRfU0VUX0NVQkVfTUVBU1VSRVMgPSAnY3ViZS1tZWFzdXJlcycsXG5cbiAgLy8gXG4gIEZUX1NFVF9DVUJFX0RJTUVOU0lPTlMgPSAnY3ViZS1kaW1lbnNpb25zJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEZpZWxkUGl2b3RTdHJhdGVneSB7XG5cbiAgLy8gXG4gIFBJVk9UX09OX0tFWSA9ICdwaXZvdC1vbi1rZXknLFxuXG4gIC8vIFxuICBQSVZPVF9PTl9BTElBUyA9ICdwaXZvdC1vbi1hbGlhcydcbn1cblxuLy8gXG5leHBvcnQgZW51bSBBbGlhc1R5cGUge1xuXG4gIC8vIFxuICBBTElBU19OT1RTRVQgPSAnYWxpYXMtbm90LXNldCcsXG5cbiAgLy8gXG4gIEFMSUFTX0JFR0lOID0gJ2FsaWFzLWJlZ2luJyxcblxuICAvLyBcbiAgQUxJQVNfS0VZID0gJ2FsaWFzLWtleScsXG5cbiAgLy8gXG4gIEFMSUFTX0tFWV9OQU1FID0gJ2FsaWFzLWtleS1uYW1lJyxcblxuICAvLyBcbiAgQUxJQVNfS0VZX01FRE5BTUUgPSAnYWxpYXMta2V5LW1lZG5hbWUnLFxuXG4gIC8vIFxuICBBTElBU19LRVlfTE9OR05BTUUgPSAnYWxpYXMta2V5LWxvbmduYW1lJyxcblxuICAvLyBcbiAgQUxJQVNfTkFNRSA9ICdhbGlhcy1uYW1lJyxcblxuICAvLyBcbiAgQUxJQVNfTkFNRV9LRVkgPSAnYWxpYXMtbmFtZS1rZXknLFxuXG4gIC8vIFxuICBBTElBU19NRUROQU1FID0gJ2FsaWFzLW1lZG5hbWUnLFxuXG4gIC8vIFxuICBBTElBU19NRUROQU1FX0tFWSA9ICdhbGlhcy1tZWRuYW1lLWtleScsXG5cbiAgLy8gXG4gIEFMSUFTX0xPTkdOQU1FID0gJ2FsaWFzLWxvbmduYW1lJyxcblxuICAvLyBcbiAgQUxJQVNfTE9OR05BTUVfS0VZID0gJ2FsaWFzLWxvbmduYW1lLWtleScsXG5cbiAgLy8gXG4gIEFMSUFTX0VORCA9ICdhbGlhcy1lbmQnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gQWxpYXNUeXBlcyB7XG5cbiAgLy8gXG4gIE1BU0tfQUxJQVNfS0VZID0gJ21hc2stYWxpYXMta2V5JyxcblxuICAvLyBcbiAgTUFTS19BTElBU19OQU1FID0gJ21hc2stYWxpYXMtbmFtZScsXG5cbiAgLy8gXG4gIE1BU0tfQUxJQVNfTUVETkFNRSA9ICdtYXNrLWFsaWFzLW1lZG5hbWUnLFxuXG4gIC8vIFxuICBNQVNLX0FMSUFTX0xPTkdOQU1FID0gJ21hc2stYWxpYXMtbG9uZ25hbWUnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gRmllbGRSb2xlIHtcblxuICAvLyBcbiAgUk9MRV9ESU1FTlNJT04gPSAnZGltZW5zaW9uJyxcblxuICAvLyBcbiAgUk9MRV9NRUFTVVJFID0gJ21lYXN1cmUnLFxuXG4gIC8vIFxuICBST0xFX1VOS05PV04gPSAndW5rbm93bidcbn1cblxuLy8gXG5leHBvcnQgZW51bSBGaWVsZFR5cGUge1xuXG4gIC8vIFxuICBUWVBFX1FVQU5USVRBVElWRSA9ICdxdWFudGl0YXRpdmUnLFxuXG4gIC8vIFxuICBUWVBFX09SRElOQUwgPSAnb3JkaW5hbCcsXG5cbiAgLy8gXG4gIFRZUEVfTk9NSU5BTCA9ICdub21pbmFsJyxcblxuICAvLyBcbiAgVFlQRV9VTktOT1dOID0gJ3Vua25vd24nXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gRGF0YVNvdXJjZU9yZGVyIHtcblxuICAvLyBcbiAgRFNPX0FMUEhBQkVUSUMgPSAnZHNvLWFscGhhYmV0aWMnLFxuXG4gIC8vIFxuICBEU09fT1JESU5BTCA9ICdkc28tb3JkaW5hbCdcbn1cblxuLy8gV2hlcmUgdGhlIGNvbHVtbiBjb21lcyBmcm9tXG5leHBvcnQgZW51bSBDb2x1bW5DbGFzcyB7XG5cbiAgLy8gQSBtZXRhZGF0YSBjb2x1bW4gKE8gb3IgUSBNZWFzdXJlcylcbiAgQ09MX01FVEFEQVRBID0gJ2NvbC1tZXRhZGF0YScsXG5cbiAgLy8gQSBwaHlzaWNhbCBjb2x1bW4gb24gdGhlIGRhdGFiYXNlXG4gIENPTF9EQVRBQkFTRSA9ICdjb2wtZGF0YWJhc2UnLFxuXG4gIC8vIEEgbnVtYmVyaWMgYmluIChhIHNwZWNpYWwga2luZCBvZiBjYWxjdWxhdGVkIGNvbHVtbilcbiAgQ09MX05VTUVSSUNCSU4gPSAnY29sLW51bWVyaWNiaW4nLFxuXG4gIC8vIEEgQ2F0ZWdvcmljYWwgYmluIChncm91cClcbiAgQ09MX0NBVEVHT1JJQ0FMQklOID0gJ2NvbC1jYXRlZ29yaWNhbGJpbicsXG5cbiAgLy8gQSBjb2x1bW4gaW5zdGFuY2VcbiAgQ09MX0lOU1RBTkNFID0gJ2NvbC1pbnN0YW5jZScsXG5cbiAgLy8gQSAocmF3KSBtZHggY2FsY3VsYXRlZCBjb2x1bW5cbiAgQ09MX01EWENBTEMgPSAnY29sLW1keGNhbGMnLFxuXG4gIC8vIEEgdXNlci1kZWZpbmVkIGNhbGN1bGF0ZWQgY29sdW1uLCBUYWJsZWF1IGV4cHJlc3Npb24gc3ludGF4XG4gIENPTF9VU0VSQ0FMQyA9ICdjb2wtdXNlcmNhbGMnLFxuXG4gIC8vIEEgY29sdW1uIHRoYXQgd291bGQgaGF2ZSBiZWVuIENPTF9EQVRBQkFTRSwgYnV0IHRoZSB1bmRlcmx5aW5nIGRhdGFiYXNlIGNvbHVtbiBkb2VzIG5vdCBleGlzdFxuICBDT0xfREFOR0xJTkcgPSAnY29sLWRhbmdsaW5nJyxcblxuICAvLyBBIGNvbHVtbiB0aGF0IGNvbnRhaW5zIGxvY2FsIHN1cHBsaWVkIGRhdGEgKGUuZy4gTGF0aXR1ZGUpXG4gIENPTF9MT0NBTERBVEEgPSAnY29sLWxvY2FsZGF0YScsXG5cbiAgLy8gQSBjb2x1bW4gdGhhdCBjb250YWlucyBhIHZpc3VhbCBtb2RlbCBhdHRyaWJ1dGUgKGUuZy4gUGFuZUluZGV4LCBDb2xvciwgLi4uKVxuICBDT0xfVklTVUFMREFUQSA9ICdjb2wtdmlzdWFsZGF0YScsXG5cbiAgLy8gQSBjb2x1bW4gdGhhdCdzIGEgR3JvdXAgKGEgXCIgU2V0IFwiIGluIFVJIHRlcm1pbm9sb2d5KVxuICBDT0xfR1JPVVAgPSAnY29sLWdyb3VwJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFZUQWdnVHlwZSB7XG5cbiAgLy8gXG4gIFZUQUdHX1NVTSA9ICdzdW0nLFxuXG4gIC8vIFxuICBWVEFHR19BVkcgPSAnYXZnJyxcblxuICAvLyBcbiAgVlRBR0dfTUlOID0gJ21pbicsXG5cbiAgLy8gXG4gIFZUQUdHX01BWCA9ICdtYXgnLFxuXG4gIC8vIFxuICBWVEFHR19TRVJWRVIgPSAnc2VydmVyJyxcblxuICAvLyBcbiAgVlRBR0dfTk9ORSA9ICdub25lJyxcblxuICAvLyBcbiAgVlRBR0dfREVGQVVMVCA9ICdkZWZhdWx0J1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEVudGl0eVR5cGUge1xuXG4gIC8vIFxuICBOb0VudW1lcmF0aW9uRW50aXR5ID0gJ25vLWVudW1lcmF0aW9uLWVudGl0eScsXG5cbiAgLy8gXG4gIERhdGFiYXNlRW50aXR5ID0gJ2RhdGFiYXNlLWVudGl0eScsXG5cbiAgLy8gXG4gIFNjaGVtYUVudGl0eSA9ICdzY2hlbWEtZW50aXR5JyxcblxuICAvLyBcbiAgVGFibGVFbnRpdHkgPSAndGFibGUtZW50aXR5J1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFBpY2tFbnRpdHlTZWFyY2hUeXBlIHtcblxuICAvLyBcbiAgUGlja0VudGl0eVNlYXJjaFR5cGVfU3RhcnRzV2l0aCA9ICdzdGFydHMtd2l0aCcsXG5cbiAgLy8gXG4gIFBpY2tFbnRpdHlTZWFyY2hUeXBlX0NvbnRhaW5zID0gJ2NvbnRhaW5zJyxcblxuICAvLyBcbiAgUGlja0VudGl0eVNlYXJjaFR5cGVfRXhhY3RNYXRjaCA9ICdleGFjdC1tYXRjaCcsXG5cbiAgLy8gXG4gIFBpY2tFbnRpdHlTZWFyY2hUeXBlX0RFRkFVTFQgPSAnZGVmYXVsdCdcbn1cblxuLy8gUGFyc2luZyBtZXRob2RzIGFuZCBzdHJ1Y3R1cmVzLlxuZXhwb3J0IGVudW0gRXhwcmVzc2lvbk9wIHtcblxuICAvLyBcbiAgTG9naWNhbE9yID0gJ29wLWxvZ2ljYWwtb3InLFxuXG4gIC8vIFxuICBMb2dpY2FsQW5kID0gJ29wLWxvZ2ljYWwtYW5kJyxcblxuICAvLyBcbiAgTG9naWNhbE5vdCA9ICdvcC1sb2dpY2FsLW5vdCcsXG5cbiAgLy8gXG4gIEJpdHdpc2VYT3IgPSAnb3AtYml0d2lzZS14b3InLFxuXG4gIC8vIFxuICBCaXR3aXNlT3IgPSAnb3AtYml0d2lzZS1vcicsXG5cbiAgLy8gXG4gIEVxdWFscyA9ICdvcC1lcXVhbHMnLFxuXG4gIC8vIFxuICBHcmVhdGVyID0gJ29wLWdyZWF0ZXInLFxuXG4gIC8vIFxuICBMZXNzID0gJ29wLWxlc3MnLFxuXG4gIC8vIFxuICBHRXF1YWwgPSAnb3AtZ2VxdWFsJyxcblxuICAvLyBcbiAgTEVxdWFsID0gJ29wLWxlcXVhbCcsXG5cbiAgLy8gXG4gIE5FcXVhbCA9ICdvcC1uZXF1YWwnLFxuXG4gIC8vIFxuICBQbHVzID0gJ29wLXBsdXMnLFxuXG4gIC8vIFxuICBNaW51cyA9ICdvcC1taW51cycsXG5cbiAgLy8gXG4gIEJpdHdpc2VBbmQgPSAnb3AtYml0d2lzZS1hbmQnLFxuXG4gIC8vIFxuICBNdWx0aXBseSA9ICdvcC1tdWx0aXBseScsXG5cbiAgLy8gXG4gIERpdmlkZSA9ICdvcC1kaXZpZGUnLFxuXG4gIC8vIFxuICBNb2R1bG8gPSAnb3AtbW9kdWxvJyxcblxuICAvLyBcbiAgUG93ZXIgPSAnb3AtcG93ZXInLFxuXG4gIC8vIFxuICBQb3NpdGl2ZSA9ICdvcC1wb3NpdGl2ZScsXG5cbiAgLy8gXG4gIE5lZ2F0aXZlID0gJ29wLW5lZ2F0aXZlJyxcblxuICAvLyBcbiAgQml0d2lzZU5vdCA9ICdvcC1iaXR3aXNlLW5vdCcsXG5cbiAgLy8gXG4gIENvbHVtbiA9ICdvcC1jb2x1bW4nLFxuXG4gIC8vIFxuICBTdHJpbmcgPSAnb3Atc3RyaW5nJyxcblxuICAvLyBcbiAgTnVtYmVyID0gJ29wLW51bWJlcicsXG5cbiAgLy8gXG4gIERhdGUgPSAnb3AtZGF0ZScsXG5cbiAgLy8gXG4gIEJvb2xlYW4gPSAnb3AtYm9vbGVhbicsXG5cbiAgLy8gXG4gIEZ1bmNhbGwgPSAnb3AtZnVuY2FsbCcsXG5cbiAgLy8gXG4gIExQYXJlbiA9ICdvcC1scGFyZW4nLFxuXG4gIC8vIFxuICBSUGFyZW4gPSAnb3AtcnBhcmVuJyxcblxuICAvLyBcbiAgQ29tbWEgPSAnb3AtY29tbWEnLFxuXG4gIC8vIFxuICBJZGVudCA9ICdvcC1pZGVudCcsXG5cbiAgLy8gXG4gIE51bGwgPSAnb3AtbnVsbCcsXG5cbiAgLy8gXG4gIElmID0gJ29wLWlmJyxcblxuICAvLyBcbiAgRWxzZWlmID0gJ29wLWVsc2VpZicsXG5cbiAgLy8gXG4gIENhc2UgPSAnb3AtY2FzZScsXG5cbiAgLy8gXG4gIFdoZW4gPSAnb3Atd2hlbicsXG5cbiAgLy8gXG4gIFRoZW4gPSAnb3AtdGhlbicsXG5cbiAgLy8gXG4gIEVsc2UgPSAnb3AtZWxzZScsXG5cbiAgLy8gXG4gIEVuZEV4cHIgPSAnb3AtZW5kZXhwcicsXG5cbiAgLy8gXG4gIFdoaXRlc3BhY2UgPSAnb3Atd2hpdGVzcGFjZScsXG5cbiAgLy8gXG4gIENvbW1lbnQgPSAnb3AtY29tbWVudCcsXG5cbiAgLy8gXG4gIExCcmFjZSA9ICdvcC1sYnJhY2UnLFxuXG4gIC8vIFxuICBSQnJhY2UgPSAnb3AtcmJyYWNlJyxcblxuICAvLyBcbiAgQ29sb24gPSAnb3AtY29sb24nLFxuXG4gIC8vIFxuICBCYXIgPSAnb3AtYmFyJyxcblxuICAvLyBcbiAgVHh0eXBlID0gJ29wLXR4dHlwZScsXG5cbiAgLy8gXG4gIEVuZCA9ICdvcC1lbmQnLFxuXG4gIC8vIFxuICBSQnJhY2tldHMgPSAnb3AtcmJyYWNrZXRzJyxcblxuICAvLyB1c2VkIHRvIHJlcHJlc2VudCBpbnZhbGlkIHRva2Vuc1xuICBJbnZhbGlkID0gJ29wLWludmFsaWQnXG59XG5cbi8vIHRyaS1zdGF0ZSBib29sXG5leHBvcnQgZW51bSBUcmlCb29sIHtcblxuICAvLyBcbiAgVEJfSW52YWxpZCA9ICd0cmlib29sLWludmFsaWQnLFxuXG4gIC8vIFxuICBUQl9GYWxzZSA9ICd0cmlib29sLWZhbHNlJyxcblxuICAvLyBcbiAgVEJfVHJ1ZSA9ICd0cmlib29sLXRydWUnXG59XG5cbi8vIHRhYmxlIGNhbGMgcmVmZXJlbmNlIG9wdGlvbnMgc2V0XG5leHBvcnQgZW51bSBSZWZlcmVuY2VPcHRpb25zU2V0IHtcblxuICAvLyBcbiAgUk9TX1JlbGF0aXZlID0gJ3JlZmVyZW5jZS1vcHRpb25zLXNldC1yZWxhdGl2ZScsXG5cbiAgLy8gXG4gIFJPU19GaXhlZCA9ICdyZWZlcmVuY2Utb3B0aW9ucy1zZXQtZml4ZWQnLFxuXG4gIC8vIFxuICBST1NfUGFyYW1ldGVyID0gJ3JlZmVyZW5jZS1vcHRpb25zLXNldC1wYXJhbWV0ZXInLFxuXG4gIC8vIFxuICBST1NfTm9uZSA9ICdyZWZlcmVuY2Utb3B0aW9ucy1zZXQtbm9uZSdcbn1cblxuLy8gd2lkZ2V0IHN0YXRlXG5leHBvcnQgZW51bSBXaWRnZXRTdGF0ZSB7XG5cbiAgLy8gXG4gIEhpZGRlbiA9ICd3aWRnZXQtc3RhdGUtaGlkZGVuJyxcblxuICAvLyBcbiAgRGlzYWJsZWQgPSAnd2lkZ2V0LXN0YXRlLWRpc2FibGVkJyxcblxuICAvLyBcbiAgRW5hYmxlZCA9ICd3aWRnZXQtc3RhdGUtZW5hYmxlZCdcbn1cblxuLy8gcmFuayB0eXBlXG5leHBvcnQgZW51bSBSYW5rVHlwZSB7XG5cbiAgLy8gXG4gIENvbXBldGl0aW9uID0gJ3JhbmstdHlwZS1jb21wZXRpdGlvbicsXG5cbiAgLy8gXG4gIE1vZGlmaWVkQ29tcGV0aXRpb24gPSAncmFuay10eXBlLW1vZGlmaWVkLWNvbXBldGl0aW9uJyxcblxuICAvLyBcbiAgRGVuc2UgPSAncmFuay10eXBlLWRlbnNlJyxcblxuICAvLyBcbiAgVW5pcXVlID0gJ3JhbmstdHlwZS11bmlxdWUnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gVGFibGVDYWxjQ29tbWFuZFR5cGUge1xuXG4gIC8vIFxuICBUYWJsZUNhbGNDb21tYW5kQ2xlYXIgPSAnY2xlYXInXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gQ2FsY05lc3RpbmdMZXZlbCB7XG5cbiAgLy8gXG4gIFByaW1hcnkgPSAncHJpbWFyeScsXG5cbiAgLy8gdXNlZCBvbmx5IGZvciB0eXBlICE9IFRDX0NVU1RPTVxuICBTZWNvbmRhcnkgPSAnc2Vjb25kYXJ5JyxcblxuICAvLyB1c2VkIG9ubHkgZm9yIHR5cGUgPT0gVENfQ1VTVE9NXG4gIE5lc3RlZCA9ICduZXN0ZWQnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gRGVjaW1hbE1vZGUge1xuXG4gIC8vIFxuICBEZWNpbWFsTW9kZUF1dG9tYXRpYyA9ICdhdXRvbWF0aWMnLFxuXG4gIC8vIFxuICBEZWNpbWFsTW9kZU1hbnVhbCA9ICdtYW51YWwnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gVGFibGVDYWxjT3JkZXJpbmdUeXBlIHtcblxuICAvLyBBZHZhbmNlZC4uLlxuICBPVEZpZWxkID0gJ2ZpZWxkJyxcblxuICAvLyBUYWJsZSAoQWNyb3NzKVxuICBPVFJvd3MgPSAncm93cycsXG5cbiAgLy8gVGFibGUgKERvd24pXG4gIE9UQ29sdW1ucyA9ICdjb2x1bW5zJyxcblxuICAvLyBUYWJsZSAoQWNyb3NzIHRoZW4gRG93bilcbiAgT1RUYWJsZSA9ICd0YWJsZScsXG5cbiAgLy8gVGFibGUgKERvd24gdGhlbiBBY3Jvc3MpXG4gIE9UVGFibGVDb2x1bW5QcmVjZWRlbmNlID0gJ3RhYmxlLWNvbHVtbi1wcmVjZWRlbmNlJyxcblxuICAvLyBQYW5lIEFjcm9zc1xuICBPVFJvd0luUGFuZSA9ICdyb3ctaW4tcGFuZScsXG5cbiAgLy8gUGFuZSAoRG93bilcbiAgT1RDb2x1bW5JblBhbmUgPSAnY29sdW1uLWluLXBhbmUnLFxuXG4gIC8vIFBhbmUgKEFjcm9zcyB0aGVuIERvd24pXG4gIE9UUGFuZSA9ICdwYW5lJyxcblxuICAvLyBQYW5lIChEb3duIHRoZW4gQWNyb3NzKVxuICBPVFBhbmVDb2x1bW5QcmVjZWRlbmNlID0gJ3BhbmUtY29sdW1uLXByZWNlZGVuY2UnLFxuXG4gIC8vIENlbGxcbiAgT1RDZWxsSW5QYW5lID0gJ2NlbGwtaW4tcGFuZSdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBUYWJsZUNhbGNTb3J0TW9kZSB7XG5cbiAgLy8gXG4gIFNNX0F1dG9tYXRpYyA9ICdzb3J0LW1vZGUtYXV0b21hdGljJyxcblxuICAvLyBcbiAgU01fQ3VzdG9tID0gJ3NvcnQtbW9kZS1jdXN0b20nXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gVGFibGVDYWxjVGFibGVDYWxjVHlwZSB7XG5cbiAgLy8gbm9uZSAodXNlZCB0byBpbml0aWFsaXplIHZhcmlhYmxlcylcbiAgVENfTk9ORSA9ICdub25lJyxcblxuICAvLyBSdW5uaW5nIFRvdGFsXG4gIFRDX0NVTVVMQVRJVkUgPSAnY3VtdWxhdGl2ZScsXG5cbiAgLy8gTW92aW5nIENhbGN1bGF0aW9uXG4gIFRDX1dJTkRPVyA9ICd3aW5kb3cnLFxuXG4gIC8vIERpZmZlcmVuY2UgRnJvbVxuICBUQ19ESUZGID0gJ2RpZmYnLFxuXG4gIC8vIFBlcmNlbnQgRGlmZmVyZW5jZSBGcm9tXG4gIFRDX1BDVERJRkYgPSAncGN0LWRpZmYnLFxuXG4gIC8vIFBlcmNlbnQgRnJvbVxuICBUQ19QQ1RWQUxVRSA9ICdwY3QtdmFsdWUnLFxuXG4gIC8vIFBlcmNlbnQgT2YgVG90YWxcbiAgVENfUENUVE9UQUwgPSAncGN0LXRvdGFsJyxcblxuICAvLyBSYW5rXG4gIFRDX1JBTksgPSAncmFuaycsXG5cbiAgLy8gUGVyY2VudGlsZVxuICBUQ19QQ1RSQU5LID0gJ3BjdC1yYW5rJyxcblxuICAvLyBDdXN0b21cbiAgVENfQ1VTVE9NID0gJ2N1c3RvbSdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBRdWlja1RhYmxlQ2FsY0NvbW1hbmRUeXBlIHtcblxuICAvLyBcbiAgUXVpY2tUYWJsZUNhbGNDb21tYW5kUnVuVG90YWwgPSAncnVuLXRvdGFsJyxcblxuICAvLyBcbiAgUXVpY2tUYWJsZUNhbGNDb21tYW5kRGlmZmVyZW5jZSA9ICdkaWZmZXJlbmNlJyxcblxuICAvLyBcbiAgUXVpY2tUYWJsZUNhbGNDb21tYW5kUGN0RGlmZiA9ICdwY3QtZGlmZicsXG5cbiAgLy8gXG4gIFF1aWNrVGFibGVDYWxjQ29tbWFuZFBjdFRvdGFsID0gJ3BjdC10b3RhbCcsXG5cbiAgLy8gXG4gIFF1aWNrVGFibGVDYWxjQ29tbWFuZFJhbmsgPSAncmFuaycsXG5cbiAgLy8gXG4gIFF1aWNrVGFibGVDYWxjQ29tbWFuZFBjdFJhbmsgPSAncGN0LXJhbmsnLFxuXG4gIC8vIFxuICBRdWlja1RhYmxlQ2FsY0NvbW1hbmRNb3ZpbmdBdmcgPSAnbW92aW5nLWF2ZycsXG5cbiAgLy8gXG4gIFF1aWNrVGFibGVDYWxjQ29tbWFuZFl0ZCA9ICd5dGQnLFxuXG4gIC8vIFxuICBRdWlja1RhYmxlQ2FsY0NvbW1hbmRDZ3IgPSAnY2dyJyxcblxuICAvLyBcbiAgUXVpY2tUYWJsZUNhbGNDb21tYW5kWU92ZXJZID0gJ3ktb3Zlci15JyxcblxuICAvLyBcbiAgUXVpY2tUYWJsZUNhbGNDb21tYW5kWXRkR3Jvd3RoID0gJ3l0ZC1ncm93dGgnLFxuXG4gIC8vIFxuICBRdWlja1RhYmxlQ2FsY0NvbW1hbmRDdXN0b20gPSAnY3VzdG9tJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFRhYmxlQ2FsY0FkZHJlc3NDb21tYW5kVHlwZSB7XG5cbiAgLy8gXG4gIFRhYmxlQ2FsY0FkZHJlc3NDb21tYW5kUmVsID0gJ3JlbCcsXG5cbiAgLy8gXG4gIFRhYmxlQ2FsY0FkZHJlc3NDb21tYW5kQWJzID0gJ2FicycsXG5cbiAgLy8gXG4gIFRhYmxlQ2FsY0FkZHJlc3NDb21tYW5kUGFyYW0gPSAncGFyYW0nLFxuXG4gIC8vIFxuICBUYWJsZUNhbGNBZGRyZXNzQ29tbWFuZE1vcmUgPSAnbW9yZSdcbn1cblxuLy8gcmVsYXRpdmUgYWRkcmVzc2luZ1xuZXhwb3J0IGVudW0gVGFibGVDYWxjUmVsYXRpdmVBZGRyZXNzIHtcblxuICAvLyBcbiAgUmVsQWRkckZpcnN0ID0gJ3JlbGF0aXZlLWFkZHJlc3MtZmlyc3QnLFxuXG4gIC8vIFxuICBSZWxBZGRyUHJldmlvdXMgPSAncmVsYXRpdmUtYWRkcmVzcy1wcmV2aW91cycsXG5cbiAgLy8gXG4gIFJlbEFkZHJOZXh0ID0gJ3JlbGF0aXZlLWFkZHJlc3MtbmV4dCcsXG5cbiAgLy8gXG4gIFJlbEFkZHJMYXN0ID0gJ3JlbGF0aXZlLWFkZHJlc3MtbGFzdCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBDYXRlZ29yaWNhbEJpbkl0ZW1UeXBlIHtcblxuICAvLyBcbiAgVW5iaW5uZWQgPSAndW5iaW5uZWQnLFxuXG4gIC8vIFxuICBCaW5NZW1iZXIgPSAnY2F0ZWdvcmljYWwtYmluLW1lbWJlcicsXG5cbiAgLy8gXG4gIEJpbiA9ICdjYXRlZ29yaWNhbC1iaW4nXG59XG5cbi8vIFRoZSBjbGFzcyBwcm9wZXJ0aWVzXG5leHBvcnQgZW51bSBDcmVkZW50aWFsVHlwZVByb3BlcnRpZXNGbGFnIHtcblxuICAvLyBcbiAgTm9uZSA9ICdub25lJyxcblxuICAvLyBcbiAgR2VuZXJpY0F1dGhDbGFzcyA9ICdnZW5lcmljLWF1dGgtY2xhc3MnLFxuXG4gIC8vIFxuICBQcm92aWRlckNsYXNzID0gJ3Byb3ZpZGVyLWNsYXNzJyxcblxuICAvLyBcbiAgRGF0YUNvbm5lY3Rpb25DbGFzcyA9ICdkYXRhLWNvbm5lY3Rpb24tY2xhc3MnXG59XG5cbi8vIFRoZSBjb25uZWN0b3IgdHlwZVxuZXhwb3J0IGVudW0gQ29ubmVjdG9yVHlwZSB7XG5cbiAgLy8gXG4gIEludmFsaWQgPSAnaW52YWxpZCcsXG5cbiAgLy8gXG4gIFdlYkRhdGFDb25uZWN0b3IgPSAnd2ViLWRhdGEtY29ubmVjdG9yJyxcblxuICAvLyBcbiAgQ2xvdWRGaWxlQ29ubmVjdG9yID0gJ2Nsb3VkLWZpbGUtY29ubmVjdG9yJyxcblxuICAvLyBcbiAgTGVnYWN5Q29ubmVjdG9yID0gJ2xlZ2FjeS1jb25uZWN0b3InXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gVGFibGVQaWxsSWNvbiB7XG5cbiAgLy8gXG4gIExpc3RJdGVtID0gJ2xpc3QtaXRlbScsXG5cbiAgLy8gXG4gIFNoZWV0ID0gJ3NoZWV0JyxcblxuICAvLyBcbiAgRm91bmRUYWJsZSA9ICdmb3VuZC10YWJsZScsXG5cbiAgLy8gXG4gIE5hbWVkUmFuZ2UgPSAnbmFtZWQtcmFuZ2UnLFxuXG4gIC8vIFxuICBTdG9yZWRQcm9jZWR1cmUgPSAnc3RvcmVkLXByb2NlZHVyZSdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBKb2luVmFsaWRhdGlvbkVycm9yIHtcblxuICAvLyBcbiAgSlZFX05vRXJyb3IgPSAnbm8tZXJyb3InLFxuXG4gIC8vIFxuICBKVkVfRW1wdHlDbGF1c2UgPSAnZW1wdHktY2xhdXNlJyxcblxuICAvLyBcbiAgSlZFX1R5cGVNaXNtYXRjaCA9ICd0eXBlLW1pc21hdGNoJyxcblxuICAvLyBcbiAgSlZFX0ludmFsaWRGaWVsZCA9ICdpbnZhbGlkLWZpZWxkJyxcblxuICAvLyBcbiAgSlZFX0JhZENsYXVzZSA9ICdiYWQtY2xhdXNlJyxcblxuICAvLyBcbiAgSlZFX0JhZElucHV0UmVsYXRpb24gPSAnYmFkLWlucHV0LXJlbGF0aW9uJyxcblxuICAvLyBcbiAgSlZFX1JlcGVhdGVkRmllbGRSZWZlcmVuY2VzID0gJ3JlcGVhdGVkLWZpZWxkLXJlZmVyZW5jZXMnLFxuXG4gIC8vIFxuICBKVkVfVW5zdXBwb3J0ZWRKb2luVHlwZSA9ICd1bnN1cHBvcnRlZC1qb2luLXR5cGUnLFxuXG4gIC8vIFxuICBKVkVfSW52YWxpZENhbGN1bGF0aW9uID0gJ2ludmFsaWQtY2FsY3VsYXRpb24nLFxuXG4gIC8vIFxuICBKVkVfTm9uU3BhdGlhbFR5cGUgPSAnbm9uLXNwYXRpYWwtdHlwZScsXG5cbiAgLy8gXG4gIEpWRV9Ob25TcGF0aWFsQ29tcGFyaXNvbiA9ICdub24tc3BhdGlhbC1jb21wJyxcblxuICAvLyBcbiAgSlZFX1Vua25vd24gPSAndW5rbm93bidcbn1cblxuLy8gXG5leHBvcnQgZW51bSBDb25uZWN0aW9uVHlwZUVudW0ge1xuXG4gIC8vIC1kLXMgaXMgdXNlZCB0byBmb3JjZSB0aGUgZW51bSBnZW5lcmF0b3IgdG8gZ2VuZXJhdGUgRFMgd2l0aCBjYXBpdGFsIGxldHRlcnMgaW4gLmNzIGp1c3QgbGlrZSB0aGUgLmNwcFxuICBJbnZhbGlkRFMgPSAnaW52YWxpZC1kLXMnLFxuXG4gIC8vIFxuICBGaWxlRFMgPSAnZmlsZS1kLXMnLFxuXG4gIC8vIFxuICBTZXJ2ZXJEUyA9ICdzZXJ2ZXItZC1zJyxcblxuICAvLyBcbiAgSW50ZXJuZXREUyA9ICdpbnRlcm5ldC1kLXMnLFxuXG4gIC8vIFxuICBUYWJsZWF1U2VydmVyRFMgPSAndGFibGVhdS1zZXJ2ZXItZC1zJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIENvbm5lY3Rpb25FcnJvclN0YWdlIHtcblxuICAvLyBcbiAgVW5rbm93biA9ICd1bmtub3duJyxcblxuICAvLyBcbiAgQ3JlYXRlUHJvdG9jb2xGYWlsZWQgPSAnY3JlYXRlLXByb3RvY29sLWZhaWxlZCcsXG5cbiAgLy8gXG4gIExvYWRNZXRhZGF0YUZhaWxlZCA9ICdsb2FkLW1ldGFkYXRhLWZhaWxlZCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBTZXRUaWNrT3JpZ2luUmVzdWx0IHtcblxuICAvLyBcbiAgU3VjY2VzcyA9ICdzZXQtdGljay1vcmlnaW4tc3VjY2Vzcy1yZXN1bHQnLFxuXG4gIC8vIFxuICBQYXJzZUZhaWx1cmUgPSAnc2V0LXRpY2stb3JpZ2luLXBhcnNlLWZhaWx1cmUtcmVzdWx0JyxcblxuICAvLyBcbiAgVmFsdWVGYWlsdXJlID0gJ3NldC10aWNrLW9yaWdpbi12YWx1ZS1mYWlsdXJlLXJlc3VsdCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBTZXRUaWNrU3BhY2luZ1Jlc3VsdCB7XG5cbiAgLy8gXG4gIFN1Y2Nlc3MgPSAnc2V0LXRpY2stc3BhY2luZy1zdWNjZXNzLXJlc3VsdCcsXG5cbiAgLy8gXG4gIFBhcnNlRmFpbHVyZSA9ICdzZXQtdGljay1zcGFjaW5nLXBhcnNlLWZhaWx1cmUtcmVzdWx0JyxcblxuICAvLyBcbiAgVmFsdWVGYWlsdXJlID0gJ3NldC10aWNrLXNwYWNpbmctdmFsdWUtZmFpbHVyZS1yZXN1bHQnXG59XG5cbi8vIFRoZSByZXN1bHQgb2Ygc2V0dGluZyBvbmUgZW5kIG9mIGFuIGF4aXMgcmFuZ2VcbmV4cG9ydCBlbnVtIFNldEF4aXNSYW5nZVJlc3VsdCB7XG5cbiAgLy8gXG4gIFN1Y2Nlc3MgPSAnc2V0LWF4aXMtcmFuZ2Utc3VjY2Vzcy1yZXN1bHQnLFxuXG4gIC8vIFxuICBGYWlsdXJlID0gJ3NldC1heGlzLXJhbmdlLWZhaWx1cmUtcmVzdWx0J1xufVxuXG4vLyBUaGUgdHlwZSBvZiBhbiBheGlzJyBleHRlbnRcbmV4cG9ydCBlbnVtIEF4aXNFeHRlbnRUeXBlIHtcblxuICAvLyBcbiAgQXV0b21hdGljID0gJ2F4aXMtZXh0ZW50LWF1dG9tYXRpYycsXG5cbiAgLy8gXG4gIFVuaWZvcm0gPSAnYXhpcy1leHRlbnQtdW5pZm9ybScsXG5cbiAgLy8gXG4gIEluZGVwZW5kZW50ID0gJ2F4aXMtZXh0ZW50LWluZGVwZW5kZW50JyxcblxuICAvLyBcbiAgRml4ZWQgPSAnYXhpcy1leHRlbnQtZml4ZWQnXG59XG5cbi8vIEVudW1lcmF0aW9uIG9mIHVuaXRzIHRpY2sgc3BhY2luZyBjYW4gdGFrZVxuZXhwb3J0IGVudW0gVGlja1NwYWNpbmdVbml0cyB7XG5cbiAgLy8gXG4gIE5vVW5pdHMgPSAnbm8tdW5pdHMnLFxuXG4gIC8vIFxuICBZZWFycyA9ICd5ZWFycycsXG5cbiAgLy8gXG4gIFF1YXJ0ZXJzID0gJ3F1YXJ0ZXJzJyxcblxuICAvLyBcbiAgTW9udGhzID0gJ21vbnRocycsXG5cbiAgLy8gXG4gIFdlZWtzID0gJ3dlZWtzJyxcblxuICAvLyBcbiAgRGF5cyA9ICdkYXlzJyxcblxuICAvLyBcbiAgSG91cnMgPSAnaG91cnMnLFxuXG4gIC8vIFxuICBNaW51dGVzID0gJ21pbnV0ZXMnLFxuXG4gIC8vIFxuICBTZWNvbmRzID0gJ3NlY29uZHMnXG59XG5cbi8vIEVudW1lcmF0aW9uIG9mIHdoZXRoZXIgdG90YWxzIGFyZSBpbmNsdWRlZCBpbiBvciBleGNsdWRlZCBmcm9tIHRoZSBjb2xvciBlbmNvZGluZ1xuZXhwb3J0IGVudW0gVG90YWxzSW5jbHVzaW9uIHtcblxuICAvLyBUb3RhbHMgaW5jbHVkZWQgaW4gY29sb3IgZW5jb2RpbmdcbiAgSW5jbHVkZVRvdGFscyA9ICdpbmNsdWRlLXRvdGFscycsXG5cbiAgLy8gVG90YWxzIGV4Y2x1ZGVkIGZyb20gY29sb3IgZW5jb2RpbmdcbiAgRXhjbHVkZVRvdGFscyA9ICdleGNsdWRlLXRvdGFscydcbn1cblxuLy8gSG93IHRpY2sgbWFya3MgYXJlIGJlaW5nIGNhbGN1bGF0ZWRcbmV4cG9ydCBlbnVtIFRpY2tNYXJrU3RhdGUge1xuXG4gIC8vIFxuICBUaWNrc0F1dG9tYXRpYyA9ICd0aWNrcy1hdXRvbWF0aWMnLFxuXG4gIC8vIFxuICBUaWNrc01hbnVhbCA9ICd0aWNrcy1tYW51YWwnLFxuXG4gIC8vIFxuICBUaWNrc05vbmUgPSAndGlja3MtTm9uZSdcbn1cblxuLy8gU2V0dGluZyBmb3IgdHlwZSBvZiBheGlzIHJhbmdlXG5leHBvcnQgZW51bSBBeGlzUmFuZ2VUeXBlIHtcblxuICAvLyBcbiAgQXV0b21hdGljUmFuZ2UgPSAnYXV0b21hdGljLXJhbmdlJyxcblxuICAvLyBcbiAgVW5pZm9ybVJhbmdlID0gJ3VuaWZvcm0tcmFuZ2UnLFxuXG4gIC8vIFxuICBJbmRlcGVuZGVudFJhbmdlID0gJ2luZGVwZW5kZW50LXJhbmdlJyxcblxuICAvLyBcbiAgRml4ZWRSYW5nZSA9ICdmaXhlZC1yYW5nZScsXG5cbiAgLy8gXG4gIEZpeGVkTWluID0gJ2ZpeGVkLW1pbicsXG5cbiAgLy8gXG4gIEZpeGVkTWF4ID0gJ2ZpeGVkLW1heCcsXG5cbiAgLy8gXG4gIEZpeGVkTWluVW5pZm9ybU1heCA9ICdmaXhlZC1taW4tdW5pZm9ybS1tYXgnLFxuXG4gIC8vIFxuICBGaXhlZE1pbkluZGVwZW5kZW50TWF4ID0gJ2ZpeGVkLW1pbi1pbmRlcGVuZGVudC1tYXgnLFxuXG4gIC8vIFxuICBGaXhlZE1heFVuaWZvcm1NaW4gPSAnZml4ZWQtbWF4LXVuaWZvcm0tbWluJyxcblxuICAvLyBcbiAgRml4ZWRNYXhJbmRlcGVuZGVudE1pbiA9ICdmaXhlZC1tYXgtaW5kZXBlbmRlbnQtbWluJyxcblxuICAvLyBcbiAgRml4ZWRSYW5nZU9yZGluYWwgPSAnZml4ZWQtcmFuZ2Utb3JkaW5hbCdcbn1cblxuLy8gcmVwcmVzZW50cyB0eXBlIG9mIHdpZGdldCBvbiB0aGUgdG9vbGJhciBvZiByaWNoIHRleHQgZWRpdG9yXG5leHBvcnQgZW51bSBSaWNoVGV4dEVkaXRvcldpZGdldEtleSB7XG5cbiAgLy8gXG4gIE5vbmUgPSAnbm9uZScsXG5cbiAgLy8gXG4gIEZvbnRTaXplID0gJ2ZvbnRzaXplJyxcblxuICAvLyBcbiAgRm9udE5hbWUgPSAnZm9udG5hbWUnLFxuXG4gIC8vIFxuICBGb250Q29sb3IgPSAnY29sb3InLFxuXG4gIC8vIFxuICBCb2xkID0gJ2JvbGQnLFxuXG4gIC8vIFxuICBJdGFsaWMgPSAnaXRhbGljJyxcblxuICAvLyBcbiAgVW5kZXJsaW5lID0gJ3VuZGVybGluZScsXG5cbiAgLy8gXG4gIEFsaWduTGVmdCA9ICdqdXN0aWZ5bGVmdCcsXG5cbiAgLy8gXG4gIEFsaWduQ2VudGVyID0gJ2p1c3RpZnljZW50ZXInLFxuXG4gIC8vIFxuICBBbGlnblJpZ2h0ID0gJ2p1c3RpZnlyaWdodCcsXG5cbiAgLy8gXG4gIENsZWFyRm9ybWF0dGluZyA9ICdjbGVhcmZvcm1hdHRpbmcnLFxuXG4gIC8vIFxuICBUYWJsZWF1S2V5d29yZHMgPSAndGFibGVhdWtleXdvcmRzJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIENlbGxTaXplQ2hhbmdlIHtcblxuICAvLyBcbiAgQ1NDX1RhbGxlciA9ICd0YWxsZXInLFxuXG4gIC8vIFxuICBDU0NfU2hvcnRlciA9ICdzaG9ydGVyJyxcblxuICAvLyBcbiAgQ1NDX1dpZGVyID0gJ3dpZGVyJyxcblxuICAvLyBcbiAgQ1NDX05hcnJvd2VyID0gJ25hcnJvd2VyJyxcblxuICAvLyBcbiAgQ1NDX0JpZ2dlciA9ICdiaWdnZXInLFxuXG4gIC8vIFxuICBDU0NfU21hbGxlciA9ICdzbWFsbGVyJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIENlbGxUeXBlRW51bSB7XG5cbiAgLy8gXG4gIENMVF9TcXVhcmUgPSAnc3F1YXJlJyxcblxuICAvLyBcbiAgQ0xUX1RleHQgPSAndGV4dCdcbn1cblxuLy8gcmVwcmVzZW50cyB0eXBlIG9mIGZvcm1hdHRpbmcgcHJlcyBtb2RlbFxuZXhwb3J0IGVudW0gVHlwZU9mRm9ybWF0SXRlbSB7XG5cbiAgLy8gXG4gIEZUX0Zvcm1hdEl0ZW0gPSAnZm9ybWF0SXRlbScsXG5cbiAgLy8gXG4gIEZUX0Zvcm1hdENvbnRhaW5lciA9ICdmb3JtYXRDb250YWluZXInLFxuXG4gIC8vIFxuICBGVF9Gb3JtYXRDb250cm9sID0gJ2Zvcm1hdENvbnRyb2wnXG59XG5cbi8vIHJlcHJlc2VudHMgdHlwZSBvZiBmb3JtYXR0aW5nIGNvbnRhaW5lclxuZXhwb3J0IGVudW0gVHlwZU9mRm9ybWF0Q29udGFpbmVyIHtcblxuICAvLyBcbiAgRlRfRm9ybWF0UGFuZSA9ICdmb3JtYXRQYW5lJyxcblxuICAvLyBcbiAgRlRfRm9ybWF0U2VjdGlvbiA9ICdmb3JtYXRTZWN0aW9uJyxcblxuICAvLyBcbiAgRlRfQ29sbGFwc2libGVTZWN0aW9uID0gJ2NvbGxhcHNpYmxlU2VjdGlvbicsXG5cbiAgLy8gXG4gIEZUX0NvbXBvc2l0ZUNvbnRhaW5lciA9ICdjb21wb3NpdGVDb250YWluZXInLFxuXG4gIC8vIFxuICBGVF9Vbml0Q29udGFpbmVyID0gJ3VuaXRDb250YWluZXInLFxuXG4gIC8vIFxuICBGVF9UYWIgPSAndGFiJyxcblxuICAvLyBcbiAgRlRfVGFiR3JvdXAgPSAndGFiR3JvdXAnXG59XG5cbi8vIHJlcHJlc2VudHMgdHlwZSBvZiBmb3JtYXR0aW5nIGNvbnRyb2xcbmV4cG9ydCBlbnVtIFR5cGVPZkZvcm1hdENvbnRyb2wge1xuXG4gIC8vIFxuICBGVF9Ob25lID0gJ25vbmUnLFxuXG4gIC8vIFxuICBGVF9OdW1lcmljQ29udHJvbCA9ICdudW1lcmljLWNvbnRyb2wnLFxuXG4gIC8vIFxuICBGVF9UZXh0Q29udHJvbCA9ICd0ZXh0LWNvbnRyb2wnLFxuXG4gIC8vIFxuICBGVF9Db2xvckNvbnRyb2wgPSAnY29sb3ItY29udHJvbCcsXG5cbiAgLy8gXG4gIEZUX1NlbGVjdG9yQ29udHJvbCA9ICdzZWxlY3Rvci1jb250cm9sJyxcblxuICAvLyBcbiAgRlRfVG9nZ2xlQ29udHJvbCA9ICd0b2dnbGUtY29udHJvbCdcbn1cblxuLy8gcmVwcmVzZW50cyB0eXBlIG9mIGZvcm1hdHRpbmcgd2lkZ2V0XG5leHBvcnQgZW51bSBGb3JtYXRXaWRnZXRLZXkge1xuXG4gIC8vIFxuICBGV0tfTm9uZSA9ICdub25lJyxcblxuICAvLyBcbiAgRldLX0ZvbnRGYW1pbHkgPSAnZm9udEZhbWlseScsXG5cbiAgLy8gXG4gIEZXS19Gb250U2l6ZSA9ICdmb250U2l6ZScsXG5cbiAgLy8gXG4gIEZXS19Db2xvclN3YXRjaCA9ICdjb2xvclN3YXRjaCcsXG5cbiAgLy8gXG4gIEZXS19Cb2xkID0gJ2JvbGQnLFxuXG4gIC8vIFxuICBGV0tfSXRhbGljcyA9ICdpdGFsaWNzJyxcblxuICAvLyBcbiAgRldLX1VuZGVybGluZSA9ICd1bmRlcmxpbmUnLFxuXG4gIC8vIFxuICBGV0tfTGluZVZpc2liaWxpdHkgPSAnbGluZVZpc2liaWxpdHknLFxuXG4gIC8vIFxuICBGV0tfTGluZVBhdHRlcm4gPSAnbGluZVBhdHRlcm4nLFxuXG4gIC8vIFxuICBGV0tfTGluZVNpemUgPSAnbGluZVNpemUnLFxuXG4gIC8vIFxuICBGV0tfTnVtYmVyVHlwZSA9ICdudW1lcmljVHlwZScsXG5cbiAgLy8gXG4gIEZXS19EZWNpbWFsUGxhY2VzID0gJ2RlY2ltYWxQbGFjZXMnLFxuXG4gIC8vIFxuICBGV0tfVGhvdXNhbmRzU2VwYXJhdG9yID0gJ3Rob3VzYW5kc1NlcGFyYXRvcicsXG5cbiAgLy8gXG4gIEZXS19OdW1lcmljVW5pdHMgPSAnbnVtZXJpY1VuaXRzJ1xufVxuXG4vLyByZXByZXNlbnRzIGlkZW50aWZpZXIgZm9yIGVhY2ggbm9kZSBpbiBmb3JtYXQgcGFuZVxuZXhwb3J0IGVudW0gRm9ybWF0Tm9kZUlkZW50aWZpZXIge1xuXG4gIC8vIFxuICBGb3JtYXRfTm9uZV9LZXkgPSAnbm9uZScsXG5cbiAgLy8gXG4gIEZvcm1hdF9Xb3JrYm9va19LZXkgPSAnd29ya2Jvb2snLFxuXG4gIC8vIFxuICBGb3JtYXRfRm9udF9LZXkgPSAnZm9udCcsXG5cbiAgLy8gXG4gIEZvcm1hdF9Db2xvcl9LZXkgPSAnY29sb3InLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZXNfS2V5ID0gJ2xpbmVzJyxcblxuICAvLyBcbiAgRm9ybWF0X0ZvbnRBbGxfS2V5ID0gJ2ZvbnQtYWxsJyxcblxuICAvLyBcbiAgRm9ybWF0X0ZvbnRBbGxDb250cm9sc19LZXkgPSAnZm9udC1hbGwtY29udHJvbHMnLFxuXG4gIC8vIFxuICBGb3JtYXRfRm9udE1vcmVfS2V5ID0gJ2ZvbnQtbW9yZScsXG5cbiAgLy8gXG4gIEZvcm1hdF9Gb250V29ya3NoZWV0VGl0bGVzX0tleSA9ICd3b3Jrc2hlZXQtdGl0bGVzJyxcblxuICAvLyBcbiAgRm9ybWF0X0ZvbnRUb29sVGlwX0tleSA9ICdmb250LXRvb2x0aXAnLFxuXG4gIC8vIFxuICBGb3JtYXRfRm9udFdvcmtzaGVldF9LZXkgPSAnZm9udC13b3Jrc2hlZXQnLFxuXG4gIC8vIFxuICBGb3JtYXRfRm9udERhc2hUaXRsZXNfS2V5ID0gJ2Rhc2gtdGl0bGVzJyxcblxuICAvLyBcbiAgRm9ybWF0X0ZvbnRTdG9yeVRpdGxlc19LZXkgPSAnc3RvcnktdGl0bGVzJyxcblxuICAvLyBcbiAgRm9ybWF0X0ZvbnRUaXRsZXNDb250cm9sc19LZXkgPSAndGl0bGVzLWNvbnRyb2xzJyxcblxuICAvLyBcbiAgRm9ybWF0X0ZvbnRUb29sdGlwQ29udHJvbHNfS2V5ID0gJ3Rvb2x0aXAtY29udHJvbHMnLFxuXG4gIC8vIFxuICBGb3JtYXRfRm9udFdvcmtzaGVldENvbnRyb2xzX0tleSA9ICd3b3Jrc2hlZXQtY29udHJvbHMnLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZU1vcmVfS2V5ID0gJ2xpbmUtbW9yZScsXG5cbiAgLy8gXG4gIEZvcm1hdF9MaW5lR3JpZF9LZXkgPSAnbGluZS1ncmlkJyxcblxuICAvLyBcbiAgRm9ybWF0X0xpbmVHcmlkVGFic19LZXkgPSAnbGluZS1ncmlkLXRhYnMnLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZVplcm9fS2V5ID0gJ2xpbmUtemVybycsXG5cbiAgLy8gXG4gIEZvcm1hdF9MaW5lWmVyb1RhYnNfS2V5ID0gJ2xpbmUtemVyby10YWJzJyxcblxuICAvLyBcbiAgRm9ybWF0X0xpbmVBeGlzVGlja19LZXkgPSAnbGluZS1heGlzLXRpY2snLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZUF4aXNUaWNrVGFic19LZXkgPSAnbGluZS1heGlzLXRpY2stdGFicycsXG5cbiAgLy8gXG4gIEZvcm1hdF9MaW5lQXhpc1J1bGVyX0tleSA9ICdsaW5lLWF4aXMtcnVsZXInLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZUF4aXNSdWxlclRhYnNfS2V5ID0gJ2xpbmUtYXhpcy1ydWxlci10YWJzJyxcblxuICAvLyBcbiAgRm9ybWF0X0xpbmVIZWFkZXJEaXZpZGVyX0tleSA9ICdsaW5lLWhlYWRlci1kaXZpZGVyJyxcblxuICAvLyBcbiAgRm9ybWF0X0xpbmVIZWFkZXJEaXZpZGVyVGFic19LZXkgPSAnbGluZS1oZWFkZXItZGl2aWRlci10YWJzJyxcblxuICAvLyBcbiAgRm9ybWF0X0xpbmVQYW5lRGl2aWRlcl9LZXkgPSAnbGluZS1wYW5lRGl2aWRlcicsXG5cbiAgLy8gXG4gIEZvcm1hdF9MaW5lUGFuZURpdmlkZXJUYWJzX0tleSA9ICdsaW5lLXBhbmVEaXZpZGVyLXRhYnMnLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZUdyaWRBbGxfS2V5ID0gJ2xpbmUtZ3JpZC1hbGwnLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZUdyaWRSb3dfS2V5ID0gJ2xpbmUtZ3JpZC1yb3cnLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZUdyaWRDb2x1bW5fS2V5ID0gJ2xpbmUtZ3JpZC1jb2x1bW4nLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZVplcm9BbGxfS2V5ID0gJ2xpbmUtemVyby1hbGwnLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZVplcm9Sb3dfS2V5ID0gJ2xpbmUtemVyby1yb3cnLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZVplcm9Db2x1bW5fS2V5ID0gJ2xpbmUtemVyby1jb2x1bW4nLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZUF4aXNUaWNrQWxsX0tleSA9ICdsaW5lLWF4aXMtdGljay1hbGwnLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZUF4aXNUaWNrUm93X0tleSA9ICdsaW5lLWF4aXMtdGljay1yb3cnLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZUF4aXNUaWNrQ29sdW1uX0tleSA9ICdsaW5lLWF4aXMtdGljay1jb2x1bW4nLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZUF4aXNSdWxlckFsbF9LZXkgPSAnbGluZS1heGlzLXJ1bGVyLWFsbCcsXG5cbiAgLy8gXG4gIEZvcm1hdF9MaW5lQXhpc1J1bGVyUm93X0tleSA9ICdsaW5lLWF4aXMtcnVsZXItcm93JyxcblxuICAvLyBcbiAgRm9ybWF0X0xpbmVBeGlzUnVsZXJDb2x1bW5fS2V5ID0gJ2xpbmUtYXhpcy1ydWxlci1jb2x1bW4nLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZVJlZmVyZW5jZV9LZXkgPSAnbGluZS1yZWZlcmVuY2UnLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZURyb3BfS2V5ID0gJ2xpbmUtZHJvcCcsXG5cbiAgLy8gXG4gIEZvcm1hdF9MaW5lVHJlbmRfS2V5ID0gJ2xpbmUtdHJlbmQnLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZVZpc2liaWxpdHlfS2V5ID0gJ2xpbmUtdmlzaWJpbGl0eScsXG5cbiAgLy8gXG4gIEZvcm1hdF9MaW5lUGF0dGVybl9LZXkgPSAnbGluZS1wYXR0ZXJuJyxcblxuICAvLyBcbiAgRm9ybWF0X0xpbmVXaWR0aF9LZXkgPSAnbGluZS13aWR0aCcsXG5cbiAgLy8gXG4gIEZvcm1hdF9MaW5lQ29sb3JfS2V5ID0gJ2xpbmUtY29sb3InLFxuXG4gIC8vIFxuICBGb3JtYXRfVGlja0NvbG9yX0tleSA9ICd0aWNrLWNvbG9yJyxcblxuICAvLyBcbiAgRm9ybWF0X0JvcmRlclBhdHRlcm5fS2V5ID0gJ2JvcmRlci1wYXR0ZXJuJyxcblxuICAvLyBcbiAgRm9ybWF0X0JvcmRlckNvbG9yX0tleSA9ICdib3JkZXItY29sb3InLFxuXG4gIC8vIFxuICBGb3JtYXRfRGl2aWRlckNvbG9yX0tleSA9ICdkaXZpZGVyLWNvbG9yJyxcblxuICAvLyBcbiAgRm9ybWF0X0ZvbnRGYW1pbHlfS2V5ID0gJ2ZvbnQtZmFtaWx5LWtleScsXG5cbiAgLy8gXG4gIEZvcm1hdF9Gb250U2l6ZV9LZXkgPSAnZm9udC1zaXplLWtleScsXG5cbiAgLy8gXG4gIEZvcm1hdF9Cb2xkX0tleSA9ICdib2xkLWtleScsXG5cbiAgLy8gXG4gIEZvcm1hdF9JdGFsaWNzX0tleSA9ICdpdGFsaWNzLWtleScsXG5cbiAgLy8gXG4gIEZvcm1hdF9VbmRlcmxpbmVfS2V5ID0gJ3VuZGVybGluZS1rZXknLFxuXG4gIC8vIFxuICBGb3JtYXRfRm9udENvbG9yX0tleSA9ICdmb250LWNvbG9yLWtleScsXG5cbiAgLy8gXG4gIEZvcm1hdF9OdW1iZXJfQ29udGFpbmVyX0tleSA9ICdudW1iZXItY29udGFpbmVyJyxcblxuICAvLyBcbiAgRm9ybWF0X051bWJlcl9UeXBlX0tleSA9ICdudW1iZXItY29udGFpbmVyLXR5cGUnLFxuXG4gIC8vIFxuICBGb3JtYXRfTnVtYmVyX1VuaXRzX0tleSA9ICdudW1iZXItY29udGFpbmVyLXVuaXRzJyxcblxuICAvLyBcbiAgRm9ybWF0X051bWJlcl9EZWNpbWFsX0tleSA9ICdudW1iZXItY29udGFpbmVyLWRlY2ltYWwnLFxuXG4gIC8vIFxuICBGb3JtYXRfTnVtYmVyX1Rob3VzYW5kc19TZXBhcmF0b3JfS2V5ID0gJ251bWJlci1jb250YWluZXItdGhvdXNhbmRzLXNlcGFyYXRvcicsXG5cbiAgLy8gXG4gIEZvcm1hdF9Gb250UGlja2VyTWluaW1hbF9LZXkgPSAnZm9udC1waWNrZXItbWluaW1hbCcsXG5cbiAgLy8gXG4gIEZvcm1hdF9Gb250UGlja2VyRGVmYXVsdF9LZXkgPSAnZm9udC1waWNrZXItZGVmYXVsdCcsXG5cbiAgLy8gXG4gIEZvcm1hdF9MaW5lUGlja2VyRGVmYXVsdF9LZXkgPSAnbGluZS1waWNrZXItZGVmYXVsdCcsXG5cbiAgLy8gXG4gIEZvcm1hdF9MaW5lUGlja2VyTm9WaXNfS2V5ID0gJ2xpbmUtcGlja2VyLW5vLXZpc2liaWxpdHknLFxuXG4gIC8vIFxuICBGb3JtYXRfTGluZUF4aXNUaWNrUGlja2VyX0tleSA9ICdsaW5lLWF4aXMtdGljay1waWNrZXInXG59XG5cbi8vIEZvcm1hdCBwcmVwZW5kZWQgdG8gZm9ybWF0IHN0cmluZ3MgdG8gc3BlY2lmeSB0eXBlXG5leHBvcnQgZW51bSBGb3JtYXRDb2RlIHtcblxuICAvLyBcbiAgQXV0b0Zvcm1hdCA9ICdhdXRvLWZvcm1hdCcsXG5cbiAgLy8gXG4gIFN5c3RlbUxvbmdEYXRlID0gJ3N5c3RlbS1sb25nLWRhdGUnLFxuXG4gIC8vIFxuICBTeXN0ZW1TaG9ydERhdGUgPSAnc3lzdGVtLXNob3J0LWRhdGUnLFxuXG4gIC8vIFxuICBTeXN0ZW1OdW1iZXIgPSAnc3lzdGVtLW51bWJlcicsXG5cbiAgLy8gXG4gIFN5c3RlbUN1cnJlbmN5ID0gJ3N5c3RlbS1jdXJyZW5jeScsXG5cbiAgLy8gXG4gIFN5c3RlbVRpbWUgPSAnc3lzdGVtLXRpbWUnLFxuXG4gIC8vIFxuICBDdXN0b20gPSAnY3VzdG9tJyxcblxuICAvLyBcbiAgQ3VzdG9tSUNVID0gJ2N1c3RvbS1pY3UnLFxuXG4gIC8vIFxuICBDdXN0b21OdW1iZXIgPSAnY3VzdG9tLW51bWJlcicsXG5cbiAgLy8gXG4gIEN1c3RvbUN1cnJlbmN5ID0gJ2N1c3RvbS1jdXJyZW5jeScsXG5cbiAgLy8gXG4gIEN1c3RvbVNjaWVudGlmaWMgPSAnY3VzdG9tLXNjaWVudGlmaWMnLFxuXG4gIC8vIFxuICBDdXN0b21QZXJjZW50YWdlID0gJ2N1c3RvbS1wZXJjZW50YWdlJ1xufVxuXG4vLyBVbml0cyBzcGVjaWZpZWQgaW4gYSBmb3JtYXQgc3RyaW5nXG5leHBvcnQgZW51bSBVbml0c0Zvcm1hdEVudW0ge1xuXG4gIC8vIFxuICBVbml0c0ZtdE5vbmUgPSAndW5pdHMtbm9uZScsXG5cbiAgLy8gXG4gIFVuaXRzRm10VGhvdXNhbmRzID0gJ3VuaXRzLXRob3VzYW5kcycsXG5cbiAgLy8gXG4gIFVuaXRzRm10TWlsbGlvbnMgPSAndW5pdHMtbWlsbGlvbnMnLFxuXG4gIC8vIFxuICBVbml0c0ZtdEJpbGxpb25zRW5nbGlzaCA9ICd1bml0cy1iaWxsaW9ucy1lbmdsaXNoJyxcblxuICAvLyBcbiAgVW5pdHNGbXRCaWxsaW9uc1N0YW5kYXJkID0gJ3VuaXRzLWJpbGxpb25zLXN0YW5kYXJkJ1xufVxuXG4vLyByZXByZXNlbnRzIHRoZSBjb2xvciBzd2F0Y2ggdGhhdCB3aWxsIGJlIHVzZWQgaW4gdGhlIENvbG9yQ29udHJvbFByZXNNb2RlbFxuZXhwb3J0IGVudW0gQ29sb3JTd2F0Y2hUeXBlIHtcblxuICAvLyBcbiAgQ1NUX0RhcmsgPSAnZGFyay1zd2F0Y2gnLFxuXG4gIC8vIFxuICBDU1RfTGlnaHQgPSAnbGlnaHQtc3dhdGNoJ1xufVxuXG4vLyByZXByZXNlbnRzIHRoZSB0eXBlIG9mIGEgc3R5bGUgcGlja2VyLCBhZmZlY3RpbmcgdGhlIHByZXZpZXcgcmVuZGVyaW5nIGFuZCwgcG9zc2libHksIHRoZSBsYXlvdXRcbmV4cG9ydCBlbnVtIFBpY2tlclR5cGUge1xuXG4gIC8vIFxuICBQVF9Ob25lID0gJ25vbmUnLFxuXG4gIC8vIFxuICBQVF9Gb250ID0gJ2ZvbnQnLFxuXG4gIC8vIFxuICBQVF9MaW5lID0gJ2xpbmUnLFxuXG4gIC8vIFxuICBQVF9OdW1iZXIgPSAnbnVtYmVyJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFVwZGF0ZVNjb3BlIHtcblxuICAvLyBcbiAgVVNfV29ya3NoZWV0ID0gJ3dvcmtzaGVldCcsXG5cbiAgLy8gXG4gIFVTX0Rhc2hib2FyZCA9ICdkYXNoYm9hcmQnLFxuXG4gIC8vIFxuICBVU19RdWlja0ZpbHRlcnMgPSAncXVpY2stZmlsdGVycycsXG5cbiAgLy8gXG4gIFVTX1N0b3J5ID0gJ3N0b3J5J1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFBhcmFtZXRlckN0cmxUeXBlc0Rpc3BsYXlNb2RlIHtcblxuICAvLyBcbiAgTU9ERV9UWVBFX0lOID0gJ3R5cGVfaW4nLFxuXG4gIC8vIFxuICBNT0RFX0NPTVBBQ1RfTElTVCA9ICdjb21wYWN0JyxcblxuICAvLyBcbiAgTU9ERV9MSVNUID0gJ2xpc3QnLFxuXG4gIC8vIFxuICBNT0RFX1NMSURFUiA9ICdzbGlkZXInLFxuXG4gIC8vIFxuICBNT0RFX0RBVEVUSU1FID0gJ2RhdGV0aW1lJ1xufVxuXG4vLyBmbGFncyBmb3IgZGlzcGxheSBvcHRpb25zXG5leHBvcnQgZW51bSBQYXJhbWV0ZXJDdHJsVHlwZXNEaXNwbGF5RmxhZyB7XG5cbiAgLy8gXG4gIERJU1BMQVlfQ1VTVE9NX1RJVExFID0gJ2N1c3RvbV90aXRsZScsXG5cbiAgLy8gXG4gIERJU1BMQVlfSElERV9TTElERVJfU0xJREVSID0gJ2hpZGVfc2xpZGVyX3NsaWRlcicsXG5cbiAgLy8gXG4gIERJU1BMQVlfSElERV9TTElERVJfUkVBRE9VVCA9ICdoaWRlX3NsaWRlcl9yZWFkb3V0JyxcblxuICAvLyBcbiAgRElTUExBWV9ISURFX1NMSURFUl9CVVRUT05TID0gJ2hpZGVfc2xpZGVyX2J1dHRvbnMnXG59XG5cbi8vIFRoZSBmb2xsb3cgc3VwcG9ydHMgMTAyNCBjdXN0b20gcGFsZXR0ZXMsIGVhY2ggd2l0aCA0bSBzaGFwZXMuIEVuY29kaW5nIGlzIHBhbGV0dGUgJmx0OyZsdDsgUGFsZXR0ZVNoaWZ0IHwgc2hhcGUuXG5leHBvcnQgZW51bSBTaGFwZUVuY29kZUNvbnN0YW50cyB7XG5cbiAgLy8gU2hpZnQgdmFsdWUgZm9yIHBhbGV0dGVcbiAgRW5jb2RlUGFsZXR0ZVNoaWZ0ID0gJ3BhbGV0dGVTaGlmdCcsXG5cbiAgLy8gTWFzayBmb3IgZ2V0dGluZyBwYWxldHRlIGZyb20gZW5jb2RlZCB2YWx1ZS4gKFRoZW4gc2hpZnQgZG93bilcbiAgRW5jb2RlUGFsZXR0ZU1hc2sgPSAncGFsZXR0ZU1hc2snLFxuXG4gIC8vIE1hc2sgZm9yIGdldHRpbmcgc2hhcGUgZnJvbSBlbmNvZGVkIHZhbHVlXG4gIEVuY29kZVNoYXBlTWFzayA9ICdzaGFwZU1hc2snXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gU2hhcGVUeXBlIHtcblxuICAvLyBcbiAgU2hhcGVDaXJjbGUgPSAnY2lyY2xlJyxcblxuICAvLyBcbiAgU2hhcGVTcXVhcmUgPSAnc3F1YXJlJyxcblxuICAvLyBcbiAgU2hhcGVQbHVzID0gJ3BsdXMnLFxuXG4gIC8vIFxuICBTaGFwZVRpbWVzID0gJ3RpbWVzJyxcblxuICAvLyBcbiAgU2hhcGVBc3RlcmlzayA9ICdhc3RlcmlzaycsXG5cbiAgLy8gXG4gIFNoYXBlRGlhbW9uZCA9ICdkaWFtb25kJyxcblxuICAvLyBcbiAgU2hhcGVUcmlhbmdsZSA9ICd0cmlhbmdsZScsXG5cbiAgLy8gXG4gIFNoYXBlRG93blRyaWFuZ2xlID0gJ2Rvd24tdHJpYW5nbGUnLFxuXG4gIC8vIFxuICBTaGFwZUxlZnRUcmlhbmdsZSA9ICdsZWZ0LXRyaWFuZ2xlJyxcblxuICAvLyBcbiAgU2hhcGVSaWdodFRyaWFuZ2xlID0gJ3JpZ2h0LXRyaWFuZ2xlJyxcblxuICAvLyBcbiAgTWF4QWxsU2hhcGVzID0gJ2ludmFsaWQnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gU2hhcGVQYWxldHRlIHtcblxuICAvLyBidWlsdC1pbiBwYWxldHRlXG4gIFNoYXBlUGFsZXR0ZUZpbGxlZCA9ICdmaWxsZWQnLFxuXG4gIC8vIGN1c3RvbSBwYWxldHRlc1xuICBTaGFwZVBhbGV0dGVDdXN0b20xID0gJ2N1c3RvbTEnLFxuXG4gIC8vIFxuICBTaGFwZVBhbGV0dGVDdXN0b20yID0gJ2N1c3RvbTInLFxuXG4gIC8vIFxuICBTaGFwZVBhbGV0dGVDdXN0b20zID0gJ2N1c3RvbTMnLFxuXG4gIC8vIFxuICBTaGFwZVBhbGV0dGVDdXN0b200ID0gJ2N1c3RvbTQnLFxuXG4gIC8vIFxuICBTaGFwZVBhbGV0dGVDdXN0b201ID0gJ2N1c3RvbTUnLFxuXG4gIC8vIFxuICBTaGFwZVBhbGV0dGVDdXN0b202ID0gJ2N1c3RvbTYnLFxuXG4gIC8vIFxuICBTaGFwZVBhbGV0dGVDdXN0b203ID0gJ2N1c3RvbTcnLFxuXG4gIC8vIFxuICBTaGFwZVBhbGV0dGVDdXN0b204ID0gJ2N1c3RvbTgnLFxuXG4gIC8vIFxuICBTaGFwZVBhbGV0dGVDdXN0b205ID0gJ2N1c3RvbTknLFxuXG4gIC8vIFxuICBTaGFwZVBhbGV0dGVDdXN0b20xMCA9ICdjdXN0b20xMCcsXG5cbiAgLy8gXG4gIFNoYXBlUGFsZXR0ZUN1c3RvbTExID0gJ2N1c3RvbTExJyxcblxuICAvLyBhbmQgc28gb24uLi5cbiAgU2hhcGVQYWxldHRlQ3VzdG9tMTIgPSAnY3VzdG9tMTInLFxuXG4gIC8vIFxuICBTaGFwZVBhbGV0dGVIaWRkZW4gPSAnaGlkZGVuJ1xufVxuXG4vLyBTaGFwZVR5cGUgYW5kIHBhbGV0dGUgbWFwcGVkIGludG8gYSBzaW5nbGUgdmFsdWUuIFRoaXMgZW51bSBkZXBlbmRzIG9uIFNoYXBlVHlwZSBhbmQgdGhlIGltcGxlbWVudGF0aW9uIG9mIFNoYXBlTWFuYWdlcjo6SW50RW5jb2RlLlxuZXhwb3J0IGVudW0gU2hhcGVJRCB7XG5cbiAgLy8gXG4gIFNoYXBlSURDaXJjbGUgPSAnc2hhcGVJRENpcmNsZScsXG5cbiAgLy8gXG4gIFNoYXBlSURTcXVhcmUgPSAnc2hhcGVJRFNxdWFyZScsXG5cbiAgLy8gXG4gIFNoYXBlSURQbHVzID0gJ3NoYXBlSURQbHVzJyxcblxuICAvLyBcbiAgU2hhcGVJRFRpbWVzID0gJ3NoYXBlSURUaW1lcycsXG5cbiAgLy8gXG4gIFNoYXBlSURBc3RlcmlzayA9ICdzaGFwZUlEQXN0ZXJpc2snLFxuXG4gIC8vIFxuICBTaGFwZUlERGlhbW9uZCA9ICdzaGFwZUlERGlhbW9uZCcsXG5cbiAgLy8gXG4gIFNoYXBlSURUcmlhbmdsZSA9ICdzaGFwZUlEVHJpYW5nbGUnLFxuXG4gIC8vIFxuICBTaGFwZUlERG93blRyaWFuZ2xlID0gJ3NoYXBlSUREb3duVHJpYW5nbGUnLFxuXG4gIC8vIFxuICBTaGFwZUlETGVmdFRyaWFuZ2xlID0gJ3NoYXBlSURMZWZ0VHJpYW5nbGUnLFxuXG4gIC8vIFxuICBTaGFwZUlEUmlnaHRUcmlhbmdsZSA9ICdzaGFwZUlEUmlnaHRUcmlhbmdsZScsXG5cbiAgLy8gXG4gIFNoYXBlSURGaWxsZWRDaXJjbGUgPSAnc2hhcGVJREZpbGxlZENpcmNsZScsXG5cbiAgLy8gXG4gIFNoYXBlSURGaWxsZWRTcXVhcmUgPSAnc2hhcGVJREZpbGxlZFNxdWFyZScsXG5cbiAgLy8gXG4gIFNoYXBlSURGaWxsZWRQbHVzID0gJ3NoYXBlSURGaWxsZWRQbHVzJyxcblxuICAvLyBcbiAgU2hhcGVJREZpbGxlZFRpbWVzID0gJ3NoYXBlSURGaWxsZWRUaW1lcycsXG5cbiAgLy8gXG4gIFNoYXBlSURGaWxsZWRTdGFyID0gJ3NoYXBlSURGaWxsZWRTdGFyJyxcblxuICAvLyBcbiAgU2hhcGVJREZpbGxlZERpYW1vbmQgPSAnc2hhcGVJREZpbGxlZERpYW1vbmQnLFxuXG4gIC8vIFxuICBTaGFwZUlERmlsbGVkVHJpYW5nbGUgPSAnc2hhcGVJREZpbGxlZFRyaWFuZ2xlJyxcblxuICAvLyBcbiAgU2hhcGVJREZpbGxlZERvd25UcmlhbmdsZSA9ICdzaGFwZUlERmlsbGVkRG93blRyaWFuZ2xlJyxcblxuICAvLyBcbiAgU2hhcGVJREZpbGxlZExlZnRUcmlhbmdsZSA9ICdzaGFwZUlERmlsbGVkTGVmdFRyaWFuZ2xlJyxcblxuICAvLyBcbiAgU2hhcGVJREZpbGxlZFJpZ2h0VHJpYW5nbGUgPSAnc2hhcGVJREZpbGxlZFJpZ2h0VHJpYW5nbGUnLFxuXG4gIC8vIDArKFNoYXBlUGFsZXR0ZUhpZGRlbjw8RW5jb2RlUGFsZXR0ZVNoaWZ0KVxuICBTaGFwZUlEVW5zY2FsZWRGaWxsZWRDaXJjbGUgPSAnc2hhcGVJRFVuc2NhbGVkRmlsbGVkQ2lyY2xlJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIExlZ2VuZFR5cGVFbnVtIHtcblxuICAvLyBcbiAgQ29sb3IgPSAnY29sb3InLFxuXG4gIC8vIFxuICBTaGFwZSA9ICdzaGFwZScsXG5cbiAgLy8gXG4gIFNpemUgPSAnc2l6ZScsXG5cbiAgLy8gXG4gIEhpZ2hsaWdodExlZ2VuZCA9ICdoaWdobGlnaHQnLFxuXG4gIC8vIFxuICBNYXAgPSAnbWFwJyxcbn1cblxuLy8gXG5leHBvcnQgZW51bSBCcnVzaFNwZWNpYWxGaWVsZHMge1xuXG4gIC8vIFxuICBCU0ZfSW52YWxpZCA9ICdpbnZhbGlkJyxcblxuICAvLyBcbiAgQlNGX0FsbEZpZWxkcyA9ICdhbGwnLFxuXG4gIC8vIFxuICBCU0ZfRGF0ZXNBbmRUaW1lcyA9ICdkYXRlLXRpbWUnLFxuXG4gIC8vIFxuICBCU0ZfVHJhaWxzID0gJ3RyYWlscycsXG5cbiAgLy8gXG4gIEJTRl9FbnRpcmVUYWJsZSA9ICd0YWJsZSdcbn1cblxuLy8gd2hhdCBraW5kIG9mIGN1cnZlIHdpbGwgYmUgZml0IHRvIHRoZSBkYXRhIGdpdmVuIHJlc3BvbnNlIHZhcmlhYmxlIFkgYW5kIGEgc2luZ2xlIHF1YW50aXRhdGl2ZSBmYWN0b3IgWFxuZXhwb3J0IGVudW0gVHJlbmRMaW5lRml0VHlwZSB7XG5cbiAgLy8gZXF1YXRpb24gPSBZIH4gWCArIDFcbiAgVHJlbmRMaW5lRml0VHlwZV9fTGluZWFyRml0ID0gJ2xpbmVhcicsXG5cbiAgLy8gZXF1YXRpb24gPSBZIH4gWF4yICsgWCArIDFcbiAgVHJlbmRMaW5lRml0VHlwZV9fUG9seW5vbWlhbEZpdCA9ICdwb2x5bm9taWFsJyxcblxuICAvLyBlcXVhdGlvbiA9IFkgfiBsb2coWClcbiAgVHJlbmRMaW5lRml0VHlwZV9fTG9nRml0ID0gJ2xvZycsXG5cbiAgLy8gZXF1YXRpb24gPSBZIH4gZXhwKFgpXG4gIFRyZW5kTGluZUZpdFR5cGVfX0V4cEZpdCA9ICdleHAnLFxuXG4gIC8vIGVxdWF0aW9uID0gWSB+IFheYlxuICBUcmVuZExpbmVGaXRUeXBlX19Qb3dlckZpdCA9ICdwb3dlcidcbn1cblxuLy8gdHlwZSBmb3IgY29tcG9uZW50cyBvZiBhIGNvbW1hbmQgcHJlc2VudGF0aW9uIG1vZGVsXG5leHBvcnQgZW51bSBDb21tYW5kc0VudW1JdGVtVHlwZSB7XG5cbiAgLy8gaXRlbSB3aXRoIHRleHQgYW5kIGFuIGFzc29jaWF0ZWQgY29tbWFuZFxuICBJdGVtID0gJ2l0ZW0nLFxuXG4gIC8vIGR5bmFtaWMgcmFuZ2Ugb2YgaXRlbXMgZ2VuZXJhdGVkIGJ5IGFuIGFzc29jaWF0ZWQgY29tbWFuZFxuICBJdGVtUmFuZ2UgPSAncmFuZ2UnLFxuXG4gIC8vIGxpc3Qgb2Ygc3ViY29tbWFuZHNcbiAgU3ViQ29tbWFuZHNJdGVtID0gJ3N1YmNvbW1hbmRzJyxcblxuICAvLyBsb2dpY2FsIHNlcGFyYXRpb24gYmV0d2VlbiBncm91cHMgb2YgY29tbWFuZHNcbiAgU2VwYXJhdG9ySXRlbSA9ICdzZXBhcmF0b3InXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gUGFyYW1ldGVyVHlwZXNEb21haW5UeXBlIHtcblxuICAvLyBcbiAgRG9tYWluX0FueSA9ICdhbnknLFxuXG4gIC8vIFxuICBEb21haW5fTGlzdCA9ICdsaXN0JyxcblxuICAvLyBcbiAgRG9tYWluX1JhbmdlID0gJ3JhbmdlJ1xufVxuXG4vLyBDYXRlZ29yaWNhbCBmaWx0ZXIgdHlwZSB1c2FnZS5cbmV4cG9ydCBlbnVtIEZpbHRlcnNDYXRlZ29yaWNhbEZpbHRlclR5cGUge1xuXG4gIC8vIFxuICBWaXN1YWwgPSAndmlzdWFsJyxcblxuICAvLyBcbiAgRXh0cmFjdCA9ICdleHRyYWN0JyxcblxuICAvLyBcbiAgR3JvdXAgPSAnZ3JvdXAnXG59XG5cbi8vIEZpbHRlciBjb250ZXh0IGRvbWFpbnNcbmV4cG9ydCBlbnVtIEZpbHRlcnNEb21haW5UeXBlIHtcblxuICAvLyBcbiAgUmVsZXZhbnQgPSAncmVsZXZhbnQnLFxuXG4gIC8vIFxuICBDYXNjYWRpbmcgPSAnY2FzY2FkaW5nJyxcblxuICAvLyBcbiAgQ2FzY2FkaW5nQ29udGV4dCA9ICdjYXNjYWRpbmctY29udGV4dCcsXG5cbiAgLy8gXG4gIENvbnRleHQgPSAnY29udGV4dCcsXG5cbiAgLy8gXG4gIERhdGFiYXNlID0gJ2FsbCdcbn1cblxuLy8gU2VsZWN0aW9uIChyZWxhdGlvbmFsIG9ubHkpIC0gUmFuZ2UgdHlwZVxuZXhwb3J0IGVudW0gRmlsdGVyc1JhbmdlVHlwZSB7XG5cbiAgLy8gXG4gIEFsbCA9ICdhbGwnLFxuXG4gIC8vIFxuICBTZWxlY3RlZCA9ICdzZWxlY3RlZCcsXG5cbiAgLy8gXG4gIE1hbnVhbCA9ICdtYW51YWwnXG59XG5cbi8vIFBhdHRlcm4gYmFzZWQgZmlsdGVyaW5nXG5leHBvcnQgZW51bSBGaWx0ZXJzUGF0dGVyblR5cGUge1xuXG4gIC8vIHN0YXJ0cyB3aXRoIHRoZSBzcGVjaWZpZWQgcGF0dGVybiB0ZXh0XG4gIFN0YXJ0c1dpdGggPSAnc3RhcnRzLXdpdGgnLFxuXG4gIC8vIGVuZHMgd2l0aCB0aGUgc3BlY2lmaWVkIHBhdHRlcm4gdGV4dFxuICBFbmRzV2l0aCA9ICdlbmRzLXdpdGgnLFxuXG4gIC8vIGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgcGF0dGVybiB0ZXh0XG4gIENvbnRhaW5zID0gJ2NvbnRhaW5zJyxcblxuICAvLyBleGFjdGx5IG1hdGNoZXMgdGhlIHNwZWNpZmllZCBwYXR0ZXJuIHRleHRcbiAgRXhhY3RNYXRjaCA9ICdleGFjdC1tYXRjaCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBGaWx0ZXJzTGltaXRUeXBlIHtcblxuICAvLyBcbiAgTm9uZSA9ICdub25lJyxcblxuICAvLyBcbiAgQnlGaWVsZCA9ICdieS1maWVsZCcsXG5cbiAgLy8gXG4gIEZvcm11bGEgPSAnZm9ybXVsYSdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBGaWx0ZXJzQ29uZGl0aW9uVHlwZSB7XG5cbiAgLy8gXG4gIE5vbmUgPSAnbm9uZScsXG5cbiAgLy8gXG4gIEJ5RmllbGQgPSAnYnktZmllbGQnLFxuXG4gIC8vIFxuICBGb3JtdWxhID0gJ2Zvcm11bGEnXG59XG5cbi8vIEhpZ2hlciBsZXZlbCBpbnRlcHJldGF0aW9uIG9mIGEgcmVsYXRpdmUgZGF0ZSBmaWx0ZXIncyByYW5nZVxuZXhwb3J0IGVudW0gRmlsdGVyc1JlbGF0aXZlRGF0ZVJhbmdlVHlwZSB7XG5cbiAgLy8gXG4gIFJhbmdlQ3VycmVudCA9ICdjdXJyJyxcblxuICAvLyBcbiAgUmFuZ2VDdXJyZW50VG9EYXRlID0gJ3RvZGF0ZScsXG5cbiAgLy8gXG4gIFJhbmdlTGFzdDEgPSAnbGFzdCcsXG5cbiAgLy8gXG4gIFJhbmdlTmV4dDEgPSAnbmV4dCcsXG5cbiAgLy8gXG4gIFJhbmdlTGFzdE4gPSAnbGFzdG4nLFxuXG4gIC8vIFxuICBSYW5nZU5leHROID0gJ25leHRuJyxcblxuICAvLyBcbiAgUmFuZ2VPdGhlcjEgPSAnb3RoZXInLFxuXG4gIC8vIFxuICBSYW5nZU90aGVyTiA9ICdvdGhlcm4nLFxuXG4gIC8vIFxuICBSYW5nZUludmFsaWQgPSAnaW52YWxpZCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBGaWx0ZXJzRmlsdGVyTW9kZSB7XG5cbiAgLy8gXG4gIExvY2FsID0gJ2xvY2FsJyxcblxuICAvLyBcbiAgR2xvYmFsID0gJ2dsb2JhbCcsXG5cbiAgLy8gXG4gIFNoYXJlZCA9ICdzaGFyZWQnLFxuXG4gIC8vIFxuICBNYXBwZWRHbG9iYWwgPSAnbWFwcGVkLWdsb2JhbCdcbn1cblxuLy8gSG93IHVuY29tbWl0dGVkIHNlbGVjdGlvbiBzdGF0ZSBpcyBiZWluZyB0cmFja2VkXG5leHBvcnQgZW51bSBGaWx0ZXJzU2VsZWN0aW9uVHJhY2tpbmcge1xuXG4gIC8vIFBhc3NlZCBtZW1iZXJzIGhhdmUgYmVlbiB1cGRhdGVkOiBlYWNoIGluY2x1ZGVkIG1lbWJlcnMnIHNlbGVjdGlvbiBzdGF0ZSBzaG91bGQgYmUgZmxpcHBlZCBmcm9tIGl0cyBpbml0aWFsIHN0YXRlLlxuICBEaWZmZXJlbmNlc0Zyb21CYXNlID0gJ2RpZmZlcmVuY2VzJyxcblxuICAvLyBQYXNzZWQgbWVtYmVycyBzaG91bGQgYmUgdW5jb25kaXRpb25hbGx5IHNlbGVjdGVkXG4gIFNlbGVjdGVkVmFsdWVzID0gJ3NlbGVjdGVkJyxcblxuICAvLyBEb24ndCBzYXZlIGFueSBzZWxlY3Rpb24gc3RhdGUuIFRoaXMgc2F2ZXMgbWVtb3J5IGF0IHRoZSBjb3N0IG9mIG5vdCBiZWluZyByZWNvdmVyYWJsZSBpZiB0aGUgY29udHJvbGxlciBpcyBnb25lLlxuICBOb25lID0gJ2RvbnQtdHJhY2stc2VsZWN0aW9uLXN0YXRlJ1xufVxuXG4vLyBmaWx0ZXIgdXBkYXRlIG9wdGlvbnNcbmV4cG9ydCBlbnVtIEZpbHRlclVwZGF0ZVR5cGUge1xuXG4gIC8vIHNlbGVjdCBhbGwgdmFsdWVzIGluIGZpbHRlclxuICBBTEwgPSAnZmlsdGVyLWFsbCcsXG5cbiAgLy8gYWRkIGl0ZW1zIHRvIGV4aXN0aW5nIGZpbHRlclxuICBBREQgPSAnZmlsdGVyLWFkZCcsXG5cbiAgLy8gcmVtb3ZlIGl0ZW1zIGZyb20gZXhpc3RpbmcgZmlsdGVyXG4gIFJFTU9WRSA9ICdmaWx0ZXItcmVtb3ZlJyxcblxuICAvLyByZXBsYWNlIGV4aXN0aW5nIGZpbHRlciB3aXRoIGdpdmVuIG9wdGlvbnNcbiAgUkVQTEFDRSA9ICdmaWx0ZXItcmVwbGFjZScsXG5cbiAgLy8gbWl4dHVyZSBvZiBhZGQgKyByZW1vdmFsXG4gIERFTFRBID0gJ2ZpbHRlci1kZWx0YScsXG5cbiAgLy8gY2xlYXIgdGhlIGZpbHRlclxuICBDTEVBUiA9ICdmaWx0ZXItY2xlYXInLFxuXG4gIC8vIGVhY2ggdmFsdWUgaW4gdGhlIGZpbHRlciwgYnV0IGluZGl2aWR1YWxseSBzZWxlY3RlZFxuICBFQUNIID0gJ2ZpbHRlci1lYWNoJ1xufVxuXG4vLyBhZGRpdGlvbmFsIGNvbnRleHQgbmVlZGVkIHRvIHBlcmZvcm0gYSBmaWx0ZXIgdXBkYXRlIGNvcnJlY3RseVxuZXhwb3J0IGVudW0gRmlsdGVyVXBkYXRlUXVhbGlmaWVyVHlwZSB7XG5cbiAgLy8gdGhlIGZpbHRlcidzIGRvbWFpbiBpcyBhIG1hbnVhbGx5IHR5cGVkIGluIG9yIHNlbGVjdGVkIHN1YnNldCBvZiB0aGUgZnVsbCBkb21haW5cbiAgQ1VTVE9NX0RPTUFJTiA9ICdmaWx0ZXItdXBkYXRlLWN1c3RvbS1kb21haW4nLFxuXG4gIC8vIG5vIHF1YWxpZmljYXRpb25zIHRvIHRoZSBmaWx0ZXItdXBkYXRlIGFyZSBzcGVjaWZpZWRcbiAgTk9fUVVBTElGSUNBVElPTlMgPSAnZmlsdGVyLXVwZGF0ZS1uby1xdWFsJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEZpbHRlcnNQcmVzZXRUeXBlIHtcblxuICAvLyBrZWVwIHRoZSBzZWxlY3Rpb24gY2hvc2VuIGJ5IHRoZSB1c2VyXG4gIE5vbmUgPSAnbm9uZScsXG5cbiAgLy8gdXBkYXRlIHRvIHRoZSBsYXRlc3QgdmFsdWVzIGluIHRoZSBkYXRhYmFzZVxuICBMYXN0VmFsdWVzID0gJ2xhc3QtdmFsdWVzJyxcblxuICAvLyBcbiAgQ3VycmVudFZhbHVlcyA9ICdjdXJyZW50LXZhbHVlcydcbn1cblxuLy8gTm90ZTogYW4gZW1wdHkgcmFuZ2UgKGJvdGggZW5kcG9pbnRzIE5VTEwpIGlzIGRlZmluZWQgdG8gbWVhbiAnYWxsIG5vbi1OVUxMIHZhbHVlcycsIGJ5IHN5bW1ldHJ5IHdpdGggd2hhdCBhIHNpbmdsZS1lbmRlZCByYW5nZSBtZWFucywgc28gYW4gZW1wdHkgcmFuZ2UgYW5kIEluUmFuZ2UgcmVhbGx5IG1lYW5zIE5vbk51bGwsIGFuZCBhbiBlbXB0eSByYW5nZSBhbmQgblJhbmdlT3JOdWxsIHJlYWxseSBtZWFucyBBbGxcbmV4cG9ydCBlbnVtIEZpbHRlcnNRdWFudGl0YXRpdmVJbmNsdWRlZFZhbHVlcyB7XG5cbiAgLy8gdGhlIGlkZW50aXR5IGZpbHRlciAoZXZlcnl0aGluZyBpcyBpbmNsdWRlZClcbiAgQWxsID0gJ2luY2x1ZGUtYWxsJyxcblxuICAvLyBhbGwgdmFsdWVzIHdoaWNoIGFyZSBub24tbnVsbHB0clxuICBOb25OdWxsID0gJ2luY2x1ZGUtbm9uLW51bGwnLFxuXG4gIC8vIGFsbCB2YWx1ZXMgd2hpY2ggYXJlIG51bGxwdHJcbiAgTnVsbCA9ICdpbmNsdWRlLW51bGwnLFxuXG4gIC8vIG9ubHkgdmFsdWVzIHdpdGhpbiB0aGUgcmFuZ2UgYW5kIHdoaWNoIGFyZSBub24gbnVsbFxuICBJblJhbmdlID0gJ2luY2x1ZGUtcmFuZ2UnLFxuXG4gIC8vIHZhbHVlcyB3aXRoaW4gdGhlIHJhbmdlIG9yIHdoaWNoIGFyZSBudWxscHRyXG4gIEluUmFuZ2VPck51bGwgPSAnaW5jbHVkZS1yYW5nZS1vci1udWxsJyxcblxuICAvLyBhbGwgdmFsdWVzIGFyZSBmaWx0ZXJlZCBvdXQuIFVzZXIgY2Fubm90IGNyZWF0ZSB0aGlzIHR5cGUgb2YgZmlsdGVyIGRpcmVjdGx5OyBpcyBvbmx5IGNyZWF0ZWQgd2hlbiB0d28gZmlsdGVycyBpbnRlcnNlY3QgYW5kIHRoZWlyIGluY2x1ZGVkVmFsdWVzIGNvbmZsaWN0IHNvIHRoZXkgd2lsbCBpbmNsdWRlIG5vdGhpbmcgKGUuZy4sIE5vbk51bGwgd2l0aCBOdWxsKVxuICBOb25lID0gJ2luY2x1ZGUtbm9uZSdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBEYXRlUGVyaW9kVHlwZSB7XG5cbiAgLy8gXG4gIFBlcmlvZFllYXIgPSAneWVhcicsXG5cbiAgLy8gXG4gIFBlcmlvZFF1YXJ0ZXIgPSAncXVhcnRlcicsXG5cbiAgLy8gXG4gIFBlcmlvZE1vbnRoID0gJ21vbnRoJyxcblxuICAvLyBcbiAgUGVyaW9kV2VlayA9ICd3ZWVrJyxcblxuICAvLyBcbiAgUGVyaW9kRGF5ID0gJ2RheScsXG5cbiAgLy8gXG4gIFBlcmlvZEhvdXIgPSAnaG91cicsXG5cbiAgLy8gXG4gIFBlcmlvZE1pbnV0ZSA9ICdtaW51dGUnLFxuXG4gIC8vIFxuICBQZXJpb2RTZWNvbmQgPSAnc2Vjb25kJ1xufVxuXG4vLyBGaXNjYWwgWWVhciBTdGFydGluZyBNb250aFxuZXhwb3J0IGVudW0gRllTVmFsdWVzIHtcblxuICAvLyBcbiAgRllTVmFsdWVzX19GWVNfSkFOVUFSWSA9ICdmeXMtamFudWFyeScsXG5cbiAgLy8gXG4gIEZZU1ZhbHVlc19fRllTX0ZFQlJVQVJZID0gJ2Z5cy1mZWJydWFyeScsXG5cbiAgLy8gXG4gIEZZU1ZhbHVlc19fRllTX01BUkNIID0gJ2Z5cy1tYXJjaCcsXG5cbiAgLy8gXG4gIEZZU1ZhbHVlc19fRllTX0FQUklMID0gJ2Z5cy1hcHJpbCcsXG5cbiAgLy8gXG4gIEZZU1ZhbHVlc19fRllTX01BWSA9ICdmeXMtbWF5JyxcblxuICAvLyBcbiAgRllTVmFsdWVzX19GWVNfSlVORSA9ICdmeXMtanVuZScsXG5cbiAgLy8gXG4gIEZZU1ZhbHVlc19fRllTX0pVTFkgPSAnZnlzLWp1bHknLFxuXG4gIC8vIFxuICBGWVNWYWx1ZXNfX0ZZU19BVUdVU1QgPSAnZnlzLWF1Z3VzdCcsXG5cbiAgLy8gXG4gIEZZU1ZhbHVlc19fRllTX1NFUFRFTUJFUiA9ICdmeXMtc2VwdGVtYmVyJyxcblxuICAvLyBcbiAgRllTVmFsdWVzX19GWVNfT0NUT0JFUiA9ICdmeXMtb2N0b2JlcicsXG5cbiAgLy8gXG4gIEZZU1ZhbHVlc19fRllTX05PVkVNQkVSID0gJ2Z5cy1ub3ZlbWJlcicsXG5cbiAgLy8gXG4gIEZZU1ZhbHVlc19fRllTX0RFQ0VNQkVSID0gJ2Z5cy1kZWNlbWJlcidcbn1cblxuLy8gXG5leHBvcnQgZW51bSBQYWdlTmF2RmxhZ3NGbGFncyB7XG5cbiAgLy8gXG4gIE5vbmUgPSAnbm9uZScsXG5cbiAgLy8gXG4gIExvb3BlZFBsYXliYWNrID0gJ2xvb3BlZC1wbGF5YmFjaycsXG5cbiAgLy8gXG4gIFNob3dEcm9wZG93biA9ICdzaG93LWRyb3Bkb3duJyxcblxuICAvLyBcbiAgU2hvd1NsaWRlciA9ICdzaG93LXNsaWRlcicsXG5cbiAgLy8gXG4gIFNob3dQbGF5Q3RybHMgPSAnc2hvdy1wbGF5LWNvbnRyb2xzJyxcblxuICAvLyBcbiAgU2hvd1RyYWlsQ3RybHMgPSAnc2hvdy10cmFpbC1jb250cm9scycsXG5cbiAgLy8gXG4gIFN5bmNocm9uaXplZCA9ICdzeW5jaHJvbml6ZWQnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gUGFnZVRyYWlsRW51bXNNYXJrc1RvVHJhaWwge1xuXG4gIC8vIFxuICBNYW51YWwgPSAnbWFudWFsJyxcblxuICAvLyBcbiAgQWxsID0gJ2FsbCcsXG5cbiAgLy8gXG4gIFNlbGVjdGVkID0gJ3NlbGVjdGVkJyxcblxuICAvLyBcbiAgSGlnaGxpZ2h0ZWQgPSAnaGlnaGxpZ2h0ZWQnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gUGFnZVRyYWlsRW51bXNUcmFpbFR5cGUge1xuXG4gIC8vIFxuICBNYXJrcyA9ICdtYXJrcycsXG5cbiAgLy8gXG4gIFRyYWlscyA9ICd0cmFpbHMnLFxuXG4gIC8vIFxuICBCb3RoID0gJ2JvdGgnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gUGFnZVRyYWlsRW51bXNUcmFpbEVmZmVjdCB7XG5cbiAgLy8gXG4gIE5vbmUgPSAnbm9uZScsXG5cbiAgLy8gXG4gIFRyYW5zcGFyZW5jeSA9ICd0cmFuc3BhcmVuY3knXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gUGFnZVRyYWlsRW51bXNUcmFpbEZsYWdzIHtcblxuICAvLyBcbiAgTm9GbGFncyA9ICduby1mbGFncycsXG5cbiAgLy8gXG4gIERyYXdJZkhpZ2hsaWdodGVkID0gJ2RyYXctaWYtaGlnaGxpZ2h0ZWQnLFxuXG4gIC8vIFxuICBEcmF3SWZTZWxlY3RlZCA9ICdkcmF3LWlmLXNlbGVjdGVkJyxcblxuICAvLyBcbiAgRHJhd0Fsd2F5cyA9ICdkcmF3LWFsd2F5cycsXG5cbiAgLy8gXG4gIExpbmVzRW5hYmxlZCA9ICdsaW5lcy1lbmFibGVkJ1xufVxuXG4vLyBzaW1wbGUgcGFnZSBjaGFuZ2UgY29tbWFuZHNcbmV4cG9ydCBlbnVtIENoYW5nZVBhZ2VDaGFuZ2VUeXBlIHtcblxuICAvLyBcbiAgVG9GaXJzdCA9ICdmaXJzdCcsXG5cbiAgLy8gXG4gIFRvTmV4dCA9ICduZXh0JyxcblxuICAvLyBcbiAgVG9QcmV2ID0gJ3ByZXZpb3VzJyxcblxuICAvLyBcbiAgVG9MYXN0ID0gJ2xhc3QnXG59XG5cbi8vIFN0b3AsIHN0YXJ0IGluIGEgZGlyZWN0aW9uLCBvciBzZXQgc3BlZWQgb2YgcGFnZSBhbmltYXRpb25cbmV4cG9ydCBlbnVtIENoYW5nZVBhZ2VQYWdlQW5pbWF0aW9uQ29udHJvbCB7XG5cbiAgLy8gXG4gIFN0b3AgPSAnc3RvcCcsXG5cbiAgLy8gXG4gIEZvcndhcmQgPSAnZm9yd2FyZCcsXG5cbiAgLy8gXG4gIEJhY2t3YXJkID0gJ2JhY2t3YXJkJyxcblxuICAvLyBcbiAgU2xvd1NwZWVkID0gJ3Nsb3ctc3BlZWQnLFxuXG4gIC8vIFxuICBOb3JtYWxTcGVlZCA9ICdub3JtYWwtc3BlZWQnLFxuXG4gIC8vIFxuICBGYXN0U3BlZWQgPSAnZmFzdC1zcGVlZCcsXG5cbiAgLy8gXG4gIFRvZ2dsZUZvcndhcmQgPSAndG9nZ2xlLWZvcndhcmQnLFxuXG4gIC8vIFxuICBUb2dnbGVCYWNrd2FyZCA9ICd0b2dnbGUtYmFja3dhcmQnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gTGVnZW5kSXRlbUxheW91dCB7XG5cbiAgLy8gXG4gIExlZ2VuZEl0ZW1MYXlvdXRWZXJ0ID0gJ3ZlcnRpY2FsJyxcblxuICAvLyBcbiAgTGVnZW5kSXRlbUxheW91dEhvcnogPSAnaG9yaXpvbnRhbCcsXG5cbiAgLy8gXG4gIExlZ2VuZEl0ZW1MYXlvdXRHcmlkID0gJ2dyaWQnLFxuXG4gIC8vIFxuICBMZWdlbmRJdGVtTGF5b3V0QXV0byA9ICdhdXRvJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIExlZ2VuZEl0ZW1PcmRlciB7XG5cbiAgLy8gXG4gIExlZ2VuZEl0ZW1PcmRlck5vcm1hbCA9ICdub3JtYWwnLFxuXG4gIC8vIFxuICBMZWdlbmRJdGVtT3JkZXJSZXZlcnNlZCA9ICdyZXZlcnNlZCcsXG5cbiAgLy8gXG4gIExlZ2VuZEl0ZW1PcmRlckF1dG8gPSAnYXV0bydcbn1cblxuLy8gXG5leHBvcnQgZW51bSBTaXplTW9kZSB7XG5cbiAgLy8gXG4gIFNpemVNb2RlQXV0byA9ICdzaXplLW1vZGUtYXV0bycsXG5cbiAgLy8gXG4gIFNpemVNb2RlRml4ZWQgPSAnc2l6ZS1tb2RlLWZpeGVkJyxcblxuICAvLyBcbiAgU2l6ZU1vZGVNaW4gPSAnc2l6ZS1tb2RlLW1pbicsXG5cbiAgLy8gXG4gIFNpemVNb2RlTWF4ID0gJ3NpemUtbW9kZS1tYXgnLFxuXG4gIC8vIFxuICBTaXplTW9kZVJhbmdlID0gJ3NpemUtbW9kZS1yYW5nZScsXG5cbiAgLy8gXG4gIFNpemVNb2RlRml0V2lkdGggPSAnc2l6ZS1tb2RlLWZpdC13aWR0aCcsXG5cbiAgLy8gXG4gIFNpemVNb2RlRml0SGVpZ2h0ID0gJ3NpemUtbW9kZS1oZWlnaHQnLFxuXG4gIC8vIFxuICBTaXplTW9kZVNjcm9sbEhlaWdodCA9ICdzaXplLW1vZGUtc2Nyb2xsLWhlaWdodCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBTaG93TWVDb21tYW5kVHlwZSB7XG5cbiAgLy8gXG4gIFNIT1dNRV9URVhUID0gJ3RleHQnLFxuXG4gIC8vIFxuICBTSE9XTUVfSEVBVCA9ICdoZWF0JyxcblxuICAvLyBcbiAgU0hPV01FX1NQT1RUQUJMRSA9ICdzcG90LXRhYmxlJyxcblxuICAvLyBcbiAgU0hPV01FX0JBUkhPUklaID0gJ2Jhci1ob3JpeicsXG5cbiAgLy8gXG4gIFNIT1dNRV9CQVJTVEFDSyA9ICdiYXItc3RhY2snLFxuXG4gIC8vIFxuICBTSE9XTUVfQkFSU0lERSA9ICdiYXItc2lkZScsXG5cbiAgLy8gXG4gIFNIT1dNRV9CQVJNRUFTVVJFID0gJ2Jhci1tZWFzdXJlJyxcblxuICAvLyBcbiAgU0hPV01FX09MSU5FID0gJ28tbGluZScsXG5cbiAgLy8gXG4gIFNIT1dNRV9RSUxJTkUgPSAncWktbGluZScsXG5cbiAgLy8gXG4gIFNIT1dNRV9PQVJFQSA9ICdvLWFyZWEnLFxuXG4gIC8vIFxuICBTSE9XTUVfUUlBUkVBID0gJ3FpLWFyZWEnLFxuXG4gIC8vIFxuICBTSE9XTUVfQ0lSQ0xFID0gJ2NpcmNsZScsXG5cbiAgLy8gXG4gIFNIT1dNRV9DSVJDTEVTSURFID0gJ2NpcmNsZS1zaWRlJyxcblxuICAvLyBcbiAgU0hPV01FX0dBTlRUID0gJ2dhbnR0JyxcblxuICAvLyBcbiAgU0hPV01FX1NDQVRURVIgPSAnc2NhdHRlcicsXG5cbiAgLy8gXG4gIFNIT1dNRV9TQ0FUVEVSTUFUUklYID0gJ3NjYXR0ZXItbWF0cml4JyxcblxuICAvLyBcbiAgU0hPV01FX0hJU1RPR1JBTSA9ICdoaXN0b2dyYW0nLFxuXG4gIC8vIFxuICBTSE9XTUVfTUFQUyA9ICdtYXBzJyxcblxuICAvLyBcbiAgU0hPV01FX0ZJTExFRE1BUFMgPSAnZmlsbGVkLW1hcHMnLFxuXG4gIC8vIFxuICBTSE9XTUVfUElFUyA9ICdwaWVzJyxcblxuICAvLyBcbiAgU0hPV01FX0RVQUxCQVJMSU5FID0gJ2R1YWwtYmFyLWxpbmUnLFxuXG4gIC8vIFxuICBTSE9XTUVfRFVBTExJTkUgPSAnZHVhbC1saW5lJyxcblxuICAvLyBcbiAgU0hPV01FX0JVTExFVCA9ICdidWxsZXQnLFxuXG4gIC8vIFxuICBTSE9XTUVfVFJFRU1BUCA9ICd0cmVlbWFwJyxcblxuICAvLyBcbiAgU0hPV01FX0JVQkJMRSA9ICdidWJibGUnLFxuXG4gIC8vIFxuICBTSE9XTUVfQk9YUExPVCA9ICdib3gtcGxvdCcsXG59XG5cbi8vIGljb24gdG8gZGlzcGxheSBmb3IgYW4gaXRlbSBvbiBhIHNoZWxmXG5leHBvcnQgZW51bSBTaGVsZkljb25UeXBlIHtcblxuICAvLyBub3Qgc2V0XG4gIFNJVF9Ob25lID0gJ25vbmUnLFxuXG4gIC8vIGluY29tcGF0aWJsZSBmaWVsZFxuICBTSVRfSW5jb21wYXRpYmxlRmllbGQgPSAnaW5jb21wYXRpYmxlLWZpZWxkJyxcblxuICAvLyByZW1vdGVcbiAgU0lUX1JlbW90ZSA9ICdyZW1vdGUnLFxuXG4gIC8vIGdyb3VwXG4gIFNJVF9Hcm91cCA9ICdncm91cCcsXG5cbiAgLy8gdGFibGUgY2FsY1xuICBTSVRfVGFibGVDYWxjID0gJ3RhYmxlLWNhbGMnLFxuXG4gIC8vIGl0ZW0gY29tZXMgZnJvbSBhIHNlY29uZGFyeSBkYXRhc291cmNlXG4gIFNJVF9TZWNvbmRhcnlEYXRhc291cmNlID0gJ3NlY29uZGFyeS1kYXRhc291cmNlJyxcblxuICAvLyB0YWJsZSBjYWxjIGZyb20gYSBzZWNvbmRhcnkgZGF0YXNvdXJjZVxuICBTSVRfVGFibGVDYWxjU2Vjb25kYXJ5ID0gJ3RhYmxlLWNhbGMtc2Vjb25kYXJ5JyxcblxuICAvLyBmb3JlY2FzdFxuICBTSVRfRm9yZWNhc3QgPSAnZm9yZWNhc3QnLFxuXG4gIC8vIGFzY2VuZGluZyBzb3J0XG4gIFNJVF9Tb3J0QXNjID0gJ3NvcnQtYXNjJyxcblxuICAvLyBkZXNjZW5kaW5nIHNvcnRcbiAgU0lUX1NvcnREZXNjID0gJ3NvcnQtZGVzYycsXG5cbiAgLy8gYWxwaGFiZXRpYyBhc2NlbmRpbmcgc29ydFxuICBTSVRfU29ydEFscGhhYmV0aWNBc2MgPSAnc29ydC1hbHBoYWJldGljLWFzYycsXG5cbiAgLy8gYWxwaGFiZXRpYyBkZXNjZW5kaW5nIHNvcnRcbiAgU0lUX1NvcnRBbHBoYWJldGljRGVzYyA9ICdzb3J0LWFscGhhYmV0aWMtZGVzYydcbn1cblxuLy8gaWNvbiB0byBkaXNwbGF5IGZvciBhbiBpdGVtIG9uIHRoZSBmaWx0ZXJzIHNoZWxmXG5leHBvcnQgZW51bSBGaWx0ZXJJY29uVHlwZSB7XG5cbiAgLy8gYSBnbG9iYWwgZmlsdGVyIGljb25cbiAgRklUX0dsb2JhbCA9ICdnbG9iYWwtZmlsdGVyJyxcblxuICAvLyBhIHNoYXJlZCBmaWx0ZXIgaWNvblxuICBGSVRfU2hhcmVkID0gJ3NoYXJlZC1maWx0ZXInLFxuXG4gIC8vIGEgbWFwcGVkIHNoYXJlZCBzb3VyY2UgZmlsdGVyIGljb25cbiAgRklUX01hcHBlZFNoYXJlZFNvdXJjZSA9ICdtYXBwZWQtc2hhcmVkLXNvdXJjZS1maWx0ZXInLFxuXG4gIC8vIGEgbWFwcGVkIHNoYXJlZCB0YXJnZXQgZmlsdGVyIGljb25cbiAgRklUX01hcHBlZFNoYXJlZFRhcmdldCA9ICdtYXBwZWQtc2hhcmVkLXRhcmdldC1maWx0ZXInLFxuXG4gIC8vIGEgc2xpY2luZyBmaWx0ZXIgaWNvblxuICBGSVRfU2xpY2UgPSAnc2xpY2UtZmlsdGVyJyxcblxuICAvLyBhIGxvY2FsIGZpbHRlciBpY29uXG4gIEZJVF9Mb2NhbCA9ICdsb2NhbC1maWx0ZXInLFxuXG4gIC8vIGEgbWFwcGVkIGdsb2JhbCBzb3VyY2UgZmlsdGVyIGljb25cbiAgRklUX01hcHBlZEdsb2JhbFNvdXJjZSA9ICdtYXBwZWQtZ2xvYmFsLXNvdXJjZS1maWx0ZXInLFxuXG4gIC8vIGEgbWFwcGVkIGdsb2JhbCB0YXJnZXQgZmlsdGVyIGljb25cbiAgRklUX01hcHBlZEdsb2JhbFRhcmdldCA9ICdtYXBwZWQtZ2xvYmFsLXRhcmdldC1maWx0ZXInLFxuXG4gIC8vIG5vdCBhIGZpbHRlclxuICBGSVRfTm9uZSA9ICduby1maWx0ZXInXG59XG5cbi8vIHVzZWQgdG8gaW5kaWNhdGUgaWYgYSBmaWVsZCBpcyBwYXJ0IG9mIGEgZHVhbCBheGlzXG5leHBvcnQgZW51bSBJdGVtRHJhd1N0eWxlIHtcblxuICAvLyBub3QgcGFydCBvZiBhIGR1YWwgYXhpc1xuICBJVEVNX0RSQVdTVFlMRV9OT1JNQUwgPSAnbm9ybWFsJyxcblxuICAvLyBmaXJzdCBpdGVtIG9uIGR1YWwgYXhpc1xuICBJVEVNX0RSQVdTVFlMRV9PUEVORUQgPSAnb3BlbmVkJyxcblxuICAvLyBzZWNvbmQgaXRlbSBvbiBkdWFsIGF4aXNcbiAgSVRFTV9EUkFXU1RZTEVfQ0xPU0VEID0gJ2Nsb3NlZCcsXG5cbiAgLy8gbWlkZGxlIGl0ZW0gaW4gYSBzZXQgb2YgbGF5ZXJzXG4gIElURU1fRFJBV1NUWUxFX01JRERMRSA9ICdtaWRkbGUnXG59XG5cbi8vIGluZGljYXRlcyB0aGUgc2l6ZSBvZiBwYWdlIGZvciBhIHNoZWV0XG5leHBvcnQgZW51bSBQYWdlU2l6ZU9wdGlvbiB7XG5cbiAgLy8gXG4gIFBBR0VTSVpFX0xFVFRFUiA9ICdsZXR0ZXInLFxuXG4gIC8vIFxuICBQQUdFU0laRV9MRUdBTCA9ICdsZWdhbCcsXG5cbiAgLy8gXG4gIFBBR0VTSVpFX05PVEUgPSAnbm90ZScsXG5cbiAgLy8gXG4gIFBBR0VTSVpFX0ZPTElPID0gJ2ZvbGlvJyxcblxuICAvLyBcbiAgUEFHRVNJWkVfVEFCTE9JRCA9ICd0YWJsb2lkJyxcblxuICAvLyBcbiAgUEFHRVNJWkVfTEVER0VSID0gJ2xlZGdlcicsXG5cbiAgLy8gXG4gIFBBR0VTSVpFX1NUQVRFTUVOVCA9ICdzdGF0ZW1lbnQnLFxuXG4gIC8vIFxuICBQQUdFU0laRV9FWEVDVVRJVkUgPSAnZXhlY3V0aXZlJyxcblxuICAvLyBcbiAgUEFHRVNJWkVfQTMgPSAnYTMnLFxuXG4gIC8vIFxuICBQQUdFU0laRV9BNCA9ICdhNCcsXG5cbiAgLy8gXG4gIFBBR0VTSVpFX0E1ID0gJ2E1JyxcblxuICAvLyBcbiAgUEFHRVNJWkVfQjQgPSAnYjQnLFxuXG4gIC8vIFxuICBQQUdFU0laRV9CNSA9ICdiNScsXG5cbiAgLy8gXG4gIFBBR0VTSVpFX1FVQVJUTyA9ICdxdWFydG8nLFxuXG4gIC8vIFxuICBQQUdFU0laRV9VTlNQRUNJRklFRCA9ICd1bnNwZWNpZmllZCcsXG59XG5cbi8vIEluZGljYXRlcyB0aGUgbGF5b3V0IG9mIHBhZ2UgZm9yIGEgc2hlZXRcbmV4cG9ydCBlbnVtIFBhZ2VPcmllbnRhdGlvbiB7XG5cbiAgLy8gXG4gIE9yaWVudGF0aW9uUHJpbnRlciA9ICdwcmludGVyJyxcblxuICAvLyBcbiAgT3JpZW50YXRpb25Qb3J0cmFpdCA9ICdwb3J0cmFpdCcsXG5cbiAgLy8gXG4gIE9yaWVudGF0aW9uTGFuZHNjYXBlID0gJ2xhbmRzY2FwZSdcbn1cblxuLy8gSW5kaWNhdGVzIHRoZSBtYW5uZXIgb2Ygc2NhbGluZyBvZiBwYWdlIGZvciBhIHNoZWV0XG5leHBvcnQgZW51bSBTY2FsZU1vZGUge1xuXG4gIC8vIFxuICBTY2FsZUF1dG8gPSAnYXV0bycsXG5cbiAgLy8gXG4gIFNjYWxlUGVyY2VudGFnZSA9ICdwZXJjZW50JyxcblxuICAvLyBcbiAgU2NhbGVGaXRQYWdlcyA9ICdmaXQtcGFnZXMnXG59XG5cbi8vIEluZGljYXRlcyB0aGUgZGVmYXVsdC9zZWxlY3RhYmxlIHNjYWxpbmcgb2YgcGFnZSBmb3IgYSBzaGVldFxuZXhwb3J0IGVudW0gUGFnZVNjYWxpbmdPcHRpb24ge1xuXG4gIC8vIFxuICBTY2FsZVBjdEF1dG8gPSAnYXV0bycsXG5cbiAgLy8gXG4gIFNjYWxlUGN0NDAwID0gJ3BjdDQwMCcsXG5cbiAgLy8gXG4gIFNjYWxlUGN0MjAwID0gJ3BjdDIwMCcsXG5cbiAgLy8gXG4gIFNjYWxlUGN0MTAwID0gJ3BjdDEwMCcsXG5cbiAgLy8gXG4gIFNjYWxlUGN0OTAgPSAncGN0OTAnLFxuXG4gIC8vIFxuICBTY2FsZVBjdDgwID0gJ3BjdDgwJyxcblxuICAvLyBcbiAgU2NhbGVQY3Q3NSA9ICdwY3Q3NScsXG5cbiAgLy8gXG4gIFNjYWxlUGN0NjAgPSAncGN0NjAnLFxuXG4gIC8vIFxuICBTY2FsZVBjdDUwID0gJ3BjdDUwJyxcblxuICAvLyBcbiAgU2NhbGVQY3QyNSA9ICdwY3QyNSdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBTaGVldFJhbmdlIHtcblxuICAvLyBcbiAgU2hlZXRSYW5nZUFsbCA9ICdhbGwnLFxuXG4gIC8vIFxuICBTaGVldFJhbmdlQWN0aXZlID0gJ2FjdGl2ZScsXG5cbiAgLy8gXG4gIFNoZWV0UmFuZ2VTZWxlY3RlZCA9ICdzZWxlY3RlZCdcbn1cblxuLy8gc2hlZXQgdHlwZVxuZXhwb3J0IGVudW0gU2hlZXRUeXBlIHtcblxuICAvLyBcbiAgVFlQRV9XT1JLU0hFRVQgPSAnd29ya3NoZWV0JyxcblxuICAvLyBcbiAgVFlQRV9EQVNIQk9BUkQgPSAnZGFzaGJvYXJkJyxcblxuICAvLyBcbiAgVFlQRV9TVE9SWSA9ICdzdG9yeSdcbn1cblxuLy8gYSBkYXNoYm9hcmQgaW1hZ2UgbWV0cmljJ3MgdHlwZVxuZXhwb3J0IGVudW0gQ2xpZW50VUlNZXRyaWNUeXBlIHtcblxuICAvLyBcbiAgVUlNVF9TY3JvbGxiYXJNZXRyaWMgPSAnc2Nyb2xsYmFyLW1ldHJpYycsXG5cbiAgLy8gXG4gIFVJTVRfUUZpbHRlckZpeGVkTWV0cmljID0gJ3EtZmlsdGVyLWZpeGVkLW1ldHJpYycsXG5cbiAgLy8gXG4gIFVJTVRfUUZpbHRlclNsaWRlck1ldHJpYyA9ICdxLWZpbHRlci1zbGlkZXItbWV0cmljJyxcblxuICAvLyBcbiAgVUlNVF9RRmlsdGVyUmVhZG91dE1ldHJpYyA9ICdxLWZpbHRlci1yZWFkb3V0LW1ldHJpYycsXG5cbiAgLy8gXG4gIFVJTVRfQ0ZpbHRlckZpeGVkTWV0cmljID0gJ2MtZmlsdGVyLWZpeGVkLW1ldHJpYycsXG5cbiAgLy8gbWluaW11bSBjaGVjay9yYWRpb2xpc3QgaXRlbSBzaXplXG4gIFVJTVRfQ0ZpbHRlckl0ZW1NZXRyaWMgPSAnYy1maWx0ZXItaXRlbS1tZXRyaWMnLFxuXG4gIC8vIFxuICBVSU1UX0hGaWx0ZXJGaXhlZE1ldHJpYyA9ICdoLWZpbHRlci1maXhlZC1tZXRyaWMnLFxuXG4gIC8vIG1pbmltdW0gaGllcmFyY2hpY2FsIGl0ZW0gc2l6ZVxuICBVSU1UX0hGaWx0ZXJJdGVtTWV0cmljID0gJ2gtZmlsdGVyLWl0ZW0tbWV0cmljJyxcblxuICAvLyBcbiAgVUlNVF9DbVNsaWRlckZpbHRlck1ldHJpYyA9ICdjbS1zbGlkZXItZmlsdGVyLW1ldHJpYycsXG5cbiAgLy8gXG4gIFVJTVRfQ21Ecm9wZG93bkZpbHRlck1ldHJpYyA9ICdjbS1kcm9wZG93bi1maWx0ZXItbWV0cmljJyxcblxuICAvLyBcbiAgVUlNVF9DbVBhdHRlcm5GaWx0ZXJNZXRyaWMgPSAnY20tcGF0dGVybi1maWx0ZXItbWV0cmljJyxcblxuICAvLyBcbiAgVUlNVF9SRGF0ZUZpbHRlck1ldHJpYyA9ICdyLWRhdGUtZmlsdGVyLW1ldHJpYycsXG5cbiAgLy8gXG4gIFVJTVRfUkRhdGVQRmlsdGVyTWV0cmljID0gJ3ItZGF0ZS1wLWZpbHRlci1tZXRyaWMnLFxuXG4gIC8vIFxuICBVSU1UX1BhcmFtVHlwZUluTWV0cmljID0gJ3BhcmFtLXR5cGUtaW4tbWV0cmljJyxcblxuICAvLyBcbiAgVUlNVF9QYXJhbUNvbXBhY3RMaXN0TWV0cmljID0gJ3BhcmFtLWNvbXBhY3QtbGlzdC1tZXRyaWMnLFxuXG4gIC8vIFxuICBVSU1UX1BhcmFtTGlzdE1ldHJpYyA9ICdwYXJhbS1saXN0LW1ldHJpYycsXG5cbiAgLy8gXG4gIFVJTVRfUGFyYW1TbGlkZXJNZXRyaWMgPSAncGFyYW0tc2xpZGVyLW1ldHJpYycsXG5cbiAgLy8gXG4gIFVJTVRfUGFyYW1EYXRlVGltZU1ldHJpYyA9ICdwYXJhbS1kYXRlLXRpbWUtbWV0cmljJyxcblxuICAvLyBcbiAgVUlNVF9DRmlsdGVyQXBwbHlNZXRyaWMgPSAnYy1maWx0ZXItYXBwbHktbWV0cmljJyxcblxuICAvLyBcbiAgVUlNVF9DbVR5cGVJblNlYXJjaE1ldHJpYyA9ICdjbS10eXBlLWluLXNlYXJjaC1tZXRyaWMnLFxuXG4gIC8vIG1pbmltdW0gY3VzdG9tIGxpc3QgaXRlbSBzaXplXG4gIFVJTVRfQ0ZpbHRlckN1c3RvbUl0ZW1NZXRyaWMgPSAnYy1maWx0ZXItY3VzdG9tLWl0ZW0tbWV0cmljJ1xufVxuXG4vLyBhIHJlZ2lvbiBvZiBhIHZpeiB3aGVyZSBzb3J0IGluZGljYXRvcnMgbWF5IGFwcGVhclxuZXhwb3J0IGVudW0gU29ydFJlZ2lvblR5cGUge1xuXG4gIC8vIFxuICBTUlRfTEFCRUxTX1ggPSAneGhlYWRlcicsXG5cbiAgLy8gXG4gIFNSVF9MQUJFTFNfWSA9ICd5aGVhZGVyJyxcblxuICAvLyBcbiAgU1JUX0xBQkVMU19GSUVMRCA9ICd1bGVmdCcsXG5cbiAgLy8gXG4gIFNSVF9BWElTX0xFRlQgPSAnbGVmdGF4aXMnLFxuXG4gIC8vIFxuICBTUlRfQVhJU19CT1RUT00gPSAnYm90dG9tYXhpcycsXG5cbiAgLy8gXG4gIFNSVF9BWElTX1JJR0hUID0gJ3JpZ2h0YXhpcycsXG5cbiAgLy8gXG4gIFNSVF9BWElTX1RPUCA9ICd0b3BheGlzJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFF0Q3Vyc29yU2hhcGUge1xuXG4gIC8vIFxuICBBcnJvd0N1cnNvciA9ICdhcnJvdycsXG5cbiAgLy8gXG4gIFVwQXJyb3dDdXJzb3IgPSAndXAtYXJyb3cnLFxuXG4gIC8vIFxuICBDcm9zc0N1cnNvciA9ICdjcm9zcycsXG5cbiAgLy8gXG4gIFdhaXRDdXJzb3IgPSAnd2FpdCcsXG5cbiAgLy8gXG4gIElCZWFtQ3Vyc29yID0gJ2liZWFtJyxcblxuICAvLyBcbiAgU2l6ZVZlckN1cnNvciA9ICdzaXplLXZlcicsXG5cbiAgLy8gXG4gIFNpemVIb3JDdXJzb3IgPSAnc2l6ZS1ob3InLFxuXG4gIC8vIFxuICBTaXplQkRpYWdDdXJzb3IgPSAnc2l6ZS1iZGlhZycsXG5cbiAgLy8gXG4gIFNpemVGRGlhZ0N1cnNvciA9ICdzaXplLWZkaWFnJyxcblxuICAvLyBcbiAgU2l6ZUFsbEN1cnNvciA9ICdzaXplLWFsbCcsXG5cbiAgLy8gXG4gIEJsYW5rQ3Vyc29yID0gJ2JsYW5rJyxcblxuICAvLyBcbiAgU3BsaXRWQ3Vyc29yID0gJ3NwbGl0LXYnLFxuXG4gIC8vIFxuICBTcGxpdEhDdXJzb3IgPSAnc3BsaXQtaCcsXG5cbiAgLy8gXG4gIFBvaW50aW5nSGFuZEN1cnNvciA9ICdwb2ludGluZy1oYW5kJyxcblxuICAvLyBcbiAgRm9yYmlkZGVuQ3Vyc29yID0gJ2ZvcmJpZGRlbicsXG5cbiAgLy8gXG4gIFdoYXRzVGhpc0N1cnNvciA9ICd3aGF0cy10aGlzJyxcblxuICAvLyBcbiAgQnVzeUN1cnNvciA9ICdidXN5JyxcblxuICAvLyBcbiAgT3BlbkhhbmRDdXJzb3IgPSAnb3Blbi1oYW5kJyxcblxuICAvLyBcbiAgQ2xvc2VkSGFuZEN1cnNvciA9ICdjbG9zZWQtaGFuZCcsXG5cbiAgLy8gXG4gIERyYWdDb3B5Q3Vyc29yID0gJ2RyYWctY29weScsXG5cbiAgLy8gXG4gIERyYWdNb3ZlQ3Vyc29yID0gJ2RyYWctbW92ZScsXG5cbiAgLy8gXG4gIERyYWdMaW5rQ3Vyc29yID0gJ2RyYWctbGluaydcbn1cblxuLy8gc3BlY2lmaWVzIHZhcmlvdXMgY29tcG9uZW50cyBvZiBhIHZpeiB0aGF0IGFyZSByZW5kZXJlZCBhcyBpbWFnZXNcbmV4cG9ydCBlbnVtIFZpekltYWdlUmVnaW9uIHtcblxuICAvLyB0aGUgbWFpbiB2aXogYXJlYVxuICBWSVpfUkVHSU9OX1RBQkxFID0gJ3ZpeicsXG5cbiAgLy8geSBheGlzIGl0ZW1zXG4gIFZJWl9SRUdJT05fUk9XSEVBREVSUyA9ICd5aGVhZGVyJyxcblxuICAvLyBcbiAgVklaX1JFR0lPTl9MRUZUQVhJUyA9ICdsZWZ0YXhpcycsXG5cbiAgLy8gXG4gIFZJWl9SRUdJT05fUklHSFRBWElTID0gJ3JpZ2h0YXhpcycsXG5cbiAgLy8geCBheGlzIGl0ZW1zXG4gIFZJWl9SRUdJT05fQ09MVU1OSEVBREVSUyA9ICd4aGVhZGVyJyxcblxuICAvLyBcbiAgVklaX1JFR0lPTl9CT1RUT01BWElTID0gJ2JvdHRvbWF4aXMnLFxuXG4gIC8vIFxuICBWSVpfUkVHSU9OX1RPUEFYSVMgPSAndG9wYXhpcycsXG5cbiAgLy8gc3BhY2luZyBhcmVhc1xuICBWSVpfUkVHSU9OX1VQUEVSTEVGVCA9ICd1bGVmdCcsXG5cbiAgLy8gXG4gIFZJWl9SRUdJT05fVVBQRVJSSUdIVCA9ICd1cmlnaHQnLFxuXG4gIC8vIFxuICBWSVpfUkVHSU9OX0xPV0VSTEVGVCA9ICdsbGVmdCcsXG5cbiAgLy8gXG4gIFZJWl9SRUdJT05fTE9XRVJSSUdIVCA9ICdscmlnaHQnLFxuXG4gIC8vIGxhYmVsbGluZyBhcmVhc1xuICBWSVpfUkVHSU9OX1RJVExFID0gJ3RpdGxlJyxcblxuICAvLyBcbiAgVklaX1JFR0lPTl9DQVBUSU9OID0gJ2NhcHRpb24nLFxuXG4gIC8vIGxlZ2VuZCBhcmVhc1xuICBWSVpfUkVHSU9OX0NPTE9STEVHRU5EID0gJ2NvbG9yJyxcblxuICAvLyBcbiAgVklaX1JFR0lPTl9TSEFQRUxFR0VORCA9ICdzaGFwZScsXG5cbiAgLy8gXG4gIFZJWl9SRUdJT05fU0laRUxFR0VORCA9ICdzaXplJyxcblxuICAvLyBcbiAgVklaX1JFR0lPTl9ISUdITElHSFRMRUdFTkQgPSAnaGlnaGxpZ2h0LWxlZ2VuZCcsXG5cbiAgLy8gXG4gIFZJWl9SRUdJT05fTUFQTEVHRU5EID0gJ21hcCcsXG5cbiAgLy8gbGVnZW5kIHRpdGxlc1xuICBWSVpfUkVHSU9OX0NPTE9STEVHRU5EVElUTEUgPSAnY29sb3ItdGl0bGUnLFxuXG4gIC8vIFxuICBWSVpfUkVHSU9OX1NIQVBFTEVHRU5EVElUTEUgPSAnc2hhcGUtdGl0bGUnLFxuXG4gIC8vIFxuICBWSVpfUkVHSU9OX1NJWkVMRUdFTkRUSVRMRSA9ICdzaXplLXRpdGxlJyxcblxuICAvLyBcbiAgVklaX1JFR0lPTl9ISUdITElHSFRMRUdFTkRUSVRMRSA9ICdoaWdobGlnaHQtbGVnZW5kLXRpdGxlJyxcblxuICAvLyBcbiAgVklaX1JFR0lPTl9NQVBMRUdFTkRUSVRMRSA9ICdtYXAtdGl0bGUnLFxuXG4gIC8vIGxlZ2VuZCBib2RpZXNcbiAgVklaX1JFR0lPTl9DT0xPUkxFR0VOREJPRFkgPSAnY29sb3ItYm9keScsXG5cbiAgLy8gXG4gIFZJWl9SRUdJT05fU0hBUEVMRUdFTkRCT0RZID0gJ3NoYXBlLWJvZHknLFxuXG4gIC8vIFxuICBWSVpfUkVHSU9OX1NJWkVMRUdFTkRCT0RZID0gJ3NpemUtYm9keScsXG5cbiAgLy8gXG4gIFZJWl9SRUdJT05fSElHSExJR0hUTEVHRU5EQk9EWSA9ICdoaWdobGlnaHQtbGVnZW5kLWJvZHknLFxuXG4gIC8vIFxuICBWSVpfUkVHSU9OX01BUExFR0VOREJPRFkgPSAnbWFwLWJvZHknLFxuXG4gIC8vIFRoZXNlIGFyZSByZWdpb24gbmFtZXMgKHJhbmdlcyBvZiBvdGhlciBlbnVtcylcbiAgVklaX1JFR0lPTl9FTkQgPSAnZW5kJyxcbn1cblxuLy8gbmFtZXMgb2YgbGVnYWN5IG1lbnUgaXRlbXNcbmV4cG9ydCBlbnVtIExlZ2FjeU1lbnVOYW1lIHtcblxuICAvLyB2aWV3IHVuZGVybHlpbmcgZGF0YVxuICBMTV9OQU1FX1ZJRVdEQVRBID0gJ3ZpZXdkYXRhJyxcblxuICAvLyBleHBvcnQgaW1hZ2VcbiAgTE1fTkFNRV9FWFBPUlRJTUFHRSA9ICdleHBvcnRpbWFnZScsXG5cbiAgLy8gZXhwb3J0IGRhdGFcbiAgTE1fTkFNRV9FWFBPUlREQVRBID0gJ2V4cG9ydGRhdGEnLFxuXG4gIC8vIGV4cG9ydCBhcyBjcm9zc3RhYlxuICBMTV9OQU1FX0VYUE9SVENST1NTVEFCID0gJ2V4cG9ydGNyb3NzdGFiJyxcblxuICAvLyBwcmludCB0byBwZGZcbiAgTE1fTkFNRV9QUklOVCA9ICdwcmludCdcbn1cblxuLy8gc3RhdGVzIG9mIGxlZ2FjeSBtZW51IGl0ZW1zXG5leHBvcnQgZW51bSBMZWdhY3lNZW51U3RhdGUge1xuXG4gIC8vIHZpc2libGUgc3RhdGVcbiAgTE1fU1RBVEVfVklTSUJMRSA9ICd2aXNpYmxlJyxcblxuICAvLyBjaGVja2VkIHN0YXRlXG4gIExNX1NUQVRFX0NIRUNLRUQgPSAnY2hlY2tlZCcsXG5cbiAgLy8gZ3JheWVkIHN0YXRlXG4gIExNX1NUQVRFX0dSQVlFRCA9ICdncmF5ZWQnLFxuXG4gIC8vIHJhZGlvIHN0YXRlXG4gIExNX1NUQVRFX1JBRElPID0gJ3JhZGlvJyxcbn1cblxuLy8gXG5leHBvcnQgZW51bSBNZW1iZXJVbmlxdWVuZXNzVHlwZSB7XG5cbiAgLy8gXG4gIFVuaXF1ZVdpdGhpbkN1YmUgPSAnY3ViZS11bmlxdWUnLFxuXG4gIC8vIFxuICBVbmlxdWVXaXRoaW5IaWVyYXJjaHkgPSAnaGllcmFyY2h5LXVuaXF1ZScsXG5cbiAgLy8gXG4gIFVuaXF1ZVdpdGhpbkxldmVsID0gJ2xldmVsLXVuaXF1ZScsXG5cbiAgLy8gXG4gIFVuaXF1ZVdpdGhpblBhcmVudCA9ICdwYXJlbnQtdW5pcXVlJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIERpbWVuc2lvblR5cGUge1xuXG4gIC8vIGp1c3QgYSByZWd1bGFyIGRpbWVuc2lvbiwgbm8gc3BlY2lhbCBzZW1hbnRpY3NcbiAgUmVndWxhckRpbWVuc2lvbiA9ICdyZWd1bGFyLWRpbWVuc2lvbicsXG5cbiAgLy8gdGhlIG1lYXN1cmVzIGRpbWVuc2lvbiwgd2hpY2ggd2UgZG9uJ3QgbW9kZWwgYXMgc3VjaFxuICBNZWFzdXJlRGltZW5zaW9uID0gJ21lYXN1cmUtZGltZW5zaW9uJyxcblxuICAvLyBhIHRpbWUgZGltZW5zaW9uXG4gIFRpbWVEaW1lbnNpb24gPSAndGltZS1kaW1lbnNpb24nXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gU2NoZW1hVmlld2VyRGF0YVNvdXJjZVR5cGUge1xuXG4gIC8vIFxuICBTVlRfRFNfTk9STUFMID0gJ2RhdGFzb3VyY2UnLFxuXG4gIC8vIFxuICBTVlRfRFNfTk9STUFMX1BSSU1BUlkgPSAnZGF0YXNvdXJjZS1wcmltYXJ5JyxcblxuICAvLyBcbiAgU1ZUX0RTX05PUk1BTF9TRUNPTkRBUlkgPSAnZGF0YXNvdXJjZS1zZWNvbmRhcnknLFxuXG4gIC8vIFxuICBTVlRfRFNfRVhUUkFDVCA9ICdleHRyYWN0JyxcblxuICAvLyBcbiAgU1ZUX0RTX0VYVFJBQ1RfUFJJTUFSWSA9ICdleHRyYWN0LXByaW1hcnknLFxuXG4gIC8vIFxuICBTVlRfRFNfRVhUUkFDVF9TRUNPTkRBUlkgPSAnZXh0cmFjdC1zZWNvbmRhcnknLFxuXG4gIC8vIFxuICBTVlRfRFNfQ1VCRSA9ICdjdWJlJyxcblxuICAvLyBcbiAgU1ZUX0RTX0NVQkVfUFJJTUFSWSA9ICdjdWJlLXByaW1hcnknLFxuXG4gIC8vIFxuICBTVlRfRFNfQ1VCRV9TRUNPTkRBUlkgPSAnY3ViZS1zZWNvbmRhcnknLFxuXG4gIC8vIFxuICBTVlRfRFNfU0VSVkVSID0gJ3NlcnZlcicsXG5cbiAgLy8gXG4gIFNWVF9EU19TRVJWRVJfUFJJTUFSWSA9ICdzZXJ2ZXItcHJpbWFyeScsXG5cbiAgLy8gXG4gIFNWVF9EU19TRVJWRVJfU0VDT05EQVJZID0gJ3NlcnZlci1zZWNvbmRhcnknXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gU2NoZW1hSXRlbVR5cGUge1xuXG4gIC8vIFxuICBJVF9ESU1FTlNJT04gPSAnZGltZW5zaW9uJyxcblxuICAvLyBcbiAgSVRfSElFUkFSQ0hZID0gJ2hpZXJhcmNoeScsXG5cbiAgLy8gXG4gIElUX0xFVkVMID0gJ2xldmVsJyxcblxuICAvLyBcbiAgSVRfQ0FURUdPUklDQUwgPSAnY2F0ZWdvcmljYWwnLFxuXG4gIC8vIFxuICBJVF9NRUFTVVJFID0gJ21lYXN1cmUnLFxuXG4gIC8vIFxuICBJVF9WQUxVRSA9ICd2YWx1ZScsXG5cbiAgLy8gXG4gIElUX0dST1VQID0gJ2dyb3VwJyxcblxuICAvLyBcbiAgSVRfRk9MREVSID0gJ2ZvbGRlcicsXG5cbiAgLy8gXG4gIElUX1RBQkxFID0gJ3RhYmxlJyxcblxuICAvLyBcbiAgSVRfRFJJTExQQVRIID0gJ2RyaWxscGF0aCcsXG5cbiAgLy8gXG4gIElUX1BBUkFNRVRFUiA9ICdwYXJhbWV0ZXInLFxuXG4gIC8vIFxuICBJVF9IRUFERVIgPSAnaGVhZGVyJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZSB7XG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9CTEFOSyA9ICdibGFuaycsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9SRUxBVElPTkFMID0gJ3JlbGF0aW9uYWwnLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVfX1NWVF9BTExfQ1VCRSA9ICdjdWJlJyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX0RBVEVUSU1FID0gJ2RhdGV0aW1lJyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX0RBVEUgPSAnZGF0ZScsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9USU1FID0gJ3RpbWUnLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVfX1NWVF9BTExfVEVYVCA9ICd0ZXh0JyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX05VTUJFUiA9ICdudW1iZXInLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVfX1NWVF9BTExfQ1VSUkVOQ1kgPSAnY3VycmVuY3knLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVfX1NWVF9BTExfQk9PTCA9ICdib29sJyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX0hJRVJBUkNIWSA9ICdoaWVyYXJjaHknLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVfX1NWVF9BTExfTEVWRUwgPSAnbGV2ZWwnLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVfX1NWVF9BTExfQVRUUklCVVRFID0gJ2F0dHJpYnV0ZScsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9GT0xERVJfQ0xPU0VEID0gJ2ZvbGRlci1jbG9zZWQnLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVfX1NWVF9BTExfRk9MREVSX09QRU4gPSAnZm9sZGVyLW9wZW4nLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVfX1NWVF9BTExfR1JPVVAgPSAnZ3JwJyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX0lOVkFMSURfR1JPVVAgPSAnaW52YWxpZC1ncnAnLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVfX1NWVF9BTExfU1ZSX0dSUCA9ICdzdnItZ3JwJyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX0lOVkFMSURfU1ZSX0dSUCA9ICdpbnZhbGlkLXN2ci1ncnAnLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVfX1NWVF9BTExfTlVNRVJJQ19CSU5fTyA9ICdudW1lcmljLWJpbi1vJyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX05VTUVSSUNfQklOX1EgPSAnbnVtZXJpYy1iaW4tcScsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9JTlZBTElEX05VTUVSSUNfQklOID0gJ2ludmFsaWQtbnVtZXJpYy1iaW4nLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVfX1NWVF9BTExfRFJJTExQQVRIID0gJ2RyaWxscGF0aCcsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9WQUxJRF9TWVNHUlAgPSAndmFsaWQtc3lzZ3JwJyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX0lOVkFMSURfU1lTR1JQID0gJ2ludmFsaWQtc3lzZ3JwJyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX0NBVF9CSU4gPSAnY2F0LWJpbicsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9DQVRfQklOX0dFT0dBUEhJQ19PID0gJ2NhdC1iaW4tZ2VvZ2FwaGljLW8nLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVfX1NWVF9BTExfQ0FUX0JJTl9HRU9HQVBISUNfUSA9ICdjYXQtYmluLWdlb2dhcGhpYy1xJyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX0lOVkFMSURfQ0FUX0JJTiA9ICdpbnZhbGlkLWNhdC1iaW4nLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVfX1NWVF9BTExfSU5WQUxJRF9DQVRfQklOX0dFT0dBUEhJQ19PID0gJ2ludmFsaWQtY2F0LWJpbi1nZW9nYXBoaWMtbycsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9JTlZBTElEX0NBVF9CSU5fR0VPR0FQSElDX1EgPSAnaW52YWxpZC1jYXQtYmluLWdlb2dhcGhpYy1xJyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX0dFT0dSQVBISUMgPSAnZ2VvZ3JhcGhpYycsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9JTlZBTElEX0dFT0dSQVBISUNfTyA9ICdpbnZhbGlkLWdlb2dyYXBoaWMtbycsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9JTlZBTElEX0dFT0dSQVBISUNfUSA9ICdpbnZhbGlkLWdlb2dyYXBoaWMtcScsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9JREVOVF9TRVQgPSAnaWRlbnQtc2V0JyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX0lOVkFMSURfSURFTlRfU0VUID0gJ2ludmFsaWQtaWRlbnQtc2V0JyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX1RBQkxFID0gJ3RhYmxlJyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX05PTkUgPSAnbm9uZSdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBTY2hlbWFWaWV3ZXJGaWVsZEN1YmVNZWFzdXJlVHlwZSB7XG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQ3ViZU1lYXN1cmVUeXBlX19TVlRfQ1VCRV9NX0JMQU5LID0gJ2N1YmUtbS1ibGFuaycsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQ3ViZU1lYXN1cmVUeXBlX19TVlRfQ1VCRV9NX0ZPTERFUl9DTE9TRUQgPSAnY3ViZS1tLWZvbGRlci1jbG9zZWQnLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEN1YmVNZWFzdXJlVHlwZV9fU1ZUX0NVQkVfTV9GT0xERVJfT1BFTiA9ICdjdWJlLW0tZm9sZGVyLW9wZW4nLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEN1YmVNZWFzdXJlVHlwZV9fU1ZUX0NVQkVfTV9EQVRFVElNRSA9ICdjdWJlLW0tZGF0ZXRpbWUnLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEN1YmVNZWFzdXJlVHlwZV9fU1ZUX0NVQkVfTV9EQVRFID0gJ2N1YmUtbS1kYXRlJyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRDdWJlTWVhc3VyZVR5cGVfX1NWVF9DVUJFX01fVElNRSA9ICdjdWJlLW0tdGltZScsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQ3ViZU1lYXN1cmVUeXBlX19TVlRfQ1VCRV9NX1RFWFQgPSAnY3ViZS1tLXRleHQnLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEN1YmVNZWFzdXJlVHlwZV9fU1ZUX0NVQkVfTV9OVU1CRVIgPSAnY3ViZS1tLW51bWJlcicsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQ3ViZU1lYXN1cmVUeXBlX19TVlRfQ1VCRV9NX0NVUlJFTkNZID0gJ2N1YmUtbS1jdXJyZW5jeScsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQ3ViZU1lYXN1cmVUeXBlX19TVlRfQ1VCRV9NX0JPT0xFQU4gPSAnY3ViZS1tLWJvb2xlYW4nLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEN1YmVNZWFzdXJlVHlwZV9fU1ZUX0NVQkVfTV9HRU9HUkFQSElDID0gJ2N1YmUtbS1nZW9ncmFwaGljJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGUge1xuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEN1YmVEaW1lbnNpb25UeXBlX19TVlRfQ1VCRV9EX0JMQU5LID0gJ2N1YmUtZC1ibGFuaycsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVfX1NWVF9DVUJFX0RfSElFUkFSQ0hZID0gJ2N1YmUtZC1oaWVyYXJjaHknLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEN1YmVEaW1lbnNpb25UeXBlX19TVlRfQ1VCRV9EX0xFVkVMID0gJ2N1YmUtZC1sZXZlbCcsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVfX1NWVF9DVUJFX0RfSElFUl9DQUxDID0gJ2N1YmUtZC1oaWVyLWNhbGMnLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEN1YmVEaW1lbnNpb25UeXBlX19TVlRfQ1VCRV9EX0xWTF9DQUxDID0gJ2N1YmUtZC1sdmwtY2FsYycsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVfX1NWVF9DVUJFX0RfSElFUl9HRU8gPSAnY3ViZS1kLWhpZXItZ2VvJyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRDdWJlRGltZW5zaW9uVHlwZV9fU1ZUX0NVQkVfRF9ISUVSX0dFT19DVVNUT00gPSAnY3ViZS1kLWhpZXItZ2VvLWN1c3RvbScsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVfX1NWVF9DVUJFX0RfRk9MREVSX0NMT1NFRCA9ICdjdWJlLWQtZm9sZGVyLWNsb3NlZCcsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVfX1NWVF9DVUJFX0RfRk9MREVSX09QRU4gPSAnY3ViZS1kLWZvbGRlci1vcGVuJyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRDdWJlRGltZW5zaW9uVHlwZV9fU1ZUX0NVQkVfRF9BVFRSSUJVVEUgPSAnY3ViZS1kLWF0dHJpYnV0ZScsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVfX1NWVF9DVUJFX0RfVEVYVCA9ICdjdWJlLWQtdGV4dCcsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVfX1NWVF9DVUJFX0RfREFURVRJTUUgPSAnY3ViZS1kLWRhdGV0aW1lJyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRDdWJlRGltZW5zaW9uVHlwZV9fU1ZUX0NVQkVfRF9EQVRFVElNRV9JTlZBTElEID0gJ2N1YmUtZC1kYXRldGltZS1pbnZhbGlkJyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRDdWJlRGltZW5zaW9uVHlwZV9fU1ZUX0NVQkVfRF9EQVRFID0gJ2N1YmUtZC1kYXRlJyxcblxuICAvLyBcbiAgU2NoZW1hVmlld2VyRmllbGRDdWJlRGltZW5zaW9uVHlwZV9fU1ZUX0NVQkVfRF9EQVRFX0lOVkFMSUQgPSAnY3ViZS1kLWRhdGUtaW52YWxpZCcsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVfX1NWVF9DVUJFX0RfR0VPR1JBUEhJQyA9ICdjdWJlLWQtZ2VvZ3JhcGhpYycsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVfX1NWVF9DVUJFX0RfR0VPR1JBUEhJQ19JTlZBTElEID0gJ2N1YmUtZC1nZW9ncmFwaGljLWludmFsaWQnLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEN1YmVEaW1lbnNpb25UeXBlX19TVlRfQ1VCRV9EX0dFT0dSQVBISUNfQ1VTVE9NID0gJ2N1YmUtZC1nZW9ncmFwaGljLWN1c3RvbScsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVfX1NWVF9DVUJFX0RfR0VPR1JBUEhJQ19DVVNUT01fSU5WQUxJRCA9ICdjdWJlLWQtZ2VvZ3JhcGhpYy1jdXN0b20taW52YWxpZCcsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVfX1NWVF9DVUJFX0RfVkFSWUlORyA9ICdjdWJlLWQtdmFyeWluZycsXG5cbiAgLy8gXG4gIFNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVfX1NWVF9DVUJFX0RfVURBID0gJ2N1YmUtZC11ZGEnLFxuXG4gIC8vIFxuICBTY2hlbWFWaWV3ZXJGaWVsZEN1YmVEaW1lbnNpb25UeXBlX19TVlRfQ1VCRV9EX05VTUJFUiA9ICdjdWJlLWQtbnVtYmVyJ1xufVxuXG4vLyBJbmRpY2F0ZXMgdGhlIHNlbGVjdGlvbiBtb2RlOiBTaW5nbGUgfCBNdWx0aXBsZS5cbmV4cG9ydCBlbnVtIEhTTVNlbGVjdGlvbk1vZGUge1xuXG4gIC8vIFxuICBTaW5nbGUgPSAnc2VsZWN0aW9uLW1vZGUtc2luZ2xlJyxcblxuICAvLyBcbiAgTXVsdGlwbGUgPSAnc2VsZWN0aW9uLW1vZGUtbXVsdGlwbGUnXG59XG5cbi8vIEluZGljYXRlcyB3aGF0IGRlZmF1bHQgbWVtYmVyIHRvIHVzZSBmb3IgYSBoaWVyYXJjaGljYWwgZmllbGQuXG5leHBvcnQgZW51bSBIU01EZWZhdWx0TWVtYmVyVHlwZSB7XG5cbiAgLy8gXG4gIFVzZURlZmF1bHRNZW1iZXIgPSAndXNlLWRlZmF1bHQtbWVtYmVyJyxcblxuICAvLyBcbiAgVXNlQWxsTWVtYmVyID0gJ3VzZS1hbGwtbWVtYmVyJyxcblxuICAvLyBcbiAgVXNlU2VsZWN0ZWRNZW1iZXIgPSAndXNlLXNlbGVjdGVkLW1lbWJlcidcbn1cblxuLy8gSGllcmFyY2hpY2FsIHNlbGVjdCBtb2RlbCBwcmVzZW50YXRpb24gbGF5ZXIgbm90aWZpY2F0aW9uLlxuZXhwb3J0IGVudW0gSFNNTm90aWZpY2F0aW9uVHlwZSB7XG5cbiAgLy8gXG4gIFVwZGF0ZWQgPSAnaHNtLW5vdGlmaWNhdGlvbi11cGRhdGVkJyxcblxuICAvLyBcbiAgTWlzc2luZ01lbWJlcnMgPSAnaHNtLW5vdGlmaWNhdGlvbi1taXNzaW5nLW1lbWJlcnMnXG59XG5cbi8vIFR5cGUgb2YgaGllcmFyY2h5IGNvbW1hbmQgc2VsZWN0aW9uIHRvIGJlIHBlcmZvcm1lZC5cbmV4cG9ydCBlbnVtIEhTTVNlbGVjdGlvblJlcXVlc3RUeXBlIHtcblxuICAvLyBcbiAgU2VsZWN0TW9kZSA9ICdoc20tc2VsZWN0aW9uLXJlcXVlc3Qtc2VsZWN0LW1vZGUnLFxuXG4gIC8vIFxuICBNZW1iZXJEZXNjZW5kYW50c1N0YXRlID0gJ2hzbS1zZWxlY3Rpb24tcmVxdWVzdC1kZXNjZW5kYW50cy1zdGF0ZScsXG5cbiAgLy8gXG4gIFNlbGVjdGVkTWVtYmVyVHVwbGUgPSAnaHNtLXNlbGVjdGlvbi1yZXF1ZXN0LXNlbGVjdGVkLW1lbWJlci10dXBsZScsXG5cbiAgLy8gXG4gIFNlbGVjdGVkTWVtYmVyQ2FwdGlvbiA9ICdoc20tc2VsZWN0aW9uLXJlcXVlc3Qtc2VsZWN0ZWQtbWVtYmVyLWNhcHRpb24nXG59XG5cbi8vIFR5cGUgb2YgaGllcmFyY2h5IG1lbWJlciBzZWxlY3Rpb24gdG8gYmUgcGVyZm9ybWVkLlxuZXhwb3J0IGVudW0gSFNNTWVtYmVyU2VsZWN0UmVxdWVzdFR5cGUge1xuXG4gIC8vIFxuICBTZWxlY3RNZW1iZXIgPSAnaHNtLW1lbWJlci1yZXF1ZXN0LXNlbGVjdC1tZW1iZXInLFxuXG4gIC8vIFxuICBTZWxlY3RTdWJ0cmVlID0gJ2hzbS1tZW1iZXItcmVxdWVzdC1zZWxlY3Qtc3VidHJlZScsXG5cbiAgLy8gXG4gIFNlbGVjdExldmVsID0gJ2hzbS1tZW1iZXItcmVxdWVzdC1zZWxlY3QtbGV2ZWwnLFxuXG4gIC8vIFxuICBNZW1iZXJTZWxlY3QgPSAnaHNtLW1lbWJlci1yZXF1ZXN0LW1lbWJlci1zZWxlY3QnLFxuXG4gIC8vIFxuICBNZW1iZXJMZXZlbCA9ICdoc20tbWVtYmVyLXJlcXVlc3QtbWVtYmVyLWxldmVsJ1xufVxuXG4vLyBIaWVyYXJjaHkgbGV2ZWwgc2VsZWN0aW9uIHN0YXRlLlxuZXhwb3J0IGVudW0gSFNNTGV2ZWxTZWxlY3Rpb25TdGF0ZSB7XG5cbiAgLy8gXG4gIEFsbFNlbGVjdGVkID0gJ2hzbS1hbGwtc2VsZWN0ZWQnLFxuXG4gIC8vIFxuICBOb25lU2VsZWN0ZWQgPSAnaHNtLW5vbmUtc2VsZWN0ZWQnLFxuXG4gIC8vIFxuICBTb21lU2VsZWN0ZWQgPSAnaHNtLXNvbWUtc2VsZWN0ZWQnLFxuXG4gIC8vIFVzZWQgd2hlbiBhIHF1ZXJ5IGlzIG1hZGUgb2YgbGV2ZWxzIHRoYXQgZG9uJ3QgZXhpc3QgaW4gdGhlIGdpdmVuIHN1YnRyZWUuIFdlIG5lZWQgdG8gZGlzdGluZ3Vpc2ggdGhhdCBmcm9tIG5vbmUgc2VsZWN0ZWQgd2hpY2ggaW1wbGllcyB0aGF0IG1lbWJlcnMgZXhpc3QgYnV0IGFyZSBub3Qgc2VsZWN0ZWQuXG4gIFVua25vd25TZWxlY3RlZCA9ICdoc20tdW5rbm93bi1zZWxlY3RlZCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBIU01NZW1iZXJMb2FkU3RhdGUge1xuXG4gIC8vIFxuICBBbGxMb2FkZWQgPSAnaHNtLWFsbC1sb2FkZWQnLFxuXG4gIC8vIFxuICBOb25lTG9hZGVkID0gJ2hzbS1ub25lLWxvYWRlZCcsXG5cbiAgLy8gXG4gIFNvbWVMb2FkZWQgPSAnaHNtLXNvbWUtbG9hZGVkJ1xufVxuXG4vLyBSZXR1cm4gdmFsdWUgZnJvbSBDb25uZWN0aW9uU3RhdGVDb250cm9sbGVyIGNvbm5lY3QgbWV0aG9kc1xuZXhwb3J0IGVudW0gQ29ubmVjdGlvbkF0dGVtcHRSZXN1bHQge1xuXG4gIC8vIEFsbCBkYXRhIHNvdXJjZXMgcmVxdWVzdGVkIGFyZSBjb25uZWN0ZWQuXG4gIENBUl9Db25uZWN0ZWQgPSAnY29ubmVjdGVkJyxcblxuICAvLyBOb3QgYWxsIGRhdGEgc291cmNlcyBhcmUgY29ubmVjdGVkLlxuICBDQVJfTm90Q29ubmVjdGVkID0gJ25vdC1jb25uZWN0ZWQnLFxuXG4gIC8vIFRoZSB1c2VyIGludGVycnVwdGVkIHRoZSBjb25uZWN0aW9uIGZsb3cgdG8gZWRpdCBhIGNvbm5lY3Rpb24uXG4gIENBUl9Vc2VyRWRpdENvbm5lY3Rpb24gPSAndXNlci1lZGl0LWNvbm5lY3Rpb24nLFxuXG4gIC8vIFRoZSBjb25uZWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhlIGN1cnJlbnQgcGxhdGZvcm0uXG4gIENBUl9Db25uZWN0aW9uTm90U3VwcG9ydGVkID0gJ2Nvbm5lY3Rpb24tbm90LXN1cHBvcnRlZCdcbn1cblxuLy8gUmV0dXJuIHZhbHVlIGZyb20gQ29ubmVjdFRvRGF0YVNlcnZlclNvdXJjZUNvbW1hbmQ6OkRvXG5leHBvcnQgZW51bSBEYXRhU2VydmVyQ29ubmVjdGlvblJlc3VsdCB7XG5cbiAgLy8gVGhlIGRhdGEgc291cmNlIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBhZGRlZC5cbiAgRFNDUl9TdWNjZXNzID0gJ3N1Y2Nlc3MnLFxuXG4gIC8vIEVycm9yIHRoYXQgd2FzIGhhbmRsZWQuIFRoZXJlJ3Mgbm8gbW9yZSB0byBkbyAoZXguIGNhbmNlbCwgb3IgYW4gZXhjZXB0aW9uIHRoYXQgdGhlIGNvbW1hbmQganVzdCBwcmludGVkIHRvIHRoZSBlcnJvciBkaWFsb2cpLlxuICBEU0NSX0ZhaWx1cmUgPSAnZmFpbHVyZScsXG5cbiAgLy8gVHJ5IGFnYWluIGFmdGVyIG1ha2luZyBhIG5ldyB3b3JrYm9vay5cbiAgRFNDUl9SZXF1aXJlc1dvcmtib29rRG9jID0gJ3JlcXVpcmVzLXdvcmtib29rJyxcblxuICAvLyBUcnkgYWdhaW4gYWZ0ZXIgbG9nZ2luZyBiYWNrIG9uIHRvIFRhYmxlYXUgc2VydmVyLlxuICBEU0NSX1JlcXVpcmVzQXV0aGVudGljYXRpb24gPSAncmVxdWlyZXMtYXV0aGVudGljYXRpb24nLFxuXG4gIC8vIFRyeSBhZ2FpbiBhZnRlciBnZXR0aW5nIGRhdGFiYXNlIGNyZWRlbnRpYWxzIGZyb20gdGhlIHVzZXIuIFBhc3MgdGhlbSBpbiB0aHJvdWdoIHRoZSBEUElfRGF0YXNvdXJjZVVzZXJuYW1lIGFuZCB0aGUgRFBJX0RhdGFzb3VyY2VQYXNzd29yZCBwYXJhbWV0ZXJzLlxuICBEU0NSX1JlcXVpcmVzREJDcmVkZW50aWFscyA9ICdyZXF1aXJlcy1kYi1jcmVkZW50aWFscycsXG5cbiAgLy8gVHJ5IGFnYWluIGFmdGVyIGFzc29jaWF0aW5nIGFuIE9BdXRoIGtleSBmcm9tIHRoZSB1c2VyIGtleWNoYWluIHdpdGggdGhlIGRhdGEgc291cmNlLlxuICBEU0NSX1JlcXVpcmVzT0F1dGhLZXlBc3NvY2lhdGlvbiA9ICdyZXF1aXJlcy1vYXV0aC1rZXktYXNzb2NpYXRpb24nLFxuXG4gIC8vIFRoZSBPQXV0aCBjcmVkZW50aWFscyB1c2VkIHRvIGNvbm5lY3QgdG8gdGhlIGRhdGFzb3VyY2UgYXJlIG5vdCB2YWxpZC5cbiAgRFNDUl9SZXF1aXJlc1ZhbGlkT0F1dGhLZXkgPSAncmVxdWlyZXMtdmFsaWQtb2F1dGgta2V5JyxcblxuICAvLyBNdWx0aXBsZSBsZWFmIGNvbm5lY3Rpb25zIHdpdGhpbiBhIGZlZGVyYXRlZCBkYXRhIHNvdXJjZSBjb250YWluIGVycm9ycyAoZS5nLiwgbXVsdGlwbGUgbGVhZnMgbWlnaHQgbmVlZCBjcmVkZW50aWFscykuXG4gIERTQ1JfRmVkZXJhdGVkRXJyb3IgPSAnZmVkZXJhdGVkLWVycm9yJ1xufVxuXG4vLyBUeXBlIG9mIGVycm9yIGVuY291bnRlcmVkIHdoaWxlIGF0dGVtcHRpbmcgdG8gY29ubmVjdC5cbmV4cG9ydCBlbnVtIENvbm5lY3Rpb25FcnJvclR5cGUge1xuXG4gIC8vIEF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzIGFyZSBuZWVkZWQgaW4gb3JkZXIgdG8gY29ubmVjdC5cbiAgQ0VUX05lZWRzQXV0aGVudGljYXRpb24gPSAnbmVlZHMtYXV0aGVudGljYXRpb24nLFxuXG4gIC8vIFRoZSBkYXRhIHNvdXJjZSBpcyBwcm92aWRlZCBieSBEYXRhIFNlcnZlciwgYnV0IG5vIERhdGEgU2VydmVyIGNvbm5lY3Rpb24gaXMgcHJlc2VudC5cbiAgQ0VUX0RhdGFTZXJ2ZXJEaXNjb25uZWN0ZWQgPSAnZGF0YS1zZXJ2ZXItZGlzY29ubmVjdGVkJyxcblxuICAvLyBBbiBleGNlcHRpb24gb2NjdXJyZWQgd2hpbGUgY29ubmVjdGluZy4gIFRoaXMgY291bGQgYmUgY2F1c2VkIGJ5IGEgYmFkIHBhc3N3b3JkLCBvciB3cm9uZyBwYXRoL3VybC5cbiAgQ0VUX0V4Y2VwdGlvbldoaWxlQ29ubmVjdGluZyA9ICdleGNlcHRpb24td2hpbGUtY29ubmVjdGluZycsXG5cbiAgLy8gQW4gZXhjZXB0aW9uIG9jY3VycmVkIHdoaWxlIHRyeWluZyB0byBjb25uZWN0IHRoZSBkYXRhIHNvdXJjZSBhcyBhIHdob2xlLlxuICBDRVRfRXhjZXB0aW9uV2hpbGVDb25uZWN0aW5nRGF0YVNvdXJjZSA9ICdleGNlcHRpb24td2hpbGUtY29ubmVjdGluZy1kYXRhLXNvdXJjZScsXG5cbiAgLy8gVGhlIGNvbm5lY3Rpb24gaXMgbm90IHN1cHBvcnRlZC5cbiAgQ0VUX0Nvbm5lY3Rpb25Ob3RTdXBwb3J0ZWQgPSAnY29ubmVjdGlvbi1ub3Qtc3VwcG9ydGVkJyxcblxuICAvLyBBbiB1bmV4cGVjdGVkIGV4Y2VwdGlvbiBvY2N1cnJlZC5cbiAgQ0VUX1VuZXhwZWN0ZWRFeGNlcHRpb24gPSAndW5leHBlY3RlZC1leGNlcHRpb24nXG59XG5cbi8vIGlkZW50aWZpZXMgdGhlIHBpZWNlIG9mIHRoZSB2aXN1YWxcbmV4cG9ydCBlbnVtIFZpc3VhbFBhcnQge1xuXG4gIC8vIGRlZmF1bHQgYnVja2V0IGlmIHR5cGUgaXNuJ3Qgc3BlY2lmaWVkXG4gIFZQX01pc2MgPSAnbWlzYycsXG5cbiAgLy8gXG4gIFZQX0Fubm90YXRpb25zID0gJ2Fubm90YXRpb25zJyxcblxuICAvLyBcbiAgVlBfQXhpc1J1bGVzID0gJ2F4aXMtcnVsZXMnLFxuXG4gIC8vIFxuICBWUF9Ub3BBeGlzID0gJ3RvcC1heGlzJyxcblxuICAvLyBcbiAgVlBfQm90dG9tQXhpcyA9ICdib3R0b20tYXhpcycsXG5cbiAgLy8gXG4gIFZQX0xlZnRBeGlzID0gJ2xlZnQtYXhpcycsXG5cbiAgLy8gXG4gIFZQX1JpZ2h0QXhpcyA9ICdyaWdodC1heGlzJyxcblxuICAvLyBcbiAgVlBfQmFja2dyb3VuZCA9ICdiYWNrZ3JvdW5kJyxcblxuICAvLyBcbiAgVlBfQm9yZGVycyA9ICdib3JkZXJzJyxcblxuICAvLyBcbiAgVlBfQ2FwdGlvbiA9ICdjYXB0aW9uJyxcblxuICAvLyBcbiAgVlBfQ2VsbEJvcmRlcnMgPSAnY2VsbC1ib3JkZXJzJyxcblxuICAvLyBcbiAgVlBfRGVjb3JhdGlvbiA9ICdkZWNvcmF0aW9uJyxcblxuICAvLyBcbiAgVlBfRHJvcExpbmVzID0gJ2Ryb3AtbGluZXMnLFxuXG4gIC8vIFxuICBWUF9YTGFiZWxzID0gJ3gtbGFiZWxzJyxcblxuICAvLyBcbiAgVlBfWUxhYmVscyA9ICd5LWxhYmVscycsXG5cbiAgLy8gXG4gIFZQX0xlZ2VuZHMgPSAnbGVnZW5kcycsXG5cbiAgLy8gXG4gIFZQX01hcmtzID0gJ21hcmtzJyxcblxuICAvLyBcbiAgVlBfTWFya0xhYmVscyA9ICdtYXJrLWxhYmVscycsXG5cbiAgLy8gXG4gIFZQX01hcmtUcmFpbHMgPSAnbWFyay10cmFpbHMnLFxuXG4gIC8vIFxuICBWUF9SZWZlcmVuY2VCYW5kcyA9ICdyZWYtYmFuZHMnLFxuXG4gIC8vIFxuICBWUF9SZWZlcmVuY2VMaW5lcyA9ICdyZWYtbGluZXMnLFxuXG4gIC8vIFxuICBWUF9QYW5lQm9yZGVycyA9ICdwYW5lLWJvcmRlcnMnLFxuXG4gIC8vIFxuICBWUF9TY3JvbGxCYXJzID0gJ3Njcm9sbC1iYXJzJyxcblxuICAvLyBcbiAgVlBfVGl0bGUgPSAndGl0bGUnLFxuXG4gIC8vIFxuICBWUF9UcmVuZExpbmVzID0gJ3RyZW5kLWxpbmVzJyxcblxuICAvLyBcbiAgVlBfVXBwZXJNYXBMYXllcnMgPSAndXBwZXItbWFwLWxheWVycydcbn1cblxuLy8gRGV0YWlscyBvZiB0aGUgcGFydCB3aXRoaW4gYW4gRWxlbWVudElkXG5leHBvcnQgZW51bSBTY2VuZU1vZGVsVHlwZXNEZXRhaWwge1xuXG4gIC8vIFxuICBOb0RldGFpbCA9ICduby1kZXRhaWwnLFxuXG4gIC8vIFxuICBNYXJrRGV0YWlsID0gJ21hcmstZGV0YWlsJyxcblxuICAvLyBcbiAgTGFiZWxEZXRhaWwgPSAnbGFiZWwtZGV0YWlsJyxcblxuICAvLyBcbiAgTGFiZWxIYW5kbGVEZXRhaWwgPSAnbGFiZWwtaGFuZGxlLWRldGFpbCcsXG5cbiAgLy8gXG4gIFRvcExlZnRIYW5kbGVEZXRhaWwgPSAndG9wLWxlZnQtaGFuZGxlLWRldGFpbCcsXG5cbiAgLy8gXG4gIFRvcE1pZEhhbmRsZURldGFpbCA9ICd0b3AtbWlkLWhhbmRsZS1kZXRhaWwnLFxuXG4gIC8vIFxuICBUb3BSaWdodEhhbmRsZURldGFpbCA9ICd0b3AtcmlnaHQtaGFuZGxlLWRldGFpbCcsXG5cbiAgLy8gXG4gIFJpZ2h0TWlkSGFuZGxlRGV0YWlsID0gJ3JpZ2h0LW1pZC1oYW5kbGUtZGV0YWlsJyxcblxuICAvLyBcbiAgQm90dG9tUmlnaHRIYW5kbGVEZXRhaWwgPSAnYm90dG9tLXJpZ2h0LWhhbmRsZS1kZXRhaWwnLFxuXG4gIC8vIFxuICBCb3R0b21NaWRIYW5kbGVEZXRhaWwgPSAnYm90dG9tLW1pZC1oYW5kbGUtZGV0YWlsJyxcblxuICAvLyBcbiAgQm90dG9tTGVmdEhhbmRsZURldGFpbCA9ICdib3R0b20tbGVmdC1oYW5kbGUtZGV0YWlsJyxcblxuICAvLyBcbiAgTGVmdE1pZEhhbmRsZURldGFpbCA9ICdsZWZ0LW1pZC1oYW5kbGUtZGV0YWlsJyxcblxuICAvLyBcbiAgTGluZURldGFpbCA9ICdsaW5lLWRldGFpbCcsXG5cbiAgLy8gXG4gIEFycm93SGFuZGxlRGV0YWlsID0gJ2Fycm93LWhhbmRsZS1kZXRhaWwnLFxuXG4gIC8vIFxuICBUZXh0Q2VudGVySGFuZGxlRGV0YWlsID0gJ3RleHQtY2VudGVyLWhhbmRsZS1kZXRhaWwnLFxuXG4gIC8vIFxuICBUZXh0Qm94SGFuZGxlRGV0YWlsID0gJ3RleHQtYm94LWhhbmRsZS1kZXRhaWwnLFxuXG4gIC8vIFxuICBNYXJrQXJyb3dIYW5kbGVEZXRhaWwgPSAnbWFyay1hcnJvdy1oYW5kbGUtZGV0YWlsJyxcblxuICAvLyBcbiAgTWFya01vdmFibGVIYW5kbGVEZXRhaWwgPSAnbWFyay1tb3ZhYmxlLWhhbmRsZS1kZXRhaWwnLFxuXG4gIC8vIFxuICBNYXJrQW5jaG9yRGV0YWlsID0gJ21hcmstYW5jaG9yLWRldGFpbCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBTY2VuZU1vZGVsVHlwZXNIaXRUeXBlIHtcblxuICAvLyBcbiAgTm9IaXQgPSAnbm8taGl0JyxcblxuICAvLyBcbiAgQXJlYUhpdCA9ICdhcmVhLWhpdCcsXG5cbiAgLy8gXG4gIE5lYXJIaXQgPSAnbmVhci1oaXQnLFxuXG4gIC8vIFxuICBFeGFjdEhpdCA9ICdleGFjdC1oaXQnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gU2NlbmVNb2RlbFR5cGVzSGl0VGVzdFN0eWxlIHtcblxuICAvLyBcbiAgQm91bmRzVGVzdCA9ICdib3VuZHMtdGVzdCcsXG5cbiAgLy8gXG4gIEV4YWN0VGVzdCA9ICdleGFjdC10ZXN0JyxcblxuICAvLyBcbiAgUmFkaWFsRGlzdGFuY2VUZXN0ID0gJ3JhZGlhbC1kaXN0YW5jZS10ZXN0JyxcblxuICAvLyBcbiAgTGFiZWxUZXN0ID0gJ2xhYmVsLXRlc3QnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gU2NlbmVNb2RlbFR5cGVzSGl0VGVzdEZsYWdzIHtcblxuICAvLyBcbiAgSGl0VGVzdEFsbCA9ICdoaXQtdGVzdC1hbGwnLFxuXG4gIC8vIFxuICBIaXRUZXN0SWdub3JlTGFiZWxzID0gJ2hpdC10ZXN0LWlnbm9yZS1sYWJlbHMnLFxuXG4gIC8vIFxuICBIaXRUZXN0SWdub3JlQW5ub3RhdGlvbnMgPSAnaGl0LXRlc3QtaWdub3JlLWFubm90YXRpb25zJyxcblxuICAvLyBcbiAgSGl0VGVzdEZvck92ZXJsYXkgPSAnaGl0LXRlc3QtZm9yLW92ZXJsYXknXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gQW5ub3RhdGVFbnVtIHtcblxuICAvLyBcbiAgQUVfTWFyayA9ICdtYXJrJyxcblxuICAvLyBcbiAgQUVfUG9pbnQgPSAncG9pbnQnLFxuXG4gIC8vIFxuICBBRV9BcmVhID0gJ2FyZWEnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gTWFya0VudW0ge1xuXG4gIC8vIFxuICBNRV9BdXRvID0gJ2F1dG8nLFxuXG4gIC8vIFxuICBNRV9PbiA9ICdvbicsXG5cbiAgLy8gXG4gIE1FX09mZiA9ICdvZmYnLFxuXG4gIC8vIFxuICBNRV9DbGVhciA9ICdjbGVhcidcbn1cblxuLy8gXG5leHBvcnQgZW51bSBab29tTGV2ZWwge1xuXG4gIC8vIFxuICBaT09NX0VOVElSRV9WSUVXID0gJ3pvb20tZW50aXJlLXZpZXcnLFxuXG4gIC8vIFxuICBaT09NX0ZJVF9XSURUSCA9ICd6b29tLWZpdC13aWR0aCcsXG5cbiAgLy8gXG4gIFpPT01fRklUX0hFSUdIVCA9ICd6b29tLWZpdC1oZWlnaHQnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gQWN0aW9uVHlwZSB7XG5cbiAgLy8gXG4gIEFUX1Vua25vd24gPSAndW5rbm93bicsXG5cbiAgLy8gXG4gIEFUX0JydXNoID0gJ2JydXNoJyxcblxuICAvLyBcbiAgQVRfRmlsdGVyID0gJ2ZpbHRlcicsXG5cbiAgLy8gXG4gIEFUX1VSTCA9ICd1cmwnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gU2hlbGZEcm9wQWN0aW9uIHtcblxuICAvLyBcbiAgU2RhUmVwbGFjZSA9ICdyZXBsYWNlJyxcblxuICAvLyBcbiAgU2RhQ29tYmluZSA9ICdjb21iaW5lJyxcblxuICAvLyBcbiAgU2RhSW5zZXJ0ID0gJ2luc2VydCcsXG5cbiAgLy8gXG4gIFNkYVN3YXAgPSAnc3dhcCcsXG5cbiAgLy8gXG4gIFNkYVJlcGxhY2VBbGwgPSAncmVwbGFjZS1hbGwnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gU2hlbGZEcm9wQ29udGV4dCB7XG5cbiAgLy8gXG4gIFNoZWxmRHJvcENvbnRleHRfTm9uZSA9ICdub25lJyxcblxuICAvLyBcbiAgU2hlbGZEcm9wQ29udGV4dF9DYXRlZ29yaWNhbCA9ICdjYXRlZ29yaWNhbCcsXG5cbiAgLy8gXG4gIFNoZWxmRHJvcENvbnRleHRfUXVhbnRpdGF0aXZlID0gJ3F1YW50aXRhdGl2ZSdcbn1cblxuLy8gRHJhZy9Ecm9wIHNvdXJjZSBhbmQgdGFyZ2V0XG5leHBvcnQgZW51bSBEcmFnRHJvcFR5cGUge1xuXG4gIC8vIGRyYWcgZnJvbSBvciBkcm9wIG9udG8gdml6XG4gIERyYWdEcm9wX1ZpeiA9ICdkcmFnLWRyb3Atdml6JyxcblxuICAvLyBkcmFnIGZyb20gb3IgZHJvcCBvbnRvIHNoZWxmXG4gIERyYWdEcm9wX1NoZWxmID0gJ2RyYWctZHJvcC1zaGVsZicsXG5cbiAgLy8gZHJhZyBmcm9tIG9yIGRyb3Agb250byBzY2hlbWFcbiAgRHJhZ0Ryb3BfU2NoZW1hID0gJ2RyYWctZHJvcC1zY2hlbWEnLFxuXG4gIC8vIGRyYWcgZnJvbSBvciBkcm9wIG9udG8gbm93aGVyZVxuICBEcmFnRHJvcF9Ob25lID0gJ2RyYWctZHJvcC1ub25lJyxcblxuICAvLyBkcmFnIGZyb20gb3IgZHJvcCBvbnRvIGNhbGN1bGF0aW9uIGVkaXRvclxuICBEcmFnRHJvcF9DYWxjdWxhdGlvbkVkaXRvciA9ICdkcmFnLWRyb3AtY2FsY3VsYXRpb24tZWRpdG9yJyxcblxuICAvLyBkcmFnIGZyb20gcGl2b3Qgd2luZG93XG4gIERyYWdEcm9wX1Bpdm90ID0gJ2RyYWctZHJvcC1waXZvdCdcbn1cblxuLy8gRGlhbG9nIHR5cGUgcmVsYXRlZCB0byByZWRpcmVjdCBhY3Rpb24gcmVxdWlyZWQgYnkgVUlcbmV4cG9ydCBlbnVtIENvbW1hbmRSZWRpcmVjdFR5cGUge1xuXG4gIC8vIGFkZCBuZXcgZGF0YSBjb25uZWN0aW9uIGRpYWxvZ1xuICBDb21tYW5kUmVkaXJlY3RfQWRkRGF0YUNvbm5lY3Rpb24gPSAnY29tbWFuZC1yZWRpcmVjdC1hZGQtZGF0YS1jb25uZWN0aW9uJyxcblxuICAvLyBjcmVhdGUgZHJpbGwgcGF0aCBkaWFsb2dcbiAgQ29tbWFuZFJlZGlyZWN0X0FkZERyaWxsUGF0aCA9ICdjb21tYW5kLXJlZGlyZWN0LWFkZC1kcmlsbC1wYXRoJyxcblxuICAvLyBjb25maXJtYXRpb24gZGlhbG9nXG4gIENvbW1hbmRSZWRpcmVjdF9Db25maXJtYXRpb24gPSAnY29tbWFuZC1yZWRpcmVjdC1jb25maXJtYXRpb24nLFxuXG4gIC8vIHNob3dzIHRoZSBmb3JtYXQgd29ya2Jvb2sgcGFuZVxuICBDb21tYW5kUmVkaXJlY3RfRm9ybWF0V29ya2Jvb2sgPSAnY29tbWFuZC1yZWRpcmVjdC1mb3JtYXQtd29ya2Jvb2snLFxuXG4gIC8vIG5vdGlmaWNhdGlvbiBkaWFsb2dcbiAgQ29tbWFuZFJlZGlyZWN0X05vdGlmaWNhdGlvbiA9ICdjb21tYW5kLXJlZGlyZWN0LW5vdGlmaWNhdGlvbicsXG5cbiAgLy8gc2hvdyBudW1iZXIgZm9ybWF0dGluZyBkaWFsb2dcbiAgQ29tbWFuZFJlZGlyZWN0X051bWJlckZvcm1hdCA9ICdjb21tYW5kLXJlZGlyZWN0LW51bWJlci1mb3JtYXQnLFxuXG4gIC8vIGZ1bGwtZmVhdHVyZWQgZWRpdG9yXG4gIENvbW1hbmRSZWRpcmVjdF9FZGl0ID0gJ2NvbW1hbmQtcmVkaXJlY3QtZWRpdCcsXG5cbiAgLy8gcXVpY2sgZWRpdG9yXG4gIENvbW1hbmRSZWRpcmVjdF9RdWlja0VkaXQgPSAnY29tbWFuZC1yZWRpcmVjdC1xdWljay1lZGl0JyxcblxuICAvLyBpbmxpbmUgcmVuYW1lIGZpZWxkXG4gIENvbW1hbmRSZWRpcmVjdF9SZW5hbWVGaWVsZCA9ICdjb21tYW5kLXJlZGlyZWN0LXJlbmFtZS1maWVsZCcsXG5cbiAgLy8gcmVuYW1lIGRyaWxsIHBhdGggZGlhbG9nXG4gIENvbW1hbmRSZWRpcmVjdF9SZW5hbWVEcmlsbFBhdGggPSAnY29tbWFuZC1yZWRpcmVjdC1yZW5hbWUtZHJpbGwtcGF0aCcsXG5cbiAgLy8gcmVuYW1lIHNoZWV0IGRpYWxvZ1xuICBDb21tYW5kUmVkaXJlY3RfUmVuYW1lU2hlZXQgPSAnY29tbWFuZC1yZWRpcmVjdC1yZW5hbWUtc2hlZXQnLFxuXG4gIC8vIGVkaXQgd2ViIHpvbmUgdXJsXG4gIENvbW1hbmRSZWRpcmVjdF9FZGl0V2ViWm9uZVVybCA9ICdjb21tYW5kLXJlZGlyZWN0LWVkaXQtd2ViLXpvbmUtdXJsJyxcblxuICAvLyBlZGl0IGZvcm1hdHRpbmdcbiAgQ29tbWFuZFJlZGlyZWN0X0VkaXRGb3JtYXR0aW5nID0gJ2NvbW1hbmQtcmVkaXJlY3QtZWRpdC1mb3JtYXR0aW5nJyxcblxuICAvLyBjYXRlZ29yaWNhbCBiaW4gZWRpdCBkaWFsb2dcbiAgQ29tbWFuZFJlZGlyZWN0X0NhdGVnb3JpY2FsQmluRWRpdCA9ICdjb21tYW5kLXJlZGlyZWN0LWNhdGVnb3JpY2FsLWJpbi1lZGl0JyxcblxuICAvLyBudW1lcmljIGJpbiBlZGl0IGRpYWxvZ1xuICBDb21tYW5kUmVkaXJlY3RfTnVtZXJpY0JpbkVkaXQgPSAnY29tbWFuZC1yZWRpcmVjdC1udW1lcmljLWJpbi1lZGl0JyxcblxuICAvLyByaWNoIHRleHQgZGlhbG9nXG4gIENvbW1hbmRSZWRpcmVjdF9SaWNoVGV4dCA9ICdjb21tYW5kLXJlZGlyZWN0LXJpY2gtdGV4dCcsXG5cbiAgLy8gZGVsZXRlIHNoZWV0IGRpYWxvZ1xuICBDb21tYW5kUmVkaXJlY3RfRGVsZXRlU2hlZXQgPSAnY29tbWFuZC1yZWRpcmVjdC1kZWxldGUtc2hlZXQnLFxuXG4gIC8vIE5vIHJlZGlyZWN0IHJlcXVpcmVkXG4gIENvbW1hbmRSZWRpcmVjdF9Ob25lID0gJ2NvbW1hbmQtcmVkaXJlY3Qtbm9uZSdcbn1cblxuLy8gRGlyZWN0aXZlcyBmb3IgaGV1cmlzdGljYWxseSBpbnRlcnByZXRpbmcgdXNlciBpbnRlbnQgb2YgY29tbWFuZFxuZXhwb3J0IGVudW0gSGV1cmlzdGljQ29tbWFuZFJlaW50ZXJwcmV0YXRpb24ge1xuXG4gIC8vIERpcmVjdHMgVGFibGVhdSB0byBub3QgcmVpbnRlcnByZXQgc3BlY2lmaWNzIG9mIHRoZSBjb21tYW5kXG4gIERvTm90UmVpbnRlcnByZXRDb21tYW5kID0gJ2RvLW5vdC1yZWludGVycHJldC1jb21tYW5kJyxcblxuICAvLyBEaXJlY3RzIFRhYmxlYXUgdG8gZ3Vlc3MgdGhhdCB3aGVuIHRoZSB1c2VyIHNlbGVjdGVkIGFsbCBpdGVtcyBpbiBhIGZpbHRlciwgdGhlIGludGVudCB3YXMgYWN0dWFsbHkgdG8gc2VsZWN0IEFMTFxuICBDYXRlZ29yaWNhbEZpbHRlcl9JbmZlckFsbFdoZW5FdmVyeXRoaW5nU2VsZWN0ZWQgPSAnY2F0ZWdvcmljYWwtZmlsdGVyLWluZmVyLWFsbC13aGVuLWV2ZXJ5dGhpbmctc2VsZWN0ZWQnXG59XG5cbi8vIGZpbHRlciB0eXBlc1xuZXhwb3J0IGVudW0gRmlsdGVyVHlwZSB7XG5cbiAgLy8gUXVhbnRpdGF0aXZlXG4gIEZMVFJfUXVhbnRpdGF0aXZlID0gJ1F1YW50aXRhdGl2ZScsXG5cbiAgLy8gQ2F0ZWdvcmljYWxcbiAgRkxUUl9DYXRlZ29yaWNhbCA9ICdDYXRlZ29yaWNhbCcsXG5cbiAgLy8gSGllcmFyY2hpY2FsXG4gIEZMVFJfSGllcmFyY2hpY2FsID0gJ0hpZXJhcmNoaWNhbCcsXG5cbiAgLy8gUmVsYXRpdmUgRGF0ZVxuICBGTFRSX1JlbGF0aXZlRGF0ZSA9ICdSZWxhdGl2ZURhdGUnLFxuXG4gIC8vIFJlbGF0aXZlRGF0ZVBpY2tcbiAgRkxUUl9SZWxhdGl2ZURhdGVQaWNrID0gJ1JlbGF0aXZlRGF0ZVBpY2snLFxuXG4gIC8vIE5vdFNwZWNpZmllZFxuICBGTFRSX0RlZmF1bHQgPSAnRmlsdGVyRGVmYXVsdCdcbn1cblxuLy8gUGFyYW1ldGVyIGVycm9yc1xuZXhwb3J0IGVudW0gUGFyYW1ldGVyRXJyb3Ige1xuXG4gIC8vIGZpZWxkIGFnZ3JlZ2F0aW9uIGlzIGludmFsaWRcbiAgSW52YWxpZEFnZ0ZpZWxkcyA9ICdpbnZhbGlkLWFnZy1maWVsZHMnLFxuXG4gIC8vIGZpZWxkIGlzIGludmFsaWRcbiAgSW52YWxpZEZpZWxkcyA9ICdpbnZhbGlkLWZpZWxkcycsXG5cbiAgLy8gZmlsdGVyIHZhbHVlcyBhcmUgaW52YWxpZFxuICBJbnZhbGlkRmlsdGVyVmFsdWVzID0gJ2ludmFsaWQtZmlsdGVyLXZhbHVlcycsXG5cbiAgLy8gZGF0ZSB2YWx1ZSBpcyBpbnZhbGlkXG4gIEludmFsaWREYXRlcyA9ICdpbnZhbGlkLWRhdGVzJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFNlbGVjdGlvblR5cGUge1xuXG4gIC8vIFxuICBTVF9UdXBsZXMgPSAndHVwbGVzJyxcblxuICAvLyBcbiAgU1RfTm9kZXMgPSAnbm9kZXMnLFxuXG4gIC8vIFxuICBTVF9UcmVuZExpbmVzID0gJ3RyZW5kLWxpbmVzJyxcblxuICAvLyBcbiAgU1RfTGVnZW5kSXRlbXMgPSAnbGVnZW5kLWl0ZW1zJyxcblxuICAvLyBcbiAgU1RfUmVmTGluZXMgPSAncmVmLWxpbmVzJyxcblxuICAvLyBcbiAgU1RfQW5ub3RhdGlvbnMgPSAnYW5ub3RhdGlvbnMnLFxuXG4gIC8vIFxuICBTVF9PcmllbnRlZE5vZGVzID0gJ29yaWVudGVkLW5vZGVzJyxcblxuICAvLyBcbiAgU1RfU2hlbGZGaWVsZHMgPSAnc2hlbGYtZmllbGRzJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFNlbGVjdGlvblVwZGF0ZVR5cGUge1xuXG4gIC8vIFxuICBTVV9BREQgPSAnc2VsZWN0LWFkZCcsXG5cbiAgLy8gXG4gIFNVX1JFTU9WRSA9ICdzZWxlY3QtcmVtb3ZlJyxcblxuICAvLyBcbiAgU1VfUkVQTEFDRSA9ICdzZWxlY3QtcmVwbGFjZSdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBTZWxlY3RPcHRpb25zIHtcblxuICAvLyBObyBrZXkgZG93blxuICBTZWxlY3RPcHRpb25zU2ltcGxlID0gJ3NlbGVjdC1vcHRpb25zLXNpbXBsZScsXG5cbiAgLy8gQ3RybCBrZXkgZG93blxuICBTZWxlY3RPcHRpb25zVG9nZ2xlID0gJ3NlbGVjdC1vcHRpb25zLXRvZ2dsZScsXG5cbiAgLy8gU2hpZnQga2V5IGRvd25cbiAgU2VsZWN0T3B0aW9uc1JhbmdlID0gJ3NlbGVjdC1vcHRpb25zLXJhbmdlJyxcblxuICAvLyBVc3VhbGx5IHRyaWdnZXJlZCBieSByaWdodCBjbGlja1xuICBTZWxlY3RPcHRpb25zTW91c2VNZW51ID0gJ3NlbGVjdC1vcHRpb25zLW1lbnUnLFxuXG4gIC8vIEFuIGF0dGVtcHQgdG8gc2VsZWN0IHZpYSBzZWFyY2hcbiAgU2VsZWN0T3B0aW9uc1NlYXJjaE1hdGNoID0gJ3NlbGVjdC1vcHRpb25zLXNlYXJjaCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBXaGl0ZXNwYWNlU2VsZWN0aW9uQmVoYXZpb3Ige1xuXG4gIC8vIENsZWFyIHNlbGVjdGlvbiBvdmVyIHdoaXRlc3BhY2UgYmFzZWQgb24gZGVmYXVsdCBmYWN0b3JzIChpLmUuLCBhcmUgd2UgaW4gYXBwZW5kIG1vZGU/KVxuICBEZWZhdWx0ID0gJ2RlZmF1bHQnLFxuXG4gIC8vIEFsd2F5cyBjbGVhciBzZWxlY3Rpb24gb3ZlciB3aGl0ZXNwYWNlXG4gIEFsd2F5c0NsZWFyID0gJ2Fsd2F5cy1jbGVhcicsXG5cbiAgLy8gTmV2ZXIgY2xlYXIgc2VsZWN0aW9uIG92ZXIgd2hpdGVzcGFjZVxuICBOZXZlckNsZWFyID0gJ25ldmVyLWNsZWFyJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIE9yaWVudGF0aW9uIHtcblxuICAvLyBcbiAgVmVydGljYWwgPSAnby12ZXJ0JyxcblxuICAvLyBcbiAgSG9yaXpvbnRhbCA9ICdvLWhvcml6JyxcblxuICAvLyBcbiAgT0F1dG9tYXRpYyA9ICdvLWF1dG8nXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gU2NhbGVUeXBlIHtcblxuICAvLyBcbiAgTG9nID0gJ2xvZycsXG5cbiAgLy8gXG4gIExpbmVhciA9ICdsaW5lYXInXG59XG5cbi8vIHR5cGUgb2Ygb2JqZWN0IGFjdGlvbiBhcHBsaWVzIHRvXG5leHBvcnQgZW51bSBTb3VyY2VUeXBlIHtcblxuICAvLyBhbGwgc2hlZXRzIGluIHRoZSB3b3JrYm9va1xuICBTVF9BbGwgPSAnYWxsJyxcblxuICAvLyBhbGwgc2hlZXRzIHJlZmVyZW5jaW5nIGEgZ2l2ZW4gZGF0YXNvdXJjZVxuICBTVF9EYXRhc291cmNlID0gJ2RhdGFzb3VyY2UnLFxuXG4gIC8vIHdvcmtzaGVldCBvciBkYXNoYm9hcmRcbiAgU1RfU2hlZXQgPSAnc2hlZXQnXG59XG5cbi8vIGhvdyBhbiBhY3Rpb24gZ2V0cyBhY3RpdmF0ZWRcbmV4cG9ydCBlbnVtIEFjdGl2YXRpb25NZXRob2Qge1xuXG4gIC8vIGUuZy4gYnkgcGlja2luZyBhbiBvcHRpb24gZnJvbSBhIGNvbnRleHQgbWVudVxuICBBTV9FeHBsaWNpdCA9ICdleHBsaWNpdGx5JyxcblxuICAvLyBhdXRvIGFjdGl2YXRlZCB3aGVuIG1hcmtzIGFyZSBzZWxlY3RlZFxuICBBTV9PblNlbGVjdCA9ICdvbi1zZWxlY3QnLFxuXG4gIC8vIGF1dG8gYWN0aXZhdGVkIHdoZW4gdGhlIHVzZXIgbW92ZXMgdGhlIG1vdXNlIG92ZXIgYSBtYXJrXG4gIEFNX09uSG92ZXIgPSAnb24taG92ZXInXG59XG5cbi8vIHdoZXRoZXIgYW4gYWN0aW9uIHNob3VsZCBiZSBydW4gd2hlbiBzZWxlY3Rpb24gaXMgY2xlYXJlZFxuZXhwb3J0IGVudW0gT25DbGVhciB7XG5cbiAgLy8gZG8gbm90aGluZywgZS5nLiBsZWF2ZSBmaWx0ZXIgaW4gcGxhY2VcbiAgT0NfTm90aGluZyA9ICdub3RoaW5nJyxcblxuICAvLyBzaG93IGFsbCB2YWx1ZXNcbiAgT0NfU2hvd0FsbCA9ICdzaG93LWFsbCcsXG5cbiAgLy8gZXhjbHVkZSBldmVyeXRoaW5nXG4gIE9DX0V4Y2x1ZGVBbGwgPSAnZXhjbHVkZS1hbGwnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gTWVyZ2VPclNwbGl0IHtcblxuICAvLyBcbiAgTU9TX01FUkdFID0gJ21lcmdlJyxcblxuICAvLyBcbiAgTU9TX1NQTElUID0gJ3NwbGl0J1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIE1hcmtMYXlvdXRQcmltaXRpdmUge1xuXG4gIC8vIFxuICBTaGFwZVByaW1pdGl2ZSA9ICdzaGFwZScsXG5cbiAgLy8gXG4gIExpbmVQcmltaXRpdmUgPSAnbGluZScsXG5cbiAgLy8gXG4gIEJhclByaW1pdGl2ZSA9ICdiYXInLFxuXG4gIC8vIFxuICBQb2xhckJhclByaW1pdGl2ZSA9ICdwb2xhci1iYXInLFxuXG4gIC8vIFxuICBUZXh0UHJpbWl0aXZlID0gJ3RleHQnLFxuXG4gIC8vIFxuICBMYWJlbFByaW1pdGl2ZSA9ICdsYWJlbCcsXG5cbiAgLy8gXG4gIFBpZVByaW1pdGl2ZSA9ICdwaWUnLFxuXG4gIC8vIFxuICBBcmVhUHJpbWl0aXZlID0gJ2FyZWEnLFxuXG4gIC8vIFxuICBQb2x5Z29uUHJpbWl0aXZlID0gJ3BvbHlnb24nLFxuXG4gIC8vIFxuICBNdWx0aXBvbHlnb25QcmltaXRpdmUgPSAnbXVsdGlwb2x5Z29uJyxcblxuICAvLyBcbiAgU3F1YXJlUHJpbWl0aXZlID0gJ3NxdWFyZSdcbn1cblxuLy8gRG9lcyB0aGUgUGFuZVR5cGUvUHJpbWl0aXZlVHlwZS9MYXlvdXRUeXBlIHRyaXBsZXQgcmVzdWx0IGluIHZlcnkgc3BlY2lmaWMgbGF5b3V0IHJ1bGVzP1xuZXhwb3J0IGVudW0gTWFya0xheW91dFZpelR5cGUge1xuXG4gIC8vIE5vIHNwZWNpYWwgcnVsZXNcbiAgU3RhbmRhcmQgPSAnc3RhbmRhcmQnLFxuXG4gIC8vIEdlbmVyaWMgT08gU3RhY2tlZCBydWxlc1xuICBPT1N0YWNrZWQgPSAnb28tc3RhY2tlZCcsXG5cbiAgLy8gT08gR2FudHQgU3RhY2tlZCBydWxlc1xuICBHYW50dFN0YWNrZWQgPSAnZ2FudHQtc3RhY2tlZCcsXG5cbiAgLy8gVHJlZW1hcFxuICBUcmVlbWFwID0gJ3RyZWVtYXAnLFxuXG4gIC8vIEJ1YmJsZSBDaGFydCAtLSBPTyBQYWNrZWQgY2lyY2xlcyBvciBzaGFwZXNcbiAgQnViYmxlID0gJ2J1YmJsZScsXG5cbiAgLy8gV29yZGxlXG4gIFdvcmRsZSA9ICd3b3JkbGUnLFxuXG4gIC8vIEhpZ2hsaWdodCBUYWJsZVxuICBIaWdobGlnaHQgPSAnaGlnaGxpZ2h0J1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIE1hcmtMYXlvdXRIYW5kbGVTcGVjaWFscyB7XG5cbiAgLy8gXG4gIENhdGVnb3JpY2FsQXhpcyA9ICdjYXRlZ29yaWNhbC1heGlzJyxcblxuICAvLyBcbiAgU2hvd1NwZWNpYWxzID0gJ3Nob3ctc3BlY2lhbHMnLFxuXG4gIC8vIFxuICBPbWl0U3BlY2lhbHMgPSAnb21pdC1zcGVjaWFscycsXG5cbiAgLy8gXG4gIEJyZWFrT25TcGVjaWFscyA9ICdicmVhay1vbi1zcGVjaWFscydcbn1cblxuLy8gXG5leHBvcnQgZW51bSBNYXJrTGF5b3V0TWFya0ZsYWcge1xuXG4gIC8vIG1hcmsgZG9lcyBub3QgY29ubmVjdCB0byB0aGUgbmV4dCBtYXJrXG4gIEVuZCA9ICdlbmQnLFxuXG4gIC8vIGxhc3QgbWFyayBpbiBhIG11bHRpLXByaW1pdGl2ZVxuICBFbmRQcmltaXRpdmUgPSAnZW5kcHJpbWl0aXZlJyxcblxuICAvLyBsYXN0IG1hcmsgaGFzIGFuIGVkZ2UgY29ubmVjdG9yIHRvIGZpcnN0IG1hcmtcbiAgQ2xvc2VkUHJpbWl0aXZlID0gJ2Nsb3NlZHByaW1pdGl2ZScsXG5cbiAgLy8gdmlzdWFsIG1hcmtlciBzaG91bGQgYmUgZGlzcGxheWVkXG4gIE1hcmtlZCA9ICdtYXJrZWQnLFxuXG4gIC8vIHZpc3VhbCBtYXJrZXIgc2hvdWxkIGJlIGRpc3BsYXllZCBpZiBsYWJlbGxlZFxuICBNYXJrZWRJZkxhYmVsID0gJ21hcmtlZGlmbGFiZWwnLFxuXG4gIC8vIGRpc3BsYXkgZGVidWcgaW5mb3JtYXRpb25cbiAgRGVidWcgPSAnZGVidWcnLFxuXG4gIC8vIHVzZXIgZmxhZ3MgY2FuIGJlZ2luIGhlcmVcbiAgVXNlciA9ICd1c2VyJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIE1hcmtMYXlvdXRQYW5lRmxhZyB7XG5cbiAgLy8gQWxsb3dzIHNjZW5lIHRvIGJlIHBhbm5lZCBpbiB0aGUgWCBkaXJlY3Rpb25cbiAgRW5hYmxlUGFuWCA9ICdlbmFibGUtcGFuLXgnLFxuXG4gIC8vIEFsbG93cyBzY2VuZSB0byBiZSBwYW5uZWQgaW4gdGhlIFkgZGlyZWN0aW9uXG4gIEVuYWJsZVBhblkgPSAnZW5hYmxlLXBhbi15JyxcblxuICAvLyBBbGxvd3MgdGhlIHBvc2l0aW9ucyBvZiBtYXJrcyB0byBiZSBzY2FsZWQgaW4gdGhlIFggZGlyZWN0aW9uIGFzIHRoZSB2aWV3IGlzIHpvb21lZFxuICBFbmFibGVab29tWCA9ICdlbmFibGUtem9vbS14JyxcblxuICAvLyBBbGxvd3MgdGhlIHBvc2l0aW9ucyBvZiBtYXJrcyB0byBiZSBzY2FsZWQgaW4gdGhlIFkgZGlyZWN0aW9uIGFzIHRoZSB2aWV3IGlzIHpvb21lZFxuICBFbmFibGVab29tWSA9ICdlbmFibGUtem9vbS15JyxcblxuICAvLyBBbGxvd3MgdGhlIHNpemUgb2YgbWFya3MgdG8gYmUgc2NhbGVkIGluIHRoZSBYIGRpcmVjdGlvbiBhcyB0aGUgdmlldyBpcyB6b29tZWQ7IHJlcXVpcmVzIHdpZHRoIGluIGRvbWFpbiBjb29yZGluYXRlc1xuICBFbmFibGVTY2FsZVggPSAnZW5hYmxlLXNjYWxlLXgnLFxuXG4gIC8vIEFsbG93cyB0aGUgc2l6ZSBvZiBtYXJrcyB0byBiZSBzY2FsZWQgaW4gdGhlIFkgZGlyZWN0aW9uIGFzIHRoZSB2aWV3IGlzIHpvb21lZDsgcmVxdWlyZXMgaGVpZ2h0IGluIGRvbWFpbiBjb29yZGluYXRlc1xuICBFbmFibGVTY2FsZVkgPSAnZW5hYmxlLXNjYWxlLXknLFxuXG4gIC8vIENsaXAgdG8gY2VsbCBib3JkZXJzIGluIHRoZSB4IGRpcmVjdGlvblxuICBDbGlwVG9DZWxsWCA9ICdjbGlwLXRvLWNlbGwteCcsXG5cbiAgLy8gQ2xpcCB0byBjZWxsIGJvcmRlcnMgaW4gdGhlIHkgZGlyZWN0aW9uXG4gIENsaXBUb0NlbGxZID0gJ2NsaXAtdG8tY2VsbC15JyxcblxuICAvLyBVc2UgY2VsbCBjbGlwcGluZyBmb3Igc2VsZWN0aW9uXG4gIENsaXBUb0NlbGxGb3JTZWxlY3Rpb24gPSAnY2xpcC10by1jZWxsLWZvci1zZWxlY3Rpb24nLFxuXG4gIC8vIFRoZSB4LWF4aXMgaXMgb24gdG9wIG9mIHBhbmVcbiAgWEF4aXNPblRvcCA9ICd4LWF4aXMtb24tdG9wJyxcblxuICAvLyBUaGUgeS1heGlzIGlzIG9uIHRoZSByaWdodCBvZiBwYW5lXG4gIFlBeGlzT25SaWdodCA9ICd5LWF4aXMtb24tcmlnaHQnLFxuXG4gIC8vIFRoZSBwYW5lIGhhcyBjZWxscyBpbiB0aGUgeCBheGlzXG4gIEhhc0NlbGxzWCA9ICdoYXMtY2VsbHMteCcsXG5cbiAgLy8gVGhlIHBhbmUgaGFzIGNlbGxzIGluIHRoZSB5IGF4aXNcbiAgSGFzQ2VsbHNZID0gJ2hhcy1jZWxscy15J1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIE1hcmtMYXlvdXREcm9wTGluZUZsYWcge1xuXG4gIC8vIFNob3cgZHJvcCBsaW5lcyBvbiBzZWxlY3RlZCBtYXJrXG4gIERyb3BMaW5lU2hvd1NlbGVjdGVkID0gJ2Ryb3BsaW5lLXNob3ctc2VsZWN0ZWQnLFxuXG4gIC8vIFNob3cgZHJvcCBsaW5lcyBvbiBhbGwgbWFya3NcbiAgRHJvcExpbmVTaG93QWxsID0gJ2Ryb3BsaW5lLXNob3ctYWxsJyxcblxuICAvLyBEcm9wIGxpbmUgdG8geC1heGlzXG4gIERyb3BMaW5lWCA9ICdkcm9wbGluZS14JyxcblxuICAvLyBEcm9wIGxpbmUgdG8geS1heGlzXG4gIERyb3BMaW5lWSA9ICdkcm9wbGluZS15JyxcblxuICAvLyBTaG93IGxhYmVscyBvbiBkcm9wIGxpbmVzXG4gIERyb3BMaW5lTGFiZWxzID0gJ2Ryb3BsaW5lLWxhYmVscydcbn1cblxuLy8gSWRlbnRpZmllcyB0aGUgb2Zmc2V0IGZvciBhIHBhcnRpY3VsYXIgdGFibGUgaW4gdGhlIGFycmF5IG9mIHRhYmxlcyBpbiBQRE1hcmtzUHJlc01vZGVsXG5leHBvcnQgZW51bSBNYXJrTGF5b3V0RGF0YVRhYmxlSUQge1xuXG4gIC8vIFRoZSB0YWJsZSB0aGF0IGNvbnRhaW5zIHRoZSBtYXJrIGluZm9ybWF0aW9uXG4gIE1hcmtUYWJsZSA9ICdtYXJrLXRhYmxlJyxcblxuICAvLyBUaGUgdGFibGUgdGhhdCBjb250YWlucyB0ZXh0IHJ1bnMgZm9yIHRleHQgbWFya3MgYW5kIGxhYmVsc1xuICBUZXh0UnVuVGFibGUgPSAndGV4dC1ydW4tdGFibGUnLFxuXG4gIC8vIFRoZSB0YWJsZSB0aGF0IGNvbnRhaW5zIHRleHQgc3R5bGVzIGZvciBlYWNoIHRleHQgcnVuLlxuICBUZXh0U3R5bGVUYWJsZSA9ICd0ZXh0LXN0eWxlLXRhYmxlJ1xufVxuXG4vLyBXaGljaCBsYWJlbGluZyBhbGdvcml0aG0gc2hvdWxkIGJlIHVzZWQ/ICBDbG9zZWx5IHJlbGF0ZWQgdG8gTWFya0xheW91dDo6Vml6VHlwZVxuZXhwb3J0IGVudW0gTGFiZWxMYXlvdXRUeXBlIHtcblxuICAvLyBObyBsYWJlbHNcbiAgTEFCRUxfTEFZT1VUX05PTkUgPSAndW5sYWJlbGVkJyxcblxuICAvLyBUcmVlbWFwIC0gbGFiZWxzIGluc2lkZSB0aGUgcmVjdGFuZ2xlc1xuICBMQUJFTF9MQVlPVVRfVFJFRU1BUCA9ICd0cmVlbWFwLWxhYmVscycsXG5cbiAgLy8gQnViYmxlIENoYXJ0IC0gbGFiZWxzIGluc2lkZSB0aGUgc2hhcGVzXG4gIExBQkVMX0xBWU9VVF9CVUJCTEVDSEFSVCA9ICdidWJibGUtbGFiZWxzJyxcblxuICAvLyBTY2F0dGVycGxvdCAtIGR5bmFtaWMgYmVzdC1maXQgbGFiZWxzXG4gIExBQkVMX0xBWU9VVF9TQ0FUVEVSUExPVCA9ICdzY2F0dGVycGxvdC1sYWJlbHMnLFxuXG4gIC8vIFN0YW5kYXJkIGxhYmVsaW5nXG4gIExBQkVMX0xBWU9VVF9TVEFOREFSRCA9ICdzdGFuZGFyZC1sYWJlbHMnLFxuXG4gIC8vIEhpZ2hsaWdodCB0YWJsZVxuICBMQUJFTF9MQVlPVVRfSElHSExJR0hUX1RBQkxFID0gJ2hpZ2hsaWdodC10YWJsZS1sYWJlbHMnXG59XG5cbi8vIE1hcmtMYXllciByZXByZXNlbnRzIHRoZSBsYXllcnMgb2YgYSBtYXJrIGdpdmVuIHRoZSB2YXJpb3VzIHN0YXRlc1xuZXhwb3J0IGVudW0gTWFya0xheWVyIHtcblxuICAvLyBcbiAgTm9ybWFsVW5kZXIgPSAnbm9ybWFsVW5kZXInLFxuXG4gIC8vIFxuICBOb3JtYWxPbiA9ICdub3JtYWxPbicsXG5cbiAgLy8gXG4gIFNlbGVjdGVkVW5kZXIgPSAnc2VsZWN0ZWRVbmRlcicsXG5cbiAgLy8gXG4gIFNlbGVjdGVkT24gPSAnc2VsZWN0ZWRPbicsXG5cbiAgLy8gXG4gIEhpZ2hsaWdodGVkVW5kZXIgPSAnaGlnaGxpZ2h0ZWRVbmRlcicsXG5cbiAgLy8gXG4gIEhpZ2hsaWdodGVkT24gPSAnaGlnaGxpZ2h0ZWRPbicsXG5cbiAgLy8gXG4gIEVkZ2VVbmRlciA9ICdlZGdlVW5kZXInLFxuXG4gIC8vIFxuICBFZGdlT24gPSAnZWRnZU9uJyxcblxuICAvLyBcbiAgQm9yZGVyID0gJ2JvcmRlcicsXG5cbiAgLy8gXG4gIFNlbGVjdGVkVW5kZXIxID0gJ3NlbGVjdGVkVW5kZXIxJyxcblxuICAvLyBcbiAgU2VsZWN0ZWRPbjEgPSAnc2VsZWN0ZWRPbjEnLFxuXG4gIC8vIFxuICBVblNlbGVjdGVkQ3VzdG9tU2hhcGUgPSAndW5TZWxlY3RlZEN1c3RvbVNoYXBlJyxcblxuICAvLyBcbiAgTm9ybWFsQWxwaGFNYXNrID0gJ25vcm1hbEFscGhhTWFzaycsXG5cbiAgLy8gXG4gIEhhbG9BbHBoYU1hc2sgPSAnaGFsb0FscGhhTWFzaycsXG5cbiAgLy8gXG4gIEhpZ2hsaWdodGVkVW5kZXIxID0gJ2hpZ2hsaWdodGVkVW5kZXIxJyxcblxuICAvLyBcbiAgSGlnaGxpZ2h0ZWRPbjEgPSAnaGlnaGxpZ2h0ZWRPbjEnLFxuXG4gIC8vIFxuICBTZWxlY3RlZEVkZ2VVbmRlciA9ICdzZWxlY3RlZEVkZ2VVbmRlcicsXG5cbiAgLy8gXG4gIEJsb2JVbmRlciA9ICdibG9iVW5kZXInLFxuXG4gIC8vIFxuICBCbG9iT24gPSAnYmxvYk9uJyxcblxuICAvLyBcbiAgSG92ZXJPdmVybGF5ID0gJ2hvdmVyT3ZlcmxheScsXG5cbiAgLy8gXG4gIFByZXNzZWRPdmVybGF5ID0gJ3ByZXNzZWRPdmVybGF5J1xufVxuXG4vLyBDb2xvck92ZXJyaWRlTW9kZSByZXByZXNlbnRzIHRoZSBkaWZmZXJlbnQgd2F5cyBpbiB3aGljaCBtYXJrIGNvbG9ycyBtYXkgYmUgbW9kaWZpZWQuXG5leHBvcnQgZW51bSBDb2xvck92ZXJyaWRlTW9kZSB7XG5cbiAgLy8gXG4gIENvbG9yT3ZlcnJpZGVOb25lID0gJ2NvbG9yT3ZlcnJpZGVOb25lJyxcblxuICAvLyBcbiAgQ29sb3JPdmVycmlkZUZvZyA9ICdjb2xvck92ZXJyaWRlRm9nJyxcblxuICAvLyBcbiAgQ29sb3JPdmVycmlkZU9wYXF1ZSA9ICdjb2xvck92ZXJyaWRlT3BhcXVlJyxcblxuICAvLyBcbiAgQ29sb3JPdmVycmlkZVJlcGxhY2VBbHBoYSA9ICdjb2xvck92ZXJyaWRlUmVwbGFjZUFscGhhJyxcblxuICAvLyBcbiAgQ29sb3JPdmVycmlkZUNvdW50ID0gJ2NvbG9yT3ZlcnJpZGVDb3VudCdcbn1cblxuLy8gQ29sb3JUcmFuc2Zvcm1Nb2RlIHJlcHJlc2VudHMgdGhlIGRpZmZlcmVudCB3YXlzIGluIHdoaWNoIG1hcmsgY29sb3JzIG1heSBiZSBtb2RpZmllZC5cbmV4cG9ydCBlbnVtIENvbG9yVHJhbnNmb3JtTW9kZSB7XG5cbiAgLy8gXG4gIENvbG9yVHJhbnNmb3JtTm9uZSA9ICdjb2xvclRyYW5zZm9ybU5vbmUnLFxuXG4gIC8vIFxuICBDb2xvclRyYW5zZm9ybUZvZyA9ICdjb2xvclRyYW5zZm9ybUZvZycsXG5cbiAgLy8gXG4gIENvbG9yVHJhbnNmb3JtT3BhcXVlID0gJ2NvbG9yVHJhbnNmb3JtT3BhcXVlJyxcblxuICAvLyBcbiAgQ29sb3JUcmFuc2Zvcm1PdmVycmlkZUNvbG9yID0gJ2NvbG9yVHJhbnNmb3JtT3ZlcnJpZGVDb2xvcicsXG5cbiAgLy8gXG4gIENvbG9yVHJhbnNmb3JtT3ZlcnJpZGVBbHBoYSA9ICdjb2xvclRyYW5zZm9ybU92ZXJyaWRlQWxwaGEnXG59XG5cbi8vIE1hcmtTdGF0ZSByZXByZXNlbnRzIHZhbGlkIHN0YXRlcyBmb3IgYSBtYXJrLlxuZXhwb3J0IGVudW0gTWFya1N0YXRlIHtcblxuICAvLyBcbiAgTWFya1N0YXRlTm9ybWFsID0gJ21hcmtTdGF0ZU5vcm1hbCcsXG5cbiAgLy8gXG4gIE1hcmtTdGF0ZUhpZ2hsaWdodGVkID0gJ21hcmtTdGF0ZUhpZ2hsaWdodGVkJyxcblxuICAvLyBcbiAgTWFya1N0YXRlU2VsZWN0ZWQgPSAnbWFya1N0YXRlU2VsZWN0ZWQnLFxuXG4gIC8vIFxuICBNYXJrU3RhdGVJbnZpc2libGUgPSAnbWFya1N0YXRlSW52aXNpYmxlJ1xufVxuXG4vLyBMaW5lU3RhdGUgcmVwcmVzZW50cyB2YWxpZCBzdGF0ZXMgZm9yIGEgbGluZSBtdWx0aS1tYXJrLlxuZXhwb3J0IGVudW0gTGluZVN0YXRlIHtcblxuICAvLyBcbiAgTGluZVN0YXRlTm9ybWFsID0gJ2xpbmVTdGF0ZU5vcm1hbCcsXG5cbiAgLy8gXG4gIExpbmVTdGF0ZUhpZ2hsaWdodGVkID0gJ2xpbmVTdGF0ZUhpZ2hsaWdodGVkJyxcblxuICAvLyBcbiAgTGluZVN0YXRlU2VsZWN0ZWQgPSAnbGluZVN0YXRlU2VsZWN0ZWQnXG59XG5cbi8vIFJlbmRlclBhc3MgcmVwcmVzZW50cyBlYWNoIHBhc3Mgb3ZlciB0aGUgc2NlbmUgZWxlbWVudHMgYXMgZWFjaCBsYXllciBpcyByZW5kZXJlZC5cbmV4cG9ydCBlbnVtIFJlbmRlclBhc3Mge1xuXG4gIC8vIFxuICBOb3JtYWxVbmRlclBhc3MgPSAnbm9ybWFsVW5kZXJQYXNzJyxcblxuICAvLyBcbiAgTm9ybWFsT25QYXNzID0gJ25vcm1hbE9uUGFzcycsXG5cbiAgLy8gXG4gIEhpZ2hsaWdodGVkVW5kZXJQYXNzID0gJ2hpZ2hsaWdodGVkVW5kZXJQYXNzJyxcblxuICAvLyBcbiAgSGlnaGxpZ2h0ZWRPblBhc3MgPSAnaGlnaGxpZ2h0ZWRPblBhc3MnLFxuXG4gIC8vIFxuICBTZWxlY3RlZFVuZGVyUGFzcyA9ICdzZWxlY3RlZFVuZGVyUGFzcycsXG5cbiAgLy8gXG4gIFNlbGVjdGVkT25QYXNzID0gJ3NlbGVjdGVkT25QYXNzJyxcblxuICAvLyBcbiAgUmVuZGVyUGFzc0NvdW50ID0gJ3JlbmRlclBhc3NDb3VudCdcbn1cblxuLy8gVGhlIHJvbGUgYXNzb2NpYXRlZCB3aXRoIGEgc2NlbmUgZWxlbWVudC4gVGhpcyBhbGxvd3MgdGhlIGRyYXcgb3JkZXJpbmcgdG8gYmUgbW9yZSBlZmZpY2llbnQuXG5leHBvcnQgZW51bSBFbGVtZW50Um9sZSB7XG5cbiAgLy8gXG4gIE1vZGVsQ29udGFpbmVyUm9sZSA9ICdtb2RlbENvbnRhaW5lclJvbGUnLFxuXG4gIC8vIFxuICBCYWNrZ3JvdW5kUm9sZSA9ICdiYWNrZ3JvdW5kUm9sZScsXG5cbiAgLy8gXG4gIFVuZGVyTWFya1JvbGUgPSAndW5kZXJNYXJrUm9sZScsXG5cbiAgLy8gXG4gIE1hcmtSb2xlID0gJ21hcmtSb2xlJyxcblxuICAvLyBcbiAgVW5kZXJMYWJlbFJvbGUgPSAndW5kZXJMYWJlbFJvbGUnLFxuXG4gIC8vIFxuICBMYWJlbFJvbGUgPSAnbGFiZWxSb2xlJyxcblxuICAvLyBcbiAgRm9yZWdyb3VuZFJvbGUgPSAnZm9yZWdyb3VuZFJvbGUnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gUGF0aEVsZW1lbnQge1xuXG4gIC8vIFxuICBQYXRoTW92ZVRvID0gJ21vdmV0bycsXG5cbiAgLy8gXG4gIFBhdGhMaW5lVG8gPSAnbGluZXRvJyxcblxuICAvLyBcbiAgUGF0aEN1cnZlVG8gPSAnY3VydmV0bydcbn1cblxuLy8gVGhlIHNlcmlhbGl6YXRpb24gaXMgc3RpbGwgZHVwbGljYXRlZCBpbiBKc29uVXRpbHM6OlpvbmVVdGlsczo6Wm9uZU5hbWVzIGFuZCB0eXBlcy5qc1xuZXhwb3J0IGVudW0gWm9uZVR5cGUge1xuXG4gIC8vIFxuICBaVF9JbnZhbGlkID0gJ2ludmFsaWQnLFxuXG4gIC8vIHNlY3Rpb246IG5hbWUgPSB3b3Jrc2hlZXQgbmFtZVxuICBaVF9WaXogPSAndml6JyxcblxuICAvLyBcbiAgWlRfQ29sb3JMZWdlbmQgPSAnY29sb3InLFxuXG4gIC8vIFxuICBaVF9TaGFwZUxlZ2VuZCA9ICdzaGFwZScsXG5cbiAgLy8gXG4gIFpUX1NpemVMZWdlbmQgPSAnc2l6ZScsXG5cbiAgLy8gXG4gIFpUX01hcExlZ2VuZCA9ICdtYXAnLFxuXG4gIC8vIHBhcmFtID0gZmllbGQgbmFtZVxuICBaVF9RdWlja0ZpbHRlciA9ICdmaWx0ZXInLFxuXG4gIC8vIHBhcmFtID0gZmllbGQgbmFtZVxuICBaVF9IaWdobGlnaHRlciA9ICdoaWdobGlnaHRlcicsXG5cbiAgLy8gXG4gIFpUX0N1cnJQYWdlID0gJ2N1cnJlbnQtcGFnZScsXG5cbiAgLy8gc2VjdGlvbjogbmFtZSB1bnVzZWRcbiAgWlRfRW1wdHkgPSAnZW1wdHknLFxuXG4gIC8vIHBhcmFtID0gdGl0bGVcbiAgWlRfVGl0bGUgPSAndGl0bGUnLFxuXG4gIC8vIHBhcmFtID0gdGV4dFxuICBaVF9UZXh0ID0gJ3RleHQnLFxuXG4gIC8vIHBhcmFtID0gZmlsZSBuYW1lXG4gIFpUX0JpdG1hcCA9ICdiaXRtYXAnLFxuXG4gIC8vIHBhcmFtID0gVVJMXG4gIFpUX1dlYiA9ICd3ZWInLFxuXG4gIC8vIHBhcmFtID0gYWRkLWluIGlkXG4gIFpUX0FkZEluID0gJ2FkZC1pbicsXG5cbiAgLy8gXG4gIFpUX0J1dHRvbiA9ICdidXR0b24tb2JqZWN0JyxcblxuICAvLyBwYXJhbSA9IGZpZWxkIG5hbWVcbiAgWlRfUGFyYW1DdHJsID0gJ3BhcmFtY3RybCcsXG5cbiAgLy8gXG4gIFpUX0ZsaXBib2FyZE5hdiA9ICdmbGlwYm9hcmQtbmF2JyxcblxuICAvLyBcbiAgWlRfRmxpcGJvYXJkID0gJ2ZsaXBib2FyZCcsXG5cbiAgLy8gc2VjdGlvbjogbGF5b3V0XG4gIFpUX0xheW91dEJhc2ljID0gJ2xheW91dC1iYXNpYycsXG5cbiAgLy8gXG4gIFpUX0xheW91dEZsb3cgPSAnbGF5b3V0LWZsb3cnLFxuXG4gIC8vIFxuICBaVF9MYXlvdXRGcmVlRm9ybSA9ICdsYXlvdXQtZnJlZS1mb3JtJyxcblxuICAvLyB1c2VkIG9ubHkgZm9yIGVudW0gaXRlcmF0aW9uXG4gIFpUX0VuZCA9ICdlbmQnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gQ29udGVudFR5cGUge1xuXG4gIC8vIHNlY3Rpb246IG5hbWUgPSB3b3Jrc2hlZXQgbmFtZVxuICBDVF9WaXogPSAndml6JyxcblxuICAvLyBcbiAgQ1RfQ29sb3JMZWdlbmQgPSAnY29sb3InLFxuXG4gIC8vIFxuICBDVF9TaGFwZUxlZ2VuZCA9ICdzaGFwZScsXG5cbiAgLy8gXG4gIENUX1NpemVMZWdlbmQgPSAnc2l6ZScsXG5cbiAgLy8gXG4gIENUX01hcExlZ2VuZCA9ICdtYXAnLFxuXG4gIC8vIHBhcmFtID0gZmllbGQgbmFtZVxuICBDVF9RdWlja0ZpbHRlciA9ICdmaWx0ZXInLFxuXG4gIC8vIHBhcmFtID0gZmllbGQgbmFtZVxuICBDVF9IaWdobGlnaHRlciA9ICdoaWdobGlnaHRlcicsXG5cbiAgLy8gXG4gIENUX0N1cnJQYWdlID0gJ2N1cnJlbnQtcGFnZScsXG5cbiAgLy8gcGFyYW0gPSBmaWVsZCBuYW1lXG4gIENUX1BhcmFtQ3RybCA9ICdwYXJhbWN0cmwnLFxuXG4gIC8vIHBhcmFtID0gdGl0bGVcbiAgQ1RfVGl0bGUgPSAndGl0bGUnLFxuXG4gIC8vIHBhcmFtID0gdGV4dFxuICBDVF9UZXh0ID0gJ3RleHQnLFxuXG4gIC8vIHBhcmFtID0gZmlsZSBuYW1lXG4gIENUX0JpdG1hcCA9ICdiaXRtYXAnLFxuXG4gIC8vIHBhcmFtID0gVVJMXG4gIENUX1dlYiA9ICd3ZWInLFxuXG4gIC8vIHBhcmFtID0gYWRkLWluIGlkXG4gIENUX0FkZEluID0gJ2FkZC1pbicsXG5cbiAgLy8gXG4gIENUX0J1dHRvbiA9ICdidXR0b24nLFxuXG4gIC8vIFxuICBDVF9GbGlwYm9hcmROYXYgPSAnZmxpcGJvYXJkLW5hdicsXG5cbiAgLy8gXG4gIENUX0ZsaXBib2FyZCA9ICdmbGlwYm9hcmQnLFxuXG4gIC8vIERlbm90ZXMgdGhhdCB0aGlzIHpvbmUgaGFzIG5vIGNvbnRlbnQgYW5kIHRoZXJlZm9yZSBoYXMgYSBtZWFuaW5nZnVsIGxheW91dCB0eXBlXG4gIENUX05vbmUgPSAnY29udGVudC1ub25lJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFpvbmVMYXlvdXRUeXBlIHtcblxuICAvLyBzZWN0aW9uOiBsYXlvdXRcbiAgWkxUX0Jhc2ljID0gJ2Jhc2ljJyxcblxuICAvLyBcbiAgWkxUX0ZyZWVGb3JtID0gJ2ZyZWUtZm9ybScsXG5cbiAgLy8gXG4gIFpMVF9GbG93ID0gJ2Zsb3cnLFxuXG4gIC8vIFxuICBaTFRfRGlzdHJpYnV0ZUV2ZW5seSA9ICdkaXN0cmlidXRlLWV2ZW5seScsXG5cbiAgLy8gXG4gIFpMVF9Ucml2aWFsID0gJ3RyaXZpYWwnXG59XG5cbi8vIFJlY3RhbmxnZXMgaW4gdGhlIGJveCBtb2RlbFxuZXhwb3J0IGVudW0gQm94VHlwZSB7XG5cbiAgLy8gYm91bmRpbmcgcmVjdGFuZ2xlIGluIHRoZSBib3ggbW9kZWxcbiAgQlRfQm91bmRpbmcgPSAnYm91bmRpbmcnLFxuXG4gIC8vIGJvcmRlciByZWN0YW5nbGUgaW4gdGhlIGJveCBtb2RlbCBleGNsdWRpbmcgbWFyZ2luc1xuICBCVF9Cb3JkZXIgPSAnYm9yZGVyJyxcblxuICAvLyBjb250ZW50IHJlYWN0bmFnZSBpbiB0aGUgYm94IG1vZGVsIGV4Y2x1ZGluZyBtYXJnaW5zIHBsdXMgYm9yZGVycyBhbmQgcGFkZGluZ3NcbiAgQlRfQ29udGVudCA9ICdjb250ZW50J1xufVxuXG4vLyBSZXByZXNlbnRzIHRoZSB0eXBlIG9mIGNvbW1hbmQgdG8gYmUgcGVyZm9ybWVkIG9uIHRoZSB6LW9yZGVyIG9mIGEgem9uZVxuZXhwb3J0IGVudW0gTW9kaWZ5Wm9uZVpPcmRlckNvbW1hbmRUeXBlIHtcblxuICAvLyBcbiAgTW9kaWZ5Wm9uZVpPcmRlckNvbW1hbmRGcm9udCA9ICdmcm9udCcsXG5cbiAgLy8gXG4gIE1vZGlmeVpvbmVaT3JkZXJDb21tYW5kQmFjayA9ICdiYWNrJyxcblxuICAvLyBcbiAgTW9kaWZ5Wm9uZVpPcmRlckNvbW1hbmRSZWxhdGl2ZVBvcyA9ICdyZWwtcG9zJ1xufVxuXG4vLyBFbnVtZXJhdGlvbiBvZiB2YWxpZCBob3Jpem9udGFsIGFsaWdubWVudHMgZm9yIHRleHQgcmVnaW9ucy5cbmV4cG9ydCBlbnVtIFRleHRSZWdpb25IQWxpZ24ge1xuXG4gIC8vIFxuICBUSEFfTGVmdCA9ICdoLWFsaWduLWxlZnQnLFxuXG4gIC8vIFxuICBUSEFfQ2VudGVyID0gJ2gtYWxpZ24tY2VudGVyJyxcblxuICAvLyBcbiAgVEhBX1JpZ2h0ID0gJ2gtYWxpZ24tcmlnaHQnLFxuXG4gIC8vIFxuICBUSEFfQXV0b21hdGljID0gJ2gtYWxpZ24tYXV0bydcbn1cblxuLy8gRW51bWVyYXRpb24gb2YgdmFsaWQgdmVydGljYWwgYWxpZ25tZW50cyBmb3IgdGV4dCByZWdpb25zLlxuZXhwb3J0IGVudW0gVGV4dFJlZ2lvblZBbGlnbiB7XG5cbiAgLy8gXG4gIFRWQV9Cb3R0b20gPSAndi1hbGlnbi1ib3R0b20nLFxuXG4gIC8vIFxuICBUVkFfQ2VudGVyID0gJ3YtYWxpZ24tY2VudGVyJyxcblxuICAvLyBcbiAgVFZBX1RvcCA9ICd2LWFsaWduLXRvcCcsXG5cbiAgLy8gXG4gIFRWQV9BdXRvbWF0aWMgPSAndi1hbGlnbi1hdXRvJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEF1dG9Db21wbGV0ZUl0ZW1UeXBlIHtcblxuICAvLyBcbiAgQUNJVF9JbnZhbGlkID0gJ2ludmFsaWQnLFxuXG4gIC8vIFxuICBBQ0lUX0ZpZWxkID0gJ2ZpZWxkJyxcblxuICAvLyBcbiAgQUNJVF9GdW5jdGlvbiA9ICdmdW5jJyxcblxuICAvLyBcbiAgQUNJVF9TZXBhcmF0b3IgPSAnc2VwYXJhdG9yJyxcblxuICAvLyBcbiAgQUNJVF9IZWFkZXIgPSAnaGVhZGVyJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIENhbGN1bGF0aW9uQ29udGV4dCB7XG5cbiAgLy8gXG4gIENDX0NhbGN1bGF0aW9uRGlhbG9nID0gJ2NhbGN1bGF0aW9uLWRpYWxvZycsXG5cbiAgLy8gXG4gIENDX1R5cGVJblBpbGwgPSAndHlwZS1pbi1waWxsJyxcblxuICAvLyBcbiAgQ0NfRmlsdGVyVG9wID0gJ2ZpbHRlci10b3AnLFxuXG4gIC8vIFxuICBDQ19GaWx0ZXJDb25kaXRpb24gPSAnZmlsdGVyLWNvbmRpdGlvbicsXG5cbiAgLy8gXG4gIENDX0pvaW5DYWxjRGlhbG9nID0gJ2pvaW4tY2FsYy1kaWFsb2cnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gRm9yZWNhc3RDb21wb25lbnRUeXBlIHtcblxuICAvLyBcbiAgRm9yZWNhc3RDb21wb25lbnRUeXBlX19FVFNfTk9ORSA9ICdldHMtbm9uZScsXG5cbiAgLy8gXG4gIEZvcmVjYXN0Q29tcG9uZW50VHlwZV9fRVRTX0FERElUSVZFID0gJ2V0cy1hZGRpdGl2ZScsXG5cbiAgLy8gXG4gIEZvcmVjYXN0Q29tcG9uZW50VHlwZV9fRVRTX01VTFRJUExJQ0FUSVZFID0gJ2V0cy1tdWx0aXBsaWNhdGl2ZSdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBQcmVkaWN0aW9uSW50ZXJ2YWxBeGlzIHtcblxuICAvLyBcbiAgUElfQVhJU19OT05FID0gJ25vbmUnLFxuXG4gIC8vIFxuICBQSV9BWElTX1ggPSAnYXhpcy14JyxcblxuICAvLyBcbiAgUElfQVhJU19ZID0gJ2F4aXMteSdcbn1cblxuLy8gSW5kaWNhdGVzIHRoZSB0eXBlIG9mIHF1aWNrIGZpbHRlclxuZXhwb3J0IGVudW0gUXVpY2tGaWx0ZXJUeXBlIHtcblxuICAvLyBcbiAgUUZUX1Vua25vd24gPSAndW5rbm93bicsXG5cbiAgLy8gXG4gIFFGVF9RdWFudGl0YXRpdmUgPSAncXVhbnRpdGF0aXZlJyxcblxuICAvLyBcbiAgUUZUX1JlbGF0aXZlRGF0ZSA9ICdyZWxhdGl2ZS1kYXRlJyxcblxuICAvLyBcbiAgUUZUX0hpZXJhcmNoeSA9ICdoaWVyYXJjaHknLFxuXG4gIC8vIFxuICBRRlRfQ2F0ZWdvcmljYWwgPSAnY2F0ZWdvcmljYWwnXG59XG5cbi8vIEluZGljYXRlcyBhIGNhdGVnb3JpY2FsIFVJIGNvbnRyb2xcbmV4cG9ydCBlbnVtIFF1aWNrRmlsdGVyQ2F0ZWdvcmljYWxDdHJsIHtcblxuICAvLyBcbiAgUXVpY2tGaWx0ZXJDYXRlZ29yaWNhbEN0cmxfX1FGQ0NfUmVhZG91dCA9ICdyZWFkb3V0JyxcblxuICAvLyBcbiAgUXVpY2tGaWx0ZXJDYXRlZ29yaWNhbEN0cmxfX1FGQ0NfU2xpZGVyID0gJ3NsaWRlcicsXG5cbiAgLy8gXG4gIFF1aWNrRmlsdGVyQ2F0ZWdvcmljYWxDdHJsX19RRkNDX1N0ZXBCdG5zID0gJ3N0ZXAtYnV0dG9ucycsXG5cbiAgLy8gXG4gIFF1aWNrRmlsdGVyQ2F0ZWdvcmljYWxDdHJsX19RRkNDX0FsbEJ0biA9ICdhbGwtYnV0dG9ucycsXG5cbiAgLy8gXG4gIFF1aWNrRmlsdGVyQ2F0ZWdvcmljYWxDdHJsX19RRkNDX0ZpbHRlclN0YXRlID0gJ2ZpbHRlcnN0YXRlLWJ1dHRvbicsXG5cbiAgLy8gXG4gIFF1aWNrRmlsdGVyQ2F0ZWdvcmljYWxDdHJsX19RRkNDX1NlYXJjaCA9ICdzZWFyY2gnLFxuXG4gIC8vIFxuICBRdWlja0ZpbHRlckNhdGVnb3JpY2FsQ3RybF9fUUZDQ19Eb21haW4gPSAnZG9tYWluJyxcblxuICAvLyBcbiAgUXVpY2tGaWx0ZXJDYXRlZ29yaWNhbEN0cmxfX1FGQ0NfTW9yZUZld2VyQnV0dG9uID0gJ21vcmVmZXdlci1idXR0b24nLFxuXG4gIC8vIFxuICBRdWlja0ZpbHRlckNhdGVnb3JpY2FsQ3RybF9fUUZDQ19FeGNsdWRlID0gJ2V4Y2x1ZGUnLFxuXG4gIC8vIFxuICBRdWlja0ZpbHRlckNhdGVnb3JpY2FsQ3RybF9fUUZDQ19Nb2RlID0gJ21vZGUnLFxuXG4gIC8vIFxuICBRdWlja0ZpbHRlckNhdGVnb3JpY2FsQ3RybF9fUUZDQ19MZXZlbHMgPSAnbGV2ZWxzJyxcblxuICAvLyBcbiAgUXVpY2tGaWx0ZXJDYXRlZ29yaWNhbEN0cmxfX1FGQ0NfQXBwbHlCdXR0b24gPSAnYXBwbHktYnV0dG9uJ1xufVxuXG4vLyBJbmRpY2F0ZXMgYSBjYXRlZ29yaWNhbCBtb2RlXG5leHBvcnQgZW51bSBRdWlja0ZpbHRlckNhdGVnb3JpY2FsTW9kZSB7XG5cbiAgLy8gXG4gIFF1aWNrRmlsdGVyQ2F0ZWdvcmljYWxNb2RlX19RRkNNX0NoZWNrTGlzdCA9ICdjaGVjay1saXN0JyxcblxuICAvLyBcbiAgUXVpY2tGaWx0ZXJDYXRlZ29yaWNhbE1vZGVfX1FGQ01fUmFkaW9MaXN0ID0gJ3JhZGlvLWxpc3QnLFxuXG4gIC8vIFxuICBRdWlja0ZpbHRlckNhdGVnb3JpY2FsTW9kZV9fUUZDTV9Ecm9wZG93biA9ICdkcm9wZG93bicsXG5cbiAgLy8gXG4gIFF1aWNrRmlsdGVyQ2F0ZWdvcmljYWxNb2RlX19RRkNNX1NsaWRlciA9ICdzbGlkZXInLFxuXG4gIC8vIFxuICBRdWlja0ZpbHRlckNhdGVnb3JpY2FsTW9kZV9fUUZDTV9QYXR0ZXJuID0gJ3BhdHRlcm4nLFxuXG4gIC8vIFxuICBRdWlja0ZpbHRlckNhdGVnb3JpY2FsTW9kZV9fUUZDTV9UeXBlSW5MaXN0ID0gJ3R5cGUtaW4tbGlzdCcsXG5cbiAgLy8gXG4gIFF1aWNrRmlsdGVyQ2F0ZWdvcmljYWxNb2RlX19RRkNNX0NoZWNrRHJvcGRvd24gPSAnY2hlY2stZHJvcGRvd24nLFxufVxuXG4vLyBJbmRpY2F0ZXMgYSBxdWFudGl0YXRpdmUgVUkgY29udHJvbFxuZXhwb3J0IGVudW0gUXVpY2tGaWx0ZXJRdWFudGl0YXRpdmVDdHJsIHtcblxuICAvLyBcbiAgUXVpY2tGaWx0ZXJRdWFudGl0YXRpdmVDdHJsX19RRlFDX1JlYWRvdXRzID0gJ3JlYWRvdXRzJyxcblxuICAvLyBcbiAgUXVpY2tGaWx0ZXJRdWFudGl0YXRpdmVDdHJsX19RRlFDX1NsaWRlciA9ICdzbGlkZXInLFxuXG4gIC8vIFxuICBRdWlja0ZpbHRlclF1YW50aXRhdGl2ZUN0cmxfX1FGUUNfTnVsbEN0cmxzID0gJ251bGwtY29udHJvbHMnLFxuXG4gIC8vIFxuICBRdWlja0ZpbHRlclF1YW50aXRhdGl2ZUN0cmxfX1FGUUNfUmVsZGF0ZVBpY2tlciA9ICdyZWwtZGF0ZS1waWNrZXInLFxuXG4gIC8vIFxuICBRdWlja0ZpbHRlclF1YW50aXRhdGl2ZUN0cmxfX1FGUUNfRG9tYWluID0gJ2RvbWFpbicsXG5cbiAgLy8gXG4gIFF1aWNrRmlsdGVyUXVhbnRpdGF0aXZlQ3RybF9fUUZRQ19Nb3JlRmV3ZXJCdXR0b24gPSAnbW9yZWZld2VyLWJ1dHRvbicsXG5cbiAgLy8gXG4gIFF1aWNrRmlsdGVyUXVhbnRpdGF0aXZlQ3RybF9fUUZRQ19GaWx0ZXJTdGF0ZSA9ICdmaWx0ZXJzdGF0ZS1idXR0b24nXG59XG5cbi8vIEluZGljYXRlcyBhIHF1YW50aXRhdGl2ZSBtb2RlXG5leHBvcnQgZW51bSBRdWlja0ZpbHRlclF1YW50aXRhdGl2ZU1vZGUge1xuXG4gIC8vIFxuICBRdWlja0ZpbHRlclF1YW50aXRhdGl2ZU1vZGVfX1FGUU1fTWluTWF4ID0gJ21pbi1tYXgnLFxuXG4gIC8vIFxuICBRdWlja0ZpbHRlclF1YW50aXRhdGl2ZU1vZGVfX1FGUU1fTWluT25seSA9ICdtaW4tb25seScsXG5cbiAgLy8gXG4gIFF1aWNrRmlsdGVyUXVhbnRpdGF0aXZlTW9kZV9fUUZRTV9NYXhPbmx5ID0gJ21heC1vbmx5JyxcblxuICAvLyBcbiAgUXVpY2tGaWx0ZXJRdWFudGl0YXRpdmVNb2RlX19RRlFNX1JlbERhdGUgPSAncmVsLWRhdGUnLFxuXG4gIC8vIFxuICBRdWlja0ZpbHRlclF1YW50aXRhdGl2ZU1vZGVfX1FGUU1fUmVsUGljayA9ICdyZWwtcGljaydcbn1cblxuLy8gV2hlcmUgaXMgcmVuZGVyaW5nIGhhcHBlbmluZyAtIGNsaWVudCBvciBzZXJ2ZXJcbmV4cG9ydCBlbnVtIFJlbmRlck1vZGUge1xuXG4gIC8vIFxuICBSZW5kZXJNb2RlU2VydmVyID0gJ3JlbmRlci1tb2RlLXNlcnZlcicsXG5cbiAgLy8gXG4gIFJlbmRlck1vZGVDbGllbnQgPSAncmVuZGVyLW1vZGUtY2xpZW50J1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEFkZE9yUmVtb3ZlTWFya3Mge1xuXG4gIC8vIFxuICBBT1JNX0FERCA9ICdhZGQnLFxuXG4gIC8vIFxuICBBT1JNX1JFTU9WRSA9ICdyZW1vdmUnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gVmlzdWFsRG9jRW51bXNHZW9TZWFyY2hWaXNpYmlsaXR5IHtcblxuICAvLyBcbiAgR1NWX09uID0gJ29uJyxcblxuICAvLyBcbiAgR1NWX09mZiA9ICdvZmYnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gVmlzdWFsRG9jRW51bXNNYXBTY2FsZVZpc2liaWxpdHkge1xuXG4gIC8vIFxuICBNU1ZfT24gPSAnb24nLFxuXG4gIC8vIFxuICBNU1ZfT2ZmID0gJ29mZidcbn1cblxuLy8gXG5leHBvcnQgZW51bSBWaXN1YWxEb2NFbnVtc0F1dG9EcmlsbFZpc2liaWxpdHkge1xuXG4gIC8vIFxuICBBRFZfT24gPSAnb24nLFxuXG4gIC8vIFxuICBBRFZfT2ZmID0gJ29mZidcbn1cblxuLy8gXG5leHBvcnQgZW51bSBWaXN1YWxEb2NFbnVtc01hcFRvb2xTZWxlY3Rpb24ge1xuXG4gIC8vIFxuICBNVF9QYW5fTWFwID0gJ3Bhbi1tYXAnLFxuXG4gIC8vIFxuICBNVF9SZWN0YW5ndWxhcl9TZWxlY3Rpb24gPSAncmVjdGFuZ3VsYXItc2VsZWN0aW9uJyxcblxuICAvLyBcbiAgTVRfUmFkaWFsX1NlbGVjdGlvbiA9ICdyYWRpYWwtc2VsZWN0aW9uJyxcblxuICAvLyBcbiAgTVRfWm9vbV9JbiA9ICd6b29tLWluJyxcblxuICAvLyBcbiAgTVRfWm9vbV9PdXQgPSAnem9vbS1vdXQnLFxuXG4gIC8vIFxuICBNVF9TaW5nbGVfU2VsZWN0aW9uID0gJ3NpbmdsZS1zZWxlY3Rpb24nLFxuXG4gIC8vIFxuICBNVF9MYXNzb19TZWxlY3Rpb24gPSAnbGFzc28tc2VsZWN0aW9uJyxcblxuICAvLyBcbiAgTVRfQWxsX1NlbGVjdGlvbl9Ub29scyA9ICdhbGwtc2VsZWN0aW9uLXRvb2xzJyxcblxuICAvLyBcbiAgTVRfQXJlYV9ab29tID0gJ2FyZWEtem9vbScsXG5cbiAgLy8gXG4gIE1UX05vX1Rvb2xzID0gJ25vLXRvb2xzJyxcblxuICAvLyBcbiAgTVRfQWR2YW5jZWRfU2VsZWN0aW9uX1Rvb2xzID0gJ2FkdmFuY2VkLXNlbGVjdGlvbi10b29scycsXG5cbiAgLy8gXG4gIE1UX01hcF9Ub29scyA9ICdtYXAtdG9vbHMnLFxuXG4gIC8vIFxuICBNVF9Ob25fTWFwX1Rvb2xzID0gJ25vbi1tYXAtdG9vbHMnLFxuXG4gIC8vIFxuICBNVF9Ub29sX01hc2sgPSAndG9vbC1tYXNrJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFZpc3VhbERvY0VudW1zRmxvYXRpbmdUb29sYmFyVmlzaWJpbGl0eSB7XG5cbiAgLy8gXG4gIEZUVl9BdXRvID0gJ2F1dG8nLFxuXG4gIC8vIFxuICBGVFZfU2hvdyA9ICdzaG93JyxcblxuICAvLyBcbiAgRlRWX0hpZGUgPSAnaGlkZSdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBWaXN1YWxEb2NFbnVtc1Zpek5hdmlnYXRpb25TZXR0aW5nIHtcblxuICAvLyBcbiAgTkFWX0F1dG8gPSAnYXV0bycsXG5cbiAgLy8gXG4gIE5BVl9GaXhlZCA9ICdmaXhlZCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBWaXN1YWxEb2NFbnVtc1pvb21UeXBlIHtcblxuICAvLyBcbiAgUGVyY2VudCA9ICdwZXJjZW50JyxcblxuICAvLyBcbiAgRW50aXJlVmlldyA9ICdlbnRpcmUtdmlldycsXG5cbiAgLy8gXG4gIEZpdFdpZHRoID0gJ2ZpdC13aWR0aCcsXG5cbiAgLy8gXG4gIEZpdEhlaWdodCA9ICdmaXQtaGVpZ2h0J1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFNoZWV0U2Nyb2xsRGlyZWN0aW9uIHtcblxuICAvLyBzY3JvbGwtZmlyc3RcbiAgU2hlZXRTY3JvbGxGaXJzdCA9ICdzY3JvbGwtZmlyc3QnLFxuXG4gIC8vIHNjcm9sbC1wcmV2XG4gIFNoZWV0U2Nyb2xsUHJldiA9ICdzY3JvbGwtcHJldicsXG5cbiAgLy8gc2Nyb2xsLW5leHRcbiAgU2hlZXRTY3JvbGxOZXh0ID0gJ3Njcm9sbC1uZXh0JyxcblxuICAvLyBzY3JvbGwtbGFzdFxuICBTaGVldFNjcm9sbExhc3QgPSAnc2Nyb2xsLWxhc3QnXG59XG5cbi8vIGFnZ3JlZ2F0aW9uIHR5cGUgZm9yIHBlcnNwZWN0aXZlc1xuZXhwb3J0IGVudW0gUGVyc3BlY3RpdmVVdGlsc0FnZ3JlZ2F0ZVR5cGUge1xuXG4gIC8vIFxuICBSRUFMSVRZID0gJ3JlYWxpdHknLFxuXG4gIC8vIFxuICBGSVJTVCA9ICdmaXJzdC10aW1lLWluLWN1YmUnLFxuXG4gIC8vIFxuICBMQVNUID0gJ2xhdGVzdC10aW1lLWluLWN1YmUnLFxuXG4gIC8vIFxuICBDVVNUT01fRk9SX0NVQkUgPSAnY3VzdG9tLWZvci1jdWJlJyxcblxuICAvLyBcbiAgQ1VTVE9NX1BFUl9BVFRSSUJVVEUgPSAnY3VzdG9tLXBlci1hdHRyaWJ1dGUnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gWm9uZUVkZ2VNb3ZlIHtcblxuICAvLyBcbiAgRWRnZURyYWcgPSAnZWRnZS1kcmFnJyxcblxuICAvLyBcbiAgRWRnZVNuYXBBbGlnbiA9ICdlZGdlLXNuYXAtYWxpZ24nLFxuXG4gIC8vIFxuICBFZGdlU25hcFBvc2l0aW9uID0gJ2VkZ2Utc25hcC1wb3NpdGlvbidcbn1cblxuLy8gXG5leHBvcnQgZW51bSBGb3JtYXRDb250cm9sVHlwZSB7XG5cbiAgLy8gXG4gIEZDVF9OT05FID0gJ2ZjdC1ub25lJyxcblxuICAvLyBcbiAgRkNUX0NvbG9yID0gJ2ZjdC1jb2xvcicsXG5cbiAgLy8gXG4gIEZDVF9Gb250ID0gJ2ZjdC1mb250JyxcblxuICAvLyBcbiAgRkNUX0JvcmRlciA9ICdmY3QtYm9yZGVyJyxcblxuICAvLyBcbiAgRkNUX1N0cm9rZSA9ICdmY3Qtc3Ryb2tlJyxcblxuICAvLyBcbiAgRkNUX051bWJlciA9ICdmY3QtbnVtYmVyJyxcblxuICAvLyBcbiAgRkNUX0xheW91dCA9ICdmY3QtbGF5b3V0JyxcblxuICAvLyBcbiAgRkNUX1RleHQgPSAnZmN0LXRleHQnLFxuXG4gIC8vIFxuICBGQ1RfT3B0Q29sb3IgPSAnZmN0LW9wdGNvbG9yJyxcblxuICAvLyBcbiAgRkNUX0JhbmRDb2xvciA9ICdmY3QtYmFuZGNvbG9yJyxcblxuICAvLyBcbiAgRkNUX0JhbmRTaXplID0gJ2ZjdC1iYW5kc2l6ZScsXG5cbiAgLy8gXG4gIEZDVF9CYW5kTGV2ZWwgPSAnZmN0LWJhbmRsZXZlbCcsXG5cbiAgLy8gXG4gIEZDVF9EaXZMZXZlbCA9ICdmY3QtZGl2bGV2ZWwnLFxuXG4gIC8vIFxuICBGQ1RfU3BlY1ZhbHNUZXh0ID0gJ2ZjdC1zcGVjdmFsc3RleHQnLFxuXG4gIC8vIFxuICBGQ1RfU3BlY1ZhbHNHcmFwaCA9ICdmY3Qtc3BlY3ZhbHNncmFwaCcsXG5cbiAgLy8gXG4gIEZDVF9IQWxpZ24gPSAnZmN0LWhhbGlnbicsXG5cbiAgLy8gXG4gIEZDVF9PcmllbnQgPSAnZmN0LW9yaWVudCcsXG5cbiAgLy8gXG4gIEZDVF9Sb3VuZGluZyA9ICdmY3Qtcm91bmRpbmcnLFxuXG4gIC8vIFxuICBGQ1RfTGluZUVuZCA9ICdmY3QtbGluZWVuZCcsXG5cbiAgLy8gXG4gIEZDVF9MaW5lRW5kU2l6ZSA9ICdmY3QtbGluZWVuZHNpemUnLFxuXG4gIC8vIFxuICBGQ1RfQm9keVR5cGUgPSAnZmN0LWJvZHl0eXBlJyxcblxuICAvLyBcbiAgRkNUX0FscGhhTGV2ZWwgPSAnZmN0LWFscGhhbGV2ZWwnLFxuXG4gIC8vIFxuICBGQ1RfTGluZUludGVycG9sYXRpb24gPSAnZmN0LWxpbmUtaW50ZXJwb2xhdGlvbicsXG5cbiAgLy8gXG4gIEZDVF9MaW5lTWFya2VyUG9zaXRpb24gPSAnZmN0LWxpbmUtbWFya2VyLXBvc2l0aW9uJyxcblxuICAvLyBcbiAgRkNUX01hcmtCb3JkZXIgPSAnZmN0LW1hcmtib3JkZXInLFxuXG4gIC8vIFxuICBGQ1RfTWFya0hhbG8gPSAnZmN0LW1hcmtoYWxvJyxcblxuICAvLyBcbiAgRkNUX01hcmtNYXJrZXJzID0gJ2ZjdC1tYXJrbWFya2VycycsXG5cbiAgLy8gXG4gIEZDVF9SZWZMaW5lUGFsZXR0ZSA9ICdmY3QtcmVmbGluZXBhbGV0dGUnLFxuXG4gIC8vIFxuICBGQ1RfUmV2ZXJzZSA9ICdmY3QtcmV2ZXJzZScsXG5cbiAgLy8gXG4gIEZDVF9XaGlza2VycyA9ICdmY3Qtd2hpc2tlcnMnLFxuXG4gIC8vIFxuICBGQ1RfQm94cGxvdFBhbGV0dGUgPSAnZmN0LWJveHBsb3RwYWxldHRlJyxcblxuICAvLyBcbiAgRkNUX1NvbGlkU3Ryb2tlID0gJ2ZjdC1zb2xpZHN0cm9rZScsXG5cbiAgLy8gXG4gIEZDVF9Cb3hwbG90U3R5bGUgPSAnZmN0LWJveHBsb3RzdHlsZScsXG5cbiAgLy8gXG4gIEZDVF9Cb3hwbG90Q29tcG91bmRGaWxsID0gJ2ZjdC1ib3hwbG90Y29tcG91bmRmaWxsJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEZvcm1hdENvbnRyb2xGbGFnIHtcblxuICAvLyBcbiAgRkNGX1Zpc3VhbFN0eWxlc2hlZXQgPSAnZmNmX3Zpc3VhbHN0eWxlc2hlZXQnLFxuXG4gIC8vIFxuICBGQ0ZfUGFuZVN0eWxlc2hlZXQgPSAnZmNmX3BhbmVzdHlsZXNoZWV0JyxcblxuICAvLyBcbiAgRkNGX0ZpeGVkU2NvcGUgPSAnZmNmX2ZpeGVkc2NvcGUnLFxuXG4gIC8vIFxuICBGQ0ZfQWxsb3dUcmFuc3BhcmVuY3kgPSAnZmNmX2FsbG93dHJhbnNwYXJlbmN5J1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEFwcENvbmZpZ0VudW0ge1xuXG4gIC8vIGRlZmF1bHQgZGlyZWN0b3J5IHdoZXJlIFRhYmxlYXUgZmluZHMgZGF0YSBzb3VyY2VzLCBsb2dzLCBzaGFwZXMsIGV0Yy5cbiAgQUNTX1JlcG9zaXRvcnlEaXIgPSAncmVwb3NpdG9yeS1kaXInLFxuXG4gIC8vIGFwcGxpY2F0aW9uIGRpcmVjdG9yeVxuICBBQ1NfQXBwbGljYXRpb25EaXIgPSAnYXBwbGljYXRpb24tZGlyJyxcblxuICAvLyBzYW1wbGUgd29ya2Jvb2tzIGRpcmVjdG9yeVxuICBBQ1NfU2FtcGxlc0RpciA9ICdzYW1wbGVzLWRpcidcbn1cblxuLy8gXG5leHBvcnQgZW51bSBEZWx0YVR5cGUge1xuXG4gIC8vIFxuICBERUxUQV9OT05FID0gJ25vbmUnLFxuXG4gIC8vIFxuICBERUxUQV9BRERFRCA9ICdhZGRlZCcsXG5cbiAgLy8gXG4gIERFTFRBX0VESVRFRCA9ICdlZGl0ZWQnLFxuXG4gIC8vIFxuICBERUxUQV9SRU1PVkVEID0gJ3JlbW92ZWQnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gRXh0cmFjdFR5cGUge1xuXG4gIC8vIFxuICBFeHRyYWN0VHlwZV9BbGwgPSAnZXh0cmFjdC10eXBlLWFsbCcsXG5cbiAgLy8gXG4gIEV4dHJhY3RUeXBlX1NvbWUgPSAnZXh0cmFjdC10eXBlLXNvbWUnLFxuXG4gIC8vIFxuICBFeHRyYWN0VHlwZV9Ob25lID0gJ2V4dHJhY3QtdHlwZS1ub25lJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEV4dHJhY3RSZWZyZXNoU3RhdHVzIHtcblxuICAvLyBcbiAgRXh0cmFjdFJlZnJlc2hfTm9uZSA9ICdleHRyYWN0LXJlZnJlc2gtbm9uZScsXG5cbiAgLy8gXG4gIEV4dHJhY3RSZWZyZXNoX1BlbmRpbmcgPSAnZXh0cmFjdC1yZWZyZXNoLXBlbmRpbmcnLFxuXG4gIC8vIFxuICBFeHRyYWN0UmVmcmVzaF9JblByb2dyZXNzID0gJ2V4dHJhY3QtcmVmcmVzaC1pbnByb2dyZXNzJyxcblxuICAvLyBcbiAgRXh0cmFjdFJlZnJlc2hfRG9uZSA9ICdleHRyYWN0LXJlZnJlc2gtZG9uZScsXG5cbiAgLy8gXG4gIEV4dHJhY3RSZWZyZXNoX0Vycm9yID0gJ2V4dHJhY3QtcmVmcmVzaC1lcnJvcicsXG5cbiAgLy8gXG4gIEV4dHJhY3RSZWZyZXNoX0NhbmNlbGVkID0gJ2V4dHJhY3QtcmVmcmVzaC1jYW5jZWxlZCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBNYXBVbml0U2VsZWN0aW9uRW51bSB7XG5cbiAgLy8gXG4gIE1VU19BdXRvbWF0aWMgPSAnYXV0b21hdGljJyxcblxuICAvLyBcbiAgTVVTX01ldHJpYyA9ICdtZXRyaWMnLFxuXG4gIC8vIFxuICBNVVNfVVMgPSAndXMnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gRGF0YUNvbm5lY3Rpb25IaXN0b3J5UmVmcmVzaFR5cGUge1xuXG4gIC8vIFxuICBSVF9GVUxMID0gJ2Z1bGwnLFxuXG4gIC8vIFxuICBSVF9JTkNSRU1FTlQgPSAnaW5jcmVtZW50JyxcblxuICAvLyBcbiAgUlRfQVBQRU5EX0ZST01fREFUQV9TT1VSQ0UgPSAnYXBwZW5kLWZyb20tZGF0YS1zb3VyY2UnLFxuXG4gIC8vIFxuICBSVF9BUFBFTkRfRlJPTV9GSUxFID0gJ2FwcGVuZC1mcm9tLWZpbGUnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gQ2FsY1N0eWxlIHtcblxuICAvLyBcbiAgU0NFX1NUWUxFX0RFRkFVTFQgPSAnc3R5bGVfZGVmYXVsdCcsXG5cbiAgLy8gXG4gIFNDRV9TVFlMRV9QUklNQVJZX0ZJRUxEID0gJ3N0eWxlX3ByaW1fZmllbGQnLFxuXG4gIC8vIFxuICBTQ0VfU1RZTEVfU0VDT05EQVJZX0ZJRUxEID0gJ3N0eWxlX3NlY19maWVsZCcsXG5cbiAgLy8gXG4gIFNDRV9TVFlMRV9MT0NBTF9GVU5DVElPTiA9ICdzdHlsZV9sb2NhbF9mdW5jJyxcblxuICAvLyBcbiAgU0NFX1NUWUxFX1JFTU9URV9GVU5DVElPTiA9ICdzdHlsZV9yZW1vdGVfZnVuYycsXG5cbiAgLy8gXG4gIFNDRV9TVFlMRV9QQVJBTUVURVIgPSAnc3R5bGVfcGFyYW0nLFxuXG4gIC8vIFxuICBTQ0VfU1RZTEVfQ09NTUVOVCA9ICdzdHlsZV9jb21tZW50JyxcblxuICAvLyBcbiAgU0NFX1NUWUxFX0lOVkFMSURfRklFTEQgPSAnc3R5bGVfaW52YWxpZF9maWVsZCcsXG5cbiAgLy8gXG4gIFNDRV9TVFlMRV9UQUJMRV9FWFBSID0gJ3N0eWxlX3RhYmxlX2V4cHInLFxuXG4gIC8vIFxuICBTQ0VfU1RZTEVfU1RSSU5HID0gJ3N0eWxlX3N0cmluZycsXG5cbiAgLy8gXG4gIFNDRV9TVFlMRV9ESVNBQkxFRCA9ICdzdHlsZV9kaXNhYmxlZCcsXG5cbiAgLy8gXG4gIFNDRV9TVFlMRV9EUkFHX09WRVJfRklFTEQgPSAnc3R5bGVfZHJhZ19vdmVyX2ZpZWxkJyxcblxuICAvLyBcbiAgU0NFX1NUWUxFX0RSQUdfT1ZFUl9TRUwgPSAnc3R5bGVfZHJhZ19vdmVyX3NlbCcsXG5cbiAgLy8gXG4gIFNDRV9TVFlMRV9TRUxFQ1RJT04gPSAnc3R5bGVfc2VsZWN0aW9uJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEZ1bmN0aW9uR3JvdXAge1xuXG4gIC8vIFxuICBGR19OVU1FUklDID0gJ251bScsXG5cbiAgLy8gXG4gIEZHX1NUUklORyA9ICdzdHInLFxuXG4gIC8vIFxuICBGR19EQVRFID0gJ2RhdGUnLFxuXG4gIC8vIFxuICBGR19DQVNUID0gJ2Nhc3QnLFxuXG4gIC8vIFxuICBGR19MT0dJQ0FMID0gJ2xvZ2ljJyxcblxuICAvLyBcbiAgRkdfQUdHUkVHQVRFID0gJ2FnZycsXG5cbiAgLy8gXG4gIEZHX09QRVJBVE9SID0gJ29wZXInLFxuXG4gIC8vIFxuICBGR19TWVNURU0gPSAnc3lzJyxcblxuICAvLyBcbiAgRkdfUEFTU1RIUlUgPSAncGFzcycsXG5cbiAgLy8gXG4gIEZHX1NQRUNJQUwgPSAnc3BlYycsXG5cbiAgLy8gXG4gIEZHX1VTRVIgPSAndXNlcicsXG5cbiAgLy8gXG4gIEZHX1RBQkxFQ0FMQyA9ICd0YWJsZSdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBGdW5jdGlvbkFyZ1R5cGUge1xuXG4gIC8vIFxuICBGQVRfTk9ORSA9ICdub25lJyxcblxuICAvLyBcbiAgRkFUX0JPT0wgPSAnYm9vbGVhbicsXG5cbiAgLy8gXG4gIEZBVF9SRUFMID0gJ3JlYWwnLFxuXG4gIC8vIFxuICBGQVRfSU5UID0gJ2ludGVnZXInLFxuXG4gIC8vIFxuICBGQVRfU1RSID0gJ3N0cicsXG5cbiAgLy8gXG4gIEZBVF9EQVRFVElNRSA9ICdkYXRldGltZScsXG5cbiAgLy8gXG4gIEZBVF9EQVRFID0gJ2RhdGUnLFxuXG4gIC8vIFxuICBGQVRfTE9DQUxTVFIgPSAnbG9jc3RyJyxcblxuICAvLyBcbiAgRkFUX05VTEwgPSAnbmlsJyxcblxuICAvLyBcbiAgRkFUX0VSUk9SID0gJ2VycicsXG5cbiAgLy8gXG4gIEZBVF9BTlkgPSAnYW55JyxcblxuICAvLyBcbiAgRkFUX0JJTiA9ICdiaW4nLFxuXG4gIC8vIFxuICBGQVRfVFVQTEUgPSAndHVwJyxcblxuICAvLyBcbiAgRkFUX0xPQ0FMUkVBTCA9ICdsb2NyZWFsJyxcblxuICAvLyBcbiAgRkFUX0xPQ0FMSU5UID0gJ2xvY2ludCcsXG5cbiAgLy8gXG4gIEZBVF9TUEFUSUFMID0gJ3NwYXRpYWwnXG59XG5cbi8vIGxvZ2ljYWwgcG9zaXRpb24gb2YgYWN0aXZpdHkgc3VjaCBhcyBCZWdhbiBvciBFbmRlZFxuZXhwb3J0IGVudW0gQWN0aXZpdHlEaXNwb3NpdGlvbiB7XG5cbiAgLy8gbm8gYWN0aXZpdHlcbiAgTm9EaXNwb3NpdGlvbiA9ICduby1kaXNwb3NpdGlvbicsXG5cbiAgLy8gYWN0aXZpdHkgaGFzIGJlZ2FuXG4gIEJlZ2FuID0gJ2JlZ2FuJyxcblxuICAvLyBhY3Rpdml0eSBoYXMgZW5kZWRcbiAgRW5kZWQgPSAnZW5kZWQnLFxuXG4gIC8vIGFjdGl2aXR5IGhhcyBvY2N1cnJlZCBidXQgbmVpdGhlciBiZWdhbiBub3IgZW5kZWQgaXMga25vd25cbiAgT2NjdXJyZWQgPSAnb2NjdXJyZWQnLFxuXG4gIC8vIGluZGVmaW5pdGUgYWN0aXZpdHkgaXMgZXhlY3V0aW5nXG4gIEFjdGl2ZSA9ICdhY3RpdmUnLFxuXG4gIC8vIGluZGVmaW5pdGUgYWN0aXZpdHkgaGFzIHlpZWxkZWQgKGUuZy4sIGlkbGUsIHdhaXRpbmcsIHNsZWVwaW5nLCBxdWllc2NlKVxuICBJZGxlID0gJ2lkbGUnXG59XG5cbi8vIHJlc3VsdCBvZiBhY3Rpdml0eSBzdWNoIGFzIFN1Y2Nlc3MgYW5kIEZhaWx1cmVcbmV4cG9ydCBlbnVtIEFjdGl2aXR5UmVzdWx0IHtcblxuICAvLyBhY3Rpdml0eSBoYXMgbm8gcmVzdWx0XG4gIE5vUmVzdWx0ID0gJ25vLXJlc3VsdCcsXG5cbiAgLy8gYWN0aXZpdHkgZW5kZWQgd2l0aCBzdWNjZXNzXG4gIFN1Y2NlZWRlZCA9ICdzdWNjZWVkZWQnLFxuXG4gIC8vIGFjdGl2aXR5IGVuZGVkIHdpdGggZmFpbHVyZVxuICBGYWlsZWQgPSAnZmFpbHVyZScsXG5cbiAgLy8gYWN0aXZpdHkgZW5kZWQgd2l0aCB0aHJvd24gZXhjZXB0aW9uXG4gIFRocmV3RXhjZXB0aW9uID0gJ3RocmV3LWV4Y2VwdGlvbicsXG5cbiAgLy8gYWN0aXZpdHkgZW5kZWQgZHVlIHRvIGEgdGltZW91dFxuICBUaW1lZE91dCA9ICd0aW1lZC1vdXQnLFxuXG4gIC8vIGFjdGl2aXR5IHdhcyBjYW5jZWxlZFxuICBDYW5jZWxlZCA9ICdjYW5jZWxlZCcsXG5cbiAgLy8gYWN0aXZpdHkgaGFzIHVua25vd24gcmVzdWx0XG4gIFVua25vd25SZXN1bHQgPSAndW5rbm93bi1yZXN1bHQnXG59XG5cbi8vIHR5cGUgb2YgYW5hbHl0aWNzIG9iamVjdFxuZXhwb3J0IGVudW0gQW5hbHl0aWNzT2JqZWN0VHlwZSB7XG5cbiAgLy8gXG4gIENvbnN0YW50UmVmZXJlbmNlTGluZSA9ICdjb25zdGFudC1yZWZlcmVuY2UtbGluZScsXG5cbiAgLy8gXG4gIEF2ZXJhZ2VSZWZlcmVuY2VMaW5lID0gJ2F2ZXJhZ2UtcmVmZXJlbmNlLWxpbmUnLFxuXG4gIC8vIFxuICBDdXN0b21SZWZlcmVuY2VMaW5lID0gJ2N1c3RvbS1yZWZlcmVuY2UtbGluZScsXG5cbiAgLy8gXG4gIEN1c3RvbVJlZmVyZW5jZUJhbmQgPSAnY3VzdG9tLXJlZmVyZW5jZS1iYW5kJyxcblxuICAvLyBcbiAgQXZlcmFnZUFuZE5pbmV0eUZpdmUgPSAnYXZlcmFnZS1hbmQtbmluZXR5LWZpdmUnLFxuXG4gIC8vIFxuICBNZWRpYW5BbmROaW5ldHlGaXZlID0gJ21lZGlhbi1hbmQtbmluZXR5LWZpdmUnLFxuXG4gIC8vIFxuICBDdXN0b21EaXN0cmlidXRpb25CYW5kID0gJ2N1c3RvbS1kaXN0cmlidXRpb24tYmFuZCcsXG5cbiAgLy8gXG4gIEJveHBsb3QgPSAnYm94cGxvdCcsXG5cbiAgLy8gXG4gIEN1c3RvbUJveHBsb3QgPSAnY3VzdG9tLWJveHBsb3QnLFxuXG4gIC8vIFxuICBUb3RhbHMgPSAndG90YWxzJyxcblxuICAvLyBcbiAgVHJlbmRMaW5lT2JqZWN0ID0gJ3RyZW5kLWxpbmUtb2JqZWN0JyxcblxuICAvLyBcbiAgRm9yZWNhc3QgPSAnZm9yZWNhc3QnLFxuXG4gIC8vIFxuICBDbHVzdGVyID0gJ2NsdXN0ZXInLFxuXG4gIC8vIFxuICBPdXRsaWVyID0gJ291dGxpZXInLFxuXG4gIC8vIFxuICBNZWRpYW5BbmRRdWFydGlsZXMgPSAnbWVkaWFuLWFuZC1xdWFydGlsZXMnLFxuXG4gIC8vIFxuICBVbmtub3duID0gJ3Vua25vd24nXG59XG5cbi8vIHRhcmdldCB3aGVyZSBhbiBhbmFseXRpY3Mgb2JqZWN0IG1heSBiZSBkcm9wcGVkXG5leHBvcnQgZW51bSBBbmFseXRpY3NPYmplY3REcm9wVGFyZ2V0IHtcblxuICAvLyBcbiAgVGFyZ2V0Q2VsbCA9ICd0YXJnZXQtY2VsbCcsXG5cbiAgLy8gXG4gIFRhcmdldFBhbmUgPSAndGFyZ2V0LXBhbmUnLFxuXG4gIC8vIFxuICBUYXJnZXRUYWJsZSA9ICd0YXJnZXQtdGFibGUnLFxuXG4gIC8vIFxuICBUYXJnZXRMaW5lYXIgPSAndGFyZ2V0LWxpbmVhcicsXG5cbiAgLy8gXG4gIFRhcmdldExvZyA9ICd0YXJnZXQtbG9nJyxcblxuICAvLyBcbiAgVGFyZ2V0RXhwb25lbnRpYWwgPSAndGFyZ2V0LWV4cG9uZW50aWFsJyxcblxuICAvLyBcbiAgVGFyZ2V0UG9seW5vbWlhbCA9ICd0YXJnZXQtcG9seW5vbWlhbCcsXG5cbiAgLy8gXG4gIFRhcmdldFBvd2VyID0gJ3RhcmdldC1wb3dlcicsXG5cbiAgLy8gXG4gIFRhcmdldEZvcmVjYXN0ID0gJ3RhcmdldC1mb3JlY2FzdCcsXG5cbiAgLy8gXG4gIFRhcmdldENsdXN0ZXIgPSAndGFyZ2V0LWNsdXN0ZXInLFxuXG4gIC8vIFxuICBUYXJnZXRPdXRsaWVyID0gJ3RhcmdldC1vdXRsaWVyJyxcblxuICAvLyBcbiAgVGFyZ2V0U3VidG90YWxzID0gJ3RhcmdldC1zdWJ0b3RhbHMnLFxuXG4gIC8vIFxuICBUYXJnZXRDb2x1bW5Ub3RhbHMgPSAndGFyZ2V0LWNvbHVtbi10b3RhbHMnLFxuXG4gIC8vIFxuICBUYXJnZXRSb3dUb3RhbHMgPSAndGFyZ2V0LXJvdy10b3RhbHMnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gQ2FsY0FwcGx5UmVzdWx0IHtcblxuICAvLyBjYXB0aW9uIGZvciBuZXcgY2FsY3VsYXRpb24gaXMgaW52YWxpZFxuICBJTlZBTElEX0NBUFRJT04gPSAnaW52YWxpZC1jYXB0aW9uLWZvci1uZXctY2FsYycsXG5cbiAgLy8gZm9ybXVsYSBpcyBpbnZhbGlkXG4gIElOVkFMSURfRk9STVVMQSA9ICdpbnZhbGlkLWZvcm11bGEnLFxuXG4gIC8vIHN1Y2Nlc3NmdWxseSBhcHBsaWVkXG4gIFNVQ0NFRUQgPSAnc3VjY2VlZCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBVSUF1dG9tYXRpb25Db21tYW5kU3RhdHVzIHtcblxuICAvLyBcbiAgVUlBdXRvbWF0aW9uQ29tbWFuZFN0YXR1c19TdWNjZXNzID0gJ3N1Y2Nlc3MnLFxuXG4gIC8vIFxuICBVSUF1dG9tYXRpb25Db21tYW5kU3RhdHVzX1Vuc3VwcG9ydGVkQ29udHJvbFR5cGVFcnJvciA9ICd1bnN1cHBvcnRlZC1jb250cm9sLXR5cGUtZXJyb3InLFxuXG4gIC8vIFxuICBVSUF1dG9tYXRpb25Db21tYW5kU3RhdHVzX1Vuc3VwcG9ydGVkQWN0aW9uRXJyb3IgPSAndW5zdXBwb3J0ZWQtYWN0aW9uLWVycm9yJyxcblxuICAvLyBcbiAgVUlBdXRvbWF0aW9uQ29tbWFuZFN0YXR1c19Db21wb25lbnROb3RGb3VuZEVycm9yID0gJ2NvbXBvbmVudC1ub3QtZm91bmQtZXJyb3InLFxuXG4gIC8vIFxuICBVSUF1dG9tYXRpb25Db21tYW5kU3RhdHVzX1Vua25vd25FcnJvciA9ICd1bmtub3duLWVycm9yJyxcblxuICAvLyBcbiAgVUlBdXRvbWF0aW9uQ29tbWFuZFN0YXR1c19TYXZlRXJyb3IgPSAnc2F2ZS1lcnJvcicsXG5cbiAgLy8gXG4gIFVJQXV0b21hdGlvbkNvbW1hbmRTdGF0dXNfQmFkSW5wdXRFcnJvciA9ICdiYWQtaW5wdXQtZXJyb3InXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gRHJvcFdoZW4ge1xuXG4gIC8vIFxuICBEcm9wV2hlbk5ldmVyID0gJ25ldmVyJyxcblxuICAvLyBcbiAgRHJvcFdoZW5BbHdheXMgPSAnYWx3YXlzJyxcblxuICAvLyBcbiAgRHJvcFdoZW5TZWxlY3RlZCA9ICd3aGVuLXNlbGVjdGVkJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFZhbHVlRG9tYWluVHlwZSB7XG5cbiAgLy8gaW52YWxpZCBkb21haW5cbiAgRE9NQUlOX0lOVkFMSUQgPSAnZG9tYWluLWludmFsaWQnLFxuXG4gIC8vIHVzZXIgY2FuIHR5cGUgaW4gYW55IHZhbHVlIHRoZXkgcGxlYXNlXCIgMVxuICBET01BSU5fRlJFRV9FTlRSWSA9ICdkb21haW4tZnJlZS1lbnRyeScsXG5cbiAgLy8gdXNlciBtdXN0IHNlbGVjdCBhIHZhbHVlIGZyb20gdGhlIGxpc3RcbiAgRE9NQUlOX0xJU1QgPSAnZG9tYWluLWxpc3QnLFxuXG4gIC8vIHVzZXIgY2FuIGZyZWVseSBlbnRlciB2YWx1ZXMgYXMgbG9uZyBhcyB0aGV5IGFyZSBhYm92ZSBtaW4gdmFsdWVcbiAgRE9NQUlOX01JTiA9ICdkb21haW4tbWluJyxcblxuICAvLyB1c2VyIGNhbiBmcmVlbHkgZW50ZXIgdmFsdWVzIGFzIGxvbmcgYXMgdGhleSBhcmUgYmVsb3cgbWF4IHZhbHVlXG4gIERPTUFJTl9NQVggPSAnZG9tYWluLW1heCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBPcGVyYXRpb25UeXBlIHtcblxuICAvLyBcbiAgRXF1YWxzID0gJ2VxdWFscycsXG5cbiAgLy8gXG4gIE5vdEVxdWFscyA9ICdub3QtZXF1YWxzJyxcblxuICAvLyBcbiAgTGVzc1RoYW4gPSAnbGVzcy10aGFuJyxcblxuICAvLyBcbiAgTGVzc1RoYW5FcXVhbCA9ICdsZXNzLXRoYW4tZXF1YWwnLFxuXG4gIC8vIFxuICBHcmVhdGVyVGhhbiA9ICdncmVhdGVyLXRoYW4nLFxuXG4gIC8vIFxuICBHcmVhdGVyVGhhbkVxdWFsID0gJ2dyZWF0ZXItdGhhbi1lcXVhbCcsXG5cbiAgLy8gXG4gIFJhbmdlSW5jbHVzaXZlID0gJ3JhbmdlLWluY2x1c2l2ZSdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBEcm9wRmllbGRSZXN1bHQge1xuXG4gIC8vIFxuICBEcm9wRmllbGRObyA9ICdubycsXG5cbiAgLy8gXG4gIERyb3BGaWVsZFllcyA9ICd5ZXMnLFxuXG4gIC8vIFxuICBEcm9wRmllbGRMb2NrID0gJ2xvY2snLFxuXG4gIC8vIFxuICBEcm9wRmllbGRGaWx0ZXIgPSAnZmlsdGVyJyxcblxuICAvLyBcbiAgRHJvcEZpZWxkRGlzYWdncmVnYXRlID0gJ2Rpc2FnZ3JlZ2F0ZSdcbn1cblxuLy8gcmVzb2x1dGlvbiB0eXBlIGZvciBhIG5hbWUgY29uZmxpY3RcbmV4cG9ydCBlbnVtIE5hbWVDb25mbGljdFJlc29sdXRpb24ge1xuXG4gIC8vIFxuICBOUkNfVXNlT2xkID0gJ3VzZS1vbGQnLFxuXG4gIC8vIFxuICBOUkNfVXNlTmV3ID0gJ3VzZS1uZXcnLFxuXG4gIC8vIFxuICBOUkNfUmVuYW1lTmV3ID0gJ3JlbmFtZS1uZXcnXG59XG5cbi8vIHVzZSBlaXRoZXIgYSBzdHJpbmcgc2VwYXJhdG9yIG9yIGEgc2V0IG51bWJlciBvZiBjaGFyYWN0ZXJzXG5leHBvcnQgZW51bSBTZXBhcmF0b3JUeXBlIHtcblxuICAvLyBcbiAgU2VwYXJhdG9yVHlwZV9fU3RyaW5nU2VwYXJhdG9yID0gJ3N0cmluZy1zZXBhcmF0b3InLFxuXG4gIC8vIFxuICBTZXBhcmF0b3JUeXBlX19DaGFyYWN0ZXJDb3VudFNlcGFyYXRvciA9ICdjaGFyYWN0ZXItY291bnQtc2VwYXJhdG9yJ1xufVxuXG4vLyBzcGxpdCBnbG9iYWxseSBvciBvbmx5IG9uIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9yIG9ubHkgb24gdGhlIGxhc3Qgb2NjdXJyZW5jZVxuZXhwb3J0IGVudW0gU3BsaXRNb2RlIHtcblxuICAvLyBcbiAgU3BsaXRNb2RlX19DU19BTEwgPSAnc3BsaXQtYWxsJyxcblxuICAvLyBcbiAgU3BsaXRNb2RlX19DU19GSVJTVCA9ICdzcGxpdC1maXJzdCcsXG5cbiAgLy8gXG4gIFNwbGl0TW9kZV9fQ1NfTEFTVCA9ICdzcGxpdC1sYXN0J1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIE5vZGVTZWxlY3Rpb25UeXBlIHtcblxuICAvLyBcbiAgTm9kZVNlbGVjdGlvbl9Ob25lID0gJ25vbmUnLFxuXG4gIC8vIFxuICBOb2RlU2VsZWN0aW9uX1NpbmdsZVJvdyA9ICdzaW5nbGUtcm93JyxcblxuICAvLyBcbiAgTm9kZVNlbGVjdGlvbl9NdWx0aVJvdyA9ICdtdWx0aS1yb3cnLFxuXG4gIC8vIFxuICBOb2RlU2VsZWN0aW9uX1NpbmdsZUNvbHVtbiA9ICdzaW5nbGUtY29sdW1uJyxcblxuICAvLyBcbiAgTm9kZVNlbGVjdGlvbl9NdWx0aUNvbHVtbiA9ICdtdWx0aS1jb2x1bW4nLFxuXG4gIC8vIFxuICBOb2RlU2VsZWN0aW9uX01peGVkID0gJ21peGVkJ1xufVxuXG4vLyBpY29ucyBmb3IgQWN0aW9ue1NvdXJjZS9EZXN0fUNvbWJvXG5leHBvcnQgZW51bSBTb3VyY2VEZXN0SWNvbiB7XG5cbiAgLy8gXG4gIFNESV9EYXRhU291cmNlID0gJ2RhdGEtc291cmNlJyxcblxuICAvLyBcbiAgU0RJX1dvcmtzaGVldCA9ICd3b3Jrc2hlZXQnLFxuXG4gIC8vIFxuICBTRElfRGFzaGJvYXJkID0gJ2Rhc2hib2FyZCcsXG5cbiAgLy8gXG4gIFNESV9BbGwgPSAnYWxsJ1xufVxuXG4vLyBwb3NpdGlvbiBhbmQgb3JpZW50YXRpb24gb2YgbGVnZW5kcyBvbiBhIHNoZWV0XG5leHBvcnQgZW51bSBMZWdlbmRMYXlvdXQge1xuXG4gIC8vIFxuICBMTF9SaWdodFZlcnRpY2FsID0gJ3JpZ2h0LXZlcnRpY2FsJyxcblxuICAvLyBcbiAgTExfUmlnaHRIb3Jpem9udGFsID0gJ3JpZ2h0LWhvcml6b250YWwnLFxuXG4gIC8vIFxuICBMTF9Cb3R0b21WZXJ0aWNhbCA9ICdib3R0b20tdmVydGljYWwnLFxuXG4gIC8vIFxuICBMTF9Cb3R0b21Ib3Jpem9udGFsID0gJ2JvdHRvbS1ob3Jpem9udGFsJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEdldEpzb25SZXNwb25zZUVudW0ge1xuXG4gIC8vIHRoZSBqc29uIHJlcG9uc2UgZXhpc3RzIGFuZCBpcyB2YWxpZFxuICBKU09OX09LID0gJ29rJyxcblxuICAvLyB0aGUgc2hlZXQgc3BlY2lmaWVkIGlzIG5vdCB2YWxpZFxuICBKU09OX05PX1NIRUVUID0gJ25vLXNoZWV0JyxcblxuICAvLyB0aGUgZmllbGQgaWQgaXMgaW52YWxpZCBmb3IgdGhpcyBmaWx0ZXJcbiAgSlNPTl9JTlZBTElEX0ZJRUxEID0gJ2ludmFsaWQtZmllbGQnXG59XG5cbi8vIGNsaWVudCBtZXRyaWMgZGVzY3JpcHRpb25zXG5leHBvcnQgZW51bSBDbGllbnRNZXRyaWMge1xuXG4gIC8vIFVua25vd24gTWV0cmljXG4gIENNX1Vua25vd24gPSAnVU5LTldOJyxcblxuICAvLyBCb290c3RyYXAgUmVxdWVzdFxuICBDTV9Cb290c3RyYXBSZXF1ZXN0ID0gJ0JUU1RSUCcsXG5cbiAgLy8gUHJvY2VzcyBQcmltYXJ5IFBheWxvYWRcbiAgQ01fUHJvY2Vzc1ByaW1hcnlQYXlsb2FkID0gJ1BST1BSSScsXG5cbiAgLy8gUHJvY2VzcyBTZWNvbmRhcnkgUGF5bG9hZFxuICBDTV9Qcm9jZXNzU2Vjb25kYXJ5UGF5bG9hZCA9ICdQUk9TRUMnLFxuXG4gIC8vIEluaXRpYWxpemUgTW9kZWxzXG4gIENNX0luaXRpYWxpemVNb2RlbHMgPSAnTURMSU5JJyxcblxuICAvLyBIYW5kbGUgTW9kZWwgRXZlbnRzXG4gIENNX0hhbmRsZU1vZGVsRXZlbnRzID0gJ01ETEVWVCcsXG5cbiAgLy8gRXhlY3V0ZSBMb2NhbCBDb21tYW5kXG4gIENNX0V4ZWN1dGVMb2NhbENvbW1hbmQgPSAnRVhFTE9DJyxcblxuICAvLyBFeGVjdXRlIFJlbW90ZSBDb21tYW5kXG4gIENNX0V4ZWN1dGVSZW1vdGVDb21tYW5kID0gJ0VYRVJFTScsXG5cbiAgLy8gUHJvY2VzcyBMb2NhbCBDb21tYW5kIFJlc3BvbnNlXG4gIENNX1Byb2Nlc3NMb2NhbFJlc3BvbnNlID0gJ1BST0xPQycsXG5cbiAgLy8gUHJvY2VzcyBSZW1vdGUgQ29tbWFuZCBSZXNwb25zZVxuICBDTV9Qcm9jZXNzUmVtb3RlUmVzcG9uc2UgPSAnUFJPUkVNJyxcblxuICAvLyBSZW5kZXIgUGFuZXRhYmxlXG4gIENNX1JlbmRlclBhbmV0YWJsZSA9ICdSTkRSUFQnLFxuXG4gIC8vIFJlbmRlciBSZWdpb25cbiAgQ01fUmVuZGVyUmVnaW9uID0gJ1JORFJSRycsXG5cbiAgLy8gUnVudGltZSBtb2RlbCBwcmVzbW9kZWwgY29udmVyc2lvblxuICBDTV9SdW50aW1lQ29udmVyc2lvbiA9ICdSVENPTlYnLFxuXG4gIC8vIENsaWVudCBMb2FkZWRcbiAgQ01fQ2xpZW50TG9hZGVkID0gJ0NMTlRMRCcsXG5cbiAgLy8gQXBwbGljYXRpb24gU3RhcnR1cFxuICBDTV9BcHBsaWNhdGlvblN0YXJ0dXAgPSAnQVBQU1RSJyxcblxuICAvLyBBcHBsaWNhdGlvbiBJbnRlcmFjdGl2ZVxuICBDTV9BcHBsaWNhdGlvbkludGVyYWN0aXZlID0gJ0FQUElOVCcsXG5cbiAgLy8gQWxsIFpvbmVzIExvYWRlZFxuICBDTV9BbGxab25lc0xvYWRlZCA9ICdBTExaTlMnLFxuXG4gIC8vIFRvb2xiYXIgTGF5b3V0XG4gIENNX1Rvb2xiYXJMYXlvdXQgPSAnVEJSTEFZJyxcblxuICAvLyBUb29sYmFyIEhhbmRsZU5ld1Rvb2xiYXJcbiAgQ01fVG9vbGJhckhhbmRsZU5ld1Rvb2xiYXIgPSAnVEJSSE5UJyxcblxuICAvLyBUb29sYmFyIEFkZFRvb2xiYXJcbiAgQ01fVG9vbGJhckFkZFRvb2xiYXIgPSAnVEJSQUREJyxcblxuICAvLyBUb29sYmFyIEhhbmRsZVJlc2l6ZVxuICBDTV9Ub29sYmFySGFuZGxlUmVzaXplID0gJ1RCUkhSRScsXG5cbiAgLy8gSmF2YVNjcmlwdCBNb2R1bGUgbG9hZGVkIGFzeW5jaHJvbm91c2x5XG4gIENNX01vZHVsZUxvYWRlZCA9ICdNRExPQUQnXG59XG5cbi8vIHJlc3VsdCBjb2RlIGZvciBpbWFnZXMgZWRpdCBvcGVyYXRpb25cbmV4cG9ydCBlbnVtIEltYWdlc0VkaXRSZXN1bHRDb2RlIHtcblxuICAvLyBcbiAgSUVSX1N1Y2Nlc3MgPSAnc3VjY2VzcycsXG5cbiAgLy8gXG4gIElFUl9FbXB0eUNhcHRpb24gPSAnZW1wdHktY2FwdGlvbicsXG5cbiAgLy8gXG4gIElFUl9EdXBsaWNhdGVDYXB0aW9uID0gJ2R1cGxpY2F0ZS1jYXB0aW9uJyxcblxuICAvLyBcbiAgSUVSX0ZhaWxlZFZhbGlkYXRpb24gPSAnZmFpbGVkLXZhbGlkYXRpb24nLFxuXG4gIC8vIFxuICBJRVJfSW52YWxpZFVSTCA9ICdpbnZhbGlkLXVybCcsXG5cbiAgLy8gXG4gIElFUl9FbXB0eVhSYW5nZSA9ICdlbXB0eS14LXJhbmdlJyxcblxuICAvLyBcbiAgSUVSX0VtcHR5WVJhbmdlID0gJ2VtcHR5LXktcmFuZ2UnLFxuXG4gIC8vIFxuICBJRVJfTm9JbWFnZVByZXZpZXcgPSAnbm8taW1hZ2UtcHJldmlldycsXG5cbiAgLy8gXG4gIElFUl9SZW5kZXJFeGNlcHRpb24gPSAncmVuZGVyLWV4Y2VwdGlvbicsXG5cbiAgLy8gXG4gIElFUl9UYWJsZWF1RXhjZXB0aW9uID0gJ3RhYmxlYXUtZXhjZXB0aW9uJ1xufVxuXG4vLyB0aGUgc291cmNlIG9mIHRoZSB1bmRlcmx5aW5nIGRhdGEgdXNlZCBieSB0aGUgZGF0YSBwcm92aWRlclxuZXhwb3J0IGVudW0gRGF0YVByb3ZpZGVyVHlwZSB7XG5cbiAgLy8gXG4gIERQX0RhdGFzb3VyY2UgPSAnZGF0YXNvdXJjZScsXG5cbiAgLy8gXG4gIERQX1NlbGVjdGlvbiA9ICdzZWxlY3Rpb24nLFxuXG4gIC8vIFxuICBEUF9FZGl0b3IgPSAnZWRpdG9yJyxcblxuICAvLyBcbiAgRFBfVGFibGUgPSAndGFibGUnLFxuXG4gIC8vIFxuICBEUF9TUUxRdWVyeSA9ICdzcWwtcXVlcnknXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gRGFzaGJvYXJkRGV2aWNlTGF5b3V0IHtcblxuICAvLyBcbiAgRGFzaGJvYXJkRGV2aWNlTGF5b3V0X0RlZmF1bHQgPSAnZGVmYXVsdCcsXG5cbiAgLy8gXG4gIERhc2hib2FyZERldmljZUxheW91dF9EZXNrdG9wID0gJ2Rlc2t0b3AnLFxuXG4gIC8vIFxuICBEYXNoYm9hcmREZXZpY2VMYXlvdXRfVGFibGV0ID0gJ3RhYmxldCcsXG5cbiAgLy8gXG4gIERhc2hib2FyZERldmljZUxheW91dF9QaG9uZSA9ICdwaG9uZSdcbn1cblxuLy8gd2hvIGlzIGNhbGxpbmcgdGhlIGRldmljZSBkZXRlY3Rpb24gbG9naWNcbmV4cG9ydCBlbnVtIERldmljZVNvdXJjZSB7XG5cbiAgLy8gTm90aGluZyBzcGVjaWFsIGFib3V0IHRoZSBjYWxsZXIgdG8gdGhlIGRldGVjdGlvbiBsb2dpYy4gVGhpcyBtZWFucyBpdCBpcyB0aGUgd2ViIGJyb3dzZXIuXG4gIERldmljZVNvdXJjZV9Vbmtub3duID0gJ3Vua25vd24nLFxuXG4gIC8vIHRoZSBzbmFwc2hvdCBzZXJ2aWNlIGZvciB0aGUgbW9iaWxlIGFwcFxuICBEZXZpY2VTb3VyY2VfU25hcHNob3RTZXJ2aWNlID0gJ3NuYXBzaG90LXNydicsXG5cbiAgLy8gdGhlIDpkZXZpY2UgdXJsIHBhcmFtZXRlclxuICBEZXZpY2VTb3VyY2VfVXJsUGFyYW0gPSAndXJsLXBhcmFtJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIERhc2hib2FyZFNpemluZ0RpbWVuc2lvbiB7XG5cbiAgLy8gXG4gIE5vRGltZW5zaW9uID0gJ25vJyxcblxuICAvLyBcbiAgTWluV2lkdGhEaW1lbnNpb24gPSAnbWlud2lkdGgnLFxuXG4gIC8vIFxuICBNaW5IZWlnaHREaW1lbnNpb24gPSAnbWluaGVpZ2h0JyxcblxuICAvLyBcbiAgTWF4V2lkdGhEaW1lbnNpb24gPSAnbWF4d2lkdGgnLFxuXG4gIC8vIFxuICBNYXhIZWlnaHREaW1lbnNpb24gPSAnbWF4aGVpZ2h0JyxcblxuICAvLyBcbiAgRml4ZWRXaWR0aERpbWVuc2lvbiA9ICdmaXhlZHdpZHRoJyxcblxuICAvLyBcbiAgRml4ZWRIZWlnaHREaW1lbnNpb24gPSAnZml4ZWRoZWlnaHQnLFxuXG4gIC8vIFxuICBTY3JvbGxhYmxlSGVpZ2h0RGltZW5zaW9uID0gJ3Njcm9sbGFibGVoZWlnaHQnLFxuXG4gIC8vIFxuICBNaW5EaW1lbnNpb25zID0gJ21pbnMnLFxuXG4gIC8vIFxuICBNYXhEaW1lbnNpb25zID0gJ21heHMnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gRmxpcGJvYXJkTmF2VHlwZSB7XG5cbiAgLy8gXG4gIENhcHRpb24gPSAnY2FwdGlvbicsXG5cbiAgLy8gXG4gIE51bWJlciA9ICdudW1iZXInLFxuXG4gIC8vIFxuICBEb3QgPSAnZG90JyxcblxuICAvLyBcbiAgQXJyb3dPbmx5ID0gJ2Fycm93b25seSdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBEYXNoYm9hcmRTaXppbmdNb2RlIHtcblxuICAvLyBcbiAgVW5zcGVjaWZpZWRTaXppbmcgPSAndW5zcGVjaWZpZWQnLFxuXG4gIC8vIFxuICBBdXRvbWF0aWNTaXppbmcgPSAnYXV0b21hdGljJyxcblxuICAvLyBcbiAgRml4ZWRTaXppbmcgPSAnZml4ZWQnLFxuXG4gIC8vIFxuICBSYW5nZVNpemluZyA9ICdyYW5nZScsXG5cbiAgLy8gXG4gIFZTY3JvbGxTaXppbmcgPSAndnNjcm9sbCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBHcmlkT3ZlcmxheU1vZGUge1xuXG4gIC8vIFxuICBHT01fQXV0b21hdGljID0gJ2dvbS1hdXRvbWF0aWMnLFxuXG4gIC8vIFxuICBHT01fT24gPSAnZ29tLW9uJyxcblxuICAvLyBcbiAgR09NX09mZiA9ICdnb20tb2ZmJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEZpZWxkUGlja2VyRGlhbG9nVXNlQ2FzZSB7XG5cbiAgLy8gXG4gIEZpZWxkUGlja2VyRGlhbG9nVXNlQ2FzZV9SZXBsYWNlRmllbGQgPSAncmVwbGFjZS1maWVsZC11c2UtY2FzZScsXG5cbiAgLy8gXG4gIEZpZWxkUGlja2VyRGlhbG9nVXNlQ2FzZV9DcmVhdGVJZGVudGl0eVNldCA9ICdjcmVhdGUtaWRlbnRpdHktc2V0JyxcblxuICAvLyBcbiAgRmllbGRQaWNrZXJEaWFsb2dVc2VDYXNlX0VkaXREYXRhc3JvdWNlQWxpYXNlcyA9ICdlZGl0LWRhdGFzb3VyY2UtYWxpYXNlcy11c2UtY2FzZScsXG5cbiAgLy8gXG4gIEZpZWxkUGlja2VyRGlhbG9nVXNlQ2FzZV9FZGl0RmlsdGVycyA9ICdlZGl0LWZpbHRlcnMtdXNlLWNhc2UnLFxuXG4gIC8vIFxuICBGaWVsZFBpY2tlckRpYWxvZ1VzZUNhc2VfRXh0cmFjdEZpbHRlciA9ICdpbmNyZW1lbnRhbC1leHRyYWN0LXVzZS1jYXNlJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFNpZGVUeXBlIHtcblxuICAvLyBcbiAgU1RfVG9wID0gJ3RvcCcsXG5cbiAgLy8gXG4gIFNUX1JpZ2h0ID0gJ3JpZ2h0JyxcblxuICAvLyBcbiAgU1RfQm90dG9tID0gJ2JvdHRvbScsXG5cbiAgLy8gXG4gIFNUX0xlZnQgPSAnbGVmdCdcbn1cblxuLy8gXG5leHBvcnQgZW51bSBXb3JrZ3JvdXBQdWJsaXNoRXJyb3JUeXBlIHtcblxuICAvLyBcbiAgRUFfTm9uZSA9ICdlYS1ub25lJyxcblxuICAvLyBcbiAgRUFfV2FybmluZyA9ICdlYS13YXJuaW5nJyxcblxuICAvLyBcbiAgRUFfUHJvbXB0ID0gJ2VhLXByb21wdCcsXG5cbiAgLy8gXG4gIEVBX0luZm8gPSAnZWEtaW5mbycsXG5cbiAgLy8gXG4gIEVBX1NlcnZlciA9ICdlYS1zZXJ2ZXInXG59XG5cbi8vIEluZGljYXRlcyB3aGV0aGVyIHRoZSB1c2VyIGhhcyBzaWduZWQgaW4gb3IgaXMgc2lnbmVkIGludG8gYSBzZXJ2ZXJcbmV4cG9ydCBlbnVtIFNlcnZlckNvbm5lY3Rpb25TdGF0dXMge1xuXG4gIC8vIFRoZSB1c2VyIGhhcyBuZXZlciBzaWduZWQgaW5cbiAgTmV2ZXJTaWduZWRJbiA9ICdzZXJ2ZXItY29ubmVjdGlvbi1zdGF0dXMtbmV2ZXItc2lnbmVkLWluJyxcblxuICAvLyBUaGUgdXNlciBoYXMgc2lnbmVkIGluIGF0IGxlYXN0IG9uY2VcbiAgSGFzU2lnbmVkSW4gPSAnc2VydmVyLWNvbm5lY3Rpb25fc3RhdHVzLWhhcy1zaWduZWQtaW4nLFxuXG4gIC8vIEF1dG8gc2lnbiBpbiB3aWxsIGJlIGF0dGVtcHRlZFxuICBXaWxsQXV0b1NpZ25JbiA9ICdzZXJ2ZXItY29ubmVjdGlvbl9zdGF0dXMtd2lsbC1hdXRvLXNpZ24taW4nLFxuXG4gIC8vIFRoZSB1c2VyIGlzIHNpZ25lZCBpblxuICBTaWduZWRJbiA9ICdzZXJ2ZXItY29ubmVjdGlvbl9zdGF0dXMtc2lnbmVkLWluJ1xufVxuXG4vLyBTdGFydCBvZiBXZWVrIChTdGFydGluZyBEYXkpXG5leHBvcnQgZW51bSBTT1dWYWx1ZSB7XG5cbiAgLy8gXG4gIFNPV1ZhbHVlX19TT1dfU1lTVEVNREVGQVVMVCA9ICdzb3ctc3lzdGVtLWRlZmF1bHQnLFxuXG4gIC8vIFxuICBTT1dWYWx1ZV9fU09XXzdEQVlQRVJJT0QgPSAnc293LTctZGF5LXBlcmlvZCcsXG5cbiAgLy8gXG4gIFNPV1ZhbHVlX19TT1dfU1VOREFZID0gJ3Nvdy1zdW5kYXknLFxuXG4gIC8vIFxuICBTT1dWYWx1ZV9fU09XX01PTkRBWSA9ICdzb3ctbW9uZGF5JyxcblxuICAvLyBcbiAgU09XVmFsdWVfX1NPV19UVUVTREFZID0gJ3Nvdy10dWVzZGF5JyxcblxuICAvLyBcbiAgU09XVmFsdWVfX1NPV19XRURORVNEQVkgPSAnc293LXdlZG5lc2RheScsXG5cbiAgLy8gXG4gIFNPV1ZhbHVlX19TT1dfVEhVUlNEQVkgPSAnc293LXRodXJzZGF5JyxcblxuICAvLyBcbiAgU09XVmFsdWVfX1NPV19GUklEQVkgPSAnc293LWZyaWRheScsXG5cbiAgLy8gXG4gIFNPV1ZhbHVlX19TT1dfU0FUVVJEQVkgPSAnc293LXNhdHVyZGF5JyxcblxuICAvLyBcbiAgU09XVmFsdWVfX1NPV19JU084NjAxV0VFSyA9ICdzb3ctaXNvODYwMS13ZWVrJ1xufVxuXG4vLyBUeXBlIG9mIEZpbmQgdG8gcGVyZm9ybVxuZXhwb3J0IGVudW0gRmluZFR5cGUge1xuXG4gIC8vIFN0YXJ0cyBXaXRoXG4gIEZpbmRUeXBlX1N0YXJ0cyA9ICdmaW5kdHlwZS1zdGFydHMnLFxuXG4gIC8vIEVuZHMgV2l0aFxuICBGaW5kVHlwZV9FbmRzID0gJ2ZpbmR0eXBlLWVuZHMnLFxuXG4gIC8vIENvbnRhaW5zXG4gIEZpbmRUeXBlX0NvbnRhaW5zID0gJ2ZpbmR0eXBlLWNvbnRhaW5zJyxcblxuICAvLyBFeGFjdFxuICBGaW5kVHlwZV9FeGFjdCA9ICdmaW5kdHlwZS1leGFjdCdcbn1cblxuLy8gUGVyc3BlY3RpdmVUeXBlIG9mIGEgZ2l2ZW4gUGVyc3BlY3RpdmVQcmVzTW9kZWxcbmV4cG9ydCBlbnVtIFBlcnNwZWN0aXZlRW51bVBlcnNwZWN0aXZlVHlwZSB7XG5cbiAgLy8gUmVhbGl0eVxuICBQZXJzcGVjdGl2ZVR5cGVfUmVhbGl0eSA9ICdwZXJzcGVjdGl2ZXR5cGUtcmVhbGl0eScsXG5cbiAgLy8gRmlyc3RcbiAgUGVyc3BlY3RpdmVUeXBlX0ZpcnN0ID0gJ3BlcnNwZWN0aXZldHlwZS1maXJzdCcsXG5cbiAgLy8gTGFzdFxuICBQZXJzcGVjdGl2ZVR5cGVfTGFzdCA9ICdwZXJzcGVjdGl2ZXR5cGUtbGFzdCcsXG5cbiAgLy8gQ3VzdG9tXG4gIFBlcnNwZWN0aXZlVHlwZV9DdXN0b20gPSAncGVyc3BlY3RpdmV0eXBlLWN1c3RvbSdcbn1cblxuLy8gTGlzdCBvZiBvcHRpb25zIGZvciB3aGF0IHRvIHdyaXRlIG91dCBmcm9tIGdldC1ydW50aW1lLWluZm9cbmV4cG9ydCBlbnVtIFJ1bnRpbWVJbmZvUnVudGltZU91dHB1dCB7XG5cbiAgLy8gb3V0cHV0IHRoZSBWVEwgZnJvbSB0aGUgcHJvZHVjZXJzXG4gIFJhd1ZUTCA9ICdyYXctdnRsJyxcblxuICAvLyBvdXRwdXQgdGhlIGRhdGEgc3RvcmUgZnJvbSB0aGUgcHJvZHVjZXJzXG4gIFJhd1N0b3JlID0gJ3Jhdy1zdG9yZScsXG5cbiAgLy8gb3V0cHV0IHRoZSBncmFwaCBhbmQgY29tcGlsZWQgVlRMXG4gIFBheWxvYWRWVEwgPSAncGF5bG9hZC12dGwnLFxuXG4gIC8vIG91dHB1dCB0aGUgZmluYWwgZGF0YSBzdG9yZSBhZnRlciB0cmFuc2Zvcm1zIGFyZSBydW5cbiAgRmluYWxTdG9yZSA9ICdmaW5hbC1zdG9yZScsXG5cbiAgLy8gb3V0cHV0IHRoZSBWVEwgYW5kIGRhdGEgc3RvcmUgZnJvbSB0aGUgcHJvZHVjZXJzXG4gIElucHV0ID0gJ2lucHV0JyxcblxuICAvLyBvdXRwdXQgdGhlIGZpbmFsIFZUTCBhbmQgZGF0YSBzdG9yZSBhZnRlciBjb21waWxhdGlvbiBhbmQgcnVubmluZ1xuICBPdXRwdXQgPSAnb3V0cHV0J1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIEdlb21ldHJ5VHlwZSB7XG5cbiAgLy8gXG4gIEVtcHR5ID0gJ2VtcHR5JyxcblxuICAvLyBcbiAgTXVsdGlQb2x5Z29uID0gJ211bHRpUG9seWdvbicsXG5cbiAgLy8gXG4gIE11bHRpUG9pbnQgPSAnbXVsdGlQb2ludCcsXG5cbiAgLy8gXG4gIE11bHRpTGluZVN0cmluZyA9ICdtdWx0aUxpbmVTdHJpbmcnXG59XG5cbi8vIFxuZXhwb3J0IGVudW0gTWFya1NpemluZ1NldHRpbmcge1xuXG4gIC8vIFxuICBNYXJrc1NjYWxpbmdBdXRvbWF0aWMgPSAnbWFya3Mtc2NhbGluZy1hdXRvbWF0aWMnLFxuXG4gIC8vIFxuICBNYXJrc1NjYWxpbmdPbiA9ICdtYXJrcy1zY2FsaW5nLW9uJyxcblxuICAvLyBcbiAgTWFya3NTY2FsaW5nT2ZmID0gJ21hcmtzLXNjYWxpbmctb2ZmJ1xufVxuXG4vLyBFbnVtZXJhdGlvbiBmb3IgY2FyZCB0eXBlIG9uIHdvcmtzaGVldHMuXG5leHBvcnQgZW51bSBDYXJkVHlwZSB7XG5cbiAgLy8gQ2FyZE1hbmFnZXIgdHJlYXRzIHplcm8gc3BlY2lhbGx5LCBzbyB3ZSBjYW4ndCBzdGFydCBhdCB6ZXJvLlxuICBDb2x1bW5zID0gJ2NhcmR0eXBlLWNvbHVtbnMnLFxuXG4gIC8vIFxuICBSb3dzID0gJ2NhcmR0eXBlLXJvd3MnLFxuXG4gIC8vIFxuICBQYWdlcyA9ICdjYXJkdHlwZS1wYWdlcycsXG5cbiAgLy8gXG4gIEN1cnJlbnRQYWdlID0gJ2NhcmR0eXBlLWN1cnJlbnRQYWdlJyxcblxuICAvLyBcbiAgRmlsdGVycyA9ICdjYXJkdHlwZS1maWx0ZXJzJyxcblxuICAvLyBcbiAgTWFya3MgPSAnY2FyZHR5cGUtbWFya3MnLFxuXG4gIC8vIFxuICBNZWFzdXJlcyA9ICdjYXJkdHlwZS1tZWFzdXJlcycsXG5cbiAgLy8gXG4gIENvbG9yTGVnZW5kID0gJ2NhcmR0eXBlLWNvbG9yTGVnZW5kJyxcblxuICAvLyBcbiAgU2hhcGVMZWdlbmQgPSAnY2FyZHR5cGUtc2hhcGVMZWdlbmQnLFxuXG4gIC8vIFxuICBTaXplTGVnZW5kID0gJ2NhcmR0eXBlLXNpemVMZWdlbmQnLFxuXG4gIC8vIFxuICBNYXBMZWdlbmQgPSAnY2FyZHR5cGUtbWFwTGVnZW5kJyxcblxuICAvLyBcbiAgVGl0bGUgPSAnY2FyZHR5cGUtdGl0bGUnLFxuXG4gIC8vIFxuICBDYXB0aW9uID0gJ2NhcmR0eXBlLWNhcHRpb24nLFxuXG4gIC8vIFxuICBTdW1tYXJ5ID0gJ2NhcmR0eXBlLXN1bW1hcnknLFxuXG4gIC8vIFxuICBQYXJhbWV0ZXIgPSAnY2FyZHR5cGUtcGFyYW1ldGVyJyxcblxuICAvLyBcbiAgUXVpY2tGaWx0ZXIgPSAnY2FyZHR5cGUtcXVpY2tGaWx0ZXInLFxuXG4gIC8vIFxuICBIaWdobGlnaHRlciA9ICdjYXJkdHlwZS1oaWdobGlnaHRlcidcbn1cblxuLy8gSW5kaWNhdGVzIHRoZSB0eXBlIG9mIHRhYmxlIGRhdGEgdG8gYmUgZGlzcGxheWVkLlxuZXhwb3J0IGVudW0gVGFibGVWaWV3RGF0YVR5cGUge1xuXG4gIC8vIFRhYmxlIHZpZXcgd2l0aCBlYWNoIGNvbHVtbiBpcyBzcGVjaWZpZWQgYnkgRmllbGROYW1lLiBEUElfQ29sdW1ucyBpcyByZXF1aXJlZC5cbiAgVGFibGVWaWV3RmllbGREYXRhID0gJ3RhYmxlLXZpZXctZmllbGQtZGF0YScsXG5cbiAgLy8gVGFibGUgdmlldyB3aGVyZSB0aGUgY29sdW1ucyBhcmUgZGVmaW5lZCBieSBhIGdyb3VwLiBEUElfRmllbGROYW1lIGlzIHJlcXVpcmVkLlxuICBUYWJsZVZpZXdHcm91cERhdGEgPSAndGFibGUtdmlldy1ncm91cC1kYXRhJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFdhcm5pbmdUeXBlIHtcblxuICAvLyBcbiAgTElOS19FUlJPUiA9ICdsaW5rZXJyb3InLFxuXG4gIC8vIFxuICBPVkVSTEFQX1RFWFQgPSAnV2Fybk92ZXJsYXBwaW5nVGV4dCcsXG5cbiAgLy8gXG4gIElOVkFMSURfV09SS1NIRUVUID0gJ1dhcm5JbnZhbGlkV29ya3NoZWV0JyxcblxuICAvLyBcbiAgT1BFTl9CT09LID0gJ29wZW5ib29rJyxcblxuICAvLyBcbiAgT1BFTl9EQVRBU09VUkNFID0gJ29wZW5kYXRhc291cmNlJyxcblxuICAvLyBcbiAgT1BFTl9TSEVFVCA9ICdvcGVuc2hlZXQnLFxuXG4gIC8vIFxuICBMT0NBTERBVEFfQU1CSUdVSVRZID0gJ0xvY2FsRGF0YUFtYmlndWl0eScsXG5cbiAgLy8gXG4gIExPQ0FMREFUQV9NSVNNQVRDSCA9ICdMb2NhbERhdGFNaXNtYXRjaCcsXG5cbiAgLy8gXG4gIE1JU1NJTkdfTE9DQUxfVElMRSA9ICdNaXNzaW5nTG9jYWxUaWxlcycsXG5cbiAgLy8gXG4gIE1BUF9USUxFX0RPV05MT0FEID0gJ01hcFRpbGVEb3dubG9hZEVycm9yJyxcblxuICAvLyBcbiAgTUFQX1RJTEVfSU5URVJNSVRURU5UID0gJ01hcFRpbGVJbnRlcm1pdHRlbnQnLFxuXG4gIC8vIFxuICBNQVBfVElMRV9SRUdJT04gPSAnTWFwVGlsZVJlZ2lvbicsXG5cbiAgLy8gXG4gIE1BUF9TRVJWRVJfRk9SQklEREVOID0gJ01hcFNlcnZlckZvcmJpZGRlbicsXG5cbiAgLy8gXG4gIERNX0NBTk5PVF9TQ09SRSA9ICdETUNhbm5vdFNjb3JlJyxcblxuICAvLyBcbiAgRE1fU0NPUklOR19OT1RfUkVDID0gJ0RNU2NvcmluZ05vdFJlY29tbWVuZGVkJyxcblxuICAvLyBcbiAgTE9DQUxfREFUQV9MSUJSQVJZX01JU1NJTkcgPSAnTG9jYWxEYXRhTGlicmFyeU1pc3NpbmcnLFxuXG4gIC8vIFxuICBETV9NSVNTSU5HX01PREVMID0gJ0RNTWlzc2luZ01vZGVsJyxcblxuICAvLyBcbiAgRElfTk9fTElOSyA9ICdESU5vTGluaycsXG5cbiAgLy8gXG4gIExPQ0FMREFUQV9OT19HRU9NRVRSWSA9ICdMb2NhbERhdGFOb0dlb21ldHJ5JyxcblxuICAvLyBcbiAgTE9DQUxEQVRBX05PX0dFT01FVFJZX1VQR1JBREUgPSAnTG9jYWxEYXRhTm9HZW9tZXRyeVVwZ3JhZGUnLFxuXG4gIC8vIFxuICBESV9OT19SRUxBVElPTlNISVBTID0gJ0RJTm9SZWxhdGlvbnNoaXBzJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFdvcmtib29rVUlNb2RlIHtcblxuICAvLyBcbiAgRGF0YVRhYiA9ICdkYXRhLXRhYicsXG5cbiAgLy8gXG4gIERvY3VtZW50ID0gJ2RvY3VtZW50JyxcblxuICAvLyBcbiAgU2hlZXRTb3J0ZXIgPSAnc2hlZXQtc29ydGVyJ1xufVxuXG4vLyBcbmV4cG9ydCBlbnVtIFRvcExldmVsTWVudUl0ZW0ge1xuXG4gIC8vIFxuICBGaWxlID0gJ2ZpbGUnLFxuXG4gIC8vIFxuICBEYXRhID0gJ2RhdGEnLFxuXG4gIC8vIFxuICBXb3Jrc2hlZXQgPSAnd29ya3NoZWV0JyxcblxuICAvLyBcbiAgRGFzaGJvYXJkID0gJ2Rhc2hib2FyZCcsXG5cbiAgLy8gXG4gIEFuYWx5c2lzID0gJ2FuYWx5c2lzJyxcblxuICAvLyBcbiAgRm9ybWF0ID0gJ2Zvcm1hdCcsXG5cbiAgLy8gXG4gIE1hcCA9ICdtYXAnLFxuXG4gIC8vIFxuICBIZWxwID0gJ2hlbHAnXG59XG5cbi8vIEVudW1lcmF0aW9uIGZvciBkaWZmZXJlbnQgdHlwZXMgb2YgQWRkSW5zIChQcm9qZWN0IEZyZWxhcmQpXG5leHBvcnQgZW51bSBBZGRJblR5cGUge1xuXG4gIC8vIFxuICBJbnZhbGlkID0gJ2ludmFsaWQnLFxuXG4gIC8vIFxuICBEYXNoYm9hcmQgPSAnZGFzaGJvYXJkJ1xufVxuXG4vLyBFbnVtZXJhdGlvbiBvZiBkaWZmZXJlbnQgY29udGV4dHMgYW4gYWRkLWluIGNhbiBydW4gaW5cbmV4cG9ydCBlbnVtIEFkZEluQ29udGV4dCB7XG5cbiAgLy8gXG4gIFVua25vd24gPSAndW5rbm93bicsXG5cbiAgLy8gXG4gIERlc2t0b3AgPSAnZGVza3RvcCcsXG5cbiAgLy8gXG4gIFNlcnZlciA9ICdzZXJ2ZXInXG59XG5cbi8vIEVudW1lcmF0aW9uIG9mIGRpZmZlcmVudCBtb2RlcyBhbiBhZGQtaW4gY2FuIHJ1biBpblxuZXhwb3J0IGVudW0gQWRkSW5Nb2RlIHtcblxuICAvLyBcbiAgVW5rbm93biA9ICd1bmtub3duJyxcblxuICAvLyBcbiAgQXV0aG9yaW5nID0gJ2F1dGhvcmluZycsXG5cbiAgLy8gXG4gIFZpZXdpbmcgPSAndmlld2luZydcbn1cblxuLy8gTWFya2VycyBmb3IgYXJyYXktb2YtZmxvYXQgZW5jb2Rpbmcgb2YgZ2VvbWV0cnlcbmV4cG9ydCBlbnVtIExpbmVhckZsb2F0R2VvbWV0cnlNYXJrZXIge1xuXG4gIC8vIFxuICBMRkdfSW52YWxpZCA9ICdpbnZhbGlkJyxcblxuICAvLyBcbiAgTEZHX011bHRpUG9seWdvbiA9ICdtdWx0aVBvbHlnb24nLFxuXG4gIC8vIFxuICBMRkdfTXVsdGlMaW5lID0gJ211bHRpTGluZScsXG5cbiAgLy8gXG4gIExGR19NdWx0aVBvaW50ID0gJ211bHRpUG9pbnQnLFxuXG4gIC8vIFxuICBMRkdfU3RhcnRPYmplY3QgPSAnc3RhcnRPYmplY3QnLFxuXG4gIC8vIFxuICBMRkdfU3RhcnRQb2x5Z29uID0gJ3N0YXJ0UG9seWdvbicsXG5cbiAgLy8gXG4gIExGR19TdGFydExpbmUgPSAnc3RhcnRMaW5lJyxcblxuICAvLyBcbiAgTEZHX0VuZEdlb21ldHJ5ID0gJ2VuZEdlb21ldHJ5J1xufVxuXG4vLyBFbnVtZXJhdGlvbiBmb3IgZGF0YSBhbGVydCB0eXBlcy5cbmV4cG9ydCBlbnVtIERhdGFBbGVydFR5cGUge1xuXG4gIC8vIFxuICBEYXRhUHJlc2VudCA9ICdkYXRhLXByZXNlbnQnLFxuXG4gIC8vIFxuICBDb25zdENvbXBhcmlzb24gPSAnY29uc3QtY29tcGFyaXNvbidcbn1cblxuLy8gRW51bWVyYXRpb24gZm9yIHZhbGlkIG9wZXJhdGlvbnMgaW4gZGF0YSBhbGVydCBjb25kaXRpb25zXG5leHBvcnQgZW51bSBEYXRhQWxlcnRDb25kaXRpb25PcGVyYXRpb25UeXBlIHtcblxuICAvLyBcbiAgR3JlYXRlclRoYW4gPSAnZ3JlYXRlci10aGFuJyxcblxuICAvLyBcbiAgR3JlYXRlclRoYW5FcXVhbCA9ICdncmVhdGVyLXRoYW4tZXF1YWwnLFxuXG4gIC8vIFxuICBFcXVhbHMgPSAnZXF1YWxzJyxcblxuICAvLyBcbiAgTGVzc1RoYW4gPSAnbGVzcy10aGFuJyxcblxuICAvLyBcbiAgTGVzc1RoYW5FcXVhbCA9ICdsZXNzLXRoYW4tZXF1YWwnXG59XG5cbi8vIEVudW1lcmF0aW9uIGZvciBtb2RlcyB0aGUgZGF0YSBhbGVydCBkaWFsb2cgY291bGQgYmUgaW5cbmV4cG9ydCBlbnVtIERhdGFBbGVydERpYWxvZ01vZGUge1xuXG4gIC8vIFxuICBDcmVhdGUgPSAnY3JlYXRlJyxcblxuICAvLyBcbiAgRWRpdCA9ICdlZGl0J1xufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLWNvcmUvZ2VuLXNyYy9wcmVzbGF5ZXIvRW51bXMudHNcbiAqKi8iLCJpbXBvcnQgeyBNb2RlbCwgUGFyYW1ldGVySWQgYXMgQXBpLCBTaGVldFBhdGgsIFZlcnNpb25OdW1iZXIgfSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xuXG5pbXBvcnQgeyBQYXJhbWV0ZXJJZCBhcyBQTCB9IGZyb20gJy4uLy4uL2dlbi1zcmMvcHJlc2xheWVyL1BhcmFtcyc7XG5pbXBvcnQgeyBQcmVzZW50YXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL2dlbi1zcmMvcHJlc2xheWVyL1ByZXNNb2RlbHMnO1xuaW1wb3J0IHsgQWN0aXZlTWFya3NEYXRhQ29udmVydGVyIH0gZnJvbSAnLi9BY3RpdmVNYXJrc0RhdGFDb252ZXJ0ZXInO1xuaW1wb3J0IHsgQXBpVG9QcmVzTGF5ZXJDb252ZXJ0ZXIgfSBmcm9tICcuL0FwaVRvUHJlc0xheWVyQ29udmVydGVyJztcbmltcG9ydCB7IEZpbHRlcnNDb252ZXJ0ZXIgfSBmcm9tICcuL0ZpbHRlcnNDb252ZXJ0ZXInO1xuaW1wb3J0IHsgTWFwcGluZ1JlZ2lzdHJ5IH0gZnJvbSAnLi9NYXBwaW5nUmVnaXN0cnknO1xuaW1wb3J0IHsgUGFyYW1ldGVyc0RhdGFDb252ZXJ0ZXIgfSBmcm9tICcuL1BhcmFtZXRlcnNEYXRhQ29udmVydGVyJztcbmltcG9ydCB7IFByZXNMYXllclRvQXBpQ29udmVydGVyIH0gZnJvbSAnLi9QcmVzTGF5ZXJUb0FwaUNvbnZlcnRlcic7XG5pbXBvcnQgeyBVbmRlcmx5aW5nRGF0YUNvbnZlcnRlciB9IGZyb20gJy4vVW5kZXJseWluZ0RhdGFDb252ZXJ0ZXInO1xuXG4vKnRzbGludDpkaXNhYmxlLW5leHQtbGluZSAqL1xuY29uc3QgaWQgPSBmdW5jdGlvbihpblBhcmFtOiBhbnkpOiBhbnkgeyByZXR1cm4gaW5QYXJhbTsgfVxuXG4vKipcbiAqIEZhY3RvcnkgY2xhc3MgZm9yIGNyZWF0aW5nIHBhcmFtZXRlcnMgbWFwcGluZ3MgYmFzZWQgb24gdGhlIFZlcnNpb25OdW1iZXIgb2YgdGhlIEFwaVxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBQYXJhbWV0ZXJNYXBwaW5nUmVnaXN0cnlGYWN0b3J5XG4gKi9cbmV4cG9ydCBjbGFzcyBQYXJhbWV0ZXJNYXBwaW5nUmVnaXN0cnlGYWN0b3J5IHtcbiAgcHVibGljIHN0YXRpYyBjcmVhdGVQcmVzTGF5ZXJUb0FwaVBhcmFtUmVnaXN0cnkodmVyc2lvbk51bWJlcjogVmVyc2lvbk51bWJlcik6IFByZXNMYXllclRvQXBpTWFwcGluZ1JlZ2lzdHJ5IHtcbiAgICBsZXQgcmVzdWx0ID0gbmV3IFByZXNMYXllclRvQXBpTWFwcGluZ1JlZ2lzdHJ5KCk7XG5cbiAgICAvLyBUT0RPIC0gY2hlY2sgdGhlIHZlcnNpb24gbnVtYmVyIGFuZCBjb25zdHJ1Y3QgYXBwcm9wcmlhdGUgY29udmVyc2lvbnNcblxuICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oXG4gICAgICBQTC5BZGRJbkxvY2F0b3IsXG4gICAgICBBcGkuRXh0ZW5zaW9uTG9jYXRvcixcbiAgICAgIFByZXNMYXllclRvQXBpQ29udmVydGVyLmNvbnZlcnRFeHRlbnNpb25Mb2NhdG9yKTtcblxuICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oXG4gICAgICBQTC5BZGRJbkJvb3RzdHJhcEluZm8sXG4gICAgICBBcGkuRXh0ZW5zaW9uQm9vdHN0cmFwSW5mbyxcbiAgICAgIFByZXNMYXllclRvQXBpQ29udmVydGVyLmNvbnZlcnRFeHRlbnNpb25Cb290c3RyYXBJbmZvXG4gICAgKTtcblxuICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oXG4gICAgICBQTC5VbmRlcmx5aW5nRGF0YVRhYmxlLFxuICAgICAgQXBpLlVuZGVybHlpbmdEYXRhVGFibGUsXG4gICAgICBVbmRlcmx5aW5nRGF0YUNvbnZlcnRlci5idWlsZFVuZGVybHlpbmdEYXRhVGFibGUuYmluZCh1bmRlZmluZWQsIGZhbHNlKVxuICAgICk7XG5cbiAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKFxuICAgICAgUEwuVW5kZXJseWluZ0RhdGFUYWJsZSxcbiAgICAgIEFwaS5VbmRlcmx5aW5nU3VtbWFyeURhdGFUYWJsZSxcbiAgICAgIFVuZGVybHlpbmdEYXRhQ29udmVydGVyLmJ1aWxkVW5kZXJseWluZ0RhdGFUYWJsZS5iaW5kKHVuZGVmaW5lZCwgdHJ1ZSlcbiAgICApO1xuXG4gICAgcmVzdWx0LmFkZFJlZ2lzdHJhdGlvbihcbiAgICAgIFBMLlVuZGVybHlpbmdEYXRhVGFibGUsXG4gICAgICBBcGkuRGF0YVNvdXJjZURhdGFUYWJsZSxcbiAgICAgIFVuZGVybHlpbmdEYXRhQ29udmVydGVyLmJ1aWxkVW5kZXJseWluZ0RhdGFUYWJsZS5iaW5kKHVuZGVmaW5lZCwgdHJ1ZSlcbiAgICApO1xuXG4gICAgcmVzdWx0LmFkZFJlZ2lzdHJhdGlvbihcbiAgICAgIFBMLkZpZWxkQ2FwdGlvbixcbiAgICAgIEFwaS5GaWVsZE5hbWUsXG4gICAgICBpZFxuICAgICk7XG5cbiAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKFxuICAgICAgUEwuU2VsZWN0aW9uRGF0YSxcbiAgICAgIEFwaS5TZWxlY3RlZERhdGEsXG4gICAgICBBY3RpdmVNYXJrc0RhdGFDb252ZXJ0ZXIuYnVpbGRTZWxlY3RlZERhdGFUYWJsZVxuICAgICk7XG5cbiAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKFxuICAgICAgUEwuSGlnaGxpZ2h0ZWREYXRhLFxuICAgICAgQXBpLkhpZ2hsaWdodGVkRGF0YSxcbiAgICAgIEFjdGl2ZU1hcmtzRGF0YUNvbnZlcnRlci5idWlsZEhpZ2hsaWdodGVkRGF0YVRhYmxlXG4gICAgKTtcblxuICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oXG4gICAgICBQTC5BZGRJblNldHRpbmdzSW5mbyxcbiAgICAgIEFwaS5FeHRlbnNpb25TZXR0aW5nc0luZm8sXG4gICAgICBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlci5jb252ZXJ0RXh0ZW5zaW9uU2V0dGluZ3NJbmZvXG4gICAgKTtcblxuICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oXG4gICAgICBQTC5Xb3Jrc2hlZXQsXG4gICAgICBBcGkuV29ya3NoZWV0TmFtZSxcbiAgICAgIGlkXG4gICAgKTtcblxuICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oXG4gICAgICBQTC5QYXJhbWV0ZXJDdHJscyxcbiAgICAgIEFwaS5QYXJhbWV0ZXJJbmZvcyxcbiAgICAgIFBhcmFtZXRlcnNEYXRhQ29udmVydGVyLmNvbnZlcnRQYXJhbWV0ZXJMaXN0XG4gICAgKTtcblxuICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oXG4gICAgICBQTC5QYXJhbWV0ZXJDdHJsLFxuICAgICAgQXBpLlBhcmFtZXRlckluZm8sXG4gICAgICBQYXJhbWV0ZXJzRGF0YUNvbnZlcnRlci5jb252ZXJ0UGFyYW1ldGVyXG4gICAgKTtcblxuICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oXG4gICAgICBQTC5EYXRhU2NoZW1hLFxuICAgICAgQXBpLkRhdGFTY2hlbWEsXG4gICAgICBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlci5jb252ZXJ0RGF0YVNjaGVtYVxuICAgICk7XG5cbiAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKFxuICAgICAgUEwuRmlsdGVyc0luZm8sXG4gICAgICBBcGkuV29ya3NoZWV0RmlsdGVycyxcbiAgICAgIEZpbHRlcnNDb252ZXJ0ZXIuY29udmVydEZpbHRlcnNQcmVzTW9kZWxcbiAgICApO1xuXG4gICAgcmVzdWx0LmFkZFJlZ2lzdHJhdGlvbihcbiAgICAgIFBMLkNhdGVnb3JpY2FsRG9tYWluLFxuICAgICAgQXBpLkNhdGVnb3JpY2FsRG9tYWluLFxuICAgICAgRmlsdGVyc0NvbnZlcnRlci5jb252ZXJ0Q2F0ZWdvcmljYWxEb21haW5cbiAgICApO1xuXG4gICAgcmVzdWx0LmFkZFJlZ2lzdHJhdGlvbihcbiAgICAgIFBMLlF1YW50aXRhdGl2ZURvbWFpbixcbiAgICAgIEFwaS5RdWFudGl0YXRpdmVEb21haW4sXG4gICAgICBGaWx0ZXJzQ29udmVydGVyLmNvbnZlcnRRdWFudGl0YXRpdmVEb21haW5cbiAgICApO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlQXBpVG9QcmVzTGF5ZXJQYXJhbVJlZ2lzdHJ5KHZlcnNpb25OdW1iZXI6IFZlcnNpb25OdW1iZXIpOiBBcGlUb1ByZXNMYXllck1hcHBpbmdSZWdpc3RyeSB7XG4gICAgbGV0IHJlc3VsdCA9IG5ldyBBcGlUb1ByZXNMYXllck1hcHBpbmdSZWdpc3RyeSgpO1xuXG4gICAgLy8gVE9ETyAtIGNoZWNrIHRoZSB2ZXJzaW9uIG51bWJlciBhbmQgY29uc3RydWN0IGFwcHJvcHJpYXRlIGNvbnZlcnNpb25zXG5cbiAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKEFwaS5FeHRlbnNpb25Mb2NhdG9yLCBQTC5BZGRJbkxvY2F0b3IsIEFwaVRvUHJlc0xheWVyQ29udmVydGVyLmNvbnZlcnRFeHRlbnNpb25Mb2NhdG9yKTtcbiAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKEFwaS5TZXR0aW5nc1ZhbHVlcywgUEwuQWRkSW5TZXR0aW5ncywgaWQpO1xuICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oQXBpLklnbm9yZUFsaWFzZXMsIFBMLklnbm9yZUFsaWFzZXMsIGlkKTtcbiAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKEFwaS5JZ25vcmVTZWxlY3Rpb24sIFBMLklnbm9yZVNlbGVjdGlvbiwgaWQpO1xuICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oQXBpLkluY2x1ZGVBbGxDb2x1bW5zLCBQTC5JbmNsdWRlQWxsQ29sdW1ucywgaWQpO1xuICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oQXBpLk1heFJvd3MsIFBMLk1heFJvd3MsIGlkKTtcbiAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKEFwaS5WaXN1YWxJZCwgUEwuVmlzdWFsSURQTSwgQXBpVG9QcmVzTGF5ZXJDb252ZXJ0ZXIuY29udmVydFZpc3VhbElkKTtcbiAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKEFwaS5Db2x1bW5zVG9JbmNsdWRlLCBQTC5GaWVsZERpc3BsYXlOYW1lcywgaWQpO1xuXG4gICAgcmVzdWx0LmFkZFJlZ2lzdHJhdGlvbihBcGkuRmllbGROYW1lLCBQTC5RdWFsaWZpZWRGaWVsZENhcHRpb24sIGlkKTtcbiAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKEFwaS5GaWx0ZXJWYWx1ZXMsIFBMLkZpbHRlckFsaWFzZXMsIEFwaVRvUHJlc0xheWVyQ29udmVydGVyLmNvbnZlcnRGaWx0ZXJWYWx1ZXMpO1xuICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oQXBpLkZpbHRlclVwZGF0ZVR5cGUsIFBMLkZpbHRlclVwZGF0ZVR5cGUsIEFwaVRvUHJlc0xheWVyQ29udmVydGVyLmNvbnZlcnRGaWx0ZXJUeXBlKTtcbiAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKEFwaS5Jc0V4Y2x1ZGVNb2RlLCBQTC5FeGNsdWRlLCBpZCk7XG4gICAgcmVzdWx0LmFkZFJlZ2lzdHJhdGlvbihBcGkuRmlsdGVyUmFuZ2VNaW4sIFBMLlJhbmdlTWluLCBpZCk7XG4gICAgcmVzdWx0LmFkZFJlZ2lzdHJhdGlvbihBcGkuRmlsdGVyUmFuZ2VNYXgsIFBMLlJhbmdlTWF4LCBpZCk7XG4gICAgcmVzdWx0LmFkZFJlZ2lzdHJhdGlvbihBcGkuRmlsdGVyUmFuZ2VOdWxsT3B0aW9uLCBQTC5JbmNsdWRlZCwgQXBpVG9QcmVzTGF5ZXJDb252ZXJ0ZXIuQ29udmVydE51bGxPcHRpb24pO1xuICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oQXBpLkZpZWxkSWQsIFBMLkZpZWxkTmFtZSwgaWQpO1xuICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oQXBpLkRvbWFpblR5cGUsIFBMLkZpbHRlckRvbWFpblR5cGUsIEFwaVRvUHJlc0xheWVyQ29udmVydGVyLkNvbnZlcnRGaWx0ZXJEb21haW5UeXBlKTtcblxuICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oQXBpLlZpc3VhbElkLCBQTC5Xb3Jrc2hlZXQsIEFwaVRvUHJlc0xheWVyQ29udmVydGVyLmNvbnZlcnRWaXN1YWxJZFRvV29ya3NoZWV0KTtcbiAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKEFwaS5WaXN1YWxJZCwgUEwuRGFzaGJvYXJkLCBBcGlUb1ByZXNMYXllckNvbnZlcnRlci5jb252ZXJ0VmlzdWFsSWRUb0Rhc2hib2FyZCk7XG5cbiAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKEFwaS5QYXJhbWV0ZXJDYXB0aW9uLCBQTC5GaWVsZENhcHRpb24sIGlkKTtcbiAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKEFwaS5QYXJhbWV0ZXJGaWVsZE5hbWUsIFBMLkZpZWxkTmFtZVN0cmluZywgaWQpO1xuICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oQXBpLlBhcmFtZXRlckZpZWxkTmFtZSwgUEwuR2xvYmFsRmllbGROYW1lLCBpZCk7XG4gICAgcmVzdWx0LmFkZFJlZ2lzdHJhdGlvbihBcGkuUGFyYW1ldGVyVmFsdWUsIFBMLlZhbHVlU3RyLCBpZCk7XG5cbiAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKFxuICAgICAgQXBpLlNoZWV0UGF0aCxcbiAgICAgIFBMLlNoZWV0UGF0aFBNLFxuICAgICAgcG0gPT4gQXBpVG9QcmVzTGF5ZXJDb252ZXJ0ZXIuY29udmVydFNoZWV0UGF0aChwbSBhcyBTaGVldFBhdGgpXG4gICAgKTtcblxuICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oQXBpLlNlbGVjdGlvbiwgUEwuU2VsZWN0aW9uLCBpZCk7XG4gICAgcmVzdWx0LmFkZFJlZ2lzdHJhdGlvbihBcGkuU2VsZWN0aW9uVXBkYXRlVHlwZSwgUEwuU2VsZWN0aW9uVXBkYXRlVHlwZSwgaWQpO1xuICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oQXBpLkhpZXJWYWxTZWxlY3Rpb25Nb2RlbHMsIFBMLkhpZXJWYWxTZWxlY3Rpb25Nb2RlbHMsIGlkKTtcbiAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKEFwaS5RdWFudFJhbmdlU2VsZWN0aW9uTW9kZWxzLCBQTC5RdWFudFJhbmdlU2VsZWN0aW9uTW9kZWxzLCBpZCk7XG4gICAgcmVzdWx0LmFkZFJlZ2lzdHJhdGlvbihBcGkuRGltVmFsU2VsZWN0aW9uTW9kZWxzLCBQTC5EaW1WYWxTZWxlY3Rpb25Nb2RlbHMsIGlkKTtcblxuICAgIC8vIFRoZSBwYXJhbSBQTC5EYXRhc291cmNlIGlzIHRoZSBJRCBzdHJpbmcgZm9yIGEgc3BlY2lmaWMgZGF0YXNvdXJjZSwgbm90IHRvIGJlIGNvbmZ1c2VkXG4gICAgLy8gd2l0aCB0aGUgcGFyYW0gUEwuRGF0YVNvdXJjZSwgd2hpY2ggaXMgdGhlIGZ1bGwgcHJlcyBtb2RlbCBmb3IgYSBkYXRhIHNvdXJjZS5cbiAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKEFwaS5EYXRhU291cmNlSWQsIFBMLkRhdGFzb3VyY2UsIGlkKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwaVRvUHJlc0xheWVyTWFwcGluZ1JlZ2lzdHJ5XG4gIGV4dGVuZHMgTWFwcGluZ1JlZ2lzdHJ5PEFwaSwgUEwsIChhcGlNb2RlbDogTW9kZWwpID0+IFByZXNlbnRhdGlvbk1vZGVsPiB7fVxuXG5leHBvcnQgY2xhc3MgUHJlc0xheWVyVG9BcGlNYXBwaW5nUmVnaXN0cnlcbiAgZXh0ZW5kcyBNYXBwaW5nUmVnaXN0cnk8UEwsIEFwaSwgKHByZXNMYXllclBtOiBQcmVzZW50YXRpb25Nb2RlbCkgPT4gTW9kZWw+IHt9XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktY29yZS9zcmMvbWFwcGluZ3MvUGFyYW1ldGVyTWFwcGluZ1JlZ2lzdHJ5RmFjdG9yeS50c1xuICoqLyIsImltcG9ydCB7XG4gIERhdGFIZWFkZXIsXG4gIERhdGFUYWJsZSxcbiAgRGF0YVZhbHVlLFxuICBIaWdobGlnaHRlZE1hcmtzVGFibGUsXG4gIE1hcmtJbmZvLFxuICBNYXJrVHlwZSxcbiAgU2VsZWN0ZWRNYXJrc1RhYmxlXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XG5cbmltcG9ydCB7XG4gIERhdGFEaWN0aW9uYXJ5UHJlc01vZGVsLFxuICBIaWdobGlnaHRlZERhdGFQcmVzTW9kZWwsXG4gIFNlbGVjdGlvbkRhdGFQcmVzTW9kZWwsXG4gIFZpekRhdGFQcmVzTW9kZWxcbn0gZnJvbSAnLi4vLi4vZ2VuLXNyYy9wcmVzbGF5ZXIvUHJlc01vZGVscyc7XG5pbXBvcnQgeyBQcmVzTGF5ZXJUb0FwaUVudW1NYXBwaW5ncyBhcyBFbnVtTWFwcGluZyB9IGZyb20gJy4vRW51bU1hcHBpbmdzJztcbmltcG9ydCB7IFVuZGVybHlpbmdEYXRhQ29udmVydGVyIH0gZnJvbSAnLi9VbmRlcmx5aW5nRGF0YUNvbnZlcnRlcic7XG5cbi8qKlxuICogQ29udGFpbnMgbG9naWMgZm9yIGNvbnZlcnRpbmcgdGhlIGFjdGl2ZSBtYXJrcyBvbiBhIHZpeiBpbnRvIHRoZSBBUEkgcHJlcyBtb2RlbHMuXG4gKiBJbiB0aGUgb3JpZ2luYWwgcHJvamVjdCwgbW9zdCBvZiB0aGlzIHdhcyBpbiB0aGUgUHJvY2Vzc0FjdGl2ZU1hcmtzIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBjbGFzcyBBY3RpdmVNYXJrc0RhdGFDb252ZXJ0ZXIge1xuICBwdWJsaWMgc3RhdGljIGJ1aWxkU2VsZWN0ZWREYXRhVGFibGUoc2VsZWN0ZWREYXRhOiBTZWxlY3Rpb25EYXRhUHJlc01vZGVsKTogU2VsZWN0ZWRNYXJrc1RhYmxlIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGF0YTogQWN0aXZlTWFya3NEYXRhQ29udmVydGVyLmJ1aWxkQWN0aXZlTWFya3NMaXN0KHNlbGVjdGVkRGF0YS5kYXRhRGljdGlvbmFyeSwgc2VsZWN0ZWREYXRhLnZpekRhdGEpXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYnVpbGRIaWdobGlnaHRlZERhdGFUYWJsZShoaWdobGlnaHRlZERhdGE6IEhpZ2hsaWdodGVkRGF0YVByZXNNb2RlbCk6IEhpZ2hsaWdodGVkTWFya3NUYWJsZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGE6IEFjdGl2ZU1hcmtzRGF0YUNvbnZlcnRlci5idWlsZEFjdGl2ZU1hcmtzTGlzdChoaWdobGlnaHRlZERhdGEuZGF0YURpY3Rpb25hcnksIGhpZ2hsaWdodGVkRGF0YS52aXpEYXRhKVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBidWlsZEFjdGl2ZU1hcmtzTGlzdChkYXRhRGljdGlvbmFyeTogRGF0YURpY3Rpb25hcnlQcmVzTW9kZWwsIHZpekRhdGE6IFZpekRhdGFQcmVzTW9kZWwpOiBBcnJheTxEYXRhVGFibGU+IHtcbiAgICBjb25zdCByZXN1bHQgPSBuZXcgQXJyYXk8RGF0YVRhYmxlPigpO1xuXG4gICAgLy8gVGhlIGRhdGEgbW9kZWwgZm9yIHRoZSBWaXpEYXRhUHJlc01vZGVsIGlzIGEgbGl0dGxlIHN0cmFuZ2UsIHNvIHRoaXMgcGFyc2luZyB0YWtlcyBzb21lIHRpbWUgdG8gZmlndXJlIG91dC5cbiAgICAvLyBUaGVyZSBjYW4gYmUgbXVsdGlwbGUgcGFuZXMgb2YgZGF0YSwgc28gd2UgbXVzdCBnbyB0aHJvdWdoIHRoZW0gb25lIGF0IGEgdGltZSB0byBjcmVhdGUgZGF0YSB0YWJsZXNcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZpekRhdGEucGFuZUNvbHVtbnNEYXRhLnBhbmVDb2x1bW5zTGlzdC5sZW5ndGg7IGkrKykge1xuXG4gICAgICAvLyBOZWVkIHRvIGZpbHRlciB0byBmaW5kIGFsbCB0aGUgY29sdW1ucyB3aGljaCBhcmUgaW4gdGhpcyBwYW5lXG4gICAgICBjb25zdCBjb2x1bW5zID0gdml6RGF0YS5wYW5lQ29sdW1uc0RhdGEudml6RGF0YUNvbHVtbnMuZmlsdGVyKHZpekRhdGFDb2x1bW4gPT4ge1xuICAgICAgICAvLyBXZSBrbm93IHRoaXMgY29sdW1uIG1hdHRlcnMgZm9yIHRoZSBjdXJyZW50IHBhbmUgaWYgdGhpcyBwYW5lJ3MgaW5kZXggaXMgaW4gcGFuZUluZGljZXNcbiAgICAgICAgcmV0dXJuIHZpekRhdGFDb2x1bW4ucGFuZUluZGljZXMuaW5kZXhPZihpKSA+IC0xO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIENyZWF0ZSBhIG1hcHBpbmcgb2Ygd2hpY2ggaW5kZXggaW4gdGhlIGRhdGEgZGljdGlvbmFyeSBvdXIgY29sdW1ucyBhcmUgaW5cbiAgICAgIGNvbnN0IGNvbHVtbkluZGljZXMgPSBjb2x1bW5zLm1hcCh2aXpEYXRhQ29sdW1uID0+IHtcblxuICAgICAgICAvLyBUaGUgY29sdW1uSW5kZXggaXMgaW4gdGhlIHNhbWUgcG9zaXRpb24gYXMgdGhlIHBhbmVJbmRleFxuICAgICAgICBjb25zdCBwYW5lSW5kZXggPSB2aXpEYXRhQ29sdW1uLnBhbmVJbmRpY2VzLmluZGV4T2YoaSk7XG4gICAgICAgIGNvbnN0IGNvbHVtbkluZGV4ID0gdml6RGF0YUNvbHVtbi5jb2x1bW5JbmRpY2VzW3BhbmVJbmRleF07XG4gICAgICAgIHJldHVybiBjb2x1bW5JbmRleDtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBHZXQgdGhlIGRhdGEgZm9yIHRoZSBwYW5lIHdlIGFyZSBwcm9jZXNzaW5nXG4gICAgICBjb25zdCB2aXpQYW5lID0gdml6RGF0YS5wYW5lQ29sdW1uc0RhdGEucGFuZUNvbHVtbnNMaXN0W2ldO1xuXG4gICAgICBpZiAodml6UGFuZS52aXpQYW5lQ29sdW1ucy5sZW5ndGggIT09IGNvbHVtbnMubGVuZ3RoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTWFsZm9ybWVkIGRhdGEgdGFibGUnKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgaGVhZGVycyA9IG5ldyBBcnJheTxEYXRhSGVhZGVyPigpO1xuICAgICAgY29uc3Qgcm93cyA9IG5ldyBBcnJheTxBcnJheTxEYXRhVmFsdWU+PigpO1xuXG4gICAgICAvLyBDb2x1bW4gMCB3aWxsIGJlIHRoZSB0dXBsZSBpZCBjb2x1bW4uIFdlIGNhbiB1c2UgdGhpcyBhcyBhIGNvdW50ZXIgZm9yIGhvdyBtYW55IHJvd3Mgd2UgaGF2ZVxuICAgICAgY29uc3QgdHVwbGVJZHMgPSB2aXpQYW5lLnZpelBhbmVDb2x1bW5zWzBdLnR1cGxlSWRzO1xuICAgICAgY29uc3QgbWFya3MgPSBuZXcgQXJyYXk8TWFya0luZm8+KCk7XG4gICAgICBmb3IgKGxldCB0dXBsZUluZGV4ID0gMDsgdHVwbGVJbmRleCA8IHR1cGxlSWRzLmxlbmd0aDsgdHVwbGVJbmRleCsrKSB7XG4gICAgICAgIC8vIFRPRE8gTmVlZCB0byByZXZhbHVhdGUgdGhlIHBsYWNlIG9mIHRoaXMgbG9naWMuIElmIGl0IHR1cm5zIG91dCB0aGF0IHdlIG5lZWQgYSBzZXBhcmF0ZSBjb21tYW5kXG4gICAgICAgIC8vIGNhbGwgdG8gZ2V0IHRoZSBtYXJrcyBpbmZvLCB0aGVuIHRoaXMgbG9naWMgc2hvdWxkIG5vdCBiZSBoZXJlIGJ1dCBpbnN0ZWFkIGluIGEgbGF5ZXIgYWJvdmUgc29tZXdoZXJlXG4gICAgICAgIGxldCBtYXJrOiBNYXJrSW5mbyA9IHtcbiAgICAgICAgICB0eXBlOiBNYXJrVHlwZS5CYXIsIC8vIGhhcmRjb2RpbmcgdGhpcyBmb3Igbm93XG4gICAgICAgICAgY29sb3I6ICdyZWQnLCAvLyBoYXJkY29kaW5nIHRoaXMgZm9yIG5vd1xuICAgICAgICAgIHR1cGxlSWQ6IHR1cGxlSWRzW3R1cGxlSW5kZXhdLFxuICAgICAgICB9O1xuICAgICAgICBtYXJrcy5wdXNoKG1hcmspO1xuICAgICAgICAvLyBXZSB3aWxsIGhhdmUgMSBsZXNzIHZhbHVlIGluIHRoaXMgcm93IHNpbmNlIHRoZXJlJ3MgdGhlIHR1cGxlSWQgY29sdW1uXG4gICAgICAgIGNvbnN0IGNlbGxzID0gbmV3IEFycmF5PERhdGFWYWx1ZT4odml6UGFuZS52aXpQYW5lQ29sdW1ucy5sZW5ndGggLSAxKTtcblxuICAgICAgICBmb3IgKGxldCBqID0gMS8qIHNraXAgdGhlIGZpcnN0IHdoaWNoIGlzIHR1cGxlIGlkcyAqLzsgaiA8IHZpelBhbmUudml6UGFuZUNvbHVtbnMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAvLyBOZXh0LCB3ZSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggY29sdW1uIHdlIGFyZSByZWFkaW5nIGRhdGEgZm9yXG4gICAgICAgICAgY29uc3QgY29sdW1uID0gY29sdW1uc1tjb2x1bW5JbmRpY2VzW2pdXTtcbiAgICAgICAgICBjb25zdCB2aXpQYW5lQ29sdW1uRGF0YSA9IHZpelBhbmUudml6UGFuZUNvbHVtbnNbal07XG5cbiAgICAgICAgICAvLyBEZWZpbmUgdGhlIGhlYWRlciB3aGVuIHdlIGFyZSBwcm9jZXNzaW5nIHRoZSBmaXJzdCByb3dcbiAgICAgICAgICBpZiAodHVwbGVJbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgaGVhZGVyOiBEYXRhSGVhZGVyID0ge1xuICAgICAgICAgICAgICBkYXRhVHlwZTogRW51bU1hcHBpbmcuZGF0YVR5cGUuY29udmVydChjb2x1bW4uZGF0YVR5cGUpLFxuICAgICAgICAgICAgICBmaWVsZE5hbWU6IGNvbHVtbi5mbixcbiAgICAgICAgICAgICAgaXNSZWZlcmVuY2VkOiB0cnVlLFxuICAgICAgICAgICAgICBpbmRleDogaiAtIDEsXG4gICAgICAgICAgICAgIGZpZWxkQ2FwdGlvbjogY29sdW1uLmZpZWxkQ2FwdGlvblxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgaGVhZGVycy5wdXNoKGhlYWRlcik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBVbmRlcmx5aW5nRGF0YUNvbnZlcnRlci5sb29rdXBWYWx1ZUZyb21EaWN0aW9uYXJ5KFxuICAgICAgICAgICAgZGF0YURpY3Rpb25hcnksIGNvbHVtbi5kYXRhVHlwZSwgdml6UGFuZUNvbHVtbkRhdGEudmFsdWVJbmRpY2VzW3R1cGxlSW5kZXhdKTtcblxuICAgICAgICAgIGNvbnN0IGFsaWFzVmFsdWUgPSBVbmRlcmx5aW5nRGF0YUNvbnZlcnRlci5sb29rdXBWYWx1ZUZyb21EaWN0aW9uYXJ5KFxuICAgICAgICAgICAgZGF0YURpY3Rpb25hcnksIGNvbHVtbi5kYXRhVHlwZSwgdml6UGFuZUNvbHVtbkRhdGEuYWxpYXNJbmRpY2VzW3R1cGxlSW5kZXhdKSB8fCAnJztcblxuICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZFZhbHVlID0gYWxpYXNWYWx1ZTsgLy8gVE9ETyAtIEZpZ3VyZSBvdXQgaG93IHRvIHVzZSB0aGUgZm9ybWF0U3RyaW5nc1xuXG4gICAgICAgICAgY29uc3QgZGF0YUNlbGw6IERhdGFWYWx1ZSA9IHtcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgIGZvcm1hdHRlZFZhbHVlOiBmb3JtYXR0ZWRWYWx1ZSxcbiAgICAgICAgICAgIGFsaWFzZWRWYWx1ZTogYWxpYXNWYWx1ZVxuICAgICAgICAgIH07XG5cbiAgICAgICAgICAvLyBBZGQgb3VyIGNlbGwgdG8gdGhpcyByb3dcbiAgICAgICAgICBjZWxsc1tqIC0gMV0gPSBkYXRhQ2VsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJvd3MucHVzaChjZWxscyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFUYWJsZTogRGF0YVRhYmxlID0ge1xuICAgICAgICBkYXRhVGFibGU6IHJvd3MsXG4gICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICAgIG1hcmtzOiBtYXJrc1xuICAgICAgfTtcblxuICAgICAgcmVzdWx0LnB1c2goZGF0YVRhYmxlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktY29yZS9zcmMvbWFwcGluZ3MvQWN0aXZlTWFya3NEYXRhQ29udmVydGVyLnRzXG4gKiovIiwiaW1wb3J0ICogYXMgRW51bXMgZnJvbSAnLi4vLi4vZ2VuLXNyYy9wcmVzbGF5ZXIvRW51bXMnO1xuaW1wb3J0IHtcbiAgRGF0YURpY3Rpb25hcnlQcmVzTW9kZWwsXG4gIFVuZGVybHlpbmdEYXRhVGFibGVDb2x1bW5QcmVzTW9kZWwsXG4gIFVuZGVybHlpbmdEYXRhVGFibGVQcmVzTW9kZWwsXG4gIFZpekRhdGFQcmVzTW9kZWxcbn0gZnJvbSAnLi4vLi4vZ2VuLXNyYy9wcmVzbGF5ZXIvUHJlc01vZGVscyc7XG5pbXBvcnQgeyBQcmVzTGF5ZXJUb0FwaUVudW1NYXBwaW5ncyBhcyBFbnVtTWFwcGluZyB9IGZyb20gJy4vRW51bU1hcHBpbmdzJztcblxuaW1wb3J0IHsgRGF0YUhlYWRlciwgRGF0YVRhYmxlLCBEYXRhVmFsdWUsIFVuZGVybHlpbmdEYXRhVGFibGUgfSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xuXG4vKipcbiAqIENvbnRhaW5zIHN0YXRpYyBoZWxwZXIgbWV0aG9kcyBmb3IgY29udmVydGluZyBmcm9tIGFuIHVuZGVybHlpbmcgZGF0YSBwcmVzIG1vZGVsIGludG8gdGhlIGFwaSByZXByZXNlbnRhdGlvbi5cbiAqIE1vc3Qgb2YgdGhlIGNvZGUgaXMgYSBkaXJlY3QgcG9ydCBmcm9tIEFwaVVuZGVybHlpbmdEYXRhSGFuZGxlci5jc1xuICogaHR0cHM6Ly9vcGVuZ3Jvay9zb3VyY2UveHJlZi90ZWFtc19uZWFyL3dvcmtncm91cC92cWx3ZWIvc2NyaXB0c2hhcnAvc3JjL1VJL0FwaS9BcGlVbmRlcmx5aW5nRGF0YUhhbmRsZXIuY3NcbiAqL1xuZXhwb3J0IGNsYXNzIFVuZGVybHlpbmdEYXRhQ29udmVydGVyIHtcbiAgcHVibGljIHN0YXRpYyBsb29rdXBWYWx1ZUZyb21EaWN0aW9uYXJ5KGRhdGFEaWN0aW9uYXJ5OiBEYXRhRGljdGlvbmFyeVByZXNNb2RlbCwgZHQ6IEVudW1zLkRhdGFUeXBlLCBpbmRleDogbnVtYmVyKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgLy8gcGVyIGNsIDI4MDM5NiAvIGJ1Z3ppZCA4MTE5NyBuZWdhdGl2ZSBkYXRhIHZhbHVlIGluZGV4IG1lYW5zIHRoYXQgaXQgaXMgc3BlY2lhbFxuICAgICAgZHQgPSBFbnVtcy5EYXRhVHlwZS5EVF9TVFJJTkc7XG4gICAgICBpbmRleCA9IC1pbmRleCAtIDE7XG4gICAgfVxuXG4gICAgbGV0IHJlc3VsdDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICBjb25zdCByYXdWYWx1ZSA9IFVuZGVybHlpbmdEYXRhQ29udmVydGVyLmdldFJhd1ZhbHVlKGRhdGFEaWN0aW9uYXJ5LCBkdCwgaW5kZXgpO1xuICAgIGlmIChyYXdWYWx1ZSAhPT0gbnVsbCkge1xuICAgICAgcmVzdWx0ID0gcmF3VmFsdWUudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueSAqL1xuICBwdWJsaWMgc3RhdGljIGdldFJhd1ZhbHVlKGRhdGFEaWN0aW9uYXJ5OiBEYXRhRGljdGlvbmFyeVByZXNNb2RlbCwgZHQ6IEVudW1zLkRhdGFUeXBlLCBpbmRleDogbnVtYmVyKTogYW55IHtcbiAgICBpZiAoIWRhdGFEaWN0aW9uYXJ5LmRhdGFTZWdtZW50cykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoZGF0YURpY3Rpb25hcnkuZGF0YVNlZ21lbnRzKSkge1xuICAgICAgY29uc3QgZGF0YVNlZ21lbnQgPSBkYXRhRGljdGlvbmFyeS5kYXRhU2VnbWVudHNba2V5XTtcbiAgICAgIGZvciAoY29uc3QgZGF0YUNvbHVtbiBvZiBkYXRhU2VnbWVudC5kYXRhQ29sdW1ucykge1xuICAgICAgICBpZiAoIWRhdGFDb2x1bW4gfHwgZGF0YUNvbHVtbi5kYXRhVHlwZSAhPT0gZHQpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbmRleCA8IGRhdGFDb2x1bW4uZGF0YVZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gZGF0YUNvbHVtbi5kYXRhVmFsdWVzW2luZGV4XTtcbiAgICAgICAgfVxuXG4gICAgICAgIGluZGV4IC09IGRhdGFDb2x1bW4uZGF0YVZhbHVlcy5sZW5ndGg7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBidWlsZERhdGFUYWJsZShcbiAgICBkYXRhRGljdGlvbmFyeTogRGF0YURpY3Rpb25hcnlQcmVzTW9kZWwsIGNvbHVtbnM6IEFycmF5PFVuZGVybHlpbmdEYXRhVGFibGVDb2x1bW5QcmVzTW9kZWw+KTogRGF0YVRhYmxlIHtcbiAgICBjb25zdCByZXN1bHQ6IERhdGFUYWJsZSA9IHtcbiAgICAgIGRhdGFUYWJsZTogVW5kZXJseWluZ0RhdGFDb252ZXJ0ZXIuYnVpbGRUYWJsZShkYXRhRGljdGlvbmFyeSwgY29sdW1ucyksXG4gICAgICBoZWFkZXJzOiBjb2x1bW5zLm1hcCgoYywgaSkgPT4gVW5kZXJseWluZ0RhdGFDb252ZXJ0ZXIuYnVpbGRDb2x1bW5Nb2RlbChjLCBpKSlcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYnVpbGRVbmRlcmx5aW5nRGF0YVRhYmxlKGlzU3VtbWFyeTogYm9vbGVhbiwgdW5kZXJseWluZ0RhdGFUYWJsZTogVW5kZXJseWluZ0RhdGFUYWJsZVByZXNNb2RlbCk6IFVuZGVybHlpbmdEYXRhVGFibGUge1xuICAgIGNvbnN0IHJlc3VsdDogVW5kZXJseWluZ0RhdGFUYWJsZSA9IHtcbiAgICAgIGRhdGE6IFVuZGVybHlpbmdEYXRhQ29udmVydGVyLmJ1aWxkRGF0YVRhYmxlKHVuZGVybHlpbmdEYXRhVGFibGUuZGF0YURpY3Rpb25hcnksIHVuZGVybHlpbmdEYXRhVGFibGUudW5kZXJseWluZ0RhdGFUYWJsZUNvbHVtbnMpLFxuICAgICAgaXNTdW1tYXJ5OiBpc1N1bW1hcnlcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYnVpbGRBY3RpdmVNYXJrc1RhYmxlKGRhdGFEaWN0aW9uYXJ5OiBEYXRhRGljdGlvbmFyeVByZXNNb2RlbCwgdml6RGF0YTogVml6RGF0YVByZXNNb2RlbCk6IERhdGFUYWJsZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBidWlsZENvbHVtbk1vZGVsKGNvbHVtbjogVW5kZXJseWluZ0RhdGFUYWJsZUNvbHVtblByZXNNb2RlbCwgaW5kZXg6IG51bWJlcik6IERhdGFIZWFkZXIge1xuICAgIHJldHVybiB7XG4gICAgICBkYXRhVHlwZTogRW51bU1hcHBpbmcuZGF0YVR5cGUuY29udmVydChjb2x1bW4uZGF0YVR5cGUpLFxuICAgICAgZmllbGROYW1lOiBjb2x1bW4uZm4sXG4gICAgICBmaWVsZENhcHRpb246IGNvbHVtbi5maWVsZENhcHRpb24sXG4gICAgICBpc1JlZmVyZW5jZWQ6ICEhY29sdW1uLmlzUmVmZXJlbmNlZCxcbiAgICAgIGluZGV4OiBpbmRleFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBidWlsZFRhYmxlKFxuICAgIGRhdGFEaWN0aW9uYXJ5OiBEYXRhRGljdGlvbmFyeVByZXNNb2RlbCwgY29sdW1uczogQXJyYXk8VW5kZXJseWluZ0RhdGFUYWJsZUNvbHVtblByZXNNb2RlbD4pOiBBcnJheTxBcnJheTxEYXRhVmFsdWU+PiB7XG5cbiAgICBpZiAoY29sdW1ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBuZXcgQXJyYXk8QXJyYXk8RGF0YVZhbHVlPj4oKTtcbiAgICB9XG5cbiAgICBjb25zdCByb3dDb3VudCA9IGNvbHVtbnNbMF0uZm9ybWF0VmFsSWR4cy5sZW5ndGg7XG4gICAgY29uc3QgY29sdW1uQ291bnQgPSBjb2x1bW5zLmxlbmd0aDtcblxuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBBcnJheTxBcnJheTxEYXRhVmFsdWU+Pihyb3dDb3VudCk7XG5cbiAgICAvLyBJbml0aWFsaXplIGFsbCBvZiBvdXIgcm93c1xuICAgIGZvciAobGV0IHJvd0luZGV4ID0gMDsgcm93SW5kZXggPCByb3dDb3VudDsgcm93SW5kZXgrKykge1xuICAgICAgcmVzdWx0W3Jvd0luZGV4XSA9IG5ldyBBcnJheTxEYXRhVmFsdWU+KGNvbHVtbkNvdW50KTtcbiAgICB9XG5cbiAgICAvLyBHbyB0aHJvdWdoIGNvbHVtbi1ieS1jb2x1bW4gYW5kIGNvbnZlcnQgdGhlIHZhbHVlc1xuICAgIGZvciAobGV0IGNvbHVtbkluZGV4ID0gMDsgY29sdW1uSW5kZXggPCBjb2x1bW5Db3VudDsgY29sdW1uSW5kZXgrKykge1xuICAgICAgY29uc3QgY29sdW1uID0gY29sdW1uc1tjb2x1bW5JbmRleF07XG4gICAgICBmb3IgKGxldCByb3dJbmRleCA9IDA7IHJvd0luZGV4IDwgcm93Q291bnQ7IHJvd0luZGV4KyspIHtcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkVmFsdWUgPSBVbmRlcmx5aW5nRGF0YUNvbnZlcnRlci5sb29rdXBWYWx1ZUZyb21EaWN0aW9uYXJ5KFxuICAgICAgICAgICAgZGF0YURpY3Rpb25hcnksIEVudW1zLkRhdGFUeXBlLkRUX1NUUklORywgY29sdW1uLmZvcm1hdFZhbElkeHNbcm93SW5kZXhdKTtcblxuICAgICAgICBpZiAoZm9ybWF0dGVkVmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Zvcm1hdHRlZFZhbHVlIHdhcyBudWxsJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2YWx1ZTogRGF0YVZhbHVlID0ge1xuICAgICAgICAgIHZhbHVlOiBVbmRlcmx5aW5nRGF0YUNvbnZlcnRlci5sb29rdXBWYWx1ZUZyb21EaWN0aW9uYXJ5KFxuICAgICAgICAgICAgZGF0YURpY3Rpb25hcnksIGNvbHVtbi5kYXRhVHlwZSwgY29sdW1uLnZhbHVlSW5kaWNlc1tyb3dJbmRleF0pLFxuICAgICAgICAgIGZvcm1hdHRlZFZhbHVlOiBmb3JtYXR0ZWRWYWx1ZSxcbiAgICAgICAgICBhbGlhc2VkVmFsdWU6IGZvcm1hdHRlZFZhbHVlXG4gICAgICAgIH07XG5cbiAgICAgICAgcmVzdWx0W3Jvd0luZGV4XVtjb2x1bW5JbmRleF0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBDOi9Vc2Vycy9zZGVzbW9uZC9Eb3dubG9hZHMvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9hcGktY29yZS9zcmMvbWFwcGluZ3MvVW5kZXJseWluZ0RhdGFDb252ZXJ0ZXIudHNcbiAqKi8iLCJpbXBvcnQgKiBhcyBBcGkgZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcblxuaW1wb3J0ICogYXMgUHJlc0xheWVyIGZyb20gJy4uLy4uL2dlbi1zcmMvcHJlc2xheWVyL1ByZXNNb2RlbHMnO1xuaW1wb3J0IHsgQXBpVG9QcmVzTGF5ZXJFbnVtTWFwcGluZ3MgYXMgRW51bUNvbnZlcnRlciB9IGZyb20gJy4vRW51bU1hcHBpbmdzJztcblxuLyoqXG4gKiBDbGFzcyBjb250YWluaW5nIGhlbHBlciBtZXRob2RzIGZvciBjb252ZXJ0aW5nIGZyb20gQXBpUHJlc01vZGVscyB0byB0aGVpciBQcmVzTGF5ZXIgZXF1aXZhbGVudHNcbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgQXBpVG9QcmVzTGF5ZXJDb252ZXJ0ZXJcbiAqL1xuZXhwb3J0IGNsYXNzIEFwaVRvUHJlc0xheWVyQ29udmVydGVyIHtcbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0U2hlZXRQYXRoKGFwaVNoZWV0UGF0aD86IEFwaS5TaGVldFBhdGgpOiBQcmVzTGF5ZXIuU2hlZXRQYXRoUHJlc01vZGVsIHtcbiAgICBpZiAoIWFwaVNoZWV0UGF0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzaGVldFBhdGggbm90IGRlZmluZWQnKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQ6IFByZXNMYXllci5TaGVldFBhdGhQcmVzTW9kZWwgPSB7XG4gICAgICBzaGVldE5hbWU6IGFwaVNoZWV0UGF0aC5zaGVldE5hbWUsXG4gICAgICBpc0Rhc2hib2FyZDogYXBpU2hlZXRQYXRoLmlzRGFzaGJvYXJkLFxuICAgICAgc3Rvcnlib2FyZDogYXBpU2hlZXRQYXRoLnN0b3J5Ym9hcmQgfHwgJycsXG4gICAgICBmbGlwYm9hcmRab25lSWQ6IGFwaVNoZWV0UGF0aC5mbGlwYm9hcmRab25lSUQgfHwgMCxcbiAgICAgIHN0b3J5UG9pbnRJZDogYXBpU2hlZXRQYXRoLnN0b3J5UG9pbnRJRCB8fCAwLFxuICAgIH07XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0RXh0ZW5zaW9uTG9jYXRvcihhcGlFeHRlbnNpb25Mb2NhdG9yOiBBcGkuRXh0ZW5zaW9uTG9jYXRvcik6IFByZXNMYXllci5BZGRJbkxvY2F0b3JQcmVzTW9kZWwge1xuICAgIGNvbnN0IHJlc3VsdDogUHJlc0xheWVyLkFkZEluTG9jYXRvclByZXNNb2RlbCA9IHtcbiAgICAgIGFkZEluSW5zdGFuY2VJZDogYXBpRXh0ZW5zaW9uTG9jYXRvci5pbnN0YW5jZUlkLFxuICAgICAgc2hlZXRQYXRoOiBBcGlUb1ByZXNMYXllckNvbnZlcnRlci5jb252ZXJ0U2hlZXRQYXRoKGFwaUV4dGVuc2lvbkxvY2F0b3IuZGFzaGJvYXJkUGF0aClcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFZpc3VhbElkKGFwaVZpc3VhbGlkOiBBcGkuVmlzdWFsSWQpOiBQcmVzTGF5ZXIuVmlzdWFsSURQcmVzTW9kZWwge1xuICAgIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAgIHdvcmtzaGVldDogYXBpVmlzdWFsaWQud29ya3NoZWV0LFxuICAgICAgZGFzaGJvYXJkOiBhcGlWaXN1YWxpZC5kYXNoYm9hcmQsXG4gICAgICBzdG9yeWJvYXJkOiBhcGlWaXN1YWxpZC5zdG9yeWJvYXJkLFxuICAgICAgc3RvcnlQb2ludElkOiBhcGlWaXN1YWxpZC5zdG9yeVBvaW50SUQsXG4gICAgICBmbGlwYm9hcmRab25lSWQ6IGFwaVZpc3VhbGlkLmZsaXBib2FyZFpvbmVJRFxuICAgIH07XG5cbiAgICByZXR1cm4gcmVzdWx0IGFzIFByZXNMYXllci5WaXN1YWxJRFByZXNNb2RlbDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFZpc3VhbElkVG9Xb3Jrc2hlZXQoYXBpVmlzdWFsSWQ6IEFwaS5WaXN1YWxJZCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGFwaVZpc3VhbElkLndvcmtzaGVldDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFZpc3VhbElkVG9EYXNoYm9hcmQoYXBpVmlzdWFsSWQ6IEFwaS5WaXN1YWxJZCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGFwaVZpc3VhbElkLmRhc2hib2FyZCB8fCAnJztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydEZpbHRlclZhbHVlcyhmaWx0ZXJWYWx1ZXM6IEFycmF5PHN0cmluZz4pOiBBcnJheTxzdHJpbmc+IHtcbiAgICBpZiAoZmlsdGVyVmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gcGxhdGZvcm0gY29kZSBleHBlY3RzIGFuIGVtcHR5IHN0cmluZyBmb3IgY2xlYXJpbmcgZmlsdGVyIHZhbHVlc1xuICAgICAgcmV0dXJuIFsnJ107XG4gICAgfVxuICAgIHJldHVybiBmaWx0ZXJWYWx1ZXM7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRGaWx0ZXJUeXBlKGZpbHRlclVwZGF0ZVR5cGU6IEFwaS5GaWx0ZXJVcGRhdGVUeXBlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gRW51bUNvbnZlcnRlci5maWx0ZXJVcGRhdGVUeXBlLmNvbnZlcnQoZmlsdGVyVXBkYXRlVHlwZSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIENvbnZlcnROdWxsT3B0aW9uKG51bGxPcHRpb246IEFwaS5GaWx0ZXJOdWxsT3B0aW9uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gRW51bUNvbnZlcnRlci5udWxsT3B0aW9uLmNvbnZlcnQobnVsbE9wdGlvbik7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIENvbnZlcnRGaWx0ZXJEb21haW5UeXBlKGZpbHRlckRvbWFpblR5cGU6IEFwaS5GaWx0ZXJEb21haW5UeXBlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gRW51bUNvbnZlcnRlci5maWx0ZXJEb21haW5UeXBlLmNvbnZlcnQoZmlsdGVyRG9tYWluVHlwZSk7XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEM6L1VzZXJzL3NkZXNtb25kL0Rvd25sb2Fkcy9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvanMtYXBpLWRldi0yYmZkYzUwMjE3YTk1NWFhNWE0MjZiNTNmOTI4ZDkxNjhkZDcyODFhL2FwaS1jb3JlL3NyYy9tYXBwaW5ncy9BcGlUb1ByZXNMYXllckNvbnZlcnRlci50c1xuICoqLyIsImltcG9ydCB7XG4gIENhdGVnb3JpY2FsRG9tYWluLFxuICBDYXRlZ29yaWNhbEZpbHRlcixcbiAgRGF0YVZhbHVlLFxuICBGaWx0ZXIsXG4gIEZpbHRlclR5cGUsXG4gIFJhbmdlRG9tYWluLFxuICBSYW5nZUZpbHRlcixcbiAgUmVsYXRpdmVEYXRlRmlsdGVyLFxufSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xuXG5pbXBvcnQge1xuICBEYXRhVHlwZSxcbiAgRmlsdGVyc1F1YW50aXRhdGl2ZUluY2x1ZGVkVmFsdWVzIGFzIEluY2x1ZGVkVmFsdWVzLFxuICBGaWx0ZXJUeXBlIGFzIFByZXNMYXllckZpbHRlclR5cGUsXG59IGZyb20gJy4uLy4uL2dlbi1zcmMvcHJlc2xheWVyL0VudW1zJztcblxuaW1wb3J0IHtcbiAgQ2F0ZWdvcmljYWxEb21haW5QcmVzTW9kZWwsXG4gIEZpbHRlckluZm9QcmVzTW9kZWwsXG4gIEZpbHRlclZhbHVlUHJlc01vZGVsLFxuICBRdWFudGl0YXRpdmVEb21haW5QcmVzTW9kZWwsXG59IGZyb20gJy4uLy4uL2dlbi1zcmMvcHJlc2xheWVyL1ByZXNNb2RlbHMnO1xuXG5pbXBvcnQgeyBQcmVzTGF5ZXJUb0FwaUVudW1NYXBwaW5ncyBhcyBFbnVtTWFwcGluZ3MgfSBmcm9tICcuL0VudW1NYXBwaW5ncyc7XG5pbXBvcnQgeyBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlciB9IGZyb20gJy4vUHJlc0xheWVyVG9BcGlDb252ZXJ0ZXInO1xuXG5leHBvcnQgY2xhc3MgRmlsdGVyc0NvbnZlcnRlciB7XG4gIHB1YmxpYyBzdGF0aWMgY29udmVydEZpbHRlcnNQcmVzTW9kZWwoZmlsdGVyUG1zOiBGaWx0ZXJJbmZvUHJlc01vZGVsW10pOiBGaWx0ZXJbXSB7XG4gICAgbGV0IGZpbHRlcnM6IEZpbHRlcltdID0gW107XG4gICAgZmlsdGVyUG1zLmZvckVhY2goIGZpbHRlclBtID0+IHtcbiAgICAgIHN3aXRjaCAoZmlsdGVyUG0uZmlsdGVyVHlwZSkge1xuICAgICAgICBjYXNlIFByZXNMYXllckZpbHRlclR5cGUuRkxUUl9DYXRlZ29yaWNhbDoge1xuICAgICAgICAgIGZpbHRlcnMucHVzaChGaWx0ZXJzQ29udmVydGVyLmNvbnZlcnRDYXRlZ29yaWNhbEZpbHRlclByZXNNb2RlbChmaWx0ZXJQbSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FzZSBQcmVzTGF5ZXJGaWx0ZXJUeXBlLkZMVFJfUXVhbnRpdGF0aXZlOiB7XG4gICAgICAgICAgZmlsdGVycy5wdXNoKEZpbHRlcnNDb252ZXJ0ZXIuY29udmVydFF1YW50aXRhdGl2ZUZpbHRlclByZXNNb2RlbChmaWx0ZXJQbSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FzZSBQcmVzTGF5ZXJGaWx0ZXJUeXBlLkZMVFJfUmVsYXRpdmVEYXRlOiB7XG4gICAgICAgICAgZmlsdGVycy5wdXNoKEZpbHRlcnNDb252ZXJ0ZXIuY29udmVydFJlbGF0aXZlRGF0ZUZpbHRlclByZXNNb2RlbChmaWx0ZXJQbSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGZpbHRlcnM7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRDYXRlZ29yaWNhbEZpbHRlclByZXNNb2RlbChmaWx0ZXJQbTogRmlsdGVySW5mb1ByZXNNb2RlbCk6IENhdGVnb3JpY2FsRmlsdGVyIHtcbiAgICBsZXQgc2VsZWN0ZWRWYWx1ZXM6IERhdGFWYWx1ZVtdID0gZmlsdGVyUG0uY2F0ZWdvcmljYWxGaWx0ZXJJbmZvLmNhcHRpb25lZEZpbHRlclZhbHVlTGlzdC5tYXAoZmlsdGVyVmFsdWUgPT4ge1xuICAgICAgcmV0dXJuIEZpbHRlcnNDb252ZXJ0ZXIuY29udmVydEZpbHRlclZhbHVlUHJlc01vZGVsKGZpbHRlclZhbHVlKTtcbiAgICB9KTtcbiAgICBsZXQgZmlsdGVyOiBDYXRlZ29yaWNhbEZpbHRlciA9IHtcbiAgICAgIHZhbHVlczogc2VsZWN0ZWRWYWx1ZXMsXG4gICAgICBpc0V4Y2x1ZGU6IGZpbHRlclBtLmNhdGVnb3JpY2FsRmlsdGVySW5mby5leGNsdWRlLFxuICAgICAgZmlsdGVyVHlwZTogRmlsdGVyVHlwZS5DYXRlZ29yaWNhbCxcbiAgICAgIGZpZWxkQ2FwdGlvbjogZmlsdGVyUG0uZmllbGRDYXB0aW9uLFxuICAgICAgZmllbGROYW1lOiBmaWx0ZXJQbS5mbixcbiAgICAgIHZpc3VhbElkOiBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlci5jb252ZXJ0VmlzdWFsSWQoZmlsdGVyUG0udmlzdWFsSWRQcmVzTW9kZWwpXG4gICAgfTtcbiAgICByZXR1cm4gZmlsdGVyO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0UXVhbnRpdGF0aXZlRmlsdGVyUHJlc01vZGVsKGZpbHRlclBtOiBGaWx0ZXJJbmZvUHJlc01vZGVsKTogUmFuZ2VGaWx0ZXIge1xuICAgIGxldCBtaW5WYWx1ZTogRGF0YVZhbHVlID0gRmlsdGVyc0NvbnZlcnRlci5jb252ZXJ0RmlsdGVyVmFsdWVQcmVzTW9kZWwoXG4gICAgICBmaWx0ZXJQbS5xdWFudGl0YXRpdmVGaWx0ZXJJbmZvLmNhcHRpb25lZFJhbmdlTWluXG4gICAgKTtcbiAgICBsZXQgbWF4VmFsdWU6IERhdGFWYWx1ZSA9IEZpbHRlcnNDb252ZXJ0ZXIuY29udmVydEZpbHRlclZhbHVlUHJlc01vZGVsKFxuICAgICAgZmlsdGVyUG0ucXVhbnRpdGF0aXZlRmlsdGVySW5mby5jYXB0aW9uZWRSYW5nZU1heFxuICAgICk7XG4gICAgbGV0IGZpbHRlcjogUmFuZ2VGaWx0ZXIgPSB7XG4gICAgICBmaWx0ZXJUeXBlOiBGaWx0ZXJUeXBlLlJhbmdlLFxuICAgICAgZmllbGRDYXB0aW9uOiBmaWx0ZXJQbS5maWVsZENhcHRpb24sXG4gICAgICBmaWVsZE5hbWU6IGZpbHRlclBtLmZuLFxuICAgICAgdmlzdWFsSWQ6IFByZXNMYXllclRvQXBpQ29udmVydGVyLmNvbnZlcnRWaXN1YWxJZChmaWx0ZXJQbS52aXN1YWxJZFByZXNNb2RlbCksXG4gICAgICBtaW46IG1pblZhbHVlLFxuICAgICAgbWF4OiBtYXhWYWx1ZSxcbiAgICAgIGluY2x1ZGVOdWxsVmFsdWVzOiBGaWx0ZXJzQ29udmVydGVyLmNvbnZlcnRJbmNsdWRlZE51bGxWYWx1ZXMoZmlsdGVyUG0ucXVhbnRpdGF0aXZlRmlsdGVySW5mby5pbmNsdWRlZClcbiAgICB9O1xuICAgIHJldHVybiBmaWx0ZXI7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRSZWxhdGl2ZURhdGVGaWx0ZXJQcmVzTW9kZWwoZmlsdGVyUG06IEZpbHRlckluZm9QcmVzTW9kZWwpOiBSZWxhdGl2ZURhdGVGaWx0ZXIge1xuICAgIGxldCBhbmNob3JEYXRlVmFsdWU6IERhdGFWYWx1ZSA9IEZpbHRlcnNDb252ZXJ0ZXIuY29udmVydEZpbHRlclZhbHVlUHJlc01vZGVsKFxuICAgICAgZmlsdGVyUG0ucmVsYXRpdmVEYXRlRmlsdGVySW5mby5jYXB0aW9uZWRBbmNob3JEYXRlXG4gICAgKTtcbiAgICBsZXQgZmlsdGVyOiBSZWxhdGl2ZURhdGVGaWx0ZXIgPSB7XG4gICAgICBmaWx0ZXJUeXBlOiBGaWx0ZXJUeXBlLlJlbGF0aXZlRGF0ZSxcbiAgICAgIGZpZWxkQ2FwdGlvbjogZmlsdGVyUG0uZmllbGRDYXB0aW9uLFxuICAgICAgZmllbGROYW1lOiBmaWx0ZXJQbS5mbixcbiAgICAgIHZpc3VhbElkOiBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlci5jb252ZXJ0VmlzdWFsSWQoZmlsdGVyUG0udmlzdWFsSWRQcmVzTW9kZWwpLFxuICAgICAgYW5jaG9yRGF0ZTogYW5jaG9yRGF0ZVZhbHVlLFxuICAgICAgcGVyaW9kVHlwZTogRW51bU1hcHBpbmdzLmRhdGVTdGVwUGVyaW9kLmNvbnZlcnQoZmlsdGVyUG0ucmVsYXRpdmVEYXRlRmlsdGVySW5mby5kYXRlUGVyaW9kVHlwZSksXG4gICAgICByYW5nZVR5cGU6IEVudW1NYXBwaW5ncy5kYXRlUmFuZ2VUeXBlLmNvbnZlcnQoZmlsdGVyUG0ucmVsYXRpdmVEYXRlRmlsdGVySW5mby5kYXRlUmFuZ2VUeXBlKSxcbiAgICAgIHJhbmdlTjogZmlsdGVyUG0ucmVsYXRpdmVEYXRlRmlsdGVySW5mby5yYW5nZU5cbiAgICB9O1xuICAgIHJldHVybiBmaWx0ZXI7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRDYXRlZ29yaWNhbERvbWFpbihkb21haW5QbTogQ2F0ZWdvcmljYWxEb21haW5QcmVzTW9kZWwpOiBDYXRlZ29yaWNhbERvbWFpbiB7XG4gICAgbGV0IGRvbWFpblZhbHVlczogQXJyYXk8RGF0YVZhbHVlPiA9IGRvbWFpblBtLmNhcHRpb25lZEZpbHRlclZhbHVlTGlzdC5tYXAoZmlsdGVyVmFsdWUgPT4ge1xuICAgICAgcmV0dXJuIEZpbHRlcnNDb252ZXJ0ZXIuY29udmVydEZpbHRlclZhbHVlUHJlc01vZGVsKGZpbHRlclZhbHVlKTtcbiAgICB9KTtcbiAgICByZXR1cm4geyB2YWx1ZXM6IGRvbWFpblZhbHVlc307XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRRdWFudGl0YXRpdmVEb21haW4oZG9tYWluUG06IFF1YW50aXRhdGl2ZURvbWFpblByZXNNb2RlbCk6IFJhbmdlRG9tYWluIHtcbiAgICBsZXQgbWluVmFsdWU6IERhdGFWYWx1ZSA9IEZpbHRlcnNDb252ZXJ0ZXIuY29udmVydEZpbHRlclZhbHVlUHJlc01vZGVsKGRvbWFpblBtLmNhcHRpb25lZFJhbmdlTWluKTtcbiAgICBsZXQgbWF4VmFsdWU6IERhdGFWYWx1ZSA9IEZpbHRlcnNDb252ZXJ0ZXIuY29udmVydEZpbHRlclZhbHVlUHJlc01vZGVsKGRvbWFpblBtLmNhcHRpb25lZFJhbmdlTWF4KTtcbiAgICByZXR1cm4ge1xuICAgICAgbWF4OiBtYXhWYWx1ZSxcbiAgICAgIG1pbjogbWluVmFsdWVcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0RmlsdGVyVmFsdWVQcmVzTW9kZWwoZHZQTTogRmlsdGVyVmFsdWVQcmVzTW9kZWwpOiBEYXRhVmFsdWUge1xuICAgIC8qdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueSAqL1xuICAgIGxldCB2YWx1ZTogYW55O1xuICAgIHN3aXRjaCAoZHZQTS5kYXRhVHlwZSkge1xuICAgICAgY2FzZSBEYXRhVHlwZS5EVF9CT09MRUFOOiB7XG4gICAgICAgIHZhbHVlID0gQm9vbGVhbihkdlBNLmRhdGFWYWx1ZVN0cik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBEYXRhVHlwZS5EVF9EQVRFOiB7XG4gICAgICAgIHZhbHVlID0gbmV3IERhdGUoZHZQTS5kYXRhVmFsdWVTdHIpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgRGF0YVR5cGUuRFRfREFURVRJTUU6IHtcbiAgICAgICAgdmFsdWUgPSBuZXcgRGF0ZShkdlBNLmRhdGFWYWx1ZVN0cik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBEYXRhVHlwZS5EVF9JTlRFR0VSOiB7XG4gICAgICAgIHZhbHVlID0gTnVtYmVyLnBhcnNlSW50KGR2UE0uZGF0YVZhbHVlU3RyKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIERhdGFUeXBlLkRUX1JFQUw6IHtcbiAgICAgICAgdmFsdWUgPSBOdW1iZXIucGFyc2VGbG9hdChkdlBNLmRhdGFWYWx1ZVN0cik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgLy8gZGVmYXVsdCB0byBzdHJpbmdcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgdmFsdWUgPSBkdlBNLmRhdGFWYWx1ZVN0cjtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAvLyBUT0RPOiBubyBlYXN5IHdheSBvZiBnZXR0aW5nIGJhY2sgYWxpYXNlZCB2YWx1ZSBmcm9tIHBsYXRmb3JtLCB3aWxsIG5lZWQgdG8gaW52ZXN0aWdhdGUgZnVydGhlclxuICAgICAgYWxpYXNlZFZhbHVlOiAnJyxcbiAgICAgIGZvcm1hdHRlZFZhbHVlOiBkdlBNLmRhdGFWYWx1ZURpc3BsYXlTdHJpbmdcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0SW5jbHVkZWROdWxsVmFsdWVzKGluY2x1ZGVOdWxsOiBJbmNsdWRlZFZhbHVlcyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoaW5jbHVkZU51bGwgPT09IEluY2x1ZGVkVmFsdWVzLkluUmFuZ2VPck51bGwgfHxcbiAgICAgIGluY2x1ZGVOdWxsID09PSBJbmNsdWRlZFZhbHVlcy5BbGwgfHxcbiAgICAgIGluY2x1ZGVOdWxsID09PSBJbmNsdWRlZFZhbHVlcy5OdWxsXG4gICAgKTtcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLWNvcmUvc3JjL21hcHBpbmdzL0ZpbHRlcnNDb252ZXJ0ZXIudHNcbiAqKi8iLCIvKipcbiAqIFNpbXBsZSByZWdpc3RyeSBjbGFzcyB3aGljaCBjcmVhdGVzIGEgbWFwcGluZyBiYXNlZCBvbiB0d28ga2V5cy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgTWFwcGluZ1JlZ2lzdHJ5XG4gKiBAdGVtcGxhdGUgVElucHV0RW51bVR5cGVcbiAqIEB0ZW1wbGF0ZSBUT3V0cHV0RW51bVR5cGVcbiAqIEB0ZW1wbGF0ZSBUTWFwcGluZ1N0b3JhZ2VUeXBlXG4gKi9cbmV4cG9ydCBjbGFzcyBNYXBwaW5nUmVnaXN0cnk8VElucHV0RW51bVR5cGUgZXh0ZW5kcyBzdHJpbmcsIFRPdXRwdXRFbnVtVHlwZSBleHRlbmRzIHN0cmluZywgVE1hcHBpbmdTdG9yYWdlVHlwZT4ge1xuICBwcml2YXRlIF9yZWdpc3RyeTogeyBba2V5OiBzdHJpbmddOiBUTWFwcGluZ1N0b3JhZ2VUeXBlIH07XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX3JlZ2lzdHJ5ID0ge307XG4gIH1cblxuICBwdWJsaWMgaGFzKGlucHV0VHlwZTogVElucHV0RW51bVR5cGUsIG91dHB1dFR5cGU6IFRPdXRwdXRFbnVtVHlwZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGtleSA9IHRoaXMubWFrZUtleShpbnB1dFR5cGUsIG91dHB1dFR5cGUpO1xuICAgIGlmICghdGhpcy5fcmVnaXN0cnkuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fcmVnaXN0cnlba2V5XSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHVibGljIGdldChpbnB1dFR5cGU6IFRJbnB1dEVudW1UeXBlLCBvdXRwdXRUeXBlOiBUT3V0cHV0RW51bVR5cGUpOiBUTWFwcGluZ1N0b3JhZ2VUeXBlIHtcbiAgICBpZiAoIXRoaXMuaGFzKGlucHV0VHlwZSwgb3V0cHV0VHlwZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyByZXF1ZXN0ZWQgbWFwcGluZzogJyArIGlucHV0VHlwZSArICcgdG8gJyArIG91dHB1dFR5cGUpO1xuICAgIH1cblxuICAgIGNvbnN0IGtleSA9IHRoaXMubWFrZUtleShpbnB1dFR5cGUsIG91dHB1dFR5cGUpO1xuICAgIHJldHVybiB0aGlzLl9yZWdpc3RyeVtrZXldO1xuICB9XG5cbiAgcHVibGljIGFkZFJlZ2lzdHJhdGlvbihpbnB1dFR5cGU6IFRJbnB1dEVudW1UeXBlLCBvdXRwdXRUeXBlOiBUT3V0cHV0RW51bVR5cGUsIHN0b3JhZ2VJdGVtOiBUTWFwcGluZ1N0b3JhZ2VUeXBlKTogdm9pZCB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5tYWtlS2V5KGlucHV0VHlwZSwgb3V0cHV0VHlwZSk7XG5cbiAgICAvLyBBZGQgdGhpcyBpdGVtXG4gICAgdGhpcy5fcmVnaXN0cnlba2V5XSA9IHN0b3JhZ2VJdGVtO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbWJpbmVzIHRoZSB0d28ga2V5cyBpbnRvIGEgdW5pcXVlIHN0cmluZ1xuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge1RJbnB1dEVudW1UeXBlfSBpbnB1dFR5cGVcbiAgICogQHBhcmFtIHtUT3V0cHV0RW51bVR5cGV9IG91dHB1dFR5cGVcbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICogQG1lbWJlcm9mIE1hcHBpbmdSZWdpc3RyeVxuICAgKi9cbiAgcHJpdmF0ZSBtYWtlS2V5KGlucHV0VHlwZTogVElucHV0RW51bVR5cGUsIG91dHB1dFR5cGU6IFRPdXRwdXRFbnVtVHlwZSk6IHN0cmluZyB7XG4gICAgY29uc3Qga2V5T2JqID0geyBpbnB1dDogaW5wdXRUeXBlLCBvdXRwdXQ6IG91dHB1dFR5cGUgfTtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoa2V5T2JqKTtcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLWNvcmUvc3JjL21hcHBpbmdzL01hcHBpbmdSZWdpc3RyeS50c1xuICoqLyIsImltcG9ydCB7IERhdGFUeXBlLCBEYXRhVmFsdWUsIERvbWFpblJlc3RyaWN0aW9uVHlwZSwgUGFyYW1ldGVySW5mbyB9IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XG5cbmltcG9ydCB7IFBhcmFtZXRlckN0cmxQcmVzTW9kZWwgfSBmcm9tICcuLi8uLi9nZW4tc3JjL3ByZXNsYXllci9QcmVzTW9kZWxzJztcbmltcG9ydCB7IFByZXNMYXllclRvQXBpRW51bU1hcHBpbmdzIGFzIEVudW1NYXBwaW5nIH0gZnJvbSAnLi9FbnVtTWFwcGluZ3MnO1xuXG4vKipcbiAqIENvbnRhaW5zIGxvZ2ljIGZvciBjb252ZXJ0aW5nIFBhcmFtZXRlciBtb2RlbHMgaW50byB0aGVpciBlcXVpdmFsZW50IEFwaSB2ZXJzaW9uc1xuICovXG5leHBvcnQgY2xhc3MgUGFyYW1ldGVyc0RhdGFDb252ZXJ0ZXIge1xuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRQYXJhbWV0ZXJMaXN0KHBhcmFtZXRlcnM6IEFycmF5PFBhcmFtZXRlckN0cmxQcmVzTW9kZWw+KTogQXJyYXk8UGFyYW1ldGVySW5mbz4ge1xuICAgIHJldHVybiBwYXJhbWV0ZXJzLm1hcChQYXJhbWV0ZXJzRGF0YUNvbnZlcnRlci5jb252ZXJ0UGFyYW1ldGVyKTtcbiAgfVxuXG4gIC8vIENvbnZlcnRzIGEgc2luZ2xlIHBhcmFtZXRlci5cbiAgLy8gUm91Z2ggcG9ydCBvZiBodHRwczovL29wZW5ncm9rL3NvdXJjZS94cmVmL2Rldl9uZXNzaWUvd29ya2dyb3VwL3ZxbHdlYi9zY3JpcHRzaGFycC9zcmMvVUkvQXBpL0FwaVBhcmFtZXRlckhhbmRsZXIuY3MjOTVcbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0UGFyYW1ldGVyKHBhcmFtOiBQYXJhbWV0ZXJDdHJsUHJlc01vZGVsKTogUGFyYW1ldGVySW5mbyB7XG4gICAgY29uc3QgY3VycmVudFZhbHVlID0gUGFyYW1ldGVyc0RhdGFDb252ZXJ0ZXIuY29udmVydEFsaWFzZWREYXRhVmFsdWUocGFyYW0udmFsdWVBbGlhcywgcGFyYW0uZm9ybWF0dGVkVmFsdWUpO1xuICAgIGNvbnN0IGFsbG93YWJsZVZhbHVlc1R5cGUgPSBFbnVtTWFwcGluZy5wYXJhbWV0ZXJUeXBlc0RvbWFpblR5cGUuY29udmVydChwYXJhbS5wYXJhbWV0ZXJEb21haW5UeXBlKTtcblxuICAgIGNvbnN0IHJlc3VsdDogUGFyYW1ldGVySW5mbyA9IHtcbiAgICAgIG5hbWU6IHBhcmFtLmZpZWxkQ2FwdGlvbixcbiAgICAgIGZpZWxkTmFtZTogcGFyYW0ucGFyYW1ldGVyTmFtZSxcbiAgICAgIGRhdGFUeXBlOiBFbnVtTWFwcGluZy5kYXRhVHlwZS5jb252ZXJ0KHBhcmFtLmRhdGFUeXBlKSxcbiAgICAgIGN1cnJlbnRWYWx1ZTogY3VycmVudFZhbHVlLFxuICAgICAgYWxsb3dhYmxlVmFsdWVzVHlwZTogYWxsb3dhYmxlVmFsdWVzVHlwZVxuICAgIH07XG5cbiAgICBpZiAoYWxsb3dhYmxlVmFsdWVzVHlwZSA9PT0gRG9tYWluUmVzdHJpY3Rpb25UeXBlLkxpc3QpIHtcbiAgICAgIGNvbnN0IGFsbG93YWJsZVZhbHVlcyA9IG5ldyBBcnJheTxEYXRhVmFsdWU+KCk7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcmFtLnZhbHVlc0FsaWFzZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgYWR2ID0gcGFyYW0udmFsdWVzQWxpYXNlc1tpXTtcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkVmFsdWUgPSBwYXJhbS5mb3JtYXR0ZWRWYWx1ZXNbaV07XG4gICAgICAgIGFsbG93YWJsZVZhbHVlcy5wdXNoKFBhcmFtZXRlcnNEYXRhQ29udmVydGVyLmNvbnZlcnRBbGlhc2VkRGF0YVZhbHVlKGFkdiwgZm9ybWF0dGVkVmFsdWUpKTtcbiAgICAgIH1cblxuICAgICAgcmVzdWx0LmFsbG93YWJsZVZhbHVlcyA9IGFsbG93YWJsZVZhbHVlcztcblxuICAgIH0gZWxzZSBpZiAoYWxsb3dhYmxlVmFsdWVzVHlwZSA9PT0gRG9tYWluUmVzdHJpY3Rpb25UeXBlLlJhbmdlKSB7XG4gICAgICByZXN1bHQubWluVmFsdWUgPSBQYXJhbWV0ZXJzRGF0YUNvbnZlcnRlci5tYWtlRGF0YVZhbHVlKHBhcmFtLnZhbHVlTWluLCBwYXJhbS5mb3JtYXR0ZWRNaW4pO1xuICAgICAgcmVzdWx0Lm1heFZhbHVlID0gUGFyYW1ldGVyc0RhdGFDb252ZXJ0ZXIubWFrZURhdGFWYWx1ZShwYXJhbS52YWx1ZU1heCwgcGFyYW0uZm9ybWF0dGVkTWF4KTtcbiAgICAgIHJlc3VsdC5zdGVwU2l6ZSA9IFBhcmFtZXRlcnNEYXRhQ29udmVydGVyLmNvbnZlcnROdW1iZXIocmVzdWx0LmRhdGFUeXBlLCBwYXJhbS52YWx1ZUluYyk7XG4gICAgICByZXN1bHQuZGF0ZVN0ZXBQZXJpb2QgPSBFbnVtTWFwcGluZy5kYXRlU3RlcFBlcmlvZC5jb252ZXJ0KHBhcmFtLmRhdGVQZXJpb2RUeXBlLCBmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE5vdGhpbmcgdG8gZG8gaW4gdGhlIGNhc2UgdGhhdCBhbGwgdmFsdWVzIGFyZSBhbGxvd2VkXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNvbnZlcnROdW1iZXIoZGF0YVR5cGU6IERhdGFUeXBlLCB2YWx1ZTogc3RyaW5nKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIGlmIChkYXRhVHlwZSA9PT0gRGF0YVR5cGUuSW50IHx8IGRhdGFUeXBlID09PSBEYXRhVHlwZS5EYXRlIHx8IGRhdGFUeXBlID09PSBEYXRhVHlwZS5EYXRlVGltZSkge1xuICAgICAgICByZXR1cm4gcGFyc2VJbnQodmFsdWUsIDEwKTtcbiAgICAgIH0gZWxzZSBpZiAoZGF0YVR5cGUgPT09IERhdGFUeXBlLkZsb2F0KSB7XG4gICAgICAgIHJldHVybiBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyp0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55ICovXG4gIHByaXZhdGUgc3RhdGljIG1ha2VEYXRhVmFsdWUodmFsdWU6IGFueSwgZm9ybWF0dGVkVmFsdWU6IHN0cmluZywgYWxpYXM/OiBzdHJpbmcpOiBEYXRhVmFsdWUge1xuICAgIGNvbnN0IHJlc3VsdDogRGF0YVZhbHVlID0ge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZm9ybWF0dGVkVmFsdWU6IGZvcm1hdHRlZFZhbHVlLFxuICAgICAgYWxpYXNlZFZhbHVlOiBhbGlhcyB8fCBmb3JtYXR0ZWRWYWx1ZVxuICAgIH07XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyp0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55ICovXG4gIHByaXZhdGUgc3RhdGljIGNvbnZlcnRBbGlhc2VkRGF0YVZhbHVlKGFkdjogYW55W10sIGZvcm1hdHRlZFZhbHVlOiBzdHJpbmcpOiBEYXRhVmFsdWUge1xuICAgIC8vIEFsaWFzZWREYXRhVmFsdWVzIGFyZSBzZXJpYWxpemVkIGluIGtpbmQgb2YgYSBzdHJhbmdlIHdheSBmcm9tIHRoZSBwbGF0Zm9ybSBjb2RlLiBUaGV5IGFyZSBvdXRwdXRcbiAgICAvLyBhcyBhbiBhcnJheSBvZiAyIHZhbHVlcy4gVGhlIGZpcnN0IGlzIHRoZSBhY3R1YWwgdmFsdWUsIHRoZSBzZWNvbmQgaXMgdGhlIGFsaWFzLiBTZWUgQWxpYXNlZERhdGFWYWx1ZVNlcmlhbGl6ZXI6OlRvU2VyaWFsaXplclxuICAgIGlmICghYWR2IHx8ICEoYWR2IGluc3RhbmNlb2YgQXJyYXkpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYWxpYXNlZCBkYXRhIHZhbHVlJyk7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSBhZHZbMF07XG4gICAgY29uc3QgYWxpYXMgPSBhZHYubGVuZ3RoIDwgMiA/IHVuZGVmaW5lZCA6IGFkdlsxXSBhcyBzdHJpbmc7XG5cbiAgICByZXR1cm4gUGFyYW1ldGVyc0RhdGFDb252ZXJ0ZXIubWFrZURhdGFWYWx1ZSh2YWx1ZSwgZm9ybWF0dGVkVmFsdWUsIGFsaWFzKTtcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogQzovVXNlcnMvc2Rlc21vbmQvRG93bmxvYWRzL2pzLWFwaS1kZXYtMmJmZGM1MDIxN2E5NTVhYTVhNDI2YjUzZjkyOGQ5MTY4ZGQ3MjgxYS9qcy1hcGktZGV2LTJiZmRjNTAyMTdhOTU1YWE1YTQyNmI1M2Y5MjhkOTE2OGRkNzI4MWEvYXBpLWNvcmUvc3JjL21hcHBpbmdzL1BhcmFtZXRlcnNEYXRhQ29udmVydGVyLnRzXG4gKiovIiwiaW1wb3J0IHsgQWRkSW5JbnN0YW5jZVByZXNNb2RlbCB9IGZyb20gJ0B0YWJsZWF1L2FwaS1jb3JlJztcclxuaW1wb3J0ICogYXMgY29udHJhY3QgZnJvbSAnQHRhYmxlYXUvcHJlc2xheWVyLWFwaS1jb250cmFjdCc7XHJcblxyXG5pbXBvcnQge1xyXG4gIEFkZEluQXBpUHJlc0xheWVySW50ZXJvcE9iamVjdCxcclxuICBOb3RpZmljYXRpb24gYXMgUHJlc0xheWVyTm90aWZpY2F0aW9uLFxyXG59IGZyb20gJy4vdHlwZXMvQWRkSW5BcGlQcmVzTGF5ZXJJbnRlcm9wT2JqZWN0JztcclxuXHJcbi8qKlxyXG4gKiBJbXBsZW1lbmF0aW9uIG9mIHRoZSBQcmVzZW50YXRpb25MYXllciBjb250cmFjdCB3aXRoIGEgYml0IG9mIGV4dHJhIGluZm9ybWF0aW9uXHJcbiAqIGFkZGVkIHRvIHdvcmsgd2l0aCBhZGQtaW5zLiBNb3N0IHdvcmsgaXMgZGVsZWdhdGVkIGRvd24gdG8gdGhlIGludGVyb3BPYmplY3Qgd2hpY2hcclxuICogY29tbXVuaWNhdGVzIGRpcmVjdGx5IHdpdGggdGhlIGMrKyBsYXllciB2aWEgUVdlYkNoYW5uZWxcclxuICpcclxuICogQGNsYXNzIEFkZEluQXBpUHJlc0xheWVySW1wbFxyXG4gKiBAaW1wbGVtZW50cyB7Y29udHJhY3QuUHJlc2VudGF0aW9uTGF5ZXJ9XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQWRkSW5BcGlQcmVzTGF5ZXJJbXBsIGltcGxlbWVudHMgY29udHJhY3QuUHJlc2VudGF0aW9uTGF5ZXIge1xyXG4gICAgcHJpdmF0ZSBfbm90aWZpY2F0aW9uSGFuZGxlcnM6IHsgW2V2ZW50aWQ6IHN0cmluZ106IFtjb250cmFjdC5Ob3RpZmljYXRpb25IYW5kbGVyXSB9O1xyXG5cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIF9pbnRlcm9wT2JqZWN0OiBBZGRJbkFwaVByZXNMYXllckludGVyb3BPYmplY3QpIHtcclxuICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25IYW5kbGVycyA9IHt9O1xyXG4gICAgICAgIGlmIChfaW50ZXJvcE9iamVjdCAmJiBfaW50ZXJvcE9iamVjdC5Pbk5vdGlmaWNhdGlvbikge1xyXG4gICAgICAgICAgICBfaW50ZXJvcE9iamVjdC5Pbk5vdGlmaWNhdGlvbi5jb25uZWN0KG5vdGlmaWNhdGlvbiA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbik7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIGluc3RhbmNlIGluZm8gZm9yIHRoaXMgcGFydGljdWxhciBhZGQtaW4gZnJvbSB0aGUgYysrIGNvZGVcclxuICAgICAqXHJcbiAgICAgKiBAcmVhZG9ubHlcclxuICAgICAqIEB0eXBlIHtBZGRJbkluc3RhbmNlUHJlc01vZGVsfVxyXG4gICAgICogQG1lbWJlcm9mIEFkZEluQXBpUHJlc0xheWVySW1wbFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IEFkZEluSW5zdGFuY2VJbmZvKCk6IEFkZEluSW5zdGFuY2VQcmVzTW9kZWwge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9pbnRlcm9wT2JqZWN0LmFkZEluSW5zdGFuY2VJbmZvIGFzIEFkZEluSW5zdGFuY2VQcmVzTW9kZWw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbnZva2VzIGEgY29tbWFuZCB1c2luZyB0aGUgcHJlcy1sYXllciBpbnRlcm9wXHJcbiAgICAgKlxyXG4gICAgICogQHRlbXBsYXRlIFQgLSBUaGUgZXhwZWN0ZWQgcmV0dXJuIHR5cGVcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjb21tYW5kTmFtZXNwYWNlXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gY29tbWFuZE5hbWVcclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbXNcclxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPFQ+fVxyXG4gICAgICogQG1lbWJlcm9mIEFkZEluQXBpUHJlc0xheWVySW1wbFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaW52b2tlQ29tbWFuZDxUPihjb21tYW5kTmFtZXNwYWNlOiBzdHJpbmcsIGNvbW1hbmROYW1lOiBzdHJpbmcsIHBhcmFtczogb2JqZWN0KTogUHJvbWlzZTxUPiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGNvbW1hbmROYW1lc3BhY2UgPSBjb21tYW5kTmFtZXNwYWNlIHx8ICd0YWJkb2MnO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5faW50ZXJvcE9iamVjdC5FeGVjdXRlQ29tbWFuZDxUPihcclxuICAgICAgICAgICAgICAgICAgICBjb21tYW5kTmFtZXNwYWNlLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbW1hbmROYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtcyxcclxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVzcG9uc2UuU3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1zZyA9ICdFeGVjdXRlQ29tbWFuZCBmYWlsZWQsIHdpdGggcmVzdWx0OicgKyBKU09OLnN0cmluZ2lmeShyZXNwb25zZS5SZXN1bHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihtc2cpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuUmVzdWx0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVGhpcyBpbXBsZW1lbnRhdGlvbiB3aWxsIHJlZ2lzdHJhdGlvbiBhIHNpbmdsZSBpbnN0YW5jZSBvZiBhIG5vdGlmaWNhdGlvbiBoYW5kbGVyIHdpdGggdGhlIE5hdGl2ZSBDKysgb2JqZWN0LFxyXG4gICAgLy8gYW5kIGltcGxlbWVudCBtdWx0aS1kaXNwYXRjaCB0byB0aGUgd2ViIG9iamVjdHMgZnJvbSBoLmVyZVxyXG4gICAgcHVibGljIHJlZ2lzdGVyTm90aWZpY2F0aW9uSGFuZGxlcihldmVudElkOiBzdHJpbmcsIGhhbmRsZXI6IGNvbnRyYWN0Lk5vdGlmaWNhdGlvbkhhbmRsZXIpOiAoKSA9PiB2b2lkIHtcclxuICAgICAgICBpZiAoZXZlbnRJZCBpbiB0aGlzLl9ub3RpZmljYXRpb25IYW5kbGVycykge1xyXG4gICAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25IYW5kbGVyc1tldmVudElkXS5wdXNoKGhhbmRsZXIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbkhhbmRsZXJzW2V2ZW50SWRdID0gW2hhbmRsZXJdO1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5faW50ZXJvcE9iamVjdC5SZWdpc3Rlck5vdGlmaWNhdGlvbkhhbmRsZXIoZXZlbnRJZCk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ1JlZ2lzdGVyTm90aWZpY2F0aW9uSGFuZGxlciBmYWlsZWQ6ICcgKyBlcnIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiAoKSA9PiB0aGlzLnJlbW92ZU5vdGlmaWNhdGlvbkhhbmRsZXIoZXZlbnRJZCwgaGFuZGxlcik7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSByZW1vdmVOb3RpZmljYXRpb25IYW5kbGVyKGV2ZW50SWQ6IHN0cmluZywgaGFuZGxlcjogY29udHJhY3QuTm90aWZpY2F0aW9uSGFuZGxlcik6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGhhbmRsZXJMaXN0ID0gdGhpcy5fbm90aWZpY2F0aW9uSGFuZGxlcnNbZXZlbnRJZF07XHJcbiAgICAgICAgaWYgKCFoYW5kbGVyTGlzdCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGZvdW5kSW5kZXggPSBoYW5kbGVyTGlzdC5pbmRleE9mKGhhbmRsZXIpO1xyXG4gICAgICAgIGlmIChmb3VuZEluZGV4ID49IDApIHtcclxuICAgICAgICAgICAgaGFuZGxlckxpc3Quc3BsaWNlKGZvdW5kSW5kZXgsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaGFuZGxlckxpc3QubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9ub3RpZmljYXRpb25IYW5kbGVyc1tldmVudElkXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIGRpc3BhdGNoTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbjogUHJlc0xheWVyTm90aWZpY2F0aW9uKTogdm9pZCB7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ3JlY2VpdmVkIG5vdGlmaWNhdGlvbjogJyArIEpTT04uc3RyaW5naWZ5KG5vdGlmaWNhdGlvbikpO1xyXG4gICAgICAgIGxldCBldmVudElkID0gbm90aWZpY2F0aW9uLmV2ZW50SWQ7XHJcbiAgICAgICAgbGV0IHByZXNNb2RlbCA9IG5vdGlmaWNhdGlvbi5wcmVzTW9kZWw7XHJcbiAgICAgICAgaWYgKGV2ZW50SWQgaW4gdGhpcy5fbm90aWZpY2F0aW9uSGFuZGxlcnMpIHtcclxuICAgICAgICAgICAgbGV0IGhhbmRsZXJzID0gdGhpcy5fbm90aWZpY2F0aW9uSGFuZGxlcnNbZXZlbnRJZF07XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBoYW5kbGVycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgICAgICAgICAgaGFuZGxlcnNbaV0ocHJlc01vZGVsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuLi9zcmMvQWRkSW5BcGlQcmVzTGF5ZXJJbXBsLnRzXG4gKiovIiwiaW1wb3J0IHsgQXBpRXZlbnRIYW5kbGVyIH0gZnJvbSAnQHRhYmxlYXUvYXBpLWNvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEV4ZWN1dGVQYXJhbWV0ZXJzLFxyXG4gIEV4ZWN1dGVSZXNwb25zZSxcclxuICBJbnRlcm5hbEFwaURpc3BhdGNoZXIsXHJcbiAgTm90aWZpY2F0aW9uSGFuZGxlcixcclxuICBWZXJiSWQsXHJcbiAgVmVyc2lvbk51bWJlcixcclxufSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xyXG5cclxuLyoqXHJcbiAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBJbnRlcm5hbEFwaURpc3BhdGNoZXIgZm9yIGRlc2t0b3AuIFNpbmNlIHRoaXMgd2lsbCBydW4gaW4gdGhlIHNhbWVcclxuICogZnJhbWUgYXMgdGhlIEFwaUV2ZW50SGFuZGxlciwgdGhpcyBjbGFzcyBtb3N0bHkganVzdCBtYXJzaGFsbHMgZG93biB0byB0aGF0IGltcGxlbWVudGF0aW9uXHJcbiAqXHJcbiAqIEBleHBvcnRcclxuICogQGNsYXNzIERlc2t0b3BBcGlEaXNwYXRjaGVyXHJcbiAqIEBpbXBsZW1lbnRzIHtJbnRlcm5hbEFwaURpc3BhdGNoZXJ9XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRGVza3RvcEFwaURpc3BhdGNoZXIgaW1wbGVtZW50cyBJbnRlcm5hbEFwaURpc3BhdGNoZXIge1xyXG4gIHByaXZhdGUgX25vdGlmaWNhdGlvbkhhbmRsZXJzOiBBcnJheTxOb3RpZmljYXRpb25IYW5kbGVyPjtcclxuXHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgX2FwaUV2ZW50SGFuZGxlcjogQXBpRXZlbnRIYW5kbGVyKSB7XHJcbiAgICB0aGlzLl9ub3RpZmljYXRpb25IYW5kbGVycyA9IFtdO1xyXG4gICAgdGhpcy5fYXBpRXZlbnRIYW5kbGVyLnNldEV2ZW50SGFuZGxlcigobm90aWZpY2F0aW9uSWQsIG1vZGVsKSA9PiB7XHJcbiAgICAgIHRoaXMuX25vdGlmaWNhdGlvbkhhbmRsZXJzLmZvckVhY2goaGFuZGxlciA9PiBoYW5kbGVyKHtcclxuICAgICAgICBub3RpZmljYXRpb25JZDogbm90aWZpY2F0aW9uSWQsXHJcbiAgICAgICAgZGF0YTogbW9kZWxcclxuICAgICAgfSkpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0VmVyc2lvbk51bWJlcih2ZXJzaW9uTnVtYmVyOiBWZXJzaW9uTnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLl9hcGlFdmVudEhhbmRsZXIuc2V0VmVyc2lvbk51bWJlcih2ZXJzaW9uTnVtYmVyKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBleGVjdXRlKHZlcmI6IFZlcmJJZCwgcGFyYW1ldGVyczogRXhlY3V0ZVBhcmFtZXRlcnMpOiBQcm9taXNlPEV4ZWN1dGVSZXNwb25zZT4ge1xyXG4gICAgLy8gSnVzdCBwYXNzIHRoaXMgcmlnaHQgdGhyb3VnaCB0byB0aGUgQXBpRXZlbnRIYW5kbGVyXHJcbiAgICByZXR1cm4gdGhpcy5fYXBpRXZlbnRIYW5kbGVyLmV4ZWN1dGUodmVyYiwgcGFyYW1ldGVycyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVnaXN0ZXJOb3RpZmljYXRpb25IYW5kbGVyKGhhbmRsZXI6IE5vdGlmaWNhdGlvbkhhbmRsZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuX25vdGlmaWNhdGlvbkhhbmRsZXJzLnB1c2goaGFuZGxlcik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdW5yZWdpc3Rlck5vdGlmaWNhdGlvbkhhbmRsZXIoaGFuZGxlcjogTm90aWZpY2F0aW9uSGFuZGxlcik6IHZvaWQge1xyXG4gICAgdGhpcy5fbm90aWZpY2F0aW9uSGFuZGxlcnMgPSB0aGlzLl9ub3RpZmljYXRpb25IYW5kbGVycy5maWx0ZXIoaCA9PiBoICE9PSBoYW5kbGVyKTtcclxuICB9XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi4vc3JjL0Rlc2t0b3BBcGlEaXNwYXRjaGVyLnRzXG4gKiovIiwiaW1wb3J0ICcuL3R5cGVzL1F0VHlwZXMnO1xyXG5cclxuaW1wb3J0IHsgUVdlYkNoYW5uZWwgfSBmcm9tICdxd2ViY2hhbm5lbCc7XHJcblxyXG5pbXBvcnQgeyBBZGRJbkFwaVByZXNMYXllckludGVyb3BPYmplY3QgfSBmcm9tICcuL3R5cGVzL0FkZEluQXBpUHJlc0xheWVySW50ZXJvcE9iamVjdCc7XHJcblxyXG4vKipcclxuICogSW5pdGlhbGl6ZXMgdGhlIFFXZWJDaGFubmVsIGNvbnRyYWN0IGFuZCByZXR1cm5zIHRoZSBwcmVzIGxheWVyIGludGVyb3Agb2JqZWN0XHJcbiAqXHJcbiAqIEByZXR1cm5zIHtQcm9taXNlPEFkZEluQXBpUHJlc0xheWVySW50ZXJvcE9iamVjdD59XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaW5pdGlhbGl6ZVdlYkNoYW5uZWxQcmVzTGF5ZXIoKTogUHJvbWlzZTxBZGRJbkFwaVByZXNMYXllckludGVyb3BPYmplY3Q+IHtcclxuICByZXR1cm4gbmV3IFByb21pc2U8QWRkSW5BcGlQcmVzTGF5ZXJJbnRlcm9wT2JqZWN0PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICB0cnkge1xyXG5cclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXHJcbiAgICAgIG5ldyBRV2ViQ2hhbm5lbChxdC53ZWJDaGFubmVsVHJhbnNwb3J0LCAoY2hhbm5lbCkgPT4ge1xyXG5cclxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcclxuICAgICAgICBjb25zdCBhZGRJblByZXNMYXllciA9IGNoYW5uZWwub2JqZWN0c1snYWRkSW5QcmVzTGF5ZXInXSBhcyBBZGRJbkFwaVByZXNMYXllckludGVyb3BPYmplY3Q7XHJcbiAgICAgICAgcmVzb2x2ZShhZGRJblByZXNMYXllcik7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICByZWplY3QoZSk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi4vc3JjL1F0V2ViQ2hhbm5lbEltcGwudHNcbiAqKi8iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuKipcbioqIENvcHlyaWdodCAoQykgMjAxNSBUaGUgUXQgQ29tcGFueSBMdGQuXG4qKiBDb3B5cmlnaHQgKEMpIDIwMTQgS2xhcsOkbHZkYWxlbnMgRGF0YWtvbnN1bHQgQUIsIGEgS0RBQiBHcm91cCBjb21wYW55LCBpbmZvQGtkYWIuY29tLCBhdXRob3IgTWlsaWFuIFdvbGZmIDxtaWxpYW4ud29sZmZAa2RhYi5jb20+XG4qKiBDb250YWN0OiBodHRwOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy9cbioqXG4qKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUXRXZWJDaGFubmVsIG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC5cbioqXG4qKiAkUVRfQkVHSU5fTElDRU5TRTpMR1BMMjEkXG4qKiBDb21tZXJjaWFsIExpY2Vuc2UgVXNhZ2VcbioqIExpY2Vuc2VlcyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5IHVzZSB0aGlzIGZpbGUgaW5cbioqIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVlbWVudCBwcm92aWRlZCB3aXRoIHRoZVxuKiogU29mdHdhcmUgb3IsIGFsdGVybmF0aXZlbHksIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgdGVybXMgY29udGFpbmVkIGluXG4qKiBhIHdyaXR0ZW4gYWdyZWVtZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxpY2Vuc2luZyB0ZXJtc1xuKiogYW5kIGNvbmRpdGlvbnMgc2VlIGh0dHA6Ly93d3cucXQuaW8vdGVybXMtY29uZGl0aW9ucy4gRm9yIGZ1cnRoZXJcbioqIGluZm9ybWF0aW9uIHVzZSB0aGUgY29udGFjdCBmb3JtIGF0IGh0dHA6Ly93d3cucXQuaW8vY29udGFjdC11cy5cbioqXG4qKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2VcbioqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXJcbioqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEgb3IgdmVyc2lvbiAzIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZVxuKiogU29mdHdhcmUgRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuTEdQTHYyMSBhbmRcbioqIExJQ0VOU0UuTEdQTHYzIGluY2x1ZGVkIGluIHRoZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZVxuKiogZm9sbG93aW5nIGluZm9ybWF0aW9uIHRvIGVuc3VyZSB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4qKiByZXF1aXJlbWVudHMgd2lsbCBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC5odG1sIGFuZFxuKiogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL29sZC1saWNlbnNlcy9sZ3BsLTIuMS5odG1sLlxuKipcbioqIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIFRoZSBRdCBDb21wYW55IGdpdmVzIHlvdSBjZXJ0YWluIGFkZGl0aW9uYWxcbioqIHJpZ2h0cy4gVGhlc2UgcmlnaHRzIGFyZSBkZXNjcmliZWQgaW4gVGhlIFF0IENvbXBhbnkgTEdQTCBFeGNlcHRpb25cbioqIHZlcnNpb24gMS4xLCBpbmNsdWRlZCBpbiB0aGUgZmlsZSBMR1BMX0VYQ0VQVElPTi50eHQgaW4gdGhpcyBwYWNrYWdlLlxuKipcbioqICRRVF9FTkRfTElDRU5TRSRcbioqXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5cInVzZSBzdHJpY3RcIjtcblxudmFyIFFXZWJDaGFubmVsTWVzc2FnZVR5cGVzID0ge1xuICAgIHNpZ25hbDogMSxcbiAgICBwcm9wZXJ0eVVwZGF0ZTogMixcbiAgICBpbml0OiAzLFxuICAgIGlkbGU6IDQsXG4gICAgZGVidWc6IDUsXG4gICAgaW52b2tlTWV0aG9kOiA2LFxuICAgIGNvbm5lY3RUb1NpZ25hbDogNyxcbiAgICBkaXNjb25uZWN0RnJvbVNpZ25hbDogOCxcbiAgICBzZXRQcm9wZXJ0eTogOSxcbiAgICByZXNwb25zZTogMTAsXG59O1xuXG52YXIgUVdlYkNoYW5uZWwgPSBmdW5jdGlvbih0cmFuc3BvcnQsIGluaXRDYWxsYmFjaylcbntcbiAgICBpZiAodHlwZW9mIHRyYW5zcG9ydCAhPT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgdHJhbnNwb3J0LnNlbmQgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiVGhlIFFXZWJDaGFubmVsIGV4cGVjdHMgYSB0cmFuc3BvcnQgb2JqZWN0IHdpdGggYSBzZW5kIGZ1bmN0aW9uIGFuZCBvbm1lc3NhZ2UgY2FsbGJhY2sgcHJvcGVydHkuXCIgK1xuICAgICAgICAgICAgICAgICAgICAgIFwiIEdpdmVuIGlzOiB0cmFuc3BvcnQ6IFwiICsgdHlwZW9mKHRyYW5zcG9ydCkgKyBcIiwgdHJhbnNwb3J0LnNlbmQ6IFwiICsgdHlwZW9mKHRyYW5zcG9ydC5zZW5kKSk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgY2hhbm5lbCA9IHRoaXM7XG4gICAgdGhpcy50cmFuc3BvcnQgPSB0cmFuc3BvcnQ7XG5cbiAgICB0aGlzLnNlbmQgPSBmdW5jdGlvbihkYXRhKVxuICAgIHtcbiAgICAgICAgaWYgKHR5cGVvZihkYXRhKSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgZGF0YSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGNoYW5uZWwudHJhbnNwb3J0LnNlbmQoZGF0YSk7XG4gICAgfVxuXG4gICAgdGhpcy50cmFuc3BvcnQub25tZXNzYWdlID0gZnVuY3Rpb24obWVzc2FnZSlcbiAgICB7XG4gICAgICAgIHZhciBkYXRhID0gbWVzc2FnZS5kYXRhO1xuICAgICAgICBpZiAodHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIGRhdGEgPSBKU09OLnBhcnNlKGRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAoZGF0YS50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFFXZWJDaGFubmVsTWVzc2FnZVR5cGVzLnNpZ25hbDpcbiAgICAgICAgICAgICAgICBjaGFubmVsLmhhbmRsZVNpZ25hbChkYXRhKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUVdlYkNoYW5uZWxNZXNzYWdlVHlwZXMucmVzcG9uc2U6XG4gICAgICAgICAgICAgICAgY2hhbm5lbC5oYW5kbGVSZXNwb25zZShkYXRhKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUVdlYkNoYW5uZWxNZXNzYWdlVHlwZXMucHJvcGVydHlVcGRhdGU6XG4gICAgICAgICAgICAgICAgY2hhbm5lbC5oYW5kbGVQcm9wZXJ0eVVwZGF0ZShkYXRhKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcImludmFsaWQgbWVzc2FnZSByZWNlaXZlZDpcIiwgbWVzc2FnZS5kYXRhKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZXhlY0NhbGxiYWNrcyA9IHt9O1xuICAgIHRoaXMuZXhlY0lkID0gMDtcbiAgICB0aGlzLmV4ZWMgPSBmdW5jdGlvbihkYXRhLCBjYWxsYmFjaylcbiAgICB7XG4gICAgICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgICAgICAgIC8vIGlmIG5vIGNhbGxiYWNrIGlzIGdpdmVuLCBzZW5kIGRpcmVjdGx5XG4gICAgICAgICAgICBjaGFubmVsLnNlbmQoZGF0YSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5uZWwuZXhlY0lkID09PSBOdW1iZXIuTUFYX1ZBTFVFKSB7XG4gICAgICAgICAgICAvLyB3cmFwXG4gICAgICAgICAgICBjaGFubmVsLmV4ZWNJZCA9IE51bWJlci5NSU5fVkFMVUU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGEuaGFzT3duUHJvcGVydHkoXCJpZFwiKSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkNhbm5vdCBleGVjIG1lc3NhZ2Ugd2l0aCBwcm9wZXJ0eSBpZDogXCIgKyBKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZGF0YS5pZCA9IGNoYW5uZWwuZXhlY0lkKys7XG4gICAgICAgIGNoYW5uZWwuZXhlY0NhbGxiYWNrc1tkYXRhLmlkXSA9IGNhbGxiYWNrO1xuICAgICAgICBjaGFubmVsLnNlbmQoZGF0YSk7XG4gICAgfTtcblxuICAgIHRoaXMub2JqZWN0cyA9IHt9O1xuXG4gICAgdGhpcy5oYW5kbGVTaWduYWwgPSBmdW5jdGlvbihtZXNzYWdlKVxuICAgIHtcbiAgICAgICAgdmFyIG9iamVjdCA9IGNoYW5uZWwub2JqZWN0c1ttZXNzYWdlLm9iamVjdF07XG4gICAgICAgIGlmIChvYmplY3QpIHtcbiAgICAgICAgICAgIG9iamVjdC5zaWduYWxFbWl0dGVkKG1lc3NhZ2Uuc2lnbmFsLCBtZXNzYWdlLmFyZ3MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiVW5oYW5kbGVkIHNpZ25hbDogXCIgKyBtZXNzYWdlLm9iamVjdCArIFwiOjpcIiArIG1lc3NhZ2Uuc2lnbmFsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuaGFuZGxlUmVzcG9uc2UgPSBmdW5jdGlvbihtZXNzYWdlKVxuICAgIHtcbiAgICAgICAgaWYgKCFtZXNzYWdlLmhhc093blByb3BlcnR5KFwiaWRcIikpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJJbnZhbGlkIHJlc3BvbnNlIG1lc3NhZ2UgcmVjZWl2ZWQ6IFwiLCBKU09OLnN0cmluZ2lmeShtZXNzYWdlKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY2hhbm5lbC5leGVjQ2FsbGJhY2tzW21lc3NhZ2UuaWRdKG1lc3NhZ2UuZGF0YSk7XG4gICAgICAgIGRlbGV0ZSBjaGFubmVsLmV4ZWNDYWxsYmFja3NbbWVzc2FnZS5pZF07XG4gICAgfVxuXG4gICAgdGhpcy5oYW5kbGVQcm9wZXJ0eVVwZGF0ZSA9IGZ1bmN0aW9uKG1lc3NhZ2UpXG4gICAge1xuICAgICAgICBmb3IgKHZhciBpIGluIG1lc3NhZ2UuZGF0YSkge1xuICAgICAgICAgICAgdmFyIGRhdGEgPSBtZXNzYWdlLmRhdGFbaV07XG4gICAgICAgICAgICB2YXIgb2JqZWN0ID0gY2hhbm5lbC5vYmplY3RzW2RhdGEub2JqZWN0XTtcbiAgICAgICAgICAgIGlmIChvYmplY3QpIHtcbiAgICAgICAgICAgICAgICBvYmplY3QucHJvcGVydHlVcGRhdGUoZGF0YS5zaWduYWxzLCBkYXRhLnByb3BlcnRpZXMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJVbmhhbmRsZWQgcHJvcGVydHkgdXBkYXRlOiBcIiArIGRhdGEub2JqZWN0ICsgXCI6OlwiICsgZGF0YS5zaWduYWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNoYW5uZWwuZXhlYyh7dHlwZTogUVdlYkNoYW5uZWxNZXNzYWdlVHlwZXMuaWRsZX0pO1xuICAgIH1cblxuICAgIHRoaXMuZGVidWcgPSBmdW5jdGlvbihtZXNzYWdlKVxuICAgIHtcbiAgICAgICAgY2hhbm5lbC5zZW5kKHt0eXBlOiBRV2ViQ2hhbm5lbE1lc3NhZ2VUeXBlcy5kZWJ1ZywgZGF0YTogbWVzc2FnZX0pO1xuICAgIH07XG5cbiAgICBjaGFubmVsLmV4ZWMoe3R5cGU6IFFXZWJDaGFubmVsTWVzc2FnZVR5cGVzLmluaXR9LCBmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgIGZvciAodmFyIG9iamVjdE5hbWUgaW4gZGF0YSkge1xuICAgICAgICAgICAgdmFyIG9iamVjdCA9IG5ldyBRT2JqZWN0KG9iamVjdE5hbWUsIGRhdGFbb2JqZWN0TmFtZV0sIGNoYW5uZWwpO1xuICAgICAgICB9XG4gICAgICAgIC8vIG5vdyB1bndyYXAgcHJvcGVydGllcywgd2hpY2ggbWlnaHQgcmVmZXJlbmNlIG90aGVyIHJlZ2lzdGVyZWQgb2JqZWN0c1xuICAgICAgICBmb3IgKHZhciBvYmplY3ROYW1lIGluIGNoYW5uZWwub2JqZWN0cykge1xuICAgICAgICAgICAgY2hhbm5lbC5vYmplY3RzW29iamVjdE5hbWVdLnVud3JhcFByb3BlcnRpZXMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5pdENhbGxiYWNrKSB7XG4gICAgICAgICAgICBpbml0Q2FsbGJhY2soY2hhbm5lbCk7XG4gICAgICAgIH1cbiAgICAgICAgY2hhbm5lbC5leGVjKHt0eXBlOiBRV2ViQ2hhbm5lbE1lc3NhZ2VUeXBlcy5pZGxlfSk7XG4gICAgfSk7XG59O1xuXG5mdW5jdGlvbiBRT2JqZWN0KG5hbWUsIGRhdGEsIHdlYkNoYW5uZWwpXG57XG4gICAgdGhpcy5fX2lkX18gPSBuYW1lO1xuICAgIHdlYkNoYW5uZWwub2JqZWN0c1tuYW1lXSA9IHRoaXM7XG5cbiAgICAvLyBMaXN0IG9mIGNhbGxiYWNrcyB0aGF0IGdldCBpbnZva2VkIHVwb24gc2lnbmFsIGVtaXNzaW9uXG4gICAgdGhpcy5fX29iamVjdFNpZ25hbHNfXyA9IHt9O1xuXG4gICAgLy8gQ2FjaGUgb2YgYWxsIHByb3BlcnRpZXMsIHVwZGF0ZWQgd2hlbiBhIG5vdGlmeSBzaWduYWwgaXMgZW1pdHRlZFxuICAgIHRoaXMuX19wcm9wZXJ0eUNhY2hlX18gPSB7fTtcblxuICAgIHZhciBvYmplY3QgPSB0aGlzO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgdGhpcy51bndyYXBRT2JqZWN0ID0gZnVuY3Rpb24ocmVzcG9uc2UpXG4gICAge1xuICAgICAgICBpZiAocmVzcG9uc2UgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgICAgLy8gc3VwcG9ydCBsaXN0IG9mIG9iamVjdHNcbiAgICAgICAgICAgIHZhciByZXQgPSBuZXcgQXJyYXkocmVzcG9uc2UubGVuZ3RoKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzcG9uc2UubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICByZXRbaV0gPSBvYmplY3QudW53cmFwUU9iamVjdChyZXNwb25zZVtpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgICB9XG4gICAgICAgIGlmICghcmVzcG9uc2VcbiAgICAgICAgICAgIHx8ICFyZXNwb25zZVtcIl9fUU9iamVjdCpfX1wiXVxuICAgICAgICAgICAgfHwgcmVzcG9uc2VbXCJpZFwiXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgb2JqZWN0SWQgPSByZXNwb25zZS5pZDtcbiAgICAgICAgaWYgKHdlYkNoYW5uZWwub2JqZWN0c1tvYmplY3RJZF0pXG4gICAgICAgICAgICByZXR1cm4gd2ViQ2hhbm5lbC5vYmplY3RzW29iamVjdElkXTtcblxuICAgICAgICBpZiAoIXJlc3BvbnNlLmRhdGEpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJDYW5ub3QgdW53cmFwIHVua25vd24gUU9iamVjdCBcIiArIG9iamVjdElkICsgXCIgd2l0aG91dCBkYXRhLlwiKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBxT2JqZWN0ID0gbmV3IFFPYmplY3QoIG9iamVjdElkLCByZXNwb25zZS5kYXRhLCB3ZWJDaGFubmVsICk7XG4gICAgICAgIHFPYmplY3QuZGVzdHJveWVkLmNvbm5lY3QoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBpZiAod2ViQ2hhbm5lbC5vYmplY3RzW29iamVjdElkXSA9PT0gcU9iamVjdCkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSB3ZWJDaGFubmVsLm9iamVjdHNbb2JqZWN0SWRdO1xuICAgICAgICAgICAgICAgIC8vIHJlc2V0IHRoZSBub3cgZGVsZXRlZCBRT2JqZWN0IHRvIGFuIGVtcHR5IHt9IG9iamVjdFxuICAgICAgICAgICAgICAgIC8vIGp1c3QgYXNzaWduaW5nIHt9IHRob3VnaCB3b3VsZCBub3QgaGF2ZSB0aGUgZGVzaXJlZCBlZmZlY3QsIGJ1dCB0aGVcbiAgICAgICAgICAgICAgICAvLyBiZWxvdyBhbHNvIGVuc3VyZXMgYWxsIGV4dGVybmFsIHJlZmVyZW5jZXMgd2lsbCBzZWUgdGhlIGVtcHR5IG1hcFxuICAgICAgICAgICAgICAgIC8vIE5PVEU6IHRoaXMgZGV0b3VyIGlzIG5lY2Vzc2FyeSB0byB3b3JrYXJvdW5kIFFUQlVHLTQwMDIxXG4gICAgICAgICAgICAgICAgdmFyIHByb3BlcnR5TmFtZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eU5hbWUgaW4gcU9iamVjdCkge1xuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLnB1c2gocHJvcGVydHlOYW1lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaWR4IGluIHByb3BlcnR5TmFtZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHFPYmplY3RbcHJvcGVydHlOYW1lc1tpZHhdXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBoZXJlIHdlIGFyZSBhbHJlYWR5IGluaXRpYWxpemVkLCBhbmQgdGh1cyBtdXN0IGRpcmVjdGx5IHVud3JhcCB0aGUgcHJvcGVydGllc1xuICAgICAgICBxT2JqZWN0LnVud3JhcFByb3BlcnRpZXMoKTtcbiAgICAgICAgcmV0dXJuIHFPYmplY3Q7XG4gICAgfVxuXG4gICAgdGhpcy51bndyYXBQcm9wZXJ0aWVzID0gZnVuY3Rpb24oKVxuICAgIHtcbiAgICAgICAgZm9yICh2YXIgcHJvcGVydHlJZHggaW4gb2JqZWN0Ll9fcHJvcGVydHlDYWNoZV9fKSB7XG4gICAgICAgICAgICBvYmplY3QuX19wcm9wZXJ0eUNhY2hlX19bcHJvcGVydHlJZHhdID0gb2JqZWN0LnVud3JhcFFPYmplY3Qob2JqZWN0Ll9fcHJvcGVydHlDYWNoZV9fW3Byb3BlcnR5SWR4XSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRTaWduYWwoc2lnbmFsRGF0YSwgaXNQcm9wZXJ0eU5vdGlmeVNpZ25hbClcbiAgICB7XG4gICAgICAgIHZhciBzaWduYWxOYW1lID0gc2lnbmFsRGF0YVswXTtcbiAgICAgICAgdmFyIHNpZ25hbEluZGV4ID0gc2lnbmFsRGF0YVsxXTtcbiAgICAgICAgb2JqZWN0W3NpZ25hbE5hbWVdID0ge1xuICAgICAgICAgICAgY29ubmVjdDogZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mKGNhbGxiYWNrKSAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJCYWQgY2FsbGJhY2sgZ2l2ZW4gdG8gY29ubmVjdCB0byBzaWduYWwgXCIgKyBzaWduYWxOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIG9iamVjdC5fX29iamVjdFNpZ25hbHNfX1tzaWduYWxJbmRleF0gPSBvYmplY3QuX19vYmplY3RTaWduYWxzX19bc2lnbmFsSW5kZXhdIHx8IFtdO1xuICAgICAgICAgICAgICAgIG9iamVjdC5fX29iamVjdFNpZ25hbHNfX1tzaWduYWxJbmRleF0ucHVzaChjYWxsYmFjayk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWlzUHJvcGVydHlOb3RpZnlTaWduYWwgJiYgc2lnbmFsTmFtZSAhPT0gXCJkZXN0cm95ZWRcIikge1xuICAgICAgICAgICAgICAgICAgICAvLyBvbmx5IHJlcXVpcmVkIGZvciBcInB1cmVcIiBzaWduYWxzLCBoYW5kbGVkIHNlcGFyYXRlbHkgZm9yIHByb3BlcnRpZXMgaW4gcHJvcGVydHlVcGRhdGVcbiAgICAgICAgICAgICAgICAgICAgLy8gYWxzbyBub3RlIHRoYXQgd2UgYWx3YXlzIGdldCBub3RpZmllZCBhYm91dCB0aGUgZGVzdHJveWVkIHNpZ25hbFxuICAgICAgICAgICAgICAgICAgICB3ZWJDaGFubmVsLmV4ZWMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogUVdlYkNoYW5uZWxNZXNzYWdlVHlwZXMuY29ubmVjdFRvU2lnbmFsLFxuICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0OiBvYmplY3QuX19pZF9fLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmFsOiBzaWduYWxJbmRleFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGlzY29ubmVjdDogZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mKGNhbGxiYWNrKSAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJCYWQgY2FsbGJhY2sgZ2l2ZW4gdG8gZGlzY29ubmVjdCBmcm9tIHNpZ25hbCBcIiArIHNpZ25hbE5hbWUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9iamVjdC5fX29iamVjdFNpZ25hbHNfX1tzaWduYWxJbmRleF0gPSBvYmplY3QuX19vYmplY3RTaWduYWxzX19bc2lnbmFsSW5kZXhdIHx8IFtdO1xuICAgICAgICAgICAgICAgIHZhciBpZHggPSBvYmplY3QuX19vYmplY3RTaWduYWxzX19bc2lnbmFsSW5kZXhdLmluZGV4T2YoY2FsbGJhY2spO1xuICAgICAgICAgICAgICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJDYW5ub3QgZmluZCBjb25uZWN0aW9uIG9mIHNpZ25hbCBcIiArIHNpZ25hbE5hbWUgKyBcIiB0byBcIiArIGNhbGxiYWNrLm5hbWUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9iamVjdC5fX29iamVjdFNpZ25hbHNfX1tzaWduYWxJbmRleF0uc3BsaWNlKGlkeCwgMSk7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1Byb3BlcnR5Tm90aWZ5U2lnbmFsICYmIG9iamVjdC5fX29iamVjdFNpZ25hbHNfX1tzaWduYWxJbmRleF0ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIG9ubHkgcmVxdWlyZWQgZm9yIFwicHVyZVwiIHNpZ25hbHMsIGhhbmRsZWQgc2VwYXJhdGVseSBmb3IgcHJvcGVydGllcyBpbiBwcm9wZXJ0eVVwZGF0ZVxuICAgICAgICAgICAgICAgICAgICB3ZWJDaGFubmVsLmV4ZWMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogUVdlYkNoYW5uZWxNZXNzYWdlVHlwZXMuZGlzY29ubmVjdEZyb21TaWduYWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6IG9iamVjdC5fX2lkX18sXG4gICAgICAgICAgICAgICAgICAgICAgICBzaWduYWw6IHNpZ25hbEluZGV4XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VzIGFsbCBjYWxsYmFja3MgZm9yIHRoZSBnaXZlbiBzaWduYWxuYW1lLiBBbHNvIHdvcmtzIGZvciBwcm9wZXJ0eSBub3RpZnkgY2FsbGJhY2tzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGludm9rZVNpZ25hbENhbGxiYWNrcyhzaWduYWxOYW1lLCBzaWduYWxBcmdzKVxuICAgIHtcbiAgICAgICAgdmFyIGNvbm5lY3Rpb25zID0gb2JqZWN0Ll9fb2JqZWN0U2lnbmFsc19fW3NpZ25hbE5hbWVdO1xuICAgICAgICBpZiAoY29ubmVjdGlvbnMpIHtcbiAgICAgICAgICAgIGNvbm5lY3Rpb25zLmZvckVhY2goZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjay5hcHBseShjYWxsYmFjaywgc2lnbmFsQXJncyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucHJvcGVydHlVcGRhdGUgPSBmdW5jdGlvbihzaWduYWxzLCBwcm9wZXJ0eU1hcClcbiAgICB7XG4gICAgICAgIC8vIHVwZGF0ZSBwcm9wZXJ0eSBjYWNoZVxuICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eUluZGV4IGluIHByb3BlcnR5TWFwKSB7XG4gICAgICAgICAgICB2YXIgcHJvcGVydHlWYWx1ZSA9IHByb3BlcnR5TWFwW3Byb3BlcnR5SW5kZXhdO1xuICAgICAgICAgICAgb2JqZWN0Ll9fcHJvcGVydHlDYWNoZV9fW3Byb3BlcnR5SW5kZXhdID0gcHJvcGVydHlWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAodmFyIHNpZ25hbE5hbWUgaW4gc2lnbmFscykge1xuICAgICAgICAgICAgLy8gSW52b2tlIGFsbCBjYWxsYmFja3MsIGFzIHNpZ25hbEVtaXR0ZWQoKSBkb2VzIG5vdC4gVGhpcyBlbnN1cmVzIHRoZVxuICAgICAgICAgICAgLy8gcHJvcGVydHkgY2FjaGUgaXMgdXBkYXRlZCBiZWZvcmUgdGhlIGNhbGxiYWNrcyBhcmUgaW52b2tlZC5cbiAgICAgICAgICAgIGludm9rZVNpZ25hbENhbGxiYWNrcyhzaWduYWxOYW1lLCBzaWduYWxzW3NpZ25hbE5hbWVdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc2lnbmFsRW1pdHRlZCA9IGZ1bmN0aW9uKHNpZ25hbE5hbWUsIHNpZ25hbEFyZ3MpXG4gICAge1xuICAgICAgICBpbnZva2VTaWduYWxDYWxsYmFja3Moc2lnbmFsTmFtZSwgc2lnbmFsQXJncyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkTWV0aG9kKG1ldGhvZERhdGEpXG4gICAge1xuICAgICAgICB2YXIgbWV0aG9kTmFtZSA9IG1ldGhvZERhdGFbMF07XG4gICAgICAgIHZhciBtZXRob2RJZHggPSBtZXRob2REYXRhWzFdO1xuICAgICAgICBvYmplY3RbbWV0aG9kTmFtZV0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgICAgICB2YXIgY2FsbGJhY2s7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYXJndW1lbnRzW2ldID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgYXJncy5wdXNoKGFyZ3VtZW50c1tpXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHdlYkNoYW5uZWwuZXhlYyh7XG4gICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFFXZWJDaGFubmVsTWVzc2FnZVR5cGVzLmludm9rZU1ldGhvZCxcbiAgICAgICAgICAgICAgICBcIm9iamVjdFwiOiBvYmplY3QuX19pZF9fLFxuICAgICAgICAgICAgICAgIFwibWV0aG9kXCI6IG1ldGhvZElkeCxcbiAgICAgICAgICAgICAgICBcImFyZ3NcIjogYXJnc1xuICAgICAgICAgICAgfSwgZnVuY3Rpb24ocmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gb2JqZWN0LnVud3JhcFFPYmplY3QocmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIChjYWxsYmFjaykocmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJpbmRHZXR0ZXJTZXR0ZXIocHJvcGVydHlJbmZvKVxuICAgIHtcbiAgICAgICAgdmFyIHByb3BlcnR5SW5kZXggPSBwcm9wZXJ0eUluZm9bMF07XG4gICAgICAgIHZhciBwcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eUluZm9bMV07XG4gICAgICAgIHZhciBub3RpZnlTaWduYWxEYXRhID0gcHJvcGVydHlJbmZvWzJdO1xuICAgICAgICAvLyBpbml0aWFsaXplIHByb3BlcnR5IGNhY2hlIHdpdGggY3VycmVudCB2YWx1ZVxuICAgICAgICAvLyBOT1RFOiBpZiB0aGlzIGlzIGFuIG9iamVjdCwgaXQgaXMgbm90IGRpcmVjdGx5IHVud3JhcHBlZCBhcyBpdCBtaWdodFxuICAgICAgICAvLyByZWZlcmVuY2Ugb3RoZXIgUU9iamVjdCB0aGF0IHdlIGRvIG5vdCBrbm93IHlldFxuICAgICAgICBvYmplY3QuX19wcm9wZXJ0eUNhY2hlX19bcHJvcGVydHlJbmRleF0gPSBwcm9wZXJ0eUluZm9bM107XG5cbiAgICAgICAgaWYgKG5vdGlmeVNpZ25hbERhdGEpIHtcbiAgICAgICAgICAgIGlmIChub3RpZnlTaWduYWxEYXRhWzBdID09PSAxKSB7XG4gICAgICAgICAgICAgICAgLy8gc2lnbmFsIG5hbWUgaXMgb3B0aW1pemVkIGF3YXksIHJlY29uc3RydWN0IHRoZSBhY3R1YWwgbmFtZVxuICAgICAgICAgICAgICAgIG5vdGlmeVNpZ25hbERhdGFbMF0gPSBwcm9wZXJ0eU5hbWUgKyBcIkNoYW5nZWRcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFkZFNpZ25hbChub3RpZnlTaWduYWxEYXRhLCB0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIHByb3BlcnR5TmFtZSwge1xuICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIHByb3BlcnR5VmFsdWUgPSBvYmplY3QuX19wcm9wZXJ0eUNhY2hlX19bcHJvcGVydHlJbmRleF07XG4gICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIHNob3VsZG4ndCBoYXBwZW5cbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiVW5kZWZpbmVkIHZhbHVlIGluIHByb3BlcnR5IGNhY2hlIGZvciBwcm9wZXJ0eSBcXFwiXCIgKyBwcm9wZXJ0eU5hbWUgKyBcIlxcXCIgaW4gb2JqZWN0IFwiICsgb2JqZWN0Ll9faWRfXyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3BlcnR5VmFsdWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0OiBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIlByb3BlcnR5IHNldHRlciBmb3IgXCIgKyBwcm9wZXJ0eU5hbWUgKyBcIiBjYWxsZWQgd2l0aCB1bmRlZmluZWQgdmFsdWUhXCIpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9iamVjdC5fX3Byb3BlcnR5Q2FjaGVfX1twcm9wZXJ0eUluZGV4XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIHdlYkNoYW5uZWwuZXhlYyh7XG4gICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBRV2ViQ2hhbm5lbE1lc3NhZ2VUeXBlcy5zZXRQcm9wZXJ0eSxcbiAgICAgICAgICAgICAgICAgICAgXCJvYmplY3RcIjogb2JqZWN0Ll9faWRfXyxcbiAgICAgICAgICAgICAgICAgICAgXCJwcm9wZXJ0eVwiOiBwcm9wZXJ0eUluZGV4LFxuICAgICAgICAgICAgICAgICAgICBcInZhbHVlXCI6IHZhbHVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgZGF0YS5tZXRob2RzLmZvckVhY2goYWRkTWV0aG9kKTtcblxuICAgIGRhdGEucHJvcGVydGllcy5mb3JFYWNoKGJpbmRHZXR0ZXJTZXR0ZXIpO1xuXG4gICAgZGF0YS5zaWduYWxzLmZvckVhY2goZnVuY3Rpb24oc2lnbmFsKSB7IGFkZFNpZ25hbChzaWduYWwsIGZhbHNlKTsgfSk7XG5cbiAgICBmb3IgKHZhciBuYW1lIGluIGRhdGEuZW51bXMpIHtcbiAgICAgICAgb2JqZWN0W25hbWVdID0gZGF0YS5lbnVtc1tuYW1lXTtcbiAgICB9XG59XG5cbi8vcmVxdWlyZWQgZm9yIHVzZSB3aXRoIG5vZGVqc1xuaWYgKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgICAgIFFXZWJDaGFubmVsOiBRV2ViQ2hhbm5lbFxuICAgIH07XG59XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4uL34vcXdlYmNoYW5uZWwvcXdlYmNoYW5uZWwuanNcbiAqKiBtb2R1bGUgaWQgPSA5M1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file