npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

interpal-js

v0.1.2

Published

A powerful Node.js client library for InterPal with TypeScript support, bot framework, and WebSocket real-time events

Readme

��#� �i�n�t�e�r�p�a�l�-�j�s� � � � �[�!�[�n�p�m� �v�e�r�s�i�o�n�]�(�h�t�t�p�s�:�/�/�i�m�g�.�s�h�i�e�l�d�s�.�i�o�/�n�p�m�/�v�/�i�n�t�e�r�p�a�l�-�j�s�.�s�v�g�)�]�(�h�t�t�p�s�:�/�/�w�w�w�.�n�p�m�j�s�.�c�o�m�/�p�a�c�k�a�g�e�/�i�n�t�e�r�p�a�l�-�j�s�)� � �[�!�[�L�i�c�e�n�s�e�:� �M�I�T�]�(�h�t�t�p�s�:�/�/�i�m�g�.�s�h�i�e�l�d�s�.�i�o�/�b�a�d�g�e�/�L�i�c�e�n�s�e�-�M�I�T�-�y�e�l�l�o�w�.�s�v�g�)�]�(�h�t�t�p�s�:�/�/�o�p�e�n�s�o�u�r�c�e�.�o�r�g�/�l�i�c�e�n�s�e�s�/�M�I�T�)� � � � �A� �p�o�w�e�r�f�u�l� �N�o�d�e�.�j�s� �c�l�i�e�n�t� �l�i�b�r�a�r�y� �f�o�r� �I�n�t�e�r�P�a�l� �w�i�t�h� �T�y�p�e�S�c�r�i�p�t� �s�u�p�p�o�r�t�,� �f�e�a�t�u�r�i�n�g� �b�o�t�h� �s�y�n�c�h�r�o�n�o�u�s� �a�n�d� �a�s�y�n�c�h�r�o�n�o�u�s� �A�P�I�s�,� �W�e�b�S�o�c�k�e�t� �s�u�p�p�o�r�t�,� �a�n�d� �a�u�t�o�m�a�t�i�c� �e�r�r�o�r� �h�a�n�d�l�i�n�g�.� � � � �#�#� �F�e�a�t�u�r�e�s� � � � �(' ��M�o�d�e�r�n� �A�P�I� �D�e�s�i�g�n�� � �-� �<د� �M�a�n�a�g�e�r�-�b�a�s�e�d� �a�r�c�h�i�t�e�c�t�u�r�e� �(�U�s�e�r�s�,� �M�e�s�s�a�g�e�s�,� �T�h�r�e�a�d�s�,� �N�o�t�i�f�i�c�a�t�i�o�n�s�)� � �-� �=�� �A�u�t�o�m�a�t�i�c� �r�e�c�o�n�n�e�c�t�i�o�n� �w�i�t�h� �e�x�p�o�n�e�n�t�i�a�l� �b�a�c�k�o�f�f� � �-� �=���� �B�u�i�l�t�-�i�n� �e�r�r�o�r� �h�a�n�d�l�i�n�g� � �-� �=��� �F�u�l�l� �T�y�p�e�S�c�r�i�p�t� �s�u�p�p�o�r�t� � �-� �<ب� �E�v�e�n�t�-�d�r�i�v�e�n� �a�r�c�h�i�t�e�c�t�u�r�e� � � � �=؀� ��B�o�t� �F�r�a�m�e�w�o�r�k�� � �-� �=ج� �C�o�m�m�a�n�d� �s�y�s�t�e�m� �w�i�t�h� �p�r�e�f�i�x� �s�u�p�p�o�r�t� � �-� �<ح� �E�v�e�n�t� �d�e�c�o�r�a�t�o�r�s� � �-� �=� � �W�e�b�S�o�c�k�e�t� �r�e�a�l�-�t�i�m�e� �e�v�e�n�t�s� � �-� �>��� �I�n�t�e�n�t�-�b�a�s�e�d� �e�v�e�n�t� �f�i�l�t�e�r�i�n�g� � � � �=�'� ��D�e�v�e�l�o�p�e�r� �E�x�p�e�r�i�e�n�c�e�� � �-� �=��� �C�o�m�p�r�e�h�e�n�s�i�v�e� �t�y�p�e� �d�e�f�i�n�i�t�i�o�n�s� � �-� �<ؓ� �E�a�s�y�-�t�o�-�u�s�e� �A�P�I� � �-� �=��� �E�x�t�e�n�s�i�v�e� �d�o�c�u�m�e�n�t�a�t�i�o�n� � �-� �=� � �S�e�s�s�i�o�n� �p�e�r�s�i�s�t�e�n�c�e� � � � �#�#� �I�n�s�t�a�l�l�a�t�i�o�n� � � � ��b�a�s�h� � �n�p�m� �i�n�s�t�a�l�l� �i�n�t�e�r�p�a�l�-�j�s� � �� � � � �#�#� �Q�u�i�c�k� �S�t�a�r�t� � � � �#�#�#� �B�a�s�i�c� �B�o�t� � � � ��j�a�v�a�s�c�r�i�p�t� � �i�m�p�o�r�t� �{� �B�o�t�,� �I�n�t�e�n�t�s� �}� �f�r�o�m� �'�i�n�t�e�r�p�a�l�-�j�s�'�;� � � � �c�o�n�s�t� �b�o�t� �=� �n�e�w� �B�o�t�(�{� � � � �u�s�e�r�n�a�m�e�:� �'�y�o�u�r�_�u�s�e�r�n�a�m�e�'�,� � � � �p�a�s�s�w�o�r�d�:� �'�y�o�u�r�_�p�a�s�s�w�o�r�d�'�,� � � � �c�o�m�m�a�n�d�P�r�e�f�i�x�:� �'�!�'�,� � � � �i�n�t�e�n�t�s�:� �[�I�n�t�e�n�t�s�.�F�L�A�G�S�.�M�E�S�S�A�G�E�S�,� �I�n�t�e�n�t�s�.�F�L�A�G�S�.�T�Y�P�I�N�G�]�,� � �}�)�;� � � � �/�/� �H�a�n�d�l�e� �r�e�a�d�y� �e�v�e�n�t� � �b�o�t�.�e�v�e�n�t�(�'�o�n�_�r�e�a�d�y�'�)�(�a�s�y�n�c� �(�)� �=�>� �{� � � � �c�o�n�s�o�l�e�.�l�o�g�(�'�B�o�t� �i�s� �r�e�a�d�y�!�'�)�;� � �}�)�;� � � � �/�/� �H�a�n�d�l�e� �m�e�s�s�a�g�e�s� � �b�o�t�.�e�v�e�n�t�(�'�o�n�_�m�e�s�s�a�g�e�'�)�(�a�s�y�n�c� �(�e�v�e�n�t�)� �=�>� �{� � � � �c�o�n�s�o�l�e�.�l�o�g�(��M�e�s�s�a�g�e� �f�r�o�m� �$�{�e�v�e�n�t�.�s�e�n�d�e�r�?�.�n�a�m�e�}�:� �$�{�e�v�e�n�t�.�c�o�n�t�e�n�t�}��)�;� � � � � � � � �/�/� �R�e�p�l�y� �t�o� �m�e�s�s�a�g�e� � � � �a�w�a�i�t� �b�o�t�.�m�e�s�s�a�g�e�s�.�s�e�n�d�(�e�v�e�n�t�.�t�h�r�e�a�d�_�i�d�,� �'�H�e�l�l�o�!�'�)�;� � �}�)�;� � � � �/�/� �D�e�f�i�n�e� �c�o�m�m�a�n�d�s� � �b�o�t�.�c�o�m�m�a�n�d�(�'�h�e�l�l�o�'�,� �a�s�y�n�c� �(�c�t�x�)� �=�>� �{� � � � �a�w�a�i�t� �c�t�x�.�s�e�n�d�(��H�e�l�l�o� �$�{�c�t�x�.�s�e�n�d�e�r�?�.�n�a�m�e�}�!��)�;� � �}�)�;� � � � �/�/� �S�t�a�r�t� �t�h�e� �b�o�t� � �b�o�t�.�r�u�n�(�)�;� � �� � � � �#�#�#� �U�s�i�n�g� �t�h�e� �C�l�i�e�n�t� �D�i�r�e�c�t�l�y� � � � ��j�a�v�a�s�c�r�i�p�t� � �i�m�p�o�r�t� �{� �I�n�t�e�r�p�a�l�C�l�i�e�n�t� �}� �f�r�o�m� �'�i�n�t�e�r�p�a�l�-�j�s�'�;� � � � �c�o�n�s�t� �c�l�i�e�n�t� �=� �n�e�w� �I�n�t�e�r�p�a�l�C�l�i�e�n�t�(�{� � � � �u�s�e�r�n�a�m�e�:� �'�y�o�u�r�_�u�s�e�r�n�a�m�e�'�,� � � � �p�a�s�s�w�o�r�d�:� �'�y�o�u�r�_�p�a�s�s�w�o�r�d�'�,� � � � �a�u�t�o�L�o�g�i�n�:� �t�r�u�e�,� � �}�)�;� � � � �a�w�a�i�t� �c�l�i�e�n�t�.�i�n�i�t�i�a�l�i�z�e�(�)�;� � � � �/�/� �F�e�t�c�h� �u�s�e�r� �p�r�o�f�i�l�e� � �c�o�n�s�t� �u�s�e�r� �=� �a�w�a�i�t� �c�l�i�e�n�t�.�u�s�e�r�s�.�f�e�t�c�h�(�'�u�s�e�r�_�i�d�'�)�;� � �c�o�n�s�o�l�e�.�l�o�g�(�u�s�e�r�.�n�a�m�e�,� �u�s�e�r�.�a�g�e�,� �u�s�e�r�.�c�o�u�n�t�r�y�)�;� � � � �/�/� �S�e�n�d� �m�e�s�s�a�g�e� � �c�o�n�s�t� �t�h�r�e�a�d� �=� �a�w�a�i�t� �c�l�i�e�n�t�.�t�h�r�e�a�d�s�.�f�e�t�c�h�U�s�e�r�T�h�r�e�a�d�(�'�u�s�e�r�_�i�d�'�)�;� � �a�w�a�i�t� �c�l�i�e�n�t�.�m�e�s�s�a�g�e�s�.�s�e�n�d�(�t�h�r�e�a�d�.�i�d�,� �'�H�e�l�l�o�!�'�)�;� � � � �/�/� �C�o�n�n�e�c�t� �t�o� �W�e�b�S�o�c�k�e�t� �f�o�r� �r�e�a�l�-�t�i�m�e� �e�v�e�n�t�s� � �a�w�a�i�t� �c�l�i�e�n�t�.�c�o�n�n�e�c�t�(�)�;� � � � �c�l�i�e�n�t�.�o�n�(�'�m�e�s�s�a�g�e�'�,� �(�e�v�e�n�t�)� �=�>� �{� � � � �c�o�n�s�o�l�e�.�l�o�g�(�'�N�e�w� �m�e�s�s�a�g�e�:�'�,� �e�v�e�n�t�.�c�o�n�t�e�n�t�)�;� � �}�)�;� � �� � � � �#�#� �A�P�I� �D�o�c�u�m�e�n�t�a�t�i�o�n� � � � �#�#�#� �B�o�t� �C�l�a�s�s� � � � �T�h�e� ��B�o�t�� �c�l�a�s�s� �e�x�t�e�n�d�s� ��A�s�y�n�c�I�n�t�e�r�p�a�l�C�l�i�e�n�t�� �w�i�t�h� �c�o�m�m�a�n�d� �h�a�n�d�l�i�n�g� �a�n�d� �e�v�e�n�t� �d�e�c�o�r�a�t�o�r�s�.� � � � �#�#�#�#� �C�o�n�s�t�r�u�c�t�o�r� �O�p�t�i�o�n�s� � � � ��t�y�p�e�s�c�r�i�p�t� � �{� � � � �u�s�e�r�n�a�m�e�:� �s�t�r�i�n�g�;� � � � �p�a�s�s�w�o�r�d�:� �s�t�r�i�n�g�;� � � � �c�o�m�m�a�n�d�P�r�e�f�i�x�?�:� �s�t�r�i�n�g� �|� �s�t�r�i�n�g�[�]�;� � �/�/� �D�e�f�a�u�l�t�:� �'�!�'� � � � �i�n�t�e�n�t�s�?�:� �I�n�t�e�n�t�R�e�s�o�l�v�a�b�l�e�;� � � � � � � � � �/�/� �E�v�e�n�t� �f�i�l�t�e�r�i�n�g� � � � �p�e�r�s�i�s�t�S�e�s�s�i�o�n�?�:� �b�o�o�l�e�a�n�;� � � � � � � � � � � � �/�/� �S�a�v�e� �s�e�s�s�i�o�n� �t�o� �d�i�s�k� � � � �s�e�s�s�i�o�n�F�i�l�e�?�:� �s�t�r�i�n�g�;� � � � � � � � � � � � � � � � �/�/� �C�u�s�t�o�m� �s�e�s�s�i�o�n� �f�i�l�e� �p�a�t�h� � � � �m�a�x�M�e�s�s�a�g�e�s�?�:� �n�u�m�b�e�r�;� � � � � � � � � � � � � � � � �/�/� �M�e�s�s�a�g�e� �c�a�c�h�e� �s�i�z�e� � � � �c�a�c�h�e�U�s�e�r�s�?�:� �b�o�o�l�e�a�n�;� � � � � � � � � � � � � � � � �/�/� �E�n�a�b�l�e� �u�s�e�r� �c�a�c�h�i�n�g� � � � �c�a�c�h�e�T�h�r�e�a�d�s�?�:� �b�o�o�l�e�a�n�;� � � � � � � � � � � � � � �/�/� �E�n�a�b�l�e� �t�h�r�e�a�d� �c�a�c�h�i�n�g� � �}� � �� � � � �#�#�#�#� �E�v�e�n�t�s� � � � �U�s�e� �t�h�e� ��e�v�e�n�t�(�)�� �d�e�c�o�r�a�t�o�r� �t�o� �r�e�g�i�s�t�e�r� �e�v�e�n�t� �h�a�n�d�l�e�r�s�:� � � � ��j�a�v�a�s�c�r�i�p�t� � �b�o�t�.�e�v�e�n�t�(�'�o�n�_�r�e�a�d�y�'�)�(�a�s�y�n�c� �(�)� �=�>� �{� �/�*� �.�.�.� �*�/� �}�)�;� � �b�o�t�.�e�v�e�n�t�(�'�o�n�_�m�e�s�s�a�g�e�'�)�(�a�s�y�n�c� �(�e�v�e�n�t�)� �=�>� �{� �/�*� �.�.�.� �*�/� �}�)�;� � �b�o�t�.�e�v�e�n�t�(�'�o�n�_�t�y�p�i�n�g�'�)�(�a�s�y�n�c� �(�e�v�e�n�t�)� �=�>� �{� �/�*� �.�.�.� �*�/� �}�)�;� � �b�o�t�.�e�v�e�n�t�(�'�o�n�_�n�o�t�i�f�i�c�a�t�i�o�n�'�)�(�a�s�y�n�c� �(�e�v�e�n�t�)� �=�>� �{� �/�*� �.�.�.� �*�/� �}�)�;� � �b�o�t�.�e�v�e�n�t�(�'�o�n�_�d�i�s�c�o�n�n�e�c�t�'�)�(�a�s�y�n�c� �(�d�a�t�a�)� �=�>� �{� �/�*� �.�.�.� �*�/� �}�)�;� � �� � � � �#�#�#�#� �C�o�m�m�a�n�d�s� � � � �R�e�g�i�s�t�e�r� �c�o�m�m�a�n�d�s� �w�i�t�h� �t�h�e� ��c�o�m�m�a�n�d�(�)�� �m�e�t�h�o�d�:� � � � ��j�a�v�a�s�c�r�i�p�t� � �b�o�t�.�c�o�m�m�a�n�d�(�'�p�i�n�g�'�,� �a�s�y�n�c� �(�c�t�x�)� �=�>� �{� � � � �a�w�a�i�t� �c�t�x�.�s�e�n�d�(�'�P�o�n�g�!�'�)�;� � �}�)�;� � � � �b�o�t�.�c�o�m�m�a�n�d�(�'�u�s�e�r�i�n�f�o�'�,� �a�s�y�n�c� �(�c�t�x�)� �=�>� �{� � � � �c�o�n�s�t� �n�a�m�e� �=� �c�t�x�.�s�e�n�d�e�r�?�.�n�a�m�e�;� � � � �c�o�n�s�t� �a�g�e� �=� �c�t�x�.�s�e�n�d�e�r�?�.�a�g�e�;� � � � �a�w�a�i�t� �c�t�x�.�s�e�n�d�(��U�s�e�r�:� �$�{�n�a�m�e�}�,� �A�g�e�:� �$�{�a�g�e�}��)�;� � �}�)�;� � �� � � � �#�#�#� �M�a�n�a�g�e�r�s� � � � �#�#�#�#� �U�s�e�r�M�a�n�a�g�e�r� � � � ��j�a�v�a�s�c�r�i�p�t� � �/�/� �F�e�t�c�h� �u�s�e�r� �p�r�o�f�i�l�e� � �c�o�n�s�t� �u�s�e�r� �=� �a�w�a�i�t� �c�l�i�e�n�t�.�u�s�e�r�s�.�f�e�t�c�h�(�'�u�s�e�r�_�i�d�'�)�;� � � � �/�/� �F�e�t�c�h� �m�u�l�t�i�p�l�e� �u�s�e�r�s� � �c�o�n�s�t� �u�s�e�r�s� �=� �a�w�a�i�t� �c�l�i�e�n�t�.�u�s�e�r�s�.�f�e�t�c�h�M�a�n�y�(�[�'�i�d�1�'�,� �'�i�d�2�'�]�)�;� � � � �/�/� �G�e�t� �c�a�c�h�e�d� �u�s�e�r� � �c�o�n�s�t� �c�a�c�h�e�d�U�s�e�r� �=� �c�l�i�e�n�t�.�u�s�e�r�s�.�c�a�c�h�e�.�g�e�t�(�'�u�s�e�r�_�i�d�'�)�;� � �� � � � �#�#�#�#� �M�e�s�s�a�g�e�M�a�n�a�g�e�r� � � � ��j�a�v�a�s�c�r�i�p�t� � �/�/� �S�e�n�d� �t�e�x�t� �m�e�s�s�a�g�e� � �a�w�a�i�t� �c�l�i�e�n�t�.�m�e�s�s�a�g�e�s�.�s�e�n�d�(�'�t�h�r�e�a�d�_�i�d�'�,� �'�H�e�l�l�o�!�'�)�;� � � � �/�/� �S�e�n�d� �G�I�F� � �a�w�a�i�t� �c�l�i�e�n�t�.�m�e�s�s�a�g�e�s�.�s�e�n�d�G�i�f�(�'�t�h�r�e�a�d�_�i�d�'�,� �'�g�i�f�_�u�r�l�'�)�;� � � � �/�/� �M�a�r�k� �a�s� �r�e�a�d� � �a�w�a�i�t� �c�l�i�e�n�t�.�m�e�s�s�a�g�e�s�.�m�a�r�k�A�s�R�e�a�d�(�'�t�h�r�e�a�d�_�i�d�'�,� �'�m�e�s�s�a�g�e�_�i�d�'�)�;� � � � �/�/� �D�e�l�e�t�e� �m�e�s�s�a�g�e� � �a�w�a�i�t� �c�l�i�e�n�t�.�m�e�s�s�a�g�e�s�.�d�e�l�e�t�e�(�'�t�h�r�e�a�d�_�i�d�'�,� �'�m�e�s�s�a�g�e�_�i�d�'�)�;� � �� � � � �#�#�#�#� �T�h�r�e�a�d�M�a�n�a�g�e�r� � � � ��j�a�v�a�s�c�r�i�p�t� � �/�/� �G�e�t� �u�s�e�r� �t�h�r�e�a�d� � �c�o�n�s�t� �t�h�r�e�a�d� �=� �a�w�a�i�t� �c�l�i�e�n�t�.�t�h�r�e�a�d�s�.�f�e�t�c�h�U�s�e�r�T�h�r�e�a�d�(�'�u�s�e�r�_�i�d�'�)�;� � � � �/�/� �F�e�t�c�h� �t�h�r�e�a�d� �b�y� �I�D� � �c�o�n�s�t� �t�h�r�e�a�d� �=� �a�w�a�i�t� �c�l�i�e�n�t�.�t�h�r�e�a�d�s�.�f�e�t�c�h�(�'�t�h�r�e�a�d�_�i�d�'�)�;� � � � �/�/� �L�i�s�t� �a�l�l� �t�h�r�e�a�d�s� � �c�o�n�s�t� �t�h�r�e�a�d�s� �=� �a�w�a�i�t� �c�l�i�e�n�t�.�t�h�r�e�a�d�s�.�f�e�t�c�h�A�l�l�(�)�;� � �� � � � �#�#�#�#� �N�o�t�i�f�i�c�a�t�i�o�n�M�a�n�a�g�e�r� � � � ��j�a�v�a�s�c�r�i�p�t� � �/�/� �F�e�t�c�h� �n�o�t�i�f�i�c�a�t�i�o�n�s� � �c�o�n�s�t� �n�o�t�i�f�i�c�a�t�i�o�n�s� �=� �a�w�a�i�t� �c�l�i�e�n�t�.�n�o�t�i�f�i�c�a�t�i�o�n�s�.�f�e�t�c�h�(�)�;� � � � �/�/� �M�a�r�k� �a�s� �r�e�a�d� � �a�w�a�i�t� �c�l�i�e�n�t�.�n�o�t�i�f�i�c�a�t�i�o�n�s�.�m�a�r�k�A�s�R�e�a�d�(�'�n�o�t�i�f�i�c�a�t�i�o�n�_�i�d�'�)�;� � � � �/�/� �M�a�r�k� �a�l�l� �a�s� �r�e�a�d� � �a�w�a�i�t� �c�l�i�e�n�t�.�n�o�t�i�f�i�c�a�t�i�o�n�s�.�m�a�r�k�A�l�l�A�s�R�e�a�d�(�)�;� � �� � � � �#�#�#� �I�n�t�e�n�t�s� � � � �C�o�n�t�r�o�l� �w�h�i�c�h� �e�v�e�n�t�s� �y�o�u�r� �b�o�t� �r�e�c�e�i�v�e�s�:� � � � ��j�a�v�a�s�c�r�i�p�t� � �i�m�p�o�r�t� �{� �I�n�t�e�n�t�s� �}� �f�r�o�m� �'�i�n�t�e�r�p�a�l�-�j�s�'�;� � � � �c�o�n�s�t� �b�o�t� �=� �n�e�w� �B�o�t�(�{� � � � �i�n�t�e�n�t�s�:� �[� � � � � � �I�n�t�e�n�t�s�.�F�L�A�G�S�.�M�E�S�S�A�G�E�S�,� � � � � � � �/�/� �M�e�s�s�a�g�e� �e�v�e�n�t�s� � � � � � �I�n�t�e�n�t�s�.�F�L�A�G�S�.�T�Y�P�I�N�G�,� � � � � � � � � �/�/� �T�y�p�i�n�g� �e�v�e�n�t�s� � � � � � �I�n�t�e�n�t�s�.�F�L�A�G�S�.�N�O�T�I�F�I�C�A�T�I�O�N�S�,� � �/�/� �N�o�t�i�f�i�c�a�t�i�o�n� �e�v�e�n�t�s� � � � �]�,� � �}�)�;� � � � �/�/� �O�r� �u�s�e� �c�o�m�b�i�n�e�d� �i�n�t�e�n�t�s� � �c�o�n�s�t� �b�o�t� �=� �n�e�w� �B�o�t�(�{� � � � �i�n�t�e�n�t�s�:� �I�n�t�e�n�t�s�.�D�E�F�A�U�L�T�,� � �/�/� �A�l�l� �c�o�m�m�o�n� �e�v�e�n�t�s� � �}�)�;� � �� � � � �#�#� �E�r�r�o�r� �H�a�n�d�l�i�n�g� � � � �T�h�e� �l�i�b�r�a�r�y� �i�n�c�l�u�d�e�s� �a�u�t�o�m�a�t�i�c� �e�r�r�o�r� �h�a�n�d�l�i�n�g� �a�n�d� �r�e�c�o�n�n�e�c�t�i�o�n�:� � � � �-� ��A�u�t�o�m�a�t�i�c� �R�e�c�o�n�n�e�c�t�i�o�n��:� �U�p� �t�o� �1�0� �a�t�t�e�m�p�t�s� �w�i�t�h� �e�x�p�o�n�e�n�t�i�a�l� �b�a�c�k�o�f�f� � �-� ��D�e�f�a�u�l�t� �E�r�r�o�r� �H�a�n�d�l�e�r��:� �P�r�e�v�e�n�t�s� �c�r�a�s�h�e�s� �f�r�o�m� �u�n�h�a�n�d�l�e�d� �e�r�r�o�r�s� � �-� ��C�u�s�t�o�m� �H�a�n�d�l�e�r�s��:� �O�p�t�i�o�n�a�l� �c�u�s�t�o�m� �e�r�r�o�r� �h�a�n�d�l�i�n�g� � � � ��j�a�v�a�s�c�r�i�p�t� � �/�/� �O�p�t�i�o�n�a�l�:� �A�d�d� �c�u�s�t�o�m� �e�r�r�o�r� �h�a�n�d�l�e�r� � �b�o�t�.�o�n�(�'�e�r�r�o�r�'�,� �(�e�r�r�o�r�)� �=�>� �{� � � � �c�o�n�s�o�l�e�.�l�o�g�(�'�C�u�s�t�o�m� �e�r�r�o�r� �h�a�n�d�l�i�n�g�:�'�,� �e�r�r�o�r�.�m�e�s�s�a�g�e�)�;� � �}�)�;� � � � �/�/� �O�p�t�i�o�n�a�l�:� �M�o�n�i�t�o�r� �r�e�c�o�n�n�e�c�t�i�o�n� �a�t�t�e�m�p�t�s� � �b�o�t�.�o�n�(�'�r�e�c�o�n�n�e�c�t�i�n�g�'�,� �(�i�n�f�o�)� �=�>� �{� � � � �c�o�n�s�o�l�e�.�l�o�g�(��R�e�c�o�n�n�e�c�t�i�n�g�:� �a�t�t�e�m�p�t� �$�{�i�n�f�o�.�a�t�t�e�m�p�t�}�/�$�{�i�n�f�o�.�m�a�x�A�t�t�e�m�p�t�s�}��)�;� � �}�)�;� � �� � � � �S�e�e� �[�E�R�R�O�R�_�H�A�N�D�L�I�N�G�.�m�d�]�(�E�R�R�O�R�_�H�A�N�D�L�I�N�G�.�m�d�)� �f�o�r� �d�e�t�a�i�l�e�d� �i�n�f�o�r�m�a�t�i�o�n�.� � � � �#�#� �S�e�s�s�i�o�n� �P�e�r�s�i�s�t�e�n�c�e� � � � �S�a�v�e� �a�n�d� �r�e�u�s�e� �s�e�s�s�i�o�n�s� �t�o� �a�v�o�i�d� �r�e�p�e�a�t�e�d� �l�o�g�i�n�s�:� � � � ��j�a�v�a�s�c�r�i�p�t� � �c�o�n�s�t� �b�o�t� �=� �n�e�w� �B�o�t�(�{� � � � �u�s�e�r�n�a�m�e�:� �'�y�o�u�r�_�u�s�e�r�n�a�m�e�'�,� � � � �p�a�s�s�w�o�r�d�:� �'�y�o�u�r�_�p�a�s�s�w�o�r�d�'�,� � � � �p�e�r�s�i�s�t�S�e�s�s�i�o�n�:� �t�r�u�e�,� � � � � � � � � � � � � � �/�/� �E�n�a�b�l�e� �s�e�s�s�i�o�n� �p�e�r�s�i�s�t�e�n�c�e� � � � �s�e�s�s�i�o�n�F�i�l�e�:� �'�.�/�m�y�-�s�e�s�s�i�o�n�.�j�s�o�n�'�,� � �/�/� �O�p�t�i�o�n�a�l�:� �c�u�s�t�o�m� �f�i�l�e� �p�a�t�h� � � � �s�e�s�s�i�o�n�E�x�p�i�r�a�t�i�o�n�H�o�u�r�s�:� �7�2�0�,� � � � � � � �/�/� �O�p�t�i�o�n�a�l�:� �3�0� �d�a�y�s� �(�d�e�f�a�u�l�t�)� � �}�)�;� � �� � � � �#�#� �M�i�g�r�a�t�i�o�n� �f�r�o�m� �V�1� � � � �I�f� �y�o�u�'�r�e� �u�p�g�r�a�d�i�n�g� �f�r�o�m� �a�n� �o�l�d�e�r� �v�e�r�s�i�o�n�,� �s�e�e� �[�M�I�G�R�A�T�I�O�N�_�V�2�.�m�d�]�(�M�I�G�R�A�T�I�O�N�_�V�2�.�m�d�)� �f�o�r� �m�i�g�r�a�t�i�o�n� �g�u�i�d�e�.� � � � �#�#� �E�x�a�m�p�l�e�s� � � � �C�h�e�c�k� �t�h�e� �[�e�x�a�m�p�l�e�s�]�(�e�x�a�m�p�l�e�s�/�)� �d�i�r�e�c�t�o�r�y� �f�o�r� �m�o�r�e� �e�x�a�m�p�l�e�s�:� � � � �-� �[�B�a�s�i�c� �B�o�t�]�(�e�x�a�m�p�l�e�s�/�v�2�-�b�a�s�i�c�-�b�o�t�.�j�s�)� � �-� �S�e�e� �[�V�2�_�F�E�A�T�U�R�E�S�.�m�d�]�(�V�2�_�F�E�A�T�U�R�E�S�.�m�d�)� �f�o�r� �f�e�a�t�u�r�e� �o�v�e�r�v�i�e�w� � � � �#�#� �A�P�I� �R�e�f�e�r�e�n�c�e� � � � �F�o�r� �d�e�t�a�i�l�e�d� �A�P�I� �d�o�c�u�m�e�n�t�a�t�i�o�n�,� �s�e�e�:� � �-� �[�V�2�_�Q�U�I�C�K�_�R�E�F�E�R�E�N�C�E�.�m�d�]�(�V�2�_�Q�U�I�C�K�_�R�E�F�E�R�E�N�C�E�.�m�d�)� �-� �Q�u�i�c�k� �r�e�f�e�r�e�n�c�e� �g�u�i�d�e� � �-� �[�V�2�_�F�E�A�T�U�R�E�S�.�m�d�]�(�V�2�_�F�E�A�T�U�R�E�S�.�m�d�)� �-� �F�e�a�t�u�r�e� �d�o�c�u�m�e�n�t�a�t�i�o�n� � �-� �[�V�2�_�I�M�P�L�E�M�E�N�T�A�T�I�O�N�_�S�U�M�M�A�R�Y�.�m�d�]�(�V�2�_�I�M�P�L�E�M�E�N�T�A�T�I�O�N�_�S�U�M�M�A�R�Y�.�m�d�)� �-� �I�m�p�l�e�m�e�n�t�a�t�i�o�n� �d�e�t�a�i�l�s� � � � �#�#� �R�e�q�u�i�r�e�m�e�n�t�s� � � � �-� �N�o�d�e�.�j�s� �>�=� �1�8�.�1�8�.�0� � �-� �T�y�p�e�S�c�r�i�p�t� �>�=� �5�.�0� �(�f�o�r� �T�y�p�e�S�c�r�i�p�t� �u�s�e�r�s�)� � � � �#�#� �C�o�n�t�r�i�b�u�t�i�n�g� � � � �C�o�n�t�r�i�b�u�t�i�o�n�s� �a�r�e� �w�e�l�c�o�m�e�!� �P�l�e�a�s�e� �f�e�e�l� �f�r�e�e� �t�o� �s�u�b�m�i�t� �a� �P�u�l�l� �R�e�q�u�e�s�t�.� � � � �#�#� �L�i�c�e�n�s�e� � � � �M�I�T� �L�i�c�e�n�s�e� �-� �s�e�e� �[�L�I�C�E�N�S�E�]�(�L�I�C�E�N�S�E�)� �f�i�l�e� �f�o�r� �d�e�t�a�i�l�s�.� � � � �#�#� �S�u�p�p�o�r�t� � � � �F�o�r� �i�s�s�u�e�s� �a�n�d� �q�u�e�s�t�i�o�n�s�:� � �-� �[�G�i�t�H�u�b� �I�s�s�u�e�s�]�(�h�t�t�p�s�:�/�/�g�i�t�h�u�b�.�c�o�m�/�y�o�u�r�u�s�e�r�n�a�m�e�/�i�n�t�e�r�p�a�l�-�j�s�/�i�s�s�u�e�s�)� � �-� �J�o�i�n� �o�u�r� �c�o�m�m�u�n�i�t�y� �d�i�s�c�u�s�s�i�o�n�s� � � � �#�#� �C�h�a�n�g�e�l�o�g� � � � �#�#�#� �0�.�1�.�0� � � � �-� �I�n�i�t�i�a�l� �r�e�l�e�a�s�e� � �-� �M�a�n�a�g�e�r�-�b�a�s�e�d� �A�P�I� � �-� �B�o�t� �f�r�a�m�e�w�o�r�k� �w�i�t�h� �c�o�m�m�a�n�d�s� � �-� �W�e�b�S�o�c�k�e�t� �s�u�p�p�o�r�t� �w�i�t�h� �i�n�t�e�n�t�s� � �-� �A�u�t�o�m�a�t�i�c� �e�r�r�o�r� �h�a�n�d�l�i�n�g� �a�n�d� �r�e�c�o�n�n�e�c�t�i�o�n� � �-� �T�y�p�e�S�c�r�i�p�t� �s�u�p�p�o�r�t� � �-� �S�e�s�s�i�o�n� �p�e�r�s�i�s�t�e�n�c�e� � � � �-�-�-� � � � �M�a�d�e� �w�i�t�h� �d'� �f�o�r� �t�h�e� �I�n�t�e�r�P�a�l� �c�o�m�m�u�n�i�t�y