anyray-connect 0.11.81 → 0.11.83

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/dist/assets/vscodeExtensionAsset.js +5 -5
  2. package/dist/assets/vscodeExtensionAsset.js.map +1 -1
  3. package/dist/cli.js +115 -4
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/deviceUrl.js +35 -0
  6. package/dist/commands/deviceUrl.js.map +1 -0
  7. package/dist/commands/doctor.js +110 -18
  8. package/dist/commands/doctor.js.map +1 -1
  9. package/dist/commands/persistence.js +106 -0
  10. package/dist/commands/persistence.js.map +1 -0
  11. package/dist/commands/refreshProxy.js +82 -13
  12. package/dist/commands/refreshProxy.js.map +1 -1
  13. package/dist/commands/sync.js +8 -2
  14. package/dist/commands/sync.js.map +1 -1
  15. package/dist/tools/claudeCode.js +9 -0
  16. package/dist/tools/claudeCode.js.map +1 -1
  17. package/dist/tools/cursor.js +11 -0
  18. package/dist/tools/cursor.js.map +1 -1
  19. package/dist/tools/shellEnv.js +51 -21
  20. package/dist/tools/shellEnv.js.map +1 -1
  21. package/dist/types.js.map +1 -1
  22. package/dist/util/connectHealthReport.js +20 -10
  23. package/dist/util/connectHealthReport.js.map +1 -1
  24. package/dist/util/devRefresh.js +113 -14
  25. package/dist/util/devRefresh.js.map +1 -1
  26. package/dist/util/devVerify.js +8 -1
  27. package/dist/util/devVerify.js.map +1 -1
  28. package/dist/util/deviceToken.js +207 -0
  29. package/dist/util/deviceToken.js.map +1 -0
  30. package/dist/util/driftWatcher.js +255 -0
  31. package/dist/util/driftWatcher.js.map +1 -0
  32. package/dist/util/persist.js +44 -22
  33. package/dist/util/persist.js.map +1 -1
  34. package/dist/util/policySync.js +142 -17
  35. package/dist/util/policySync.js.map +1 -1
  36. package/dist/util/proxyEnrollmentGate.js +28 -0
  37. package/dist/util/proxyEnrollmentGate.js.map +1 -1
  38. package/dist/util/selfUpdate.js +10 -1
  39. package/dist/util/selfUpdate.js.map +1 -1
  40. package/dist/util/trayPersistence.js +142 -0
  41. package/dist/util/trayPersistence.js.map +1 -0
  42. package/dist/version.js +1 -1
  43. package/package.json +1 -1
@@ -4,9 +4,9 @@
4
4
  * source so both npm/npx runtimes and Bun's single-file executable carry the
5
5
  * same installable extension without a Marketplace dependency.
6
6
  */
7
- export const BUNDLED_VSCODE_EXTENSION_VERSION = "0.1.20";
8
- export const BUNDLED_VSCODE_EXTENSION_SOURCE_SHA256 = "6c97a1c6531fa2a8899f44636fd890ebbc512db9d018fc2434caed9eed4758ed";
9
- export const BUNDLED_VSCODE_EXTENSION_DIST_SHA256 = "3afdc1b61f2b8f37d9fe21f7e6d125e10925e1f5d86d5a83f8610557cde3836d";
10
- export const BUNDLED_VSCODE_EXTENSION_SHA256 = "c08720e9fd074e2ffb261cba8b55648fd2393cdf8380bc80aa571cc0326859f0";
11
- export const BUNDLED_VSCODE_EXTENSION_BASE64 = "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";
7
+ export const BUNDLED_VSCODE_EXTENSION_VERSION = "0.1.21";
8
+ export const BUNDLED_VSCODE_EXTENSION_SOURCE_SHA256 = "1be676148ad4915255cb7a77d1ba8e7b7997b1607a1916838acef4cc2e2f2c65";
9
+ export const BUNDLED_VSCODE_EXTENSION_DIST_SHA256 = "edfbcd668a936e5bb23ab7e54a674adee124d908f4b89c9c02476e1b1209f305";
10
+ export const BUNDLED_VSCODE_EXTENSION_SHA256 = "c1af35e8c2b73e2d8ee3a00763d4fd5234bc3a3d06c753651c1fb9040ecf5a22";
11
+ export const BUNDLED_VSCODE_EXTENSION_BASE64 = "UEsDBBQAAAgIAFe//Vzs2NkrBwMAALQJAAAWAAAAZXh0ZW5zaW9uLnZzaXhtYW5pZmVzdL1WTW8bNxA927+CYIGcoqXlU+GsNhAUOxEqBQrk+hhgRI5WE1MkweHKUn99sbv6spKmlV3ktsuZeY/zwUfm79dLK1YYmbzryW52JQU67Q25sierNO/8Lt8Xlxf5BPQjlDgGR3PkJB52IdfZVR20XlrHPblIKdwoxXqBS+BsSTp69vOUab9UBldofcCoVrzutD7q+qrb3YbfmBcAdAwyla7FKS4vLvIxJjCQoP65yIcGXaK0ESNwZQUl9iS6zp9TKYamJ8FtImw6K9beoDxkdZV1s+uuFJNqZokXGHeuUqgW9wNxsLD5DEss+o1JzH0UD1Mx8AZzdWxvA5B1pJDIuzrdGw6gsSdDRMa4Qln0jRG4DpY0JbGFLCHhE2zE0hu0LHzcGjpPEUJAIwY+kPVJcDU7wG+90yL6qlzs9vQGgud3LPx8TprACrutSKfxFyH6FRmMoj8ZZrk62m+bwD2UXDyP4Vw1q419AAlLHwm56A/fjkEvyKEYIURHrszVkb3x/wjWYtzc2RqhKbTO1bPF2q1xncS662kXul/YNE0c74fkgbgCO02VIZ/VOWe3riRXdxZshT35tZt1r5spV2cjrRO6ejo+YEBn0GlC3gO/BrA+W/8L0B/kzB7oycfHZsbeVvQC0JHXYOkvNLtz87pcHcwsmn6gOsQz2B/AnZ026iohD9qj24KlWOELAKcYV6SRsxG5R86mvor6AFqLEt8oVVJaVLNGilo1+PRFLb3zEYPPSkrnFeaE8yMmThATml/MS+lTNfu1nNMqBB/TWaSKmKt6Cl/B24jRWay/RQSzPBmpF/C3Vb6zsPIRzRjio/FP7sdjex7ywLuELmWTSJpcuYe8i4hSFZfPt52rEy3NR6TRMRa4UxE1Gg5uP09vs7ROudqZt1qcq+PrNR86TmAtHG6J45V7iCWmfzvIskk7V6dY+bHQtj59ZkzbfTff4n4T8OcysXuySDGBtOjJQ56hfdNk39g7KfrGRGSudep5P/4L03fd2Jbte9Kj4v4zZ672mebq5OlV/A1QSwMEFAAACAgAV7/9XN+jDd+8AAAAZQEAABMAAABbQ29udGVudF9UeXBlc10ueG1sfdAxbsMwDAXQPacQuMd0OxRBYTtD2hv0AoRCO0olSjAZQ7194WQL6s7873+A3bGm6BaeNWTp4aVpwbH4fA4y9XCzcX+A47Drvn4Kq6spivZwMSvviOovnEibXFhqimOeE5k2eZ6wkP+mifG1bd/QZzEW29vaAUP3wSPdornPaiyP3eaq4E6P3DrVA5USgycLWfBKC6mfQzHALZ7lv4L1vEGt2pM0roYlUtg0i4aaSMLI+ieuKa4U718bdr9QSwMEFAAICAgAlbv9XAAAAAAAAAAAAAAAABYAAABleHRlbnNpb24vcGFja2FnZS5qc29udVTbbtQwEH3frxjlBQkaZ3eLuOwTVSmigqKicnmgRfLa02Ro1rbsybarqv+O7DjJFpWnJHPOzJy55X4GUBi5wWIFhTQ7L3flNiirsTiIkKbgWrn7khlHiQHX1sOPCzieaBiUJ8dkTaJpDXjnWlLEkH1qyXgrd7CxGtsA1megvPXSOdRwbB21liF06zHYwObG265uhqTPAtjra1IkW2ilqTtZY5mo4LzdkkYPR+enohe3RR+ysLlYiOWiNztPW8mxLPYd9qZu3VJo0E/d6LktKTQhteDs9Ftv8+hsILZ+V6zgfgYAUPDOJVJNnEgARefbbHnRMLuwqqqauOnWQtlN1Sf5+LXaWGNjRLHnqsmjygmKfiol3jGaVM4M4CEJQVOTwTCpyANcQfF7IRbLhZhPZCUZa+sp8X/1/KPTIeOZVA0ZhM8ovSFTR7+r5LeRlDooKk2Bq1GG+BP6doyWT2T0FPvW+pvgpMKxHzQFVdLJNbXEtC+/M+y7wKh/Dr4TCFCEzjnrGXWeXLI/jAVKxXGuZM3JFg3vlWnNBUvPnftAJk5ZD5Ks+e73VVnDntYd74sa1uwsbtlxI/k8L9qUAEaNaemMtv/uUcaePKoi4w/peTXW09/CnpJ1R22svTBWI2BI32KT5xC3WKobWeNqG+gubw5CNkJZGltqdGg0GkUYoCxtx/Do9kVyzeFuJavmqXxQlj12MC2/alDdRDIHlXKdbKZ9Zgw8BipL2sQ5Aoc7KMuIwWURvKria/VcxIfgcFkM7r22lfOY7/Q/opy3ulP86EY0bt/vFT11811UHSqTD2b5SizEYsiYweme4jnNxXzEeyQSEnwo3orlAGZR/W9n+WaKyiGN5aVYHu4ZY6Y06oi9FnOxTOpnD7O/UEsHCCvTOk2aAgAApAUAAFBLAwQUAAgICABzcv1cAAAAAAAAAAAAAAAAFQAAAGV4dGVuc2lvbi9MSUNFTlNFLnR4dF1RQW7bMBC88xWDnFJASIsceuiNkWiLqEwaFB3XR1qiIxYyaYh0A/++oOwkTU8Ed3dmdmZXXKNxnfXRElKG02VyL0PCffcFj98ev4P6y2QuhKztdHQxuuDhIgY72f0FL5PxyfYFDpO1CAd0g5lebIEUYPwFJzvF4BH2yTjv/AsMunC6kHBAGlxEDIf0aiYL43uYGEPnTLI9+tCdj9Ynk7LewY024j4NFnftDXH3ZRbprRmJ88i9txZeXRrCOWGyMU2uyxwFnO/Gc593eGuP7uhuChk++44kBZyjLeY9CxxD7w75tbOt03k/ujgU6F2m3p+TLRBzcQ6wyD6+hgnRjiPpwsnZiNnrx3bzTF79lANNt4hirrwO4fjZiYvkcJ68i4OdMX1ADLPib9ulXMnjhzCO4TVb64LvXXYUfxCiBwuzD3/s7OV6Vh+S665xzwc4fVz11oqDGUfs7S0w28N5mH/sTFk+JuOTMyNOYZr1/rf5QIiuGVq50FuqGHiLtZLPvGIV7mgL3t4V2HJdy43GlipFhd5BLkDFDj+5qAqwX2vF2hZSEb5aN5xVBbgom03FxRJPGw0hNRq+4ppV0BJZ8EbFWZvJVkyVNRWaPvGG611BFlyLzLmQChRrqjQvNw1VWG/UWrYMVFQQUnCxUFws2YoJ/QAuICTYMxMabU2bJksRutG1VHk/lHK9U3xZa9SyqZhq8cTQcPrUsKuU2KFsKF8VqOiKLtmMkrpmiuSx63bY1iyXsh4VoKXmUmQbpRRa0VIX0FLpd+iWt6wAVbzNgSyUXBUkxykXeYSLjBPsypKjxqeLSDX/Ny17J0TFaMPFss3gbPFt+IH8BVBLBwiyhnqNeQIAACcEAABQSwMEFAAICAgAV7/9XAAAAAAAAAAAAAAAABsAAABleHRlbnNpb24vZGlzdC9leHRlbnNpb24uanPlfdt227a26Pv6CorHQ5vYgWk7SbO6qMI6ruO0aXNbsZNeFC2bJiEJNQWqJGRblfgt++3s/9pfcsbEjSBFOelae+zzcEZHYwoEgYkJYN4w54S/LKlXioIlwh/cxoX3QZC317/RRIRJQWNBZeEvpiylE8bpuyJf0EKs5Lvn9oMpFW/vuHn5nJZJwRYiL2S1P3ZUexPPaSlrfOfWeFfkIherBX07wb/bFwtTGs7i0mlEfv+9IAHFApHj9SQvAijiHuOeQL8EFHO8nlIRiREfY8qXc1rE1xmNeocVqvAZlZ9ijnP4nE0C0e9DP/nEE4T4ueze32ycssmSJ4Ll3EfQW0aFV3j5xPtDBAKh3u8iTOIsCyguUL9f9Ajh/T7AUSg4AkSOxahowhLk5LkIBC4Q2mzysH5VoUFBxbLgHq3kWM8NwIgcB5zQHuHLLBt+EMF3IqAIRWsYVCA2mx6F/8PLS1q+ztNlRoe/BBz7KZ3Ey0z4eH0bZ0sa0TZSIo4pQvg3QSg5PqPBL8G6wn7djP0SKmOKJFi/crKuBt+L4FeO13Ei2G0sqBzrjxyntFHyM6/QYC7bCun9Ii9ESX6DL1VTr8k5DQr6+5IVNPBvyyRPqY8QfieILeV5SqOkWC1E7iP8pv1mUh4sinzOSlr6qtEXxI/5qohX4TQW9C5eneZ8wqbh7ZGPf2y/+5Gu1JZ4IQind945FcHIX5a08LEvaDz3sc+4oFzYh1fxNc187Je0LGFpjBH+KBFICSF+lidxNstLWEiyYBRFR2N/szn4x9HjvwbD6FP4KV0f4ScVWj+p9g5CQUuYTfwzNCFXpVp+tEd82LN86iO1Lnx/IIrVGlahAvbD+1cBDUXB5gGyi0dvoCTPeoT4MyEWkd/vb5eWESx1W0ycyr2PIhAhDILHc4qgGmAEfshP4rK8y4tUPYsZlEOrB7LBksZFMoOnWVzOhr4fiTAv2JTxKolFMlubwVQV/hXGDIvXGbPdhicFzBMr5d+AouG6ijSJmBT5/IyLgtEy0EVU/6QonLBM0CIIRgLzMSLHLyQogUB2u3Nicdvv8zCjfCpmx4f18zfk8VfP+v3ewejT8vDw8HAf/hxN4N+/TsZ60jhC4Txe1B2pvwi/pTAuMya3r4N/xMXN5ehk/9d4/4/D/b9d7o/Xjw/xV0ePnaUwpNFtzlLvEN/sbIg6QNMa6MPDzwHtNv/RLLleG9d6xY3GA7XaRmPMzf4YGFKYAymkYZmxhAaH+NlThGRjuZ3PfPd85gglOReML6nsoyA5ZuSGBkXIUoRL9SjX36DHNpteudlwOY8MbTYBD+M0DRjCIlwsy1mwZmnEMFSPygqhymyGCr+vyT4uyAjmSW4hRn6GbVeStzQQaACA625yWMxJvmBZLvZLGgu/35dlmmbsxwvmIzEr8jsPcHJWFHkR+IzfxhlLPV3LSyTZWRaxYiBylCn5GBSys5y0Guz3Uz2PhJDDzzc/z1OabXWix/3D+ds3oVosbLIK1re0AFoVHWH9+YciixiuiWBU4jkVcRqLOPo14AhD81FuaryGzsooBT76Ti5KTYbWlaVJGZG9LuKipAEdDn0Ys91yWc1h+/3WestQv5+FGkZCyFG/HwiSIU0wKmidk58DEdbQI5zLmXMIOcIF+TUQoRkIwoyIEAbSxjVQJ1PemOihKjcbpCRsOGzWwDCFtleFF4P2tYNc7iI3r5FbKMyWbcxiVp7quaRp5NIkWHoKnn6fOc9BuQX+ZpPaD1GlpIifSJLFZblOcl6KYpmIvAgEWosZK8OCxikRFfwZLChPGZ8OplQEch/LGroUmf3klGnSYBsKUCjnK+DkeK2Wr1udECJgXt0iNRSEeS37NN4LLCq97mNBAw1182s9zOcPyQX4DW0LFDOWpZeLIk9oCRVetd4DX/MR/sGKm3KtpHFxx7g/9A9esesiLlYHJ4tFxhK5+7zz5QIknIMTKWEcXOe5KEURL8Lfypz7kWzhjvEnj/3hq1A+hL/ljAcifFfk0yKeP49FPBz6p9GnT06Jj33Voo/9VpsoCg7xK9kKCvwDKhIfawGnozL+Vvw5dvLV0eN+fxSGIR2H9JYWq0Dojc+JCJNZXJzmKT0RwaGdPn5Mnjzu93mPkKPHf61Qvx9IEFl5cl3m2VJQFIBEYRBQlwPXwb8IcvAPzR7HNRq8FyyjZeB9Cu6/fvYJoeGnTwcM/2gnRzio/UUYRhf1DvHPgsTliieKBZDnYSliYcT/+iu9vnuHlprlJL6LmfB4QO3g8nDJUqDO/X6QS0LRP/oaQUFDtOkdgWjjdEyeyw0Cg4CuTRdcdyECiv2lmHztS85gZJRa/gPOp+fn6eHfnmlg14uClpSLqHdUDRTIDgHmlsuA0vBlHBn0kVuYubp6WJb5liC61XNB8vCa8UH79SG+Zjz6VgQFGhaR2a8urtymqgr/ZKdULrvhiI6j0RiHYehO8WgcjfQy309yzmE04zH+e+Pjn4T8ISU0To6D9YRlNOI4Lqblu4JO2D20LNic5kvxuoxiXiHU1ZP60OeLe7/xsb+/v6Kl3XAGkv+dxbD+fLftl7QagxZY63PA2N8p+hTk5HgdHOI3oCLRRK4SWW+tG4g4nsf33y4nE1pEz57++9Hh46f4jvE0vyu/Z6nUznBQYGZEm5IUet6Hh5GeySJMJMPz+XJ+TQt/qAqGw6MIKg7yYE3vmThVzKkUKXTMhqHIz+XcBwg4eoXgPyy4IwIYDSQsFxkTwdVfrlC4yBfqg0G92J3FqeQt3l6cvF6ceqXpdc3ltl2WckmDJMbzfGGkMsqLPMtoan5fZ3lyQ9NGEwVhFjd8xMaW26iOy5oWDkuzTs1qVl1HOV4WWVQE/rLIfIQBefBLqax4TssynsoS/eij5kqvKsy5FbjpZmNp7ldHjw39OZL4MrTUqHhoS0srI3+b5OR8t9pRqxz74/VTfPTMVT0LTp7Rp7jk5Ojw3+EpVgUvKTn6mj7FGSeP6VOccnL0WL5/BTI1WVfIWQSLLBaTvJgPh5qr2hLMCQ0pv63fUH6Lc0ItVRwOawqJC0LldEMh/MUMai75cEg5LgkNeS7YZDUcBorAInLcO0I4JTTMF5Sf3QtQVTP3/bpCOJNf3g2Hz2Mhn3AMHWWULobDYN7ckpfkuKTiQu2/4BLPEUI4IW/k3gnfnH13cvHy49nlyzcvXr55efELXuHZ7pe3pHeE7xU78ObacgVouwQF6u8imGOBkETkqWYJLLgENZZioGSXYU12wDqj6Y0yl+yDHOmP8WVoyY2Rw/TIpWpzutmchmaD90DBaGhfZ0Tw4DRU215+cWZofZLP5zFPo0t8S4uUJSI6A0q9dMZjYJ7XMM8bMO/vizzPgFZqcdXHmnqO8UvagrfCE6dtAP4WrW+Jw5svSRagRymXmuggC9A3lwPEJoGCIw4yjnDwWaAWBeNi/4au/DE++oo+aYGBhhZfUiHTo1wGcyMPVNWE8TjLVgAdsC9DMRT0E5AmkeT2bBJkAdpPvim4oUoJjEHifk5+AHsgR/hSz/6vsCRyNXGXoeaQLjk7JZfAbx1l4EcRyCIMVg7Vys9yYeEC4TPd7n1wOpS1NIlTPZw5LdvZ/s3O9nVFzqDetabBxCW5NVZ+s1hx6rrkeLPpcR5ch8siQ5tNL4dnWMDG1iBh0WU9QlagEwZof/ZNydF64rS/IqoSngEKMbzCCooyuFKScuSVbKrswrlHOdg7a7V8FgulPJfep+Xjw6On3ipfFh406bHS21ur5qsr7L9dUC6b2mfct4hN9SiMelppFYS2lYwcNIu/d2sWbx/UV/7Y0le0AVR2tLfrLX7zYKsfOgFMJNugQy0gEP/szduzNxc+fk4bsnNwiD/UZB4FSIvRsAyNGK2WAwgzYUGl8UYKYWbqFDe/2luLKtRULM/S/b21ZRksrfb3QBrao2ER8zSff/jw8jkKUHWFC6L5ozLf1F1lUqi3VpyQlcBIAtTvyx/nq/l1nrHkFeM3Adq2rBR0siwZn8JiKegiixPqxR7P+T5QDi+lpWDcGFi2ByhwDpaHnlYCAqasYAkPmOmMVQB2N24aXxWou2JuK67b4F9NYpbRFIBfLK8zVs48CXbMU6+gpcgL6okZ9RYFvWX5snTHM/AKmuSg2XlJvlh5BZ3HjJdeLLy9dV5docrAX+jFr6CaA0TAxhJ9uCKX5ZITbcPfn8HUTSaljyd1YUETyhai9PF3lDzGC05cuQRMoUfP8NHjr6u9AzzljjleylhY/tlnvGQpLYCXyGbZcg4W+N8pNHa4/zetO9aP4aP98foQPwNjO/5eVov3J4f7fxuvnz2Fsjm3R0paMvsSa/RuA13DJOdpTGj7HydUSr7G2NUj5DsK6h3PeQJkT9TCcHgbFyzmwtUDe1NlA7Uv/wk42CQIOJzG0ETQFMQlDqB8tBAp5gBQbVV6zkpxPosff/XM1gMV34K8u1VnDL9TbT/fWR05WHgQBqfV73e3Wn+B/jl88TCWx4BAHYEbW/3EM+rFzwFvGCcZ4d0WRkBrl0lyyFuWx491i8bK6ECiTNTaXgjDLzYbsF+zbbNy6ZiVHbwmGaNc/EhXDSx+wQGF8+k/gU0tIoVhyF1btDaLspZZtKwq/FuDDeEcGBGl4Syf05QVNR/qLbjRaL4ULLnr1BQ7q/LWLkJnUaXOGtrZOjUrzrtesiz1WEq5YGKld38BoP9dm+ty7IfGVLfk+GpvTStpqLtCmFk2F1s299awOXV+EG8xts2mF1vWt9nEYcn+oMdHz558/XQb4iUv4wl9kEZILDvsvmbzYNSLlf3r2RMor9eVYeRTKqStrD5B7/djMJ/1CGnWCbr25OfAI3MeOPaEGkfWzhYUxqYGB9dWUq9rLnnG+A2gs6V+KCvBjpma8FoEeBvOb+QKLPG6oMmyKNkt8EO1lJ8+/boyhz5OYyXMNDPk2854plWeWGvUCUhJaRVKWeiPtiwUivniauCKCm/Du4IJqoaeQB+7joC+o1gu+4hiRUqiGNMW/Y3sJqhf1UQ0cncDWMxi0qBG/T5z6KVb7h6QMIde6s0vl1RVoeovV3gti558/bQy0v1zGiQ47ZpKWJ6JK4+0ZtQoZt4uuNjn2WG/HzxYy2Jss+mo1+CbDWIy1IpqBnJolsfpvhbRUx/h7aIo6B7DUJuSQ1sUNBDMaqKNfw2Ye0YmsY4/1vU1u0GRaVOyvMDMQ2ZBgI/1k5IAF93+HMo3CLQMbSMBKsWZtPn3+/T4cPg6FrOwyJc8Bbv9IRa069SKGNONPgji+R0RA/lYirgQND3R51E8vwtQxfO7gX0xyBeCzdkf9Hyr5HnO6YkYAOC0FOeUixMxmLCiFO/iAp6z2D4uYvBhORwUVHmzHDbbNWdUW525cJmXZzzdWd9deI0aClinOTjstoAH9mTPGYvb98IBUo7lETlyT/JkLYVTBwOkDY37TiAsy2osyTNFwE8NjsTWI3IE25eVMziCVALxWkIR1QBhXTlyv8RJvuTiNM6yMvojUH5XJTKlyYx+z4R5o38hLHIRZ69lsR3afnO5oKpx8PjQNHTMgjtJ3L57XZI/uuZsv7sLpNHXmLJ2vw6+m53aF3WvTt397ZZNd90ttiay2VcpChrP647qevvtJhEc6lb4BSX+/X7TYCm9f/Cqqf2FlwcRKIBG//tIrVKmlsnoSs4m2VvTUM9rdVXb8R1AV1oMBEsYV94hV9LeQ8DucIUwdZHmfGgq27eyM6eu+thgoeNL9Up+Zmqpb+ql0fGVeSm/q2vCl6aKojrwXj65rwwhgpf62X1d7xtZo/65VQn2jFtHbyNVTx5U+9hHFf7B9f8Y2SnYMUjxmUHOywdmRHx2RvTnHXMiHpgT+ZXYjVvxMG6Fi7YtvB504FASpdT5dHsxS5iuwDoZeRKhe2uh0e75qLpSHPZbSvyD26MDK5aVB2pbHRic+njGVR1o6yDJ54uMAo8uffxze1fZqZAS9tAcs9kp1ZSDSMOEKwxJBTQG5wea+hW+4+Toq8NDfMvJU/oMn3DyNX2GX3NlbbHmHawsLqec7PBRw3fSI7BHrd8QfcBviCL8q1qMtV+k64NkD+7vAoGGwhzstU7l9iROwOEP/RnnCNHv906txokv6rO9oHcnfRxoCK31XCVos4F3ofmNwEQZ9PYCCk5vm418Mi9D43ypQapfxMV0OadclA3V/VcadNVBxsAOLnLQD4YGoxombJ6itfSfa0GAbUtRV/NwFnRZj12NvGddaOOyZKWIpfssnAH545DxJFumtAz0wTINizyjFsyBOVCE0oFx06jbqVcGyLrgkNtrzJUtNGfLvS/+HKZMO7OadS5nxEwEACIHocvh+RIkkUs5e7In/b750jGqbYHj1KzJl4sLfTLSWa/f3/LddKqpNWh/mmX8+Ktn4EFJGu/ATeKCW+fZb/M8ozEH0q++6hHS0RaqVxdMVySwRmpk0StdKgzKAZPu1jIrDv5UUJP3++u6l4hXjc9dnDaacV9EzXqwQO//xc3Z3pJOSaojIJq64vaebdRzF5ytsYiLeE4FLdzpbUDkVKnx/id3s4vOLuAaaHXKo+7qcn52wdjvr+tfUWcdODzD100LvJkgKbSBTVw9bTZbS127WqiFbn40zJ1bxcdH9GljdxGnCmyCy+1NoAyvzj5otdlyVqF33ut4gQtzgoEZiEnm0H8Jh/6iBt16A0zgxdLZY8PhaCxPhXJp858AjzBd5SGo5FCE1TxPdlLtSRfVBtVdCzFxlkV7a2gKDnzYJFhK0usQu2WT0smDKglS64UBrpDO2a2XtsOClstMRHvrZgXoXNveDN5S+5RtYZB/FnHqbD0HM6PCHUxjWaNys5kPDblvYW+zmbtMlnSh0Ay2lIOVLeLsS3GqoJuQJgokoVeYnQAXLe1jqp9Mp6nqtO7RInVi8RhvIQzMxkNpFpbPCibLtKT9OKUZFXTXxCqbsvaAjA2vGhhXkq6B6i/rYpf3NSZNbybZsjn7W7ZZ1IQcq32g7LQJOWyOMlPLYpB8w2x7bJSMe4QsBygBYwebBAkhhLU2byKNE25bJaoXOvCCVD+6230FzSmG43DvrpgKVceyZIcePdlsghUxxTDK+w5GvGoz4poHO/AsLeoCoWrJzSBbnZPjeYuVITyxYR1sEqzCMp/TIFhbJjIHH6/eUo58btjfxP057B1GwUSuR12Ce0eWPclZmhFpzc0iTcmNt1wZcWAfK83Ay2il2L1W1Bw2uFYlkXlVVfiWUHxPRusbuop8QecLWsQCTKF4znh0CC6T0eMK6/f54nLhvjkyb+bx/aXIbyioR86H9G8Yor2mtJDelXXdWp/64s+UA09CLxeUx5lYqS/2HzdBnEhdiyerHdUs/ZPVl/LlRL6b2z4vq3zi3RtXstvRcozPiBgtxzC5p6Ren1oEOKv9Qfv9YDZajslZczvriqc9W3Gz6bWtuKdoszn9ZrLZnB7PN5vLfr+u8VJBJqsES9j/DsI3G1uyjVbnXPnM7f30+MyueAnxqQn2mVX4J6kOBmtfC5/70IIfKU1VuekfSGd4HC/FLC+04htdfUvjghYeKOR13Aa4AFnrlbGY+1H7ZAU8la1BHcNKjqyfm3SX/btzgunq3jMagyuD5FAWYrWp9bmz1mLAg/NT+siewKJ+X2E44OhY6OMzZZ2n4XWeroZhEvOEZkHrKAQ7Z2zKVcr6RSkk0tSLuZfLs4w/aCoDicCNZJHz0pyUqi7MCXj7GA7EdHovICJRyUOqOgzyvRxvgLRodEHvxXMKxosCMwJn3j6E12gnH0nGB0iHFqmmcx1oAmBkYZpzitblI1KEqWwmAC/Q3uHguqDxDaxe9ohkoYxgDa9Xgr6SqMXMouxfxYbbt+4IG1Il/WK2cVTWB1jpZmOGtWO2YLwZjUv6Kk9uAlRV+LuWi6/dvVs7Th2tEH22Mmc8oPgx/RsyHgZnDWfkL3J5aSromJNmDYgcT5g0SqGh88OwsgIsO4VVjooHLDtFHatZhDeMN7S919rqot4g5EYgSkZXAAmAd5GqAkzlu6AIwfFpHguaXkgScx7f0hS5XKarQrTzy6pCFpu5465kzGLYL2/YYiGfUlaCFyI8aj9dH/sUlp4/dp0iTOx5wy73Mt3lzH3p2My11bv1JShhzZKoXcXVsYX18qw7VOqHeYMkN5Yu8aaoUggWIYQ+8GT1umxg1ZZGzTpW4bcrRev7UO2fnasdX4KaSZuxQBMqkhkEhbqBE2tt8YxEpWmdG5dnaF4xDO/igge+Mbp6eqYjS0B4Lqz7gjzLLbUvAKyTk+u8EKc5F9KNtsAZgR2fhvG1PDMb5EP1SNOhLYygME3PbiEEnZWCcloEvnzp4wyv5Zk+EJ2B8htx/NcbjeM7jqx7SWKjnK4c1vehyKq99bfgArueUzHL08h/9/b8wseaY0WwVH8CCytMF+v316MXdBwx0OXzdLXFIWukIgzutHEWpaF6wAV48dBERHo7KIf1YhgyPsnrcwMPAPAkVN7+sbe3Tsziu0K4l4T5jZkcheiVHtnfwWvgVunwvbtghZrVZuSaBytj565dVb3Z0EI9w+5+ic7gA7cEVVGpvTgTtG4tkXoAujlP+WtGMASPcVCFEinkwOiHiRShLS6uEC4tv0gyGhdmTmOE82FY0Hl+S3esCeAXnJJnT7GQ5m08ofLPQv6hT/A5J0f0Gf6Fksf0Gf69jk4CrkCV6FHnHuhMTeCEsWwz1asvYqogMHl7a15dOQkwMBdNcITpZkH3aa2F61II6NXvz/l+raUrjv/l3L4Fle3GRwOn00dE4HYfj4iBoMK52DpmURosCHo69ql2IJQKpHovPbYIp18OsMhzbx7zlYJXtuIbwQsM/r6vguJ937EI+X5VH/HongEycGTOK3zjRnf9Ks9RYPP8CaHJ+MNtIbEOy3/Lm/NrTg7aWnMyy1lCS9S0sdnycMJ4Cgz/TsoMkD2Ap/R+ODyUcZkKcmgcohvhD1g4RIwc7UIXGXt1k/M1XvX7PND2VhBxfaySo7RqVQj3WsMwNRzTPNKWvfYLs4z/9UXQ0fYkL85ikC81z1N4Lzoc8B7YuY3JhXb1giuJRT5ziEXZrToaMRUsIuU3h5tN+ecWfhcgnuzeplrIYUmX4Ft3FxS1WX9YP0MGnZj8LnNOYCGwL1t5+VwpOrGcojRkKeRmkKc48Z8AULL/jCVChRYYGGXr0ByJtQnr9yBTNtsJxT48qO4TsxQmdD+VFYzB559TXiQIunnV3iOSYC6CFAMEdpviBcW+s2kh9ABYyY/tw+NWPpARzsf5RIeLlyBrBJD7aMQg5Uaxz3R2kL0gV9ZX5ckuf/yL024mTCUFkS1i2Y+ycf3TjWtkCbvp8zzblysew78v0wj6UgRWdYYZXyxFdMOD3LEUS/S9/39F8LSxrUnydGE30Wu93En2WvU6CZ+p00H6tl/9dxK/jtZ3kT+JKIdC/DeRQ0l/GBqUsNm7iAwu1YHo707nbUoAG7TEjRqf3amFaHrM40IpOzbEpaHUmKO2z2e4aWHh5N1LGUgHUXNtdWfgxGh5RYd2MeO7tQulWXRpEsLqD/kOxaHHQBX4vCTqyuJeAC7ZWp1AV2b+1voMWp/nNeW96LDS3XVa8aTdEQ1rZwe5dQ4oSOr7ykLkI7R+zwOrpjB8whEuIRD0RxqUSjDD3I2r7DFlevvi9clza67y4EvLG9m2US7bMsrFYJBLIHp5RWaa7N+SmQ70P/hUDD/xA3tScU+O75VjZfkTE7PAl/lufJ0kS72VhpqvkMwYoP1lkXJygrQBgNBbSRxuZea052/fnI19tE7AqKex8Lbh+H+rEFZVtcmwl2ij4UyvvtQxGs6Uka7fn22ZBY9/+XPSR81Y1XR6cm615AB2R20XnLXtgjNpuAS3dkPu/rt6lvOjgqJviZoeNUcysUQQI42ZexJbm9mt4h8KbFuuSx/djg7HRurAq+Ae4QRZ66oaiP7dSyDAQ2WC6PdXQdxy1PfSXUbOtGXkbCx+5fVWUJO3L/LxO05GR/QJfkKf4CP6FD+hT8eYCWX4Z2l0tbcuaAUEB05fFXc2+//T/bd/lUZ+6XByhSfxnGUrcE2QD9gESVAb/zCP718CT1fGpIiGzQJ4/3Yp6gpHoFgDLxBsEfm/QGTxqToL0Bm77piYeRoc14rg45SKmGWR/x0T3y+v7Wfl8tq6W6gBGJNC6uXck4l5POVUm8SL+JplTDBaRvJMDVwSGZ9CVAqbx1MqQZfJVhB+w1sCnWMycqJ2YZ4apgeOKpx3Ouhrb++ULkoiKvgzUJ6PcHwfCzilE+RwoBbCe5rMaHIzUIEvao9qpVMHHpi2woyVYBazGQ5rD4+h8kQuoZMlBD6pwJFMe4+r3nEpYpPxMtAe0SqiwakEbibxImDiwSaOKlQly6JQrvau67iqV+mW19rNHPKgqF7s8OGQeUod1/htUEbjKmXlIi9ps6VK/Vnrug4Wh2HdhFNscmTV+LGZvRr1mqb9d3zkgjwebEcj6FePyFFXr0E9dXpNFcPhG47Unt8JpvGDl2UBqiAtRmWWhy58eIU4hiKVtKG1OgwXac7IjmVQt57zk9uYZWDBD0xetXhnjtKXnHxFn+BSOGaU4BDHJtvu93E5Q4FfygAgkPBIrgQzKTOrPD8hKz8yClI8WotwuZD5z2RCGMbF10a4vpZ1cS7Z2NvJpKRC/9CGL1d42Mq/WDfsj3w0aGS4zREPCnBXNjUwKEL219h3W87tYU1en+m4za9tACQkeWznkSwhUUOBmNTeSuSU5xNPp/e8oasSDBWdlUDnZFrnRMh2ux0EV6IqAnf2oBiVY3d0g8boqnp0bmNmjFW01XAOyY6WXGVOTsFuay1skEAMizBlUzie8WdgoKhwZk2EV5pTfTqUvu2SD+kfmgfJX05SYpOp6KrcW8s4h+oquprb5+oKs+7wqZdcb4h5fE9ENY/vBzptqnFaG8wg48mSA5Wes7I0z8pwaVK/QRP6Q9ek6foXyF5MA+B1o/HpUkzTlyUipk3thGS2oClWNkrwSa1AVi8tAV7PmAkXMm1i6JzqQgtIVZk2tC/oljkKon75N4dI5nv+M0ANmqVgyDWo1lJX3kScXNEo5PKsfKBsgVacGnR1nStJEvJKATs2fMDU0oXVFHYF+4O2+JMLmiZhr5Sh1xjqqHg5h5jqWFDXLXbovoDwvIaYcIgqXH5eGBgYZJzO4qKURFY9DofPnoLE5NJpIuzjcPiKK0HCZH30/YF5KX0FTEO2dCA94oSa4pqGsxJUG8jbreCaZFDNpfI6ZE24pM1NOPmI1HVBm3s7satB1zACPWmMttlhgwXZkWw2TUEG/BiaSHF4pzt+7LYNmW/1YzuDp8sVG8y+kdKzkV/T9zuQYwvm8Q01GNXrabaLJarU7S3XBXv2T7WXC04tUfxe5imWh9KEkMfD2gOc3jsO+8PeURTQMGOcfgvb5ls6yQv4oicDgOqwDRN285c6BEe1hXDvEEW2p6MhDWH19mQSWvv8uNNOx7K0oBwBEPVPnSiTk+NUBJCOCUW9o6h3hKfU+lt8ryx/30NogZMByZOJ+NpxVanQ1TDEsOiIIB/JrH0VTgTxR0teUJ6qvO6etkCMfbwUrls1dCpXRY1Wx08dcFGzFrT+15DqbKAatf1+oBBKZIZJ+/wY9fs7kVt7+XKVbdq+WSr02lxcGoJEQAIx8VlcJ2IL00sH07jGtFrbe5w8xh84OcLPOXmCZ3I2qZQVBTkWxr31OR+qSIgPXGmeQhn0TFiEsMbSSCB8J+E0ZpczLs0uAQqpfILEf47b0h+N9H5DxQyacUrKKm35MF6I5ifmff1N/a4ZmoGnn/20NWdDMzKEv2tBOmdzeiGjLRqZRmCpfDo4YDqGylZDQ1jbUYc0TEMZsz5sGaoCZIwtuoLcHPj3HWA0cQYf9LSXXa8GwrHcHfgI34pGuOq4fuz9r73+Py7rLEOfDr6oGiQjsh5YneFuRtWxe7QL/luxjb0rD55lcKEprK4i39fr/GpvvZVa34/hyY9M35UMlbXSmoagwh8Uo1eJTtJSGavWFf6NN2NCm5sWOdca8K2FC4qC3LpcyzcNB1RTv87db79v4CknU1q34KS+bRBX3VPu9OG8tuOt9z6eN/ZBa5cMG/FLcJp4R8nBf/3H//l0MIyLaBFBGqp4fwKZrar/+o//PJjiF1xWkG8D9zX6r//4z2D0qfx0Pv73IZJtyEqfjtSHH3lTnZz9/61ONpp3lcQcfYEiWBhFMB8Vf1IR1FGLWwogclU+c+GKXrzY7MPIIUNY2sfpUFIgc6BoKW21pTRak+3RM1ThE/F54tZJHEaxEHEyg5MMr0EixlcRiBKlymJOU0eSmDs30ejd9tFNjM1V6LRUhnJMEb76tHz817NncgFDJjn5868Q0awT7AV3FMP+UvUOWhWvKhzb02YxpK2vIop/aISM7WSKZvPHwBrUVChllbbJCu0mKxzICjVkxQxXC6zDmEoZJJrTgOKJsBXhIE7Xla9OZIgwSCaZlBu26O/VSE5FvAgyipxg+/FV1MkbhlfrvbW76qlZ9UYi2V7zAoHhIqMBHYkxqq7cfqqrqHtdQ4jI67Y7k0Pgc03glXVnNIZYtzAMcyMMjOEOBXNCNNUZGkWdlAzkyLKObGHbLg4fAn/O7rX/wr6Kc/JMAIkXF1SePUKmzpOX+7rcg3CCWLDrjDqkIlNBPSqvljQVophkBlKJuIQc/8CDBMR2ywMGNCup9pb8jQf2A2QiiSSXaQCslGA4CVXHwgrqUtn+IbEkiD5mf9kxiCLmZRaLWIEdk6Qq9O0mUqRUEVW4EeuaaXJhBcxYZ7BKa7Rn5Lg3FUGGJMTODRHat96ZzgRQpCL8FiJInDta2CT4g0PJWoecxTRI7JZy+KlyvvwO6sqQIr1X3O9WzS9k9jXVtpwUU3MOrpsnAEazvovqK5dg1bOvEAtECc52v4fG4WBXB8aRrJ5caXjRwvseR3qeU4O7BWgYjUlwItotzsELdi6CXLrDJs7SdmOZE7nCVvqUamUm7jPxu6t2OGdrg65C6XIyHMpEV6CKowoWrNeEWoXjbwNcyehEoSLd7DY8QvLKpHM4532ttxqcwdqdkJGMBsXocIxwTGSCKMgzKo2BGRrEw9jIWVH9EphDhkf5GFU670gYhoUllLzCt5I4vpbE8tS1nuscQTayVrVof7dBhWMazMlrfYxl/JNyXIyli7v+HhU2Bg+UWQOnsbZZt3wnWg1yjyZxEYmqwhf19RNNBMirLIZhOWMTONi53CafOAfjSkEOMZOe3+uc5C0eh3ObIGYN1CLKIR6EgOtmwz4OXEMks5MsC16Aupw/IuZKpgKX+nAXF0Q/PirrE13tCiA08wbYy9HRWFEJx5ibPyLl6PHY2bCBTR2zhkSyt1TeDGRuyXAgQFjWrfC9aOjLwefC1kUdre6Gm7di0sVWKLpQ2+E8mdF57IYLOIHojToVbBq8En8y78jKiidbvLwVFAN2LHlLmLp3cCVFBtgFKKJRbyWUfWIlZM0vu+BMXTrGcS4vHeNY5oJzMOE3BOi2rg+3IzoqDPyMVhRSDI/4GMH9ZdeimRHX3AYG+B0Paue/1/EiUIPLyfEob/kwwRDrI9tJFovXqqYWFrhccdpJz1QshiOILcidkJTiz+Up6K4uF0e+a3E4xRIVbj1cdOY2qCq4mQSy1X/LH0xBs+ueya1VJaxtSpjM4jsTjdYeAG0X6wqfNbeacp430dflqhR03uHb9fHcg1T3Xhbz6RKYqE6RnuZSNtFM1lPfW/nLpjW24UNbDoVDWwZO6Hlds1OVFlaVHjTgrrluI9+Iy40llZQBxWr1dMaWW6cIIAOt2HIZNqb1sMI6drZd85SH57e80yNPWuBboOuAfyn4NsPqtyahNa1a2GWlBydY4EbMRKk9ndM6l25DOFRIgB/vVUoAM6Jm37piVVWNRpSY4GCyqpTx/lyQ+u6GE+uOs6/9kyIf/1JrZM4dJrewB3RwjDp1427Qywe75E28j+InHtwxuQ/4WU5nECrDjT+nTEcmTTkKeeBZCx3DjCPnbg1peRLGNkSH4YiPHa/0vDN2Uscz53Yn5lWFfzD3BwI+TM570pWpRyaoNwAwZfcwy30Yjti4EW5NoYDLzPFoUGw2AR3lo8PxmIB/Tdp5pAZZ+KXXlPTp1A5U6kxoSoVy6TRnbTn/wGuPTMJVaZZPST7Q6RDhGhVSVPbTQfObQZZPB6rWIJnFfErP5kwIqqJ3F6EMO9JFA8hxmp7KWq80CZF5RE9nsXjJIYWw9HJSx02N1kLpvjaA7Ngq86hsPqfBGpw61CW68iO1/FSdAGHHKcOp1GhZXcFRoQGEYtH0TX7qtgGzVdA4U3CC94c9Bpcx6KcqvRuUMWrOHy+WBf9eeXyqo4NJQcuZAcpeq+c0ag5m1WGa03LzRT3+lktQ14ja3kH1t/ZN19f2pfaqaaHU3bjKwWYRZvOwpBlNBEykrri+pTzNi+hcVGZvi+Zhc5ZPTfxbykp1xUBkuvOyPL9ZLhznW6GOH4ZD/0y78l4hPBpXFTTRmjUz5s4pNceoO+ZbH6mqNR0s4B4iGUInKNxQPTRegiWl4NHstRzxNEdkaoze3rrdQOWpW7lC+wkgzSuWXH8FQYBQ2UkUDrfsmntIJGHMMllRg1JXzN0GMDxzaNlr3j7mgeSo4FOw/FvpCVrMwRUzvIr8Lxlh6J2Cr5UnAPhWDTkgVhpQaYr1/SopljdOgHe2DAALfZmYVm+E2nkE/GiMu4tw3V2EdXe5wjnp2kcgLupr7Sx91nRXLzpYVu+dPkPAUsDIccA2m64mta4HmYwhZ3/j3srdVVu3VbYqwt7lcO1OoXfZNlz2DkWWuh7TBYUTXihT2pMN+AGVJQXVmXzZtsQsjbhxbhVt59Ya0/XNhhrURZHfsvRBCq7cZzLnisQm/1HOLL28M3C6gzN10D/jIIlHY2Wf6bowwS6BZtpqKcmVtSvwCbgCl44rcKkjLBRy4I1FjGnfb3v9Hj3+mj75jKtvy2FbbqXap/fk3Uu4agpsfJMJS5Qfb5EvhXTpdgX665XnOiuDLLaf80xdXPSgi+/Rlouvjopi5an0tszkBL5XsQ+tSXHQb/1b5Y1Q2he20B6wrHJnvcG0pJO9ybRuHEUlJ1CincMJeG6Zgaaqt6wEc60XKAJHtqnrcOjznFO/QtgraXEL8vDe2thwKs/JsVqyjHKht3wnD6l3564l/17HTQQ6hAYzpHMEPLDqy+aqV9RkETYalywufJO/A7Isr5Avrbv/ViRN6L3fpvHxNJYEVhtwys79oeM5BAULXVvy0P5zOMErJUZCS9Pd9c5JFurE3ToqZgquduWjaagc7faDWBXEugBhm4hb191XNSplkGstjh9ocI6azlSOpKVsTR9pcI4ThAa7amlr3tcDtKuGtslVeEbSoRLgI2c6XX4l5zPt93uzh6dRvJBp6/2LGfWkKQ7WZRdfVZPrZTmf0sKLjexq5vGWpGCFbHKEkyZHOKk5ggJemuogCeitTBfXpIQ6lxdLoylk8YIbmG+7Ltt4qY0KXRTMU1xG3X1Vz1lKr5fTQGcrtsm1gcrKXwRIrrzMwVoKCOhweqvqCKt7vJTwI736fuFgGtN9KPxPPxsYY80U/N+Et6K1pULSQi8v6vOWHacyMAH3ZFpZ4/aUnEpB455MbZpGvCTTUFt/K5W7L6/zq+G5yXCWDm+jGfAUazS+B71x0j4TKKN7EUxUCpT3msNlb6WpqsSNdGaNpCfOi+gzn+1qWmVCg7/vWm3Dm65WG1/saNZNowY/LnQSL7eDuk5HL7saeKC/jlRsUH5qi3cBsfXhDni+uIMdQG4nfrNF73RJA7Z2/Q6wvqTJHdB0JJiryzrh2fqiA6Ava1WbX2Hlv1a8qkVNgeNe6Lfhe33diT0/k6HPkW+vQalwnWRLncLafWepSVeenXPCwpx3CkPSvXZqkuSgAdslNfX7thbOwsbVG/WNPF4BUbtzfAGsNVR3bsja6lIMXJjHC+MeqUKrh8qy0kANOLpBtvvgQnsXRF2VtCCoK+qzxQsl614oezZCFZ7qtDt1dN65YzJYBeYUp1L3rKow4ik+lzJCa7RQ5UJLQ7OwpDzVSIIPQKG6kZNQ0mCtnK+jE3J84pr/dowUK+9qWd040GhvYyh7CEcnSF8fAhXXXRg/gSNSEy6qzBzSXncC9roLnV8S2Um7UbLHSY2wG+s6vpIp2U6lBHUZzKRyqK5tXQ63zk+12aIWeXzFPTsNnsCzYpHPWWIPtWcMjhhXvrmG5zRoXKt51rngf/vMgj/7ogVva+G2SK+GAHqMksbvrTSuwQ5K5OlRSfOFYdtG3ym0LHA9yJo3o+j1dU/JZ2Q5OZXXehlSte1Uaq8zk2LKQI3vnZvA6v7kNTz4N8c6Znznt0ZqwfZMzjIC98V2XaJg1RWPpR2VminYhkN/X2Z72jkLzi25P9PgGm6kXncuhHetrHzXZtfWKaftcZTzTspw9WmMfRPN8TUl1yJ4p8Qd7Ig92nviT1N1Vxq6po14vc4hvRTkDACwA8BLSqb6dHJp1NipXDDn5BLoz9JqoudKDr4gx77aaj7j3gUanquU9+RYUV4o/Az1la7tEdBUaAZFXS2oWpHvI8eH9JUgL5V/kSWlknQuhxfusEbnY7x0JfuL9n0A3owGo4sxGh1Kw8i063hMtn1DRrqGBFqWnZAlNQUDvQBOnCk/6fc1sXuYwKLoxrpvAFnU5x2Sfk5De75WJ+HeE+REcSC78PRvx6FNl8DB3wNQuFzuxHC5E8Xl9gSyPggd61DT4fDEoCq4sctweANnk1N1FF01MKtToKuBqSM1g2KFTlvcCH14CIIPJS2C0Y7hqbbkABuNO95C+cS7ceatsyUzXTdoHN2g8ZcgRoJVLxGLDoRfEnkm35D8wOGoGvwQvMQtifBd6KghLZ0Ed9cHBaOtZ3RXrbWE4VD92pLRd6oSf1Km7wagLX9/mUTe3daW6Pyl0rSWAC6DVwJrbfKaYkOGo5oig9Tteom+RK4e6oITvQTHsYZF7MLagZQJzDh5PmD+Kv5nzV/Saa3TNqzvTjUhA85u4W0HulsagN9LfVcQ5Fas3PQ13aYh9j9jFipJpqNe023znHTZUv5aW6wiHbiZk5m6kUotbumKZE3/uyQObT5tmAOlfJUhnOmIv9eUSDE2vF7lNx8E2KWV9ek5ncTLTPj41PoK7KoTzmMeTyE17o3yXNm6GtmHW8lPppDkpM6sjd/XtU3ZZkNVQnFTHX/bzLxdK2jynOa16jmwl6tXFX7bSp7U/Ey4n3HUuEuqd1RtHaDKbr7L8us4A+2g17x9Slf6VqVeBJM9vmjcdlz724PTWgm3iqr02TD1Bgw4uXovggINC0d4KBxNnjn3N5ouOdbrBTOnZh5OJbAflTM8sUbvG+H4+5fwBuIe3yraUGJmOUzdmrna1O2rd4SiRh/O1Uh5eJcXN+UiTugDr17kWUqLZgUHFAmn6a7Cl52p10UTfTmgj6Mhd9CXk7p3WuO+Bbo9iHQv/6kntR714MGVYep1fHnYXmJq4yWUrDVQkTXgU/K6xlNNnPX9yQGyw3htp3LtjAeCT5yfuDkb8LZZgrvmpFHNKa8gTFyPN1J8Brzm1Ig/A7aOvHlNMcWvw8bbixiOCkPVLrheqaaNZ5b3I4SpGC/ietIlzqge7bmAa2WBlp5ShOv9HdVXMpspcz/QUJ1SHMtMu4SG9rQ+XMTJTTylktfo40XH+8i5Amqngbs++ddtebNYcgrdXJ3m1RxfclzfKxwFh/jdjggxA7m5QPmNcK7NpmFcnlyXebYU9F0s03ixUtT3DYa/lT5CqJ3PQvkE/RSozYbI8bv6OoCSJgXV3OoFQkg7PReyABLruhmOShNIbL5yHIsCmIogBlmGEPIC7jhXjz+ifh8SIcpzDBga+OFp9vmKBmvl8KHmM4hxgsixXXjKY6Oc5XfOIbeWiVVdQhKcLyiH25wLbpdv7CxfOKl0qwSvww8FM9ciQIw5WJ1wSmyHambUeTKMjtPMTL2P11k+Vbm8O5GTIs3bAecpZI6TJKA03kE4xQBcY3A/xQVnfGoHBl5RLNAeEnIoDdlteEH1Fe84AdIZBaZ1fEkDWQSaQSd42Y7y1+C1UNApJKouttSQd0rqhPzVGgsZeqghZ104PhCACLD6NbyydrejEWSA+lCw72OeZrQI1jP58KFgznRDjrRwEcsYCf+gvn3bdQJM5Kx8eP/qnMZFMnsHLsNlEIe/L2mxQipLoLyA3YecMb5NxW4Slv8GUS9r27ZetDN8i+/xEk+QQ43MFpGxB8EL/J469Qw3qatpD5YfwRjq7hVd8YIGSzXZFZYeaJHdzFs96qZe/OlOzOKpKm0phe27fc35g2vXagvGB8mLgX7SwqGZ10uWgfYgG/a0c/NurymrUhirU3sJ4c9RilXrPnYDpD6fdFQa3/qKJC4n86Q3ILw3UmWjS8kc2hhI8mWWSpXplhZsspIm1pzTfbhjwoy61Q2s63wyeVCzkkERlWWiP/MArSvI/TXPIe8I3G8v78Vdw+3vt7GgOKXmsUKDv/xfUEsHCBbI8cd2NgAAcaIAAFBLAQI/AxQAAAgIAFe//Vzs2NkrBwMAALQJAAAWAAAAAAAAAAAAAAC0gQAAAABleHRlbnNpb24udnNpeG1hbmlmZXN0UEsBAj8DFAAACAgAV7/9XN+jDd+8AAAAZQEAABMAAAAAAAAAAAAAALSBOwMAAFtDb250ZW50X1R5cGVzXS54bWxQSwECPwMUAAgICACVu/1cK9M6TZoCAACkBQAAFgAAAAAAAAAAAAAApIEoBAAAZXh0ZW5zaW9uL3BhY2thZ2UuanNvblBLAQI/AxQACAgIAHNy/VyyhnqNeQIAACcEAAAVAAAAAAAAAAAAAACkgQYHAABleHRlbnNpb24vTElDRU5TRS50eHRQSwECPwMUAAgICABXv/1cFsjxx3Y2AABxogAAGwAAAAAAAAAAAAAApIHCCQAAZXh0ZW5zaW9uL2Rpc3QvZXh0ZW5zaW9uLmpzUEsFBgAAAAAFAAUAVQEAAIFAAAAAAA==";
12
12
  //# sourceMappingURL=vscodeExtensionAsset.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vscodeExtensionAsset.js","sourceRoot":"","sources":["../../src/assets/vscodeExtensionAsset.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,QAAQ,CAAC;AACzD,MAAM,CAAC,MAAM,sCAAsC,GACjD,kEAAkE,CAAC;AACrE,MAAM,CAAC,MAAM,oCAAoC,GAC/C,kEAAkE,CAAC;AACrE,MAAM,CAAC,MAAM,+BAA+B,GAC1C,kEAAkE,CAAC;AACrE,MAAM,CAAC,MAAM,+BAA+B,GAC1C,sqrBAAsqrB,CAAC"}
