decentravault
v0.2.5
Published
Encrypted decentralized file storage — one API key, zero complexity, maximum security.
Maintainers
Readme
��#� �D�e�c�e�n�t�r�a�V�a�u�l�t�
�
�
�
�>� �S�e�c�u�r�e�,� �e�n�c�r�y�p�t�e�d�,� �d�e�c�e�n�t�r�a�l�i�z�e�d� �f�i�l�e� �s�t�o�r�a�g�e� �f�o�r� �y�o�u�r� �a�p�p�l�i�c�a�t�i�o�n� �-�-� �w�i�t�h� �b�l�o�c�k�c�h�a�i�n� �v�e�r�i�f�i�c�a�t�i�o�n� �b�u�i�l�t� �i�n�.�
�
�
�
�[�!�[�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�/�d�e�c�e�n�t�r�a�v�a�u�l�t�.�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�/�d�e�c�e�n�t�r�a�v�a�u�l�t�)�
�
�[�!�[�N�o�d�e�.�j�s�]�(�h�t�t�p�s�:�/�/�i�m�g�.�s�h�i�e�l�d�s�.�i�o�/�b�a�d�g�e�/�n�o�d�e�-�%�3�E�%�3�D�1�8�.�0�.�0�-�b�r�i�g�h�t�g�r�e�e�n�)�]�(�h�t�t�p�s�:�/�/�n�o�d�e�j�s�.�o�r�g�)�
�
�[�!�[�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�)�
�
�
�
���D�e�c�e�n�t�r�a�V�a�u�l�t��� �l�e�t�s� �y�o�u� �a�d�d� �b�a�n�k�-�g�r�a�d�e� �e�n�c�r�y�p�t�e�d� �f�i�l�e� �s�t�o�r�a�g�e� �t�o� �a�n�y� �N�o�d�e�.�j�s� �a�p�p� �i�n� �m�i�n�u�t�e�s�.� �F�i�l�e�s� �a�r�e� �e�n�c�r�y�p�t�e�d�,� �s�t�o�r�e�d� �o�n� �I�P�F�S�,� �a�n�d� �a�n�c�h�o�r�e�d� �t�o� �t�h�e� �P�o�l�y�g�o�n� �b�l�o�c�k�c�h�a�i�n� �-�-� �a�l�l� �t�h�r�o�u�g�h� �a� �s�i�m�p�l�e� �S�D�K�.� �Y�o�u�r� �u�s�e�r�s� �j�u�s�t� �u�p�l�o�a�d� �a�n�d� �d�o�w�n�l�o�a�d� �f�i�l�e�s�;� �t�h�e� �s�e�c�u�r�i�t�y� �c�o�m�p�l�e�x�i�t�y� �i�s� �h�a�n�d�l�e�d� �f�o�r� �y�o�u�.�
�
�
�
�-�-�-�
�
�
�
�#�#� �T�a�b�l�e� �o�f� �C�o�n�t�e�n�t�s�
�
�
�
�-� �[�F�e�a�t�u�r�e�s�]�(�#�f�e�a�t�u�r�e�s�)�
�
�-� �[�P�r�e�r�e�q�u�i�s�i�t�e�s�]�(�#�p�r�e�r�e�q�u�i�s�i�t�e�s�)�
�
�-� �[�I�n�s�t�a�l�l�a�t�i�o�n�]�(�#�i�n�s�t�a�l�l�a�t�i�o�n�)�
�
�-� �[�Q�u�i�c�k� �S�t�a�r�t�]�(�#�q�u�i�c�k�-�s�t�a�r�t�)�
�
�-� �[�A�P�I� �R�e�f�e�r�e�n�c�e�]�(�#�a�p�i�-�r�e�f�e�r�e�n�c�e�)�
�
� � �-� �[�U�p�l�o�a�d� �a� �F�i�l�e�]�(�#�u�p�l�o�a�d�-�a�-�f�i�l�e�)�
�
� � �-� �[�R�e�t�r�i�e�v�e� �a� �F�i�l�e�]�(�#�r�e�t�r�i�e�v�e�-�a�-�f�i�l�e�)�
�
� � �-� �[�V�e�r�i�f�y� �a� �F�i�l�e�]�(�#�v�e�r�i�f�y�-�a�-�f�i�l�e�)�
�
� � �-� �[�W�a�i�t� �f�o�r� �B�l�o�c�k�c�h�a�i�n� �C�o�n�f�i�r�m�a�t�i�o�n�]�(�#�w�a�i�t�-�f�o�r�-�b�l�o�c�k�c�h�a�i�n�-�c�o�n�f�i�r�m�a�t�i�o�n�)�
�
� � �-� �[�D�e�l�e�t�e� �a� �F�i�l�e�]�(�#�d�e�l�e�t�e�-�a�-�f�i�l�e�)�
�
�-� �[�D�a�t�a�b�a�s�e� �S�e�t�u�p�]�(�#�d�a�t�a�b�a�s�e�-�s�e�t�u�p�)�
�
�-� �[�I�n�t�e�g�r�a�t�i�o�n� �E�x�a�m�p�l�e�s�]�(�#�i�n�t�e�g�r�a�t�i�o�n�-�e�x�a�m�p�l�e�s�)�
�
� � �-� �[�H�e�a�l�t�h�c�a�r�e� �-�-� �M�e�d�i�c�a�l� �R�e�c�o�r�d�s�]�(�#�h�e�a�l�t�h�c�a�r�e�-�-�m�e�d�i�c�a�l�-�r�e�c�o�r�d�s�)�
�
� � �-� �[�L�e�g�a�l� �-�-� �D�o�c�u�m�e�n�t� �S�t�o�r�a�g�e�]�(�#�l�e�g�a�l�-�-�d�o�c�u�m�e�n�t�-�s�t�o�r�a�g�e�)�
�
� � �-� �[�S�a�a�S� �-�-� �W�o�r�k�s�p�a�c�e� �F�i�l�e�s�]�(�#�s�a�a�s�-�-�w�o�r�k�s�p�a�c�e�-�f�i�l�e�s�)�
�
�-� �[�S�e�c�u�r�i�t�y� �B�e�s�t� �P�r�a�c�t�i�c�e�s�]�(�#�s�e�c�u�r�i�t�y�-�b�e�s�t�-�p�r�a�c�t�i�c�e�s�)�
�
�-� �[�T�r�o�u�b�l�e�s�h�o�o�t�i�n�g�]�(�#�t�r�o�u�b�l�e�s�h�o�o�t�i�n�g�)�
�
�-� �[�S�u�p�p�o�r�t�]�(�#�s�u�p�p�o�r�t�)�
�
�
�
�-�-�-�
�
�
�
�#�#� �F�e�a�t�u�r�e�s�
�
�
�
�-� �[�L�O�C�K�]� ���E�n�d�-�t�o�-�e�n�d� �e�n�c�r�y�p�t�i�o�n��� �-�-� �F�i�l�e�s� �a�r�e� �e�n�c�r�y�p�t�e�d� �b�e�f�o�r�e� �l�e�a�v�i�n�g� �y�o�u�r� �s�e�r�v�e�r�
�
�-� �[�G�L�O�B�E�]� ���D�e�c�e�n�t�r�a�l�i�z�e�d� �s�t�o�r�a�g�e��� �-�-� �S�t�o�r�e�d� �o�n� �I�P�F�S�,� �n�o�t� �a� �s�i�n�g�l�e� �p�o�i�n�t� �o�f� �f�a�i�l�u�r�e�
�
�-� �[�C�H�A�I�N�]� ���B�l�o�c�k�c�h�a�i�n� �v�e�r�i�f�i�c�a�t�i�o�n��� �-�-� �E�v�e�r�y� �f�i�l�e� �a�n�c�h�o�r�e�d� �o�n� �P�o�l�y�g�o�n� �f�o�r� �t�a�m�p�e�r�-�p�r�o�o�f� �a�u�d�i�t� �t�r�a�i�l�s�
�
�-� �[�P�U�Z�Z�L�E�]� ���S�i�m�p�l�e� �S�D�K��� �-�-� �T�h�r�e�e� �c�o�r�e� �m�e�t�h�o�d�s�:� ��u�p�l�o�a�d��,� ��r�e�t�r�i�e�v�e��,� ��v�e�r�i�f�y��
�
�-� �[�B�U�I�L�D�]� ���F�r�a�m�e�w�o�r�k� �a�g�n�o�s�t�i�c��� �-�-� �W�o�r�k�s� �w�i�t�h� �E�x�p�r�e�s�s�,� �F�a�s�t�i�f�y�,� �N�e�s�t�J�S�,� �o�r� �a�n�y� �N�o�d�e�.�j�s� �r�u�n�t�i�m�e�
�
�-� �[�U�S�E�R�]� ���P�e�r�-�u�s�e�r� �s�c�o�p�i�n�g��� �-�-� �A�c�c�e�s�s� �i�s� �s�c�o�p�e�d� �b�y� �A�P�I� �k�e�y� �+� �u�s�e�r� �e�m�a�i�l� �+� �f�i�l�e� �I�D�
�
�
�
�-�-�-�
�
�
�
�#�#� �P�r�e�r�e�q�u�i�s�i�t�e�s�
�
�
�
�-� ���N�o�d�e�.�j�s� �1�8�+���
�
�-� �A� ���D�e�c�e�n�t�r�a�V�a�u�l�t� �A�P�I� �k�e�y��� �-�-� �[�g�e�t� �o�n�e� �f�r�e�e� �a�t� �d�e�c�e�n�t�r�a�-�v�a�u�l�t�.�o�n�r�e�n�d�e�r�.�c�o�m�]�(�h�t�t�p�s�:�/�/�d�e�c�e�n�t�r�a�-�v�a�u�l�t�.�o�n�r�e�n�d�e�r�.�c�o�m�)�
�
�-� �A� �d�a�t�a�b�a�s�e� �(�P�o�s�t�g�r�e�S�Q�L�,� �M�y�S�Q�L�,� �M�o�n�g�o�D�B�,� �e�t�c�.�)� �t�o� �s�t�o�r�e� ��f�i�l�e�I�d�� �r�e�f�e�r�e�n�c�e�s�
�
�
�
�-�-�-�
�
�
�
�#�#� �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� �d�e�c�e�n�t�r�a�v�a�u�l�t�
�
����
�
�
�
�-�-�-�
�
�
�
�#�#� �Q�u�i�c�k� �S�t�a�r�t�
�
�
�
���1�.� �G�e�t� �y�o�u�r� �A�P�I� �k�e�y��� �f�r�o�m� �t�h�e� �[�D�e�c�e�n�t�r�a�V�a�u�l�t� �d�a�s�h�b�o�a�r�d�]�(�h�t�t�p�s�:�/�/�d�e�c�e�n�t�r�a�-�v�a�u�l�t�.�o�n�r�e�n�d�e�r�.�c�o�m�)� �a�n�d� �s�t�o�r�e� �i�t� �s�e�c�u�r�e�l�y�:�
�
�
�
����b�a�s�h�
�
�#� �.�e�n�v�
�
�D�E�C�E�N�T�R�A�V�A�U�L�T�_�A�P�I�_�K�E�Y�=�d�v�_�y�o�u�r�_�a�p�i�_�k�e�y�_�h�e�r�e�
�
����
�
�
�
���2�.� �I�n�i�t�i�a�l�i�z�e� �t�h�e� �S�D�K��� �i�n� �y�o�u�r� �b�a�c�k�e�n�d� �c�o�d�e�:�
�
�
�
����j�a�v�a�s�c�r�i�p�t�
�
�i�m�p�o�r�t� �{� �D�e�c�e�n�t�r�a�V�a�u�l�t� �}� �f�r�o�m� �'�d�e�c�e�n�t�r�a�v�a�u�l�t�'�;�
�
�
�
�c�o�n�s�t� �v�a�u�l�t� �=� �n�e�w� �D�e�c�e�n�t�r�a�V�a�u�l�t�(�p�r�o�c�e�s�s�.�e�n�v�.�D�E�C�E�N�T�R�A�V�A�U�L�T�_�A�P�I�_�K�E�Y�)�;�
�
����
�
�
�
�F�o�r� �l�o�c�a�l� �d�e�v�e�l�o�p�m�e�n�t�:�
�
�
�
����j�a�v�a�s�c�r�i�p�t�
�
�c�o�n�s�t� �v�a�u�l�t� �=� �n�e�w� �D�e�c�e�n�t�r�a�V�a�u�l�t�(�p�r�o�c�e�s�s�.�e�n�v�.�D�E�C�E�N�T�R�A�V�A�U�L�T�_�A�P�I�_�K�E�Y�,� �{�
�
� � �b�a�s�e�U�r�l�:� �'�h�t�t�p�:�/�/�l�o�c�a�l�h�o�s�t�:�3�0�0�0�/�a�p�i�'�
�
�}�)�;�
�
����
�
�
�
���3�.� �U�p�l�o�a�d� �a� �f�i�l�e�:���
�
�
�
����j�a�v�a�s�c�r�i�p�t�
�
�c�o�n�s�t� �r�e�s�u�l�t� �=� �a�w�a�i�t� �v�a�u�l�t�.�u�p�l�o�a�d�(�
�
� � �f�i�l�e�B�u�f�f�e�r�,�
�
� � �'�d�o�c�u�m�e�n�t�.�p�d�f�'�,�
�
� � �'�a�p�p�l�i�c�a�t�i�o�n�/�p�d�f�'�,�
�
� � �{� �u�s�e�r�E�m�a�i�l�:� �'�u�s�e�r�@�e�x�a�m�p�l�e�.�c�o�m�'� �}�
�
�)�;�
�
�
�
�c�o�n�s�o�l�e�.�l�o�g�(�r�e�s�u�l�t�.�f�i�l�e�I�d�)�;� � � � � � � � � � � �/�/� �S�a�v�e� �t�h�i�s� �i�n� �y�o�u�r� �d�a�t�a�b�a�s�e�!�
�
�c�o�n�s�o�l�e�.�l�o�g�(�r�e�s�u�l�t�.�b�l�o�c�k�c�h�a�i�n�S�t�a�t�u�s�)�;� �/�/� �'�p�e�n�d�i�n�g�'� �|� �'�c�o�n�f�i�r�m�e�d�'�
�
����
�
�
�
���4�.� �R�e�t�r�i�e�v�e� �a� �f�i�l�e�:���
�
�
�
����j�a�v�a�s�c�r�i�p�t�
�
�c�o�n�s�t� �r�e�s�u�l�t� �=� �a�w�a�i�t� �v�a�u�l�t�.�r�e�t�r�i�e�v�e�(�f�i�l�e�I�d�,� �{� �u�s�e�r�E�m�a�i�l�:� �'�u�s�e�r�@�e�x�a�m�p�l�e�.�c�o�m�'� �}�)�;�
�
�
�
�i�f� �(�r�e�s�u�l�t�.�i�n�t�e�g�r�i�t�y� �=�=�=� �'�o�k�'�)� �{�
�
� � �/�/� �r�e�s�u�l�t�.�f�i�l�e� �i�s� �t�h�e� �d�e�c�r�y�p�t�e�d� �f�i�l�e� �b�u�f�f�e�r�
�
�}�
�
����
�
�
�
�>� �[�!�]� ���I�m�p�o�r�t�a�n�t�:��� �A�l�w�a�y�s� �s�a�v�e� �t�h�e� ��f�i�l�e�I�d�� �r�e�t�u�r�n�e�d� �f�r�o�m� ��u�p�l�o�a�d�(�)�� �i�n� �y�o�u�r� �o�w�n� �d�a�t�a�b�a�s�e�.� �I�t� �i�s� �r�e�q�u�i�r�e�d� �t�o� �r�e�t�r�i�e�v�e� �t�h�e� �f�i�l�e� �l�a�t�e�r�.�
�
�
�
�-�-�-�
�
�
�
�#�#� �A�P�I� �R�e�f�e�r�e�n�c�e�
�
�
�
�#�#�#� �U�p�l�o�a�d� �a� �F�i�l�e�
�
�
�
����j�a�v�a�s�c�r�i�p�t�
�
�c�o�n�s�t� �r�e�s�u�l�t� �=� �a�w�a�i�t� �v�a�u�l�t�.�u�p�l�o�a�d�(�b�u�f�f�e�r�,� �f�i�l�e�n�a�m�e�,� �m�i�m�e�T�y�p�e�,� �o�p�t�i�o�n�s�)�;�
�
����
�
�
�
�|� �P�a�r�a�m�e�t�e�r� �|� �T�y�p�e� �|� �D�e�s�c�r�i�p�t�i�o�n� �|�
�
�|�-�-�-�-�-�-�-�-�-�-�-�|�-�-�-�-�-�-�|�-�-�-�-�-�-�-�-�-�-�-�-�-�|�
�
�|� ��b�u�f�f�e�r�� �|� ��B�u�f�f�e�r�� �|� �T�h�e� �f�i�l�e� �c�o�n�t�e�n�t� �a�s� �a� �N�o�d�e�.�j�s� �B�u�f�f�e�r� �|�
�
�|� ��f�i�l�e�n�a�m�e�� �|� ��s�t�r�i�n�g�� �|� �O�r�i�g�i�n�a�l� �f�i�l�e�n�a�m�e� �(�e�.�g�.� ��r�e�p�o�r�t�.�p�d�f��)� �|�
�
�|� ��m�i�m�e�T�y�p�e�� �|� ��s�t�r�i�n�g�� �|� �M�I�M�E� �t�y�p�e� �(�e�.�g�.� ��a�p�p�l�i�c�a�t�i�o�n�/�p�d�f��)� �|�
�
�|� ��o�p�t�i�o�n�s�.�u�s�e�r�E�m�a�i�l�� �|� ��s�t�r�i�n�g�� �|� ���R�e�q�u�i�r�e�d�.��� �T�h�e� �e�n�d�-�u�s�e�r�'�s� �e�m�a�i�l� �a�d�d�r�e�s�s� �|�
�
�
�
���R�e�t�u�r�n�s�:���
�
�
�
����t�y�p�e�s�c�r�i�p�t�
�
�{�
�
� � �f�i�l�e�I�d�:� �s�t�r�i�n�g�;� � � � � � � � � � � �/�/� �S�t�o�r�e� �t�h�i�s� �i�n� �y�o�u�r� �D�B�
�
� � �h�a�s�h�:� �s�t�r�i�n�g�;� � � � � � � � � � � � � �/�/� �S�H�A�-�2�5�6� �h�a�s�h� �o�f� �t�h�e� �f�i�l�e�
�
� � �c�i�d�:� �s�t�r�i�n�g�;� � � � � � � � � � � � � � �/�/� �I�P�F�S� �C�o�n�t�e�n�t� �I�D�
�
� � �b�l�o�c�k�c�h�a�i�n�S�t�a�t�u�s�:� �s�t�r�i�n�g�;� �/�/� �'�p�e�n�d�i�n�g�'� �|� �'�c�o�n�f�i�r�m�e�d�'� �|� �'�f�a�i�l�e�d�'�
�
�}�
�
����
�
�
�
�-�-�-�
�
�
�
�#�#�#� �R�e�t�r�i�e�v�e� �a� �F�i�l�e�
�
�
�
����j�a�v�a�s�c�r�i�p�t�
�
�c�o�n�s�t� �r�e�s�u�l�t� �=� �a�w�a�i�t� �v�a�u�l�t�.�r�e�t�r�i�e�v�e�(�f�i�l�e�I�d�,� �o�p�t�i�o�n�s�)�;�
�
����
�
�
�
�|� �P�a�r�a�m�e�t�e�r� �|� �T�y�p�e� �|� �D�e�s�c�r�i�p�t�i�o�n� �|�
�
�|�-�-�-�-�-�-�-�-�-�-�-�|�-�-�-�-�-�-�|�-�-�-�-�-�-�-�-�-�-�-�-�-�|�
�
�|� ��f�i�l�e�I�d�� �|� ��s�t�r�i�n�g�� �|� �T�h�e� ��f�i�l�e�I�d�� �r�e�t�u�r�n�e�d� �a�t� �u�p�l�o�a�d� �t�i�m�e� �|�
�
�|� ��o�p�t�i�o�n�s�.�u�s�e�r�E�m�a�i�l�� �|� ��s�t�r�i�n�g�� �|� ���R�e�q�u�i�r�e�d�.��� �M�u�s�t� �m�a�t�c�h� �t�h�e� �e�m�a�i�l� �u�s�e�d� �a�t� �u�p�l�o�a�d� �|�
�
�
�
���R�e�t�u�r�n�s�:���
�
�
�
����t�y�p�e�s�c�r�i�p�t�
�
�{�
�
� � �f�i�l�e�:� �B�u�f�f�e�r�;� � � � � � � � � �/�/� �D�e�c�r�y�p�t�e�d� �f�i�l�e� �c�o�n�t�e�n�t�
�
� � �i�n�t�e�g�r�i�t�y�:� �s�t�r�i�n�g�;� � � � �/�/� �'�o�k�'� �|� �'�f�a�i�l�e�d�'� �-�-� �a�l�w�a�y�s� �c�h�e�c�k� �t�h�i�s�!�
�
� � �b�l�o�c�k�c�h�a�i�n�:� �{�
�
� � � � �v�e�r�i�f�i�e�d�:� �b�o�o�l�e�a�n�;�
�
� � � � �t�x�:� �s�t�r�i�n�g�;� � � � � � � � � �/�/� �P�o�l�y�g�o�n� �t�r�a�n�s�a�c�t�i�o�n� �h�a�s�h�
�
� � �}�
�
�}�
�
����
�
�
�
�>� �[�!�]� �A�l�w�a�y�s� �v�e�r�i�f�y� ��i�n�t�e�g�r�i�t�y� �=�=�=� �'�o�k�'�� �b�e�f�o�r�e� �s�e�r�v�i�n�g� �t�h�e� �f�i�l�e� �t�o� �y�o�u�r� �u�s�e�r�.� �A� �f�a�i�l�e�d� �i�n�t�e�g�r�i�t�y� �c�h�e�c�k� �m�e�a�n�s� �t�h�e� �f�i�l�e� �m�a�y� �h�a�v�e� �b�e�e�n� �t�a�m�p�e�r�e�d� �w�i�t�h�.�
�
�
�
�-�-�-�
�
�
�
�#�#�#� �V�e�r�i�f�y� �a� �F�i�l�e�
�
�
�
�C�h�e�c�k� �b�l�o�c�k�c�h�a�i�n� �s�t�a�t�u�s� �w�i�t�h�o�u�t� �d�o�w�n�l�o�a�d�i�n�g� �t�h�e� �f�i�l�e� �c�o�n�t�e�n�t�.�
�
�
�
����j�a�v�a�s�c�r�i�p�t�
�
�c�o�n�s�t� �r�e�s�u�l�t� �=� �a�w�a�i�t� �v�a�u�l�t�.�v�e�r�i�f�y�(�f�i�l�e�I�d�,� �o�p�t�i�o�n�s�)�;�
�
����
�
�
�
���R�e�t�u�r�n�s�:���
�
�
�
����t�y�p�e�s�c�r�i�p�t�
�
�{�
�
� � �v�e�r�i�f�i�e�d�:� �b�o�o�l�e�a�n�;�
�
� � �r�e�a�s�o�n�:� �s�t�r�i�n�g�;�
�
� � �b�l�o�c�k�c�h�a�i�n�T�x�:� �s�t�r�i�n�g�;� � � �/�/� �P�o�l�y�g�o�n� �t�r�a�n�s�a�c�t�i�o�n� �h�a�s�h�
�
� � �o�n�C�h�a�i�n�H�a�s�h�:� �s�t�r�i�n�g�;� � � � �/�/� �H�a�s�h� �s�t�o�r�e�d� �o�n�-�c�h�a�i�n�
�
�}�
�
����
�
�
�
�V�i�e�w� �t�h�e� �t�r�a�n�s�a�c�t�i�o�n� �o�n� �t�h�e� �P�o�l�y�g�o�n� �e�x�p�l�o�r�e�r�:�
�
����j�a�v�a�s�c�r�i�p�t�
�
�c�o�n�s�t� �e�x�p�l�o�r�e�r�U�r�l� �=� ��h�t�t�p�s�:�/�/�a�m�o�y�.�p�o�l�y�g�o�n�s�c�a�n�.�c�o�m�/�t�x�/�$�{�r�e�s�u�l�t�.�b�l�o�c�k�c�h�a�i�n�T�x�}��;�
�
����
�
�
�
�-�-�-�
�
�
�
�#�#�#� �W�a�i�t� �f�o�r� �B�l�o�c�k�c�h�a�i�n� �C�o�n�f�i�r�m�a�t�i�o�n�
�
�
�
����j�a�v�a�s�c�r�i�p�t�
�
�a�w�a�i�t� �v�a�u�l�t�.�w�a�i�t�F�o�r�B�l�o�c�k�c�h�a�i�n�(�f�i�l�e�I�d�,� �t�i�m�e�o�u�t�M�s�,� �o�p�t�i�o�n�s�)�;�
�
����
�
�
�
�|� �P�a�r�a�m�e�t�e�r� �|� �T�y�p�e� �|� �D�e�s�c�r�i�p�t�i�o�n� �|�
�
�|�-�-�-�-�-�-�-�-�-�-�-�|�-�-�-�-�-�-�|�-�-�-�-�-�-�-�-�-�-�-�-�-�|�
�
�|� ��f�i�l�e�I�d�� �|� ��s�t�r�i�n�g�� �|� �T�h�e� �f�i�l�e� �I�D� �t�o� �w�a�i�t� �f�o�r� �|�
�
�|� ��t�i�m�e�o�u�t�M�s�� �|� ��n�u�m�b�e�r�� �|� �T�i�m�e�o�u�t� �i�n� �m�i�l�l�i�s�e�c�o�n�d�s� �(�e�.�g�.� ��6�0�0�0�0�� �f�o�r� �6�0�s�)� �|�
�
�|� ��o�p�t�i�o�n�s�.�u�s�e�r�E�m�a�i�l�� �|� ��s�t�r�i�n�g�� �|� ���R�e�q�u�i�r�e�d��� �|�
�
�
�
�U�s�e�f�u�l� �f�o�r� �l�e�g�a�l� �d�o�c�u�m�e�n�t�s� �o�r� �a�n�y� �f�l�o�w� �t�h�a�t� �r�e�q�u�i�r�e�s� �c�o�n�f�i�r�m�e�d� �b�l�o�c�k�c�h�a�i�n� �a�n�c�h�o�r�i�n�g� �b�e�f�o�r�e� �p�r�o�c�e�e�d�i�n�g�.�
�
�
�
�-�-�-�
�
�
�
�#�#�#� �D�e�l�e�t�e� �a� �F�i�l�e�
�
�
�
����j�a�v�a�s�c�r�i�p�t�
�
�a�w�a�i�t� �v�a�u�l�t�.�d�e�l�e�t�e�(�f�i�l�e�I�d�,� �{� �u�s�e�r�E�m�a�i�l� �}�)�;�
�
����
�
�
�
�T�h�i�s� �p�e�r�f�o�r�m�s� �a� �s�o�f�t�-�d�e�l�e�t�e�.� �R�e�m�e�m�b�e�r� �t�o� �a�l�s�o� �r�e�m�o�v�e� �t�h�e� �c�o�r�r�e�s�p�o�n�d�i�n�g� �r�e�c�o�r�d� �f�r�o�m� �y�o�u�r� �o�w�n� �d�a�t�a�b�a�s�e�.�
�
�
�
�-�-�-�
�
�
�
�#�#� �D�a�t�a�b�a�s�e� �S�e�t�u�p�
�
�
�
�Y�o�u� �m�u�s�t� �s�t�o�r�e� �t�h�e� ��f�i�l�e�I�d�� �r�e�t�u�r�n�e�d� �f�r�o�m� ��u�p�l�o�a�d�(�)�� �i�n� �y�o�u�r� �d�a�t�a�b�a�s�e� �t�o� �r�e�t�r�i�e�v�e� �f�i�l�e�s� �l�a�t�e�r�.� �H�e�r�e� �i�s� �a� �r�e�c�o�m�m�e�n�d�e�d� �s�c�h�e�m�a� �(�P�o�s�t�g�r�e�S�Q�L�)�:�
�
�
�
����s�q�l�
�
�C�R�E�A�T�E� �T�A�B�L�E� �u�s�e�r�_�f�i�l�e�s� �(�
�
� � �i�d� �U�U�I�D� �P�R�I�M�A�R�Y� �K�E�Y� �D�E�F�A�U�L�T� �g�e�n�_�r�a�n�d�o�m�_�u�u�i�d�(�)�,�
�
�
�
� � �-�-� �Y�o�u�r� �a�p�p�'�s� �d�a�t�a�
�
� � �u�s�e�r�_�i�d� �U�U�I�D� �N�O�T� �N�U�L�L� �R�E�F�E�R�E�N�C�E�S� �u�s�e�r�s�(�i�d�)�,�
�
� � �o�r�i�g�i�n�a�l�_�f�i�l�e�n�a�m�e� �T�E�X�T� �N�O�T� �N�U�L�L�,�
�
� � �f�i�l�e�_�c�a�t�e�g�o�r�y� �T�E�X�T�,� � � � � � � � � � � � � � � � � � � � � � � � �-�-� �'�m�e�d�i�c�a�l�'�,� �'�l�e�g�a�l�'�,� �'�f�i�n�a�n�c�i�a�l�'�,� �e�t�c�.�
�
� � �d�e�s�c�r�i�p�t�i�o�n� �T�E�X�T�,�
�
� � �u�p�l�o�a�d�e�d�_�a�t� �T�I�M�E�S�T�A�M�P� �D�E�F�A�U�L�T� �N�O�W�(�)�,�
�
�
�
� � �-�-� �D�e�c�e�n�t�r�a�V�a�u�l�t� �d�a�t�a�
�
� � �d�e�c�e�n�t�r�a�v�a�u�l�t�_�f�i�l�e�_�i�d� �T�E�X�T� �N�O�T� �N�U�L�L�,� � � � � � � �-�-� �<�-�-� �A�l�w�a�y�s� �s�t�o�r�e� �t�h�i�s�
�
� � �f�i�l�e�_�h�a�s�h� �T�E�X�T�,� � � � � � � � � � � � � � � � � � � � � � � � � � � � �-�-� �S�H�A�-�2�5�6� �h�a�s�h�
�
� � �i�p�f�s�_�c�i�d� �T�E�X�T�,� � � � � � � � � � � � � � � � � � � � � � � � � � � � � �-�-� �I�P�F�S� �C�o�n�t�e�n�t� �I�D�
�
� � �b�l�o�c�k�c�h�a�i�n�_�t�x� �T�E�X�T�,� � � � � � � � � � � � � � � � � � � � � � � � �-�-� �P�o�l�y�g�o�n� �t�r�a�n�s�a�c�t�i�o�n� �h�a�s�h�
�
� � �b�l�o�c�k�c�h�a�i�n�_�s�t�a�t�u�s� �T�E�X�T�,� � � � � � � � � � � � � � � � � � � � �-�-� �'�p�e�n�d�i�n�g�'� �|� �'�c�o�n�f�i�r�m�e�d�'� �|� �'�f�a�i�l�e�d�'�
�
�
�
� � �-�-� �O�p�t�i�o�n�a�l� �c�a�c�h�e� �f�o�r� �d�i�s�p�l�a�y�
�
� � �m�i�m�e�_�t�y�p�e� �T�E�X�T�,�
�
� � �s�i�z�e�_�b�y�t�e�s� �I�N�T�E�G�E�R�
�
�)�;�
�
�
�
�C�R�E�A�T�E� �I�N�D�E�X� �i�d�x�_�u�s�e�r�_�f�i�l�e�s�_�u�s�e�r� �O�N� �u�s�e�r�_�f�i�l�e�s�(�u�s�e�r�_�i�d�)�;�
�
�C�R�E�A�T�E� �I�N�D�E�X� �i�d�x�_�u�s�e�r�_�f�i�l�e�s�_�d�v�_�i�d� �O�N� �u�s�e�r�_�f�i�l�e�s�(�d�e�c�e�n�t�r�a�v�a�u�l�t�_�f�i�l�e�_�i�d�)�;�
�
����
�
�
�
�-�-�-�
�
�
�
�#�#� �I�n�t�e�g�r�a�t�i�o�n� �E�x�a�m�p�l�e�s�
�
�
�
�#�#�#� �H�e�a�l�t�h�c�a�r�e� �-�-� �M�e�d�i�c�a�l� �R�e�c�o�r�d�s�
�
�
�
����j�a�v�a�s�c�r�i�p�t�
�
�/�/� �P�O�S�T� �/�a�p�i�/�p�a�t�i�e�n�t�s�/�:�p�a�t�i�e�n�t�I�d�/�r�e�c�o�r�d�s�
�
�a�p�p�.�p�o�s�t�(�'�/�a�p�i�/�p�a�t�i�e�n�t�s�/�:�p�a�t�i�e�n�t�I�d�/�r�e�c�o�r�d�s�'�,� �a�u�t�h�e�n�t�i�c�a�t�e�D�o�c�t�o�r�,� �u�p�l�o�a�d�.�s�i�n�g�l�e�(�'�f�i�l�e�'�)�,� �a�s�y�n�c� �(�r�e�q�,� �r�e�s�)� �=�>� �{�
�
� � �c�o�n�s�t� �{� �f�i�l�e�I�d�,� �h�a�s�h�,� �b�l�o�c�k�c�h�a�i�n�S�t�a�t�u�s� �}� �=� �a�w�a�i�t� �v�a�u�l�t�.�u�p�l�o�a�d�(�
�
� � � � �r�e�q�.�f�i�l�e�.�b�u�f�f�e�r�,�
�
� � � � �r�e�q�.�f�i�l�e�.�o�r�i�g�i�n�a�l�n�a�m�e�,�
�
� � � � �r�e�q�.�f�i�l�e�.�m�i�m�e�t�y�p�e�,�
�
� � � � �{� �u�s�e�r�E�m�a�i�l�:� �r�e�q�.�u�s�e�r�.�e�m�a�i�l� �}�
�
� � �)�;�
�
�
�
� � �a�w�a�i�t� �d�b�.�q�u�e�r�y�(��
�
� � � � �I�N�S�E�R�T� �I�N�T�O� �m�e�d�i�c�a�l�_�r�e�c�o�r�d�s� �(�p�a�t�i�e�n�t�_�i�d�,� �d�o�c�t�o�r�_�i�d�,� �r�e�c�o�r�d�_�t�y�p�e�,� �n�o�t�e�s�,� �d�e�c�e�n�t�r�a�v�a�u�l�t�_�f�i�l�e�_�i�d�,� �f�i�l�e�_�h�a�s�h�,� �b�l�o�c�k�c�h�a�i�n�_�s�t�a�t�u�s�)�
�
� � � � �V�A�L�U�E�S� �(�$�1�,� �$�2�,� �$�3�,� �$�4�,� �$�5�,� �$�6�,� �$�7�)�
�
� � ��,� �[�r�e�q�.�p�a�r�a�m�s�.�p�a�t�i�e�n�t�I�d�,� �r�e�q�.�u�s�e�r�.�i�d�,� �r�e�q�.�b�o�d�y�.�r�e�c�o�r�d�T�y�p�e�,� �r�e�q�.�b�o�d�y�.�n�o�t�e�s�,� �f�i�l�e�I�d�,� �h�a�s�h�,� �b�l�o�c�k�c�h�a�i�n�S�t�a�t�u�s�]�)�;�
�
�
�
� � �r�e�s�.�j�s�o�n�(�{� �s�u�c�c�e�s�s�:� �t�r�u�e�,� �m�e�s�s�a�g�e�:� �'�M�e�d�i�c�a�l� �r�e�c�o�r�d� �s�e�c�u�r�e�l�y� �s�t�o�r�e�d�'� �}�)�;�
�
�}�)�;�
�
�
�
�/�/� �G�E�T� �/�a�p�i�/�p�a�t�i�e�n�t�s�/�:�p�a�t�i�e�n�t�I�d�/�r�e�c�o�r�d�s�/�:�r�e�c�o�r�d�I�d�
�
�a�p�p�.�g�e�t�(�'�/�a�p�i�/�p�a�t�i�e�n�t�s�/�:�p�a�t�i�e�n�t�I�d�/�r�e�c�o�r�d�s�/�:�r�e�c�o�r�d�I�d�'�,� �a�u�t�h�e�n�t�i�c�a�t�e�P�a�t�i�e�n�t�,� �a�s�y�n�c� �(�r�e�q�,� �r�e�s�)� �=�>� �{�
�
� � �c�o�n�s�t� �r�e�c�o�r�d� �=� �a�w�a�i�t� �d�b�.�q�u�e�r�y�(�
�
� � � � ��S�E�L�E�C�T� �d�e�c�e�n�t�r�a�v�a�u�l�t�_�f�i�l�e�_�i�d� �F�R�O�M� �m�e�d�i�c�a�l�_�r�e�c�o�r�d�s� �W�H�E�R�E� �i�d� �=� �$�1� �A�N�D� �p�a�t�i�e�n�t�_�i�d� �=� �$�2��,�
�
� � � � �[�r�e�q�.�p�a�r�a�m�s�.�r�e�c�o�r�d�I�d�,� �r�e�q�.�p�a�r�a�m�s�.�p�a�t�i�e�n�t�I�d�]�
�
� � �)�;�
�
�
�
� � �c�o�n�s�t� �{� �f�i�l�e�,� �i�n�t�e�g�r�i�t�y�,� �b�l�o�c�k�c�h�a�i�n� �}� �=� �a�w�a�i�t� �v�a�u�l�t�.�r�e�t�r�i�e�v�e�(�
�
� � � � �r�e�c�o�r�d�.�r�o�w�s�[�0�]�.�d�e�c�e�n�t�r�a�v�a�u�l�t�_�f�i�l�e�_�i�d�,�
�
� � � � �{� �u�s�e�r�E�m�a�i�l�:� �r�e�q�.�u�s�e�r�.�e�m�a�i�l� �}�
�
� � �)�;�
�
�
�
� � �i�f� �(�i�n�t�e�g�r�i�t�y� �!�=�=� �'�o�k�'�)� �{�
�
� � � � �r�e�t�u�r�n� �r�e�s�.�s�t�a�t�u�s�(�4�2�2�)�.�j�s�o�n�(�{� �e�r�r�o�r�:� �'�F�i�l�e� �i�n�t�e�g�r�i�t�y� �c�o�m�p�r�o�m�i�s�e�d�'� �}�)�;�
�
� � �}�
�
�
�
� � �r�e�s�.�j�s�o�n�(�{�
�
� � � � �f�i�l�e�:� �B�u�f�f�e�r�.�f�r�o�m�(�f�i�l�e�)�.�t�o�S�t�r�i�n�g�(�'�b�a�s�e�6�4�'�)�,�
�
� � � � �v�e�r�i�f�i�e�d�:� �b�l�o�c�k�c�h�a�i�n�.�v�e�r�i�f�i�e�d�,�
�
� � � � �b�l�o�c�k�c�h�a�i�n�T�x�:� �b�l�o�c�k�c�h�a�i�n�.�t�x�
�
� � �}�)�;�
�
�}�)�;�
�
����
�
�
�
�-�-�-�
�
�
�
�#�#�#� �L�e�g�a�l� �-�-� �D�o�c�u�m�e�n�t� �S�t�o�r�a�g�e�
�
�
�
����j�a�v�a�s�c�r�i�p�t�
�
�/�/� �P�O�S�T� �/�a�p�i�/�c�o�n�t�r�a�c�t�s�
�
�a�p�p�.�p�o�s�t�(�'�/�a�p�i�/�c�o�n�t�r�a�c�t�s�'�,� �a�u�t�h�e�n�t�i�c�a�t�e�C�l�i�e�n�t�,� �u�p�l�o�a�d�.�s�i�n�g�l�e�(�'�c�o�n�t�r�a�c�t�'�)�,� �a�s�y�n�c� �(�r�e�q�,� �r�e�s�)� �=�>� �{�
�
� � �c�o�n�s�t� �u�p�l�o�a�d�R�e�s�u�l�t� �=� �a�w�a�i�t� �v�a�u�l�t�.�u�p�l�o�a�d�(�
�
� � � � �r�e�q�.�f�i�l�e�.�b�u�f�f�e�r�,�
�
� � � � �r�e�q�.�f�i�l�e�.�o�r�i�g�i�n�a�l�n�a�m�e�,�
�
� � � � �r�e�q�.�f�i�l�e�.�m�i�m�e�t�y�p�e�,�
�
� � � � �{� �u�s�e�r�E�m�a�i�l�:� �r�e�q�.�u�s�e�r�.�e�m�a�i�l� �}�
�
� � �)�;�
�
�
�
� � �a�w�a�i�t� �d�b�.�q�u�e�r�y�(�
�
� � � � ��I�N�S�E�R�T� �I�N�T�O� �c�o�n�t�r�a�c�t�s� �(�c�l�i�e�n�t�_�i�d�,� �c�o�n�t�r�a�c�t�_�t�y�p�e�,� �p�a�r�t�i�e�s�,� �d�e�c�e�n�t�r�a�v�a�u�l�t�_�f�i�l�e�_�i�d�)� �V�A�L�U�E�S� �(�$�1�,� �$�2�,� �$�3�,� �$�4�)��,�
�
� � � � �[�r�e�q�.�u�s�e�r�.�i�d�,� �r�e�q�.�b�o�d�y�.�c�o�n�t�r�a�c�t�T�y�p�e�,� �r�e�q�.�b�o�d�y�.�p�a�r�t�i�e�s�,� �u�p�l�o�a�d�R�e�s�u�l�t�.�f�i�l�e�I�d�]�
�
� � �)�;�
�
�
�
� � �/�/� �W�a�i�t� �f�o�r� �b�l�o�c�k�c�h�a�i�n� �c�o�n�f�i�r�m�a�t�i�o�n� �-�-� �i�m�p�o�r�t�a�n�t� �f�o�r� �l�e�g�a�l� �d�o�c�s�
�
� � �a�w�a�i�t� �v�a�u�l�t�.�w�a�i�t�F�o�r�B�l�o�c�k�c�h�a�i�n�(�u�p�l�o�a�d�R�e�s�u�l�t�.�f�i�l�e�I�d�,� �6�0�0�0�0�,� �{� �u�s�e�r�E�m�a�i�l�:� �r�e�q�.�u�s�e�r�.�e�m�a�i�l� �}�)�;�
�
�
�
� � �c�o�n�s�t� �v�e�r�i�f�y�R�e�s�u�l�t� �=� �a�w�a�i�t� �v�a�u�l�t�.�v�e�r�i�f�y�(�u�p�l�o�a�d�R�e�s�u�l�t�.�f�i�l�e�I�d�,� �{� �u�s�e�r�E�m�a�i�l�:� �r�e�q�.�u�s�e�r�.�e�m�a�i�l� �}�)�;�
�
�
�
� � �r�e�s�.�j�s�o�n�(�{�
�
� � � � �b�l�o�c�k�c�h�a�i�n�P�r�o�o�f�:� �v�e�r�i�f�y�R�e�s�u�l�t�.�b�l�o�c�k�c�h�a�i�n�T�x�,�
�
� � � � �e�x�p�l�o�r�e�r�U�r�l�:� ��h�t�t�p�s�:�/�/�a�m�o�y�.�p�o�l�y�g�o�n�s�c�a�n�.�c�o�m�/�t�x�/�$�{�v�e�r�i�f�y�R�e�s�u�l�t�.�b�l�o�c�k�c�h�a�i�n�T�x�}��
�
� � �}�)�;�
�
�}�)�;�
�
����
�
�
�
�-�-�-�
�
�
�
�#�#�#� �S�a�a�S� �-�-� �W�o�r�k�s�p�a�c�e� �F�i�l�e�s�
�
�
�
����j�a�v�a�s�c�r�i�p�t�
�
�/�/� �P�O�S�T� �/�a�p�i�/�w�o�r�k�s�p�a�c�e�s�/�:�w�o�r�k�s�p�a�c�e�I�d�/�f�i�l�e�s�
�
�a�p�p�.�p�o�s�t�(�'�/�a�p�i�/�w�o�r�k�s�p�a�c�e�s�/�:�w�o�r�k�s�p�a�c�e�I�d�/�f�i�l�e�s�'�,� �a�u�t�h�e�n�t�i�c�a�t�e�U�s�e�r�,� �u�p�l�o�a�d�.�s�i�n�g�l�e�(�'�f�i�l�e�'�)�,� �a�s�y�n�c� �(�r�e�q�,� �r�e�s�)� �=�>� �{�
�
� � �c�o�n�s�t� �a�c�c�e�s�s� �=� �a�w�a�i�t� �d�b�.�q�u�e�r�y�(�
�
� � � � ��S�E�L�E�C�T� �1� �F�R�O�M� �w�o�r�k�s�p�a�c�e�_�m�e�m�b�e�r�s� �W�H�E�R�E� �w�o�r�k�s�p�a�c�e�_�i�d� �=� �$�1� �A�N�D� �u�s�e�r�_�i�d� �=� �$�2��,�
�
� � � � �[�r�e�q�.�p�a�r�a�m�s�.�w�o�r�k�s�p�a�c�e�I�d�,� �r�e�q�.�u�s�e�r�.�i�d�]�
�
� � �)�;�
�
�
�
� � �i�f� �(�a�c�c�e�s�s�.�r�o�w�s�.�l�e�n�g�t�h� �=�=�=� �0�)� �{�
�
� � � � �r�e�t�u�r�n� �r�e�s�.�s�t�a�t�u�s�(�4�0�3�)�.�j�s�o�n�(�{� �e�r�r�o�r�:� �'�A�c�c�e�s�s� �d�e�n�i�e�d�'� �}�)�;�
�
� � �}�
�
�
�
� � �c�o�n�s�t� �u�p�l�o�a�d�R�e�s�u�l�t� �=� �a�w�a�i�t� �v�a�u�l�t�.�u�p�l�o�a�d�(�
�
� � � � �r�e�q�.�f�i�l�e�.�b�u�f�f�e�r�,�
�
� � � � �r�e�q�.�f�i�l�e�.�o�r�i�g�i�n�a�l�n�a�m�e�,�
�
� � � � �r�e�q�.�f�i�l�e�.�m�i�m�e�t�y�p�e�,�
�
� � � � �{� �u�s�e�r�E�m�a�i�l�:� �r�e�q�.�u�s�e�r�.�e�m�a�i�l� �}�
�
� � �)�;�
�
�
�
� � �a�w�a�i�t� �d�b�.�q�u�e�r�y�(�
�
� � � � ��I�N�S�E�R�T� �I�N�T�O� �w�o�r�k�s�p�a�c�e�_�f�i�l�e�s� �(�w�o�r�k�s�p�a�c�e�_�i�d�,� �u�p�l�o�a�d�e�d�_�b�y�,� �f�i�l�e�_�n�a�m�e�,� �d�e�c�e�n�t�r�a�v�a�u�l�t�_�f�i�l�e�_�i�d�,� �m�i�m�e�_�t�y�p�e�,� �s�i�z�e�_�b�y�t�e�s�)�
�
� � � � � �V�A�L�U�E�S� �(�$�1�,� �$�2�,� �$�3�,� �$�4�,� �$�5�,� �$�6�)��,�
�
� � � � �[�r�e�q�.�p�a�r�a�m�s�.�w�o�r�k�s�p�a�c�e�I�d�,� �r�e�q�.�u�s�e�r�.�i�d�,� �r�e�q�.�f�i�l�e�.�o�r�i�g�i�n�a�l�n�a�m�e�,� �u�p�l�o�a�d�R�e�s�u�l�t�.�f�i�l�e�I�d�,� �r�e�q�.�f�i�l�e�.�m�i�m�e�t�y�p�e�,� �r�e�q�.�f�i�l�e�.�s�i�z�e�]�
�
� � �)�;�
�
�
�
� � �r�e�s�.�j�s�o�n�(�{� �s�u�c�c�e�s�s�:� �t�r�u�e�,� �f�i�l�e�I�d�:� �u�p�l�o�a�d�R�e�s�u�l�t�.�f�i�l�e�I�d�,� �s�t�a�t�u�s�:� �u�p�l�o�a�d�R�e�s�u�l�t�.�b�l�o�c�k�c�h�a�i�n�S�t�a�t�u�s� �}�)�;�
�
�}�)�;�
�
����
�
�
�
�-�-�-�
�
�
�
�#�#� �S�e�c�u�r�i�t�y� �B�e�s�t� �P�r�a�c�t�i�c�e�s�
�
�
�
�#�#�#� �[�O�K�]� �D�o�
�
�
�
�-� ���S�t�o�r�e� �A�P�I� �k�e�y�s� �s�e�r�v�e�r�-�s�i�d�e� �o�n�l�y��� �-�-� �n�e�v�e�r� �e�x�p�o�s�e� �t�h�e�m� �i�n� �c�l�i�e�n�t�-�s�i�d�e� �o�r� �f�r�o�n�t�e�n�d� �c�o�d�e�
�
�-� ���V�a�l�i�d�a�t�e� �u�s�e�r� �p�e�r�m�i�s�s�i�o�n�s��� �b�e�f�o�r�e� �e�v�e�r�y� �u�p�l�o�a�d� �o�r� �d�o�w�n�l�o�a�d�
�
�-� ���S�a�v�e� ��f�i�l�e�I�d�� �i�m�m�e�d�i�a�t�e�l�y��� �a�f�t�e�r� �u�p�l�o�a�d� �-�-� �y�o�u� �c�a�n�n�o�t� �r�e�t�r�i�e�v�e� �t�h�e� �f�i�l�e� �w�i�t�h�o�u�t� �i�t�
�
�-� ���A�l�w�a�y�s� �c�h�e�c�k� ��i�n�t�e�g�r�i�t�y���� �o�n� �e�v�e�r�y� �r�e�t�r�i�e�v�a�l� �b�e�f�o�r�e� �s�e�r�v�i�n�g� �a� �f�i�l�e� �t�o� �u�s�e�r�s�
�
�-� ���U�s�e� �H�T�T�P�S��� �f�o�r� �a�l�l� �c�o�m�m�u�n�i�c�a�t�i�o�n�s�
�
�-� ���I�m�p�l�e�m�e�n�t� �r�a�t�e� �l�i�m�i�t�i�n�g��� �t�o� �p�r�e�v�e�n�t� �a�b�u�s�e�
�
�
�
�#�#�#� �[�N�O�]� �D�o�n�'�t�
�
�
�
�-� �D�o�n�'�t� �h�a�r�d�c�o�d�e� �A�P�I� �k�e�y�s� �i�n� �s�o�u�r�c�e� �c�o�d�e�
�
�-� �D�o�n�'�t� �e�x�p�o�s�e� �D�e�c�e�n�t�r�a�V�a�u�l�t� �e�n�d�p�o�i�n�t�s� �d�i�r�e�c�t�l�y� �t�o� �c�l�i�e�n�t�-�s�i�d�e� �c�o�d�e�
�
�-� �D�o�n�'�t� �s�k�i�p� �t�h�e� �i�n�t�e�g�r�i�t�y� �c�h�e�c�k� �o�n� �f�i�l�e� �r�e�t�r�i�e�v�a�l�
�
�-� �D�o�n�'�t� �a�l�l�o�w� �u�s�e�r�s� �t�o� �a�c�c�e�s�s� �f�i�l�e�s� �t�h�e�y� �d�o�n�'�t� �o�w�n�
�
�-� �D�o�n�'�t� �i�g�n�o�r�e� ��b�l�o�c�k�c�h�a�i�n�S�t�a�t�u�s�:� �'�p�e�n�d�i�n�g�'�� �-�-� �c�o�n�f�i�r�m�a�t�i�o�n� �c�a�n� �t�a�k�e� �3�0�-�6�0� �s�e�c�o�n�d�s�
�
�
�
�-�-�-�
�
�
�
�#�#� �T�r�o�u�b�l�e�s�h�o�o�t�i�n�g�
�
�
�
�|� �E�r�r�o�r� �|� �C�a�u�s�e� �|� �F�i�x� �|�
�
�|�-�-�-�-�-�-�-�|�-�-�-�-�-�-�-�|�-�-�-�-�-�|�
�
�|� ��4�0�1� �U�n�a�u�t�h�o�r�i�z�e�d�� �|� �I�n�v�a�l�i�d� �A�P�I� �k�e�y� �|� �C�h�e�c�k� �y�o�u�r� �k�e�y� �i�s� �c�o�r�r�e�c�t� �a�n�d� �a�c�t�i�v�e� �i�n� �t�h�e� �d�a�s�h�b�o�a�r�d� �|�
�
�|� ��4�1�3� �P�a�y�l�o�a�d� �T�o�o� �L�a�r�g�e�� �|� �F�i�l�e� �e�x�c�e�e�d�s� �1�0�M�B� �l�i�m�i�t� �|� �V�a�l�i�d�a�t�e� �f�i�l�e� �s�i�z�e� �b�e�f�o�r�e� �u�p�l�o�a�d�,� �o�r� �c�o�n�t�a�c�t� �s�u�p�p�o�r�t� �f�o�r� �e�n�t�e�r�p�r�i�s�e� �l�i�m�i�t�s� �|�
�
�|� ��b�l�o�c�k�c�h�a�i�n�S�t�a�t�u�s�� �s�t�u�c�k� �o�n� ��'�p�e�n�d�i�n�g�'�� �|� �N�e�t�w�o�r�k� �c�o�n�g�e�s�t�i�o�n� �o�r� �w�a�l�l�e�t� �o�u�t� �o�f� �g�a�s� �|� �W�a�i�t� �u�p� �t�o� �6�0�s�,� �o�r� �u�s�e� ��v�a�u�l�t�.�w�a�i�t�F�o�r�B�l�o�c�k�c�h�a�i�n�(�)�� �t�o� �p�o�l�l� �|�
�
�|� �I�n�t�e�g�r�i�t�y� �c�h�e�c�k� �f�a�i�l�s� �o�n� �r�e�t�r�i�e�v�a�l� �|� �F�i�l�e� �t�a�m�p�e�r�e�d� �o�n� �I�P�F�S� �o�r� �D�B� �c�o�r�r�u�p�t�i�o�n� �|� ���C�r�i�t�i�c�a�l� �a�l�e�r�t��� �-�-� �d�o� �n�o�t� �s�e�r�v�e� �t�h�e� �f�i�l�e�.� �I�n�v�e�s�t�i�g�a�t�e� �i�m�m�e�d�i�a�t�e�l�y� �|�
�
�|� ��"�F�i�l�e� �n�o�t� �f�o�u�n�d�"�� �o�n� �r�e�t�r�i�e�v�e� �|� �W�r�o�n�g� ��f�i�l�e�I�d�� �o�r� �f�i�l�e� �d�e�l�e�t�e�d� �|� �V�e�r�i�f�y� �t�h�e� ��f�i�l�e�I�d�� �s�t�o�r�e�d� �i�n� �y�o�u�r� �d�a�t�a�b�a�s�e� �i�s� �c�o�r�r�e�c�t� �|�
�
�
�
�-�-�-�
�
�
�
�#�#� �S�u�p�p�o�r�t�
�
�
�
�-� �[�D�O�C�S�]� �[�F�u�l�l� �S�D�K� �R�e�f�e�r�e�n�c�e�]�(�.�/�s�d�k�/�R�E�A�D�M�E�.�m�d�)�
�
�-� �[�B�U�G�]� �[�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�/�d�e�c�e�n�t�r�a�v�a�u�l�t�/�s�d�k�/�i�s�s�u�e�s�)�
�
�-� �[�C�H�A�T�]� �[�E�m�a�i�l� �S�u�p�p�o�r�t�]�(�m�a�i�l�t�o�:�s�u�p�p�o�r�t�@�d�e�c�e�n�t�r�a�v�a�u�l�t�.�c�o�m�)�
�
�-� �[�G�L�O�B�E�]� �[�D�a�s�h�b�o�a�r�d�]�(�h�t�t�p�s�:�/�/�d�e�c�e�n�t�r�a�-�v�a�u�l�t�.�o�n�r�e�n�d�e�r�.�c�o�m�)�
�
�
�
�-�-�-�
�
�
