# Source: captcha.js

    'use strict';

    /**
     * Represents a captcha
     * @class
     */
    class Captcha {

      /**
       * Captcha ID, as provided from 2Captcha
       *
       * @return {string} Captcha ID
       */
      get id() {
        return this._id;
      }

      set id(newId) {
        this._id = newId;
      }

      /**
       * Text from captcha
       *
       * @return {string} Captcha text
       */
      get text() {
        return this._text;
      }

      set text(newText) {
        this._text = newText;
      }

      /**
       * API response for captcha request
       *
       * @return {string} API response
       */
      get apiResponse() {
        return this._apiResponse;
      }

      set apiResponse(newApiResponse) {
        this._apiResponse = newApiResponse;
      }

      /**
       * If the captcha sent was tile-like, this function returns the indexes of the
       * clicks on an array.
       *
       * @return {Number[]}  An array of indexes clicked
       */
      indexes() {
        return this._text.replace('click:', '').match(/\d+/g).map(Number);
      }

      /**
       * If the captcha sent was a image, this function returns the coordinates
       * (X, Y) clicked
       *
       * @return {Number[][]}  An array of coordinate tuples
       */
      coordinates() {
        const coordinateParser = function(text) {
          const match = text.match(/x=([0-9]+),y=([0-9]+)/);
          return [Number(match[1]), Number(match[2])];
        }

        return this._text.match(/x=([0-9]+),y=([0-9]+)/g).map(coordinateParser);
      }

    }

    module.exports = Captcha;