1
+ {"version":3,"file":"vscodeExtensionAsset.js","sourceRoot":"","sources":["../../src/assets/vscodeExtensionAsset.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,QAAQ,CAAC;AACzD,MAAM,CAAC,MAAM,sCAAsC,GACjD,kEAAkE,CAAC;AACrE,MAAM,CAAC,MAAM,oCAAoC,GAC/C,kEAAkE,CAAC;AACrE,MAAM,CAAC,MAAM,+BAA+B,GAC1C,kEAAkE,CAAC;AACrE,MAAM,CAAC,MAAM,+BAA+B,GAC1C,0+rBAA0+rB,CAAC"}
package/dist/cli.js CHANGED
@@ -15,10 +15,13 @@ import { isDraining } from "./util/drainMarker.js";
15
15
  import { installRefreshScheduler, uninstallRefreshScheduler, } from "./util/refreshScheduler.js";
16
16
  import { detectRemoteDevBackend, isContainerBackend, } from "./util/remoteContext.js";
17
17
  import { runRefreshProxy } from "./commands/refreshProxy.js";
18
+ import { runPersistenceCommand } from "./commands/persistence.js";
19
+ import { checkTrayPersistence, reconcileTrayPersistence, } from "./util/trayPersistence.js";
18
20
  import { loopbackEngaged } from "./util/loopback.js";
19
21
  import { runQuitWatch } from "./commands/quitWatch.js";
20
22
  import { runManaged } from "./commands/managed.js";
21
23
  import { runPrintKey } from "./commands/printKey.js";
24
+ import { runDeviceUrl } from "./commands/deviceUrl.js";
22
25
  import { runProjectApply } from "./commands/projectApply.js";
23
26
  import { runClaudeDesktopCredential, } from "./commands/claudeDesktopCredential.js";
24
27
  import { runDesktop } from "./commands/desktop.js";
@@ -39,6 +42,8 @@ import { effectiveSubscription, metadataHeaderValue } from "./types.js";
39
42
  import { quitTargetKey, quitTargetLabel, relaunchResolvable, quitTargetSupported, relaunchApp, requestGracefulQuit, waitForQuit, } from "./util/appQuit.js";
40
43
  import { bold, cyan, dim, fail, heading, info, note, ok, warn, } from "./util/log.js";
41
44
  import { clearDevKey, clearEnrollment, hasEnrollment, loadProfile, recordManagedTools, saveProfile, saveDevKey, loadDevKey, stateDir, ensureStateDir, purgeRetiredFallbackState, } from "./util/persist.js";
45
+ import { revokeDeviceToken } from "./util/deviceToken.js";
46
+ import { isFleetLockedTool } from "./util/policySync.js";
42
47
  import { confirm, isInteractive, prompt, resolveDisplayName, resolveTeam, } from "./commands/shared.js";
43
48
  import { verifyConnection } from "./util/verify.js";
44
49
  import { detectSeatState } from "./util/seatState.js";
@@ -79,6 +84,8 @@ ${bold("Subcommands")}
79
84
  the auth smoke probe runs by DEFAULT (one tiny request) so an
80
85
  all-clear means a request actually worked, not just that the
81
86
  config looks right; --no-verify skips it for offline runs;
87
+ --quick runs local checks only (no probes, no telemetry) —
88
+ built for background pollers; skipped legs report null;
82
89
  --verify additionally runs a retrieval-loop probe (which
83
90
  never latches model retrieve capability);
84
91
  --repair re-applies managed tools whose routing drifted
@@ -91,6 +98,9 @@ ${bold("Subcommands")}
91
98
  sync Pull the team's shared skills/instructions into each tool's skills dir
92
99
  print-key Print the enrolled dev's short-lived gateway key for helper
93
100
  integrations. --json emits the desktop helper contract.
101
+ device-url Print this machine's device-page URL (what the tray's
102
+ "Open my device page" opens). stdout carries the URL alone;
103
+ needs the daemon running (it mints the rotating token).
94
104
  desktop Setup help and MDM artifacts for desktop app inference
95
105
  routing (Claude desktop app and Codex fleets).
96
106
  retrieve <ctx_…> Print the original content behind a "· retrieve ctx_…"
@@ -339,6 +349,9 @@ export const parseArgs = (argv) => {
339
349
  case "--no-verify":
340
350
  args.noVerify = true;
341
351
  break;
352
+ case "--quick":
353
+ args.quick = true;
354
+ break;
342
355
  case "--repair":
343
356
  args.repair = true;
344
357
  break;
@@ -821,6 +834,17 @@ export const reconcileProxyService = async (deps = {}) => {
821
834
  const profile = await (deps.load ?? loadProfile)();
822
835
  if (profile.keyRefreshEnabled !== true || !profile.gateway)
823
836
  return;
837
+ // RFC 0010 §6 P4: while a verified signed tray app owns launch-at-login,
838
+ // it — not launchd — respawns a dead daemon, so reinstalling the
839
+ // LaunchAgent here would undo the swap twice an hour. 'gone' (marker set
840
+ // but the app is missing/unsigned) falls through to the normal reinstall:
841
+ // that IS the self-heal for this service; reconcileTrayPersistence (run
842
+ // in the same tick) restores the scheduler and clears the marker.
843
+ if (profile.persistenceOwner === "tray") {
844
+ const tray = await (deps.checkTray ?? checkTrayPersistence)(profile);
845
+ if (tray === "healthy")
846
+ return;
847
+ }
824
848
  const port = profile.fallbackPort ?? DEFAULT_LOOPBACK_PORT;
825
849
  // Patience before the bounce: a 1.5s probe blip on a busy-but-alive daemon
826
850
  // must not trigger a reinstall (greptile P1 on #1389). A quarantined daemon
@@ -869,7 +893,18 @@ export const setupLoopbackProxy = async (target, port, deps = {}) => {
869
893
  const probe = deps.probe ?? probeHealth;
870
894
  const pollDelayMs = deps.pollDelayMs ?? 300;
871
895
  heading("Seamless key refresh");
872
- const svc = await install({ port, remoteOrigin: target.origin });
896
+ // Tray-owned persistence: never re-register the LaunchAgent the swap
897
+ // retired — the signed app launches (and respawns) the daemon. Probe with
898
+ // the same patience as a fresh install: the tray's supervisor tick may be
899
+ // mid-respawn.
900
+ const svc = deps.trayManaged
901
+ ? {
902
+ ok: true,
903
+ messages: [
904
+ "Launch-at-login is managed by the Anyray Connect app — not re-registering the login service.",
905
+ ],
906
+ }
907
+ : await install({ port, remoteOrigin: target.origin });
873
908
  for (const m of svc.messages)
874
909
  info(` ${m}`);
875
910
  // A freshly-installed supervisor may take a moment to bind, so poll. But
@@ -927,6 +962,13 @@ export const reconcileRefreshScheduler = async (opts, deps = {}) => {
927
962
  return;
928
963
  const install = deps.install ?? installRefreshScheduler;
929
964
  const uninstall = deps.uninstall ?? uninstallRefreshScheduler;
965
+ if (opts.want && opts.trayManaged) {
966
+ if (opts.announcePrimary) {
967
+ heading("Automatic key refresh");
968
+ ok(" Managed by the Anyray Connect app — it triggers the ~30-min key refresh.");
969
+ }
970
+ return;
971
+ }
930
972
  if (opts.want) {
931
973
  const svc = await install();
932
974
  if (opts.announcePrimary) {
@@ -964,7 +1006,14 @@ export const reconcileRefreshScheduler = async (opts, deps = {}) => {
964
1006
  ok(" Removed the automatic key-refresh schedule.");
965
1007
  }
966
1008
  };
967
- const SUBCOMMANDS = new Set(["login", "wizard", "status", "doctor", "sync"]);
1009
+ const SUBCOMMANDS = new Set([
1010
+ "login",
1011
+ "wizard",
1012
+ "status",
1013
+ "doctor",
1014
+ "sync",
1015
+ "device-url",
1016
+ ]);
968
1017
  export const run = async (argv) => {
969
1018
  // Hidden hook entrypoint: Claude Code invokes `anyray-connect __anyray-hook`
970
1019
  // as a PostToolUse hook. It speaks the hook stdin/stdout JSON protocol, so it
@@ -1048,6 +1097,11 @@ export const run = async (argv) => {
1048
1097
  // it just runs the gated refresh and exits 0.
1049
1098
  if (argv[0] === "__anyray-refresh") {
1050
1099
  await refreshIfDue();
1100
+ // RFC 0010 §6 P4: if the tray app that took over launch-at-login is gone
1101
+ // or no longer passes its signature check, put the LaunchAgents back and
1102
+ // clear the marker BEFORE the daemon reconcile below reads the profile.
1103
+ // With no marker set this is a single profile-field read. Never throws.
1104
+ await reconcileTrayPersistence();
1051
1105
  await reconcileProxyService();
1052
1106
  // Once per install: republish configs pinned to a since-pruned version path.
1053
1107
  await repathManagedTools();
@@ -1067,6 +1121,15 @@ export const run = async (argv) => {
1067
1121
  if (argv[0] === "__anyray-fallback-proxy") {
1068
1122
  return runRefreshProxy();
1069
1123
  }
1124
+ // Hidden machine entrypoint (RFC 0010 §6 P4): the SIGNED tray app adopts
1125
+ // (or releases) launch-at-login ownership of the background services. The
1126
+ // CLI does all the work — signature gate, LaunchAgent retire/restore,
1127
+ // profile marker; the app only shells this. stdout stays empty (machine
1128
+ // contract), so it dispatches before any human-facing logging or the
1129
+ // durable-runtime relaunch.
1130
+ if (argv[0] === "__anyray-persistence") {
1131
+ return runPersistenceCommand(argv.slice(1));
1132
+ }
1070
1133
  // Hidden entrypoint: a quit-gated adapter spawns this DETACHED when its app
1071
1134
  // was running at apply time. It waits for that app to quit, completes the
1072
1135
  // queued operation through the normal adapter path, and exits. Silent +
@@ -1172,11 +1235,14 @@ export const run = async (argv) => {
1172
1235
  json: parsed.json,
1173
1236
  verify: parsed.verify,
1174
1237
  noVerify: parsed.noVerify,
1238
+ quick: parsed.quick,
1175
1239
  repair: parsed.repair,
1176
1240
  securityReview: parsed.securityReview,
1177
1241
  });
1178
1242
  if (sub === "sync")
1179
1243
  return runSync({ gateway: parsed.gateway });
1244
+ if (sub === "device-url")
1245
+ return runDeviceUrl();
1180
1246
  // 'wizard' → apply flow with the wizard enabled.
1181
1247
  return runApplyCommand(rest, true);
1182
1248
  }
@@ -1766,6 +1832,22 @@ const runApplyCommand = async (argv, forceWizard) => {
1766
1832
  const usingEnvironmentKey = Boolean(envClientKey && target.clientKey === envClientKey && !enrolledCert);
1767
1833
  const hasRefreshableCert = !usingEnvironmentKey && Boolean(enrolledCert ?? profile.enrolledCert);
1768
1834
  const wantRefreshScheduler = !args.revert && args.noKeyRefresh !== true && hasRefreshableCert;
1835
+ // RFC 0010 §6 P4: does a verified signed tray app own launch-at-login on
1836
+ // this machine? A real run heals a stale marker in place (tray gone or
1837
+ // unsigned → LaunchAgents reinstalled per the profile flags, marker
1838
+ // cleared) so everything below sees post-heal reality; a dry run only
1839
+ // reads. Cheap when no marker is set — one profile-field check.
1840
+ const trayStatus = args.dryRun
1841
+ ? await checkTrayPersistence(profile)
1842
+ : await reconcileTrayPersistence();
1843
+ const trayManaged = trayStatus === "healthy";
1844
+ if (trayStatus === "healed") {
1845
+ // The self-heal just cleared the takeover marker ON DISK; scrub the
1846
+ // pre-run snapshot too — the profile write below spreads it, and a
1847
+ // stale `persistenceOwner` would resurrect the cleared marker.
1848
+ delete profile.persistenceOwner;
1849
+ delete profile.trayAppPath;
1850
+ }
1769
1851
  let applyTarget = target;
1770
1852
  const resolvedKeyRefreshEnabled = wantKeyRefresh || preserveKeyRefresh;
1771
1853
  // Hold the port when the loopback is wanted now, or preserved for the tools
@@ -1838,7 +1920,9 @@ const runApplyCommand = async (argv, forceWizard) => {
1838
1920
  }
1839
1921
  }
1840
1922
  if (wantKeyRefresh && !args.dryRun) {
1841
- applyTarget = await setupLoopbackProxy(target, resolvedFallbackPort);
1923
+ applyTarget = await setupLoopbackProxy(target, resolvedFallbackPort, {
1924
+ trayManaged,
1925
+ });
1842
1926
  }
1843
1927
  // Drop the enrollment credential FIRST, before a single config is unpicked —
1844
1928
  // see util/persist `clearEnrollment` for why a revert that leaves it behind
@@ -1861,6 +1945,14 @@ const runApplyCommand = async (argv, forceWizard) => {
1861
1945
  }
1862
1946
  }
1863
1947
  else {
1948
+ // Revoke the device-page token FIRST, while the enrollment credential
1949
+ // below still exists — the gateway DELETE is client-key-authed, so
1950
+ // once clearEnrollment runs nothing could authenticate it and the row
1951
+ // would stay live for up to 65 minutes after disconnect. Best-effort
1952
+ // (never throws); it removes the local raw-token file either way. A
1953
+ // scoped `--tools` revert deliberately keeps the token — the seat
1954
+ // stays enrolled for the tools it did not name.
1955
+ await revokeDeviceToken(profile);
1864
1956
  try {
1865
1957
  if (await clearEnrollment()) {
1866
1958
  heading("Enrollment");
@@ -1885,7 +1977,25 @@ const runApplyCommand = async (argv, forceWizard) => {
1885
1977
  }
1886
1978
  // A named `--tools` list (the wizard writes its checklist here too) is the
1887
1979
  // developer choosing these adapters by hand; the default sweep names none.
1888
- const { changes, manual, results } = await runApply(adapters, applyTarget, opts, args.revert, new Set(args.tools ?? []));
1980
+ //
1981
+ // Fleet-locked tools (RFC 0010 §4.1): a SCOPED revert refuses an id the
1982
+ // admin pinned at the `locked` tier — the admin owns its routing (checked
1983
+ // against the profile's cached fleet policy, so it works offline). A FULL
1984
+ // revert is untouched: it clears the enrollment and takes the machine out
1985
+ // of the fleet entirely (offboarding outranks a lock), and a later
1986
+ // re-enroll re-applies the policy anyway.
1987
+ let applyAdapters = adapters;
1988
+ if (args.revert && !fullRevert) {
1989
+ const locked = adapters.filter((a) => isFleetLockedTool(profile, a.id));
1990
+ if (locked.length > 0) {
1991
+ heading("Fleet policy");
1992
+ for (const adapter of locked) {
1993
+ warn(` ${adapter.id}: locked by your admin's fleet policy — leaving it configured. Ask an admin to change the tool's tier.`);
1994
+ }
1995
+ applyAdapters = adapters.filter((a) => !isFleetLockedTool(profile, a.id));
1996
+ }
1997
+ }
1998
+ const { changes, manual, results } = await runApply(applyAdapters, applyTarget, opts, args.revert, new Set(args.tools ?? []));
1889
1999
  // Keep the managed-tool record in step: apply records landed tools, revert
1890
2000
  // removes them, a full revert clears the record. Drift repair (`doctor
1891
2001
  // --repair`, the detached refresh) only ever re-applies recorded ids, so
@@ -1927,6 +2037,7 @@ const runApplyCommand = async (argv, forceWizard) => {
1927
2037
  scopedRevert: Boolean(args.revert) && !fullRevert,
1928
2038
  dryRun: Boolean(args.dryRun),
1929
2039
  wasEnabled: Boolean(profile.refreshSchedulerEnabled),
2040
+ trayManaged,
1930
2041
  });
1931
2042
  // Reopen here on the happy path so it reads in the right order, before the
1932
2043
  // summary. `reopenClosed` clears its list, so the `finally` below is a